From e07d9be72ef9b1cc3f7490bac33eed5ead6daa08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Otto=20Kek=C3=A4l=C3=A4inen?= Date: Wed, 6 Feb 2019 09:52:42 +0200 Subject: [PATCH] New upstream version 10.1.38 --- BUILD/check-cpu | 6 + CMakeLists.txt | 10 +- Docs/INFO_SRC | 10 +- Docs/README-wsrep | 34 +- VERSION | 2 +- client/CMakeLists.txt | 2 +- client/mysqlbinlog.cc | 21 +- client/mysqltest.cc | 51 +- .../build_configurations/mysql_release.cmake | 1 - cmake/ssl.cmake | 10 +- cmake/wsrep.cmake | 2 +- cmake/zlib.cmake | 5 - config.h.cmake | 6 +- extra/innochecksum.cc | 11 +- extra/mariabackup/fil_cur.cc | 152 +- extra/mariabackup/xtrabackup.cc | 81 +- extra/mariabackup/xtrabackup.h | 4 +- include/my_global.h | 2 +- include/my_sys.h | 4 +- include/my_valgrind.h | 4 +- include/mysql.h | 2 +- include/mysql.h.pp | 2 +- include/mysql/service_kill_statement.h | 4 +- libmysqld/examples/CMakeLists.txt | 2 +- mysql-test/disabled.def | 1 + .../innodb_encrypt_tables.combinations | 14 + mysql-test/include/innodb_encrypt_tables.inc | 4 + mysql-test/lib/v1/mysql-test-run.pl | 2 +- mysql-test/mysql-test-run.pl | 3 +- .../r/auto_increment_ranges_innodb.result | 14 + mysql-test/r/bigint.result | 11 + mysql-test/r/connect.result | 12 + mysql-test/r/ctype_latin1.result | 9 + mysql-test/r/flush.result | 1 - mysql-test/r/func_group_innodb.result | 30 + mysql-test/r/func_misc.result | 8 + mysql-test/r/grant5.result | 7 + mysql-test/r/huge_frm-6224.result | 2 + mysql-test/r/index_merge_myisam.result | 50 + mysql-test/r/innodb_ext_key.result | 1 + mysql-test/r/lock.result | 4 +- mysql-test/r/lock_multi.result | 9 +- mysql-test/r/lock_sync.result | 6 +- mysql-test/r/mysql.result | 26 + mysql-test/r/mysqlbinlog_row_minimal.result | 130 +- mysql-test/r/mysqldump.result | 6 +- mysql-test/r/partition.result | 100 + mysql-test/r/partition_innodb.result | 26 + mysql-test/r/range_innodb.result | 42 + mysql-test/r/read_only.result | 16 +- mysql-test/r/row-checksum-old.result | 16 + mysql-test/r/row-checksum.result | 16 + mysql-test/r/stat_tables.result | 19 + mysql-test/r/stat_tables_innodb.result | 19 + mysql-test/r/subselect2.result | 22 + mysql-test/r/subselect_exists2in.result | 4 +- mysql-test/r/subselect_mat.result | 16 + mysql-test/r/union.result | 38 + mysql-test/r/view.result | 4 +- .../suite/binlog/r/binlog_base64_flag.result | 19 + .../r/binlog_mysqlbinlog_row_frag.result | 24 + .../suite/binlog/t/binlog_base64_flag.test | 22 + .../binlog/t/binlog_mysqlbinlog_row_frag.test | 45 + .../encryption/r/innodb-bad-key-change.result | 1 + .../r/innodb-checksum-algorithm.result | 225 - .../r/innodb-encryption-alter.result | 37 + .../r/innodb-encryption-disable.result | 1 + .../encryption/r/innodb-force-corrupt.result | 3 +- .../encryption/r/innodb-missing-key.result | 1 + .../encryption/t/innodb-bad-key-change.test | 1 + .../t/innodb-checksum-algorithm.test | 9 +- .../encryption/t/innodb-encryption-alter.test | 24 + .../t/innodb-encryption-disable.test | 1 + .../encryption/t/innodb-force-corrupt.test | 9 +- .../encryption/t/innodb-missing-key.test | 1 + .../suite/engines/iuds/r/insert_number.result | 100 + .../iuds/r/update_delete_number.result | 17 + mysql-test/suite/galera/disabled.def | 5 - .../galera/include/have_filekeymanagement.inc | 3 + .../r/galera_autoinc_sst_mariabackup.result | 36 + .../suite/galera/r/galera_defaults.result | 2 +- .../galera_gcache_recover_full_gcache.result | 4 + .../r/galera_gcache_recover_manytrx.result | 4 + .../r/galera_gtid_slave_sst_rsync.result | 1 + .../r/galera_ist_mariabackup,debug.rdiff | 103 + .../galera/r/galera_ist_mariabackup.result | 261 + ..._mariabackup_innodb_flush_logs,debug.rdiff | 103 + ...a_ist_mariabackup_innodb_flush_logs.result | 88 + .../galera/r/galera_ist_mysqldump,debug.rdiff | 4 +- ...ra_sst_mariabackup_encrypt_with_key.result | 3 + ...alera_sst_mariabackup_table_options.result | 985 + .../galera_sst_mysqldump_with_key,debug.rdiff | 106 + .../r/galera_sst_mysqldump_with_key.result | 97 - ...era_sst_xtrabackup-v2_data_dir,debug.rdiff | 103 + .../galera/r/galera_var_reject_queries.result | 1 - mysql-test/suite/galera/r/partition.result | 18 +- mysql-test/suite/galera/suite.pm | 2 + .../t/galera_autoinc_sst_mariabackup.cnf | 12 + .../t/galera_autoinc_sst_mariabackup.test | 96 + .../suite/galera/t/galera_defaults.test | 23 - .../suite/galera/t/galera_drop_database.test | 26 +- .../t/galera_gcache_recover_full_gcache.test | 5 + .../t/galera_gcache_recover_manytrx.test | 5 + .../galera/t/galera_gtid_slave_sst_rsync.test | 3 + .../suite/galera/t/galera_ist_mariabackup.cnf | 12 + .../galera/t/galera_ist_mariabackup.test | 16 + ...lera_ist_mariabackup_innodb_flush_logs.cnf | 14 + ...era_ist_mariabackup_innodb_flush_logs.test | 12 + ...alera_sst_mariabackup_encrypt_with_key.cnf | 12 + ...lera_sst_mariabackup_encrypt_with_key.test | 14 + .../galera_sst_mariabackup_table_options.cnf | 16 + .../galera_sst_mariabackup_table_options.opt | 2 + .../galera_sst_mariabackup_table_options.test | 227 + .../galera/t/galera_var_reject_queries.test | 7 +- mysql-test/suite/galera/t/partition.test | 14 +- mysql-test/suite/galera_3nodes/disabled.def | 1 - .../suite/galera_3nodes/galera_2x3nodes.cnf | 12 +- .../suite/galera_3nodes/galera_3nodes.cnf | 6 +- .../suite/galera_3nodes/include/have_ipv6.inc | 15 - .../r/galera_ipv6_mariabackup.result | 18 + .../r/galera_ipv6_mysqldump.result | 9 +- mysql-test/suite/galera_3nodes/suite.pm | 53 +- mysql-test/suite/galera_3nodes/t/GAL-501.opt | 1 + mysql-test/suite/galera_3nodes/t/GAL-501.test | 2 +- .../t/galera_innobackupex_backup.cnf | 4 + .../t/galera_innobackupex_backup.test | 28 +- .../t/galera_ipv6_mariabackup.cnf | 29 + .../t/galera_ipv6_mariabackup.opt | 1 + .../t/galera_ipv6_mariabackup.test | 59 + .../galera_3nodes/t/galera_ipv6_mysqldump.cnf | 10 +- .../t/galera_ipv6_mysqldump.test | 43 +- .../galera_3nodes/t/galera_ipv6_rsync.cnf | 10 +- .../galera_3nodes/t/galera_ipv6_rsync.test | 2 +- .../t/galera_ipv6_xtrabackup-v2.cnf | 3 + .../t/galera_ipv6_xtrabackup-v2.opt | 1 + .../t/galera_ipv6_xtrabackup-v2.test | 6 +- mysql-test/suite/innodb/include/crc32.pl | 33 + .../suite/innodb/r/alter_candidate_key.result | 107 + mysql-test/suite/innodb/r/foreign_key.result | 33 + .../suite/innodb/r/innodb-alter-debug.result | 18 + mysql-test/suite/innodb/r/innodb-alter.result | 159 +- mysql-test/suite/innodb/r/innodb-index.result | 33 + .../suite/innodb/r/innodb-table-online.result | 11 - .../innodb/r/innodb-virtual-columns.result | 15 + .../suite/innodb/r/innodb_28867993.result | 9 + .../suite/innodb/t/alter_candidate_key.test | 72 + mysql-test/suite/innodb/t/foreign_key.test | 31 + .../suite/innodb/t/innodb-alter-debug.test | 32 + mysql-test/suite/innodb/t/innodb-alter.test | 114 +- mysql-test/suite/innodb/t/innodb-index.test | 30 + .../suite/innodb/t/innodb-table-online.test | 4 - .../innodb/t/innodb-virtual-columns.test | 11 + .../suite/innodb/t/innodb_28867993.test | 12 + .../innodb/t/innodb_zip_innochecksum.opt | 2 +- .../innodb/t/innodb_zip_innochecksum.test | 4 + .../mariabackup/encrypted_page_compressed.opt | 6 + .../encrypted_page_compressed.result | 6 + .../encrypted_page_compressed.test | 47 + .../mariabackup/encrypted_page_corruption.opt | 6 + .../encrypted_page_corruption.result | 7 + .../encrypted_page_corruption.test | 79 + mysql-test/suite/mariabackup/huge_lsn.opt | 4 + .../unencrypted_page_compressed.result | 6 + .../unencrypted_page_compressed.test | 46 + .../perfschema/r/dml_setup_instruments.result | 4 +- .../suite/perfschema/r/socket_connect.result | 13 - .../perfschema/t/dml_setup_instruments.test | 5 +- .../suite/perfschema/t/socket_connect.test | 9 +- .../suite/roles/flush_roles-17898.result | 13 + mysql-test/suite/roles/flush_roles-17898.test | 11 + mysql-test/suite/rpl/r/rpl_idempotency.result | 12 + .../rpl/r/rpl_row_big_table_id,32bit.rdiff | 29 + .../suite/rpl/r/rpl_row_big_table_id.result | 38 + mysql-test/suite/rpl/r/rpl_set_statement.test | 0 mysql-test/suite/rpl/t/rpl_idempotency.test | 21 + .../suite/rpl/t/rpl_row_big_table_id.test | 57 + mysql-test/suite/sys_vars/r/all_vars.result | 1 + .../r/delayed_insert_limit_func.result | 4 +- .../r/sql_low_priority_updates_func.result | 4 +- .../r/sysvars_innodb,32bit,xtradb.rdiff | 4 +- .../sys_vars/r/sysvars_innodb,xtradb.rdiff | 4 +- .../suite/sys_vars/r/sysvars_innodb.result | 2 +- .../r/sysvars_server_embedded,32bit.rdiff | 261 +- .../sys_vars/r/sysvars_server_embedded.result | 2 +- .../r/sysvars_server_notembedded,32bit.rdiff | 269 +- .../r/sysvars_server_notembedded.result | 2 +- .../suite/sys_vars/r/sysvars_wsrep.result | 14 + .../r/table_definition_cache_basic.result | 16 +- .../sys_vars/r/wsrep_sst_method_basic.result | 4 + .../sys_vars/t/delayed_insert_limit_func.test | 20 +- .../t/sql_low_priority_updates_func.test | 4 +- .../t/table_definition_cache_basic.test | 6 +- .../sys_vars/t/wsrep_sst_method_basic.test | 5 + .../t/auto_increment_ranges_innodb.test | 13 + mysql-test/t/bigint.test | 9 + mysql-test/t/connect.test | 12 +- mysql-test/t/ctype_latin1.test | 12 + mysql-test/t/flush.test | 1 - mysql-test/t/func_group_innodb.test | 26 + mysql-test/t/func_misc.test | 9 + mysql-test/t/grant5.test | 10 + mysql-test/t/huge_frm-6224.test | 11 +- mysql-test/t/index_merge_myisam.test | 35 + mysql-test/t/innodb_ext_key.test | 1 + mysql-test/t/lock.test | 4 +- mysql-test/t/lock_multi.test | 14 +- mysql-test/t/lock_sync.test | 8 +- mysql-test/t/mysql.test | 22 + mysql-test/t/mysqlbinlog_row_minimal.test | 41 + mysql-test/t/mysqldump.test | 2 +- mysql-test/t/partition.test | 62 + mysql-test/t/partition_innodb.test | 30 + mysql-test/t/range_innodb.test | 42 + mysql-test/t/read_only.test | 23 +- mysql-test/t/row-checksum.test | 17 + mysql-test/t/stat_tables.test | 17 + mysql-test/t/subselect2.test | 20 + mysql-test/t/subselect_mat.test | 13 + mysql-test/t/union.test | 35 + mysql-test/unstable-tests | 94 +- mysys/mf_iocache.c | 4 + mysys/mf_iocache2.c | 61 +- mysys/my_file.c | 7 +- mysys/my_malloc.c | 1 + mysys/my_pread.c | 26 +- mysys/my_read.c | 48 +- mysys/safemalloc.c | 2 +- .../wsrep_info/mysql-test/wsrep_info/suite.pm | 2 + scripts/mysql_install_db.sh | 20 +- scripts/mytop.sh | 19 +- scripts/wsrep_sst_common.sh | 6 +- scripts/wsrep_sst_mariabackup.sh | 106 +- scripts/wsrep_sst_rsync.sh | 10 +- sql-common/client.c | 30 +- sql/CMakeLists.txt | 2 +- sql/handler.h | 12 +- sql/item.cc | 18 +- sql/item.h | 4 + sql/item_cmpfunc.cc | 190 +- sql/item_cmpfunc.h | 5 + sql/item_func.cc | 2 +- sql/item_func.h | 4 + sql/log.cc | 6 +- sql/log_event.cc | 196 +- sql/log_event.h | 13 +- sql/log_event_old.cc | 16 +- sql/mysql_install_db.cc | 72 +- sql/opt_range.cc | 22 +- sql/partition_info.cc | 21 +- sql/partition_info.h | 1 + sql/rpl_tblmap.cc | 18 +- sql/rpl_tblmap.h | 10 +- sql/sql_acl.cc | 142 +- sql/sql_array.h | 15 +- sql/sql_binlog.cc | 94 +- sql/sql_class.cc | 44 +- sql/sql_const.h | 12 +- sql/sql_db.cc | 9 +- sql/sql_db.h | 3 +- sql/sql_lex.cc | 2 + sql/sql_lex.h | 4 + sql/sql_parse.cc | 4 +- sql/sql_repl.cc | 6 +- sql/sql_select.cc | 4 + sql/sql_statistics.cc | 43 + sql/sql_statistics.h | 1 + sql/sql_table.cc | 79 +- sql/sql_type_int.h | 28 + sql/sql_update.cc | 2 +- sql/sql_view.cc | 3 +- sql/sql_yacc.cc | 39179 ++++++++-------- sql/sql_yacc.yy | 34 +- sql/sys_vars.cc | 21 +- sql/table.cc | 14 +- sql/table.h | 8 +- sql/table_cache.cc | 5 +- sql/unireg.h | 2 +- sql/wsrep_mysqld.cc | 23 +- sql/wsrep_mysqld.h | 5 +- sql/wsrep_mysqld_c.h | 30 + sql/wsrep_utils.h | 3 +- sql/wsrep_var.cc | 3 +- storage/connect/global.h | 6 +- storage/connect/ha_connect.cc | 4 +- storage/connect/jsonudf.cpp | 12 +- .../mysql-test/connect/r/jdbc_oracle.result | 18 +- .../connect/r/jdbc_postgresql.result | 10 +- .../mysql-test/connect/r/part_table.result | 4 +- .../mysql-test/connect/t/part_table.test | 2 +- storage/connect/plugutil.cpp | 28 +- storage/connect/reldef.cpp | 11 +- storage/connect/tabfmt.h | 2 +- storage/connect/tabjson.cpp | 52 +- storage/connect/tabjson.h | 8 +- storage/connect/tabodbc.cpp | 317 +- storage/connect/tabxml.cpp | 292 +- storage/connect/tabxml.h | 6 +- storage/connect/user_connect.cc | 4 +- storage/innobase/buf/buf0buf.cc | 315 +- storage/innobase/buf/buf0dblwr.cc | 40 +- storage/innobase/dict/dict0dict.cc | 45 +- storage/innobase/dict/dict0mem.cc | 4 +- storage/innobase/fil/fil0crypt.cc | 182 +- storage/innobase/fil/fil0fil.cc | 15 +- storage/innobase/fil/fil0pagecompress.cc | 8 +- storage/innobase/fts/fts0fts.cc | 20 +- storage/innobase/handler/ha_innodb.cc | 188 +- storage/innobase/handler/ha_innodb.h | 8 +- storage/innobase/handler/handler0alter.cc | 174 +- storage/innobase/include/buf0buf.h | 16 +- storage/innobase/include/dict0mem.h | 4 +- storage/innobase/include/fil0crypt.h | 17 +- storage/innobase/include/fil0fil.h | 4 +- storage/innobase/include/os0file.h | 6 +- storage/innobase/include/page0page.h | 15 +- storage/innobase/include/page0zip.h | 15 - storage/innobase/include/univ.i | 13 +- storage/innobase/os/os0proc.cc | 3 - storage/innobase/page/page0page.cc | 42 - storage/innobase/page/page0zip.cc | 127 +- storage/innobase/row/row0ftsort.cc | 11 +- storage/innobase/row/row0import.cc | 3 +- storage/innobase/row/row0ins.cc | 42 +- storage/innobase/row/row0merge.cc | 5 +- storage/innobase/row/row0mysql.cc | 15 +- storage/innobase/row/row0sel.cc | 4 +- storage/innobase/srv/srv0srv.cc | 4 +- storage/innobase/srv/srv0start.cc | 4 + storage/innobase/trx/trx0trx.cc | 6 + storage/tokudb/PerconaFT/COPYING.APACHEv2 | 174 + storage/tokudb/PerconaFT/README.md | 5 +- storage/tokudb/PerconaFT/ft/txn/txn_manager.h | 4 +- .../PerconaFT/locktree/concurrent_tree.cc | 14 + .../PerconaFT/locktree/concurrent_tree.h | 14 + storage/tokudb/PerconaFT/locktree/keyrange.cc | 13 + storage/tokudb/PerconaFT/locktree/keyrange.h | 13 + .../tokudb/PerconaFT/locktree/lock_request.cc | 13 + .../tokudb/PerconaFT/locktree/lock_request.h | 13 + storage/tokudb/PerconaFT/locktree/locktree.cc | 13 + storage/tokudb/PerconaFT/locktree/locktree.h | 13 + storage/tokudb/PerconaFT/locktree/manager.cc | 13 + .../tokudb/PerconaFT/locktree/range_buffer.cc | 13 + .../tokudb/PerconaFT/locktree/range_buffer.h | 13 + storage/tokudb/PerconaFT/locktree/treenode.cc | 13 + storage/tokudb/PerconaFT/locktree/treenode.h | 13 + .../tokudb/PerconaFT/locktree/txnid_set.cc | 13 + storage/tokudb/PerconaFT/locktree/txnid_set.h | 13 + storage/tokudb/PerconaFT/locktree/wfg.cc | 13 + storage/tokudb/PerconaFT/locktree/wfg.h | 13 + .../PerconaFT/portability/toku_instr_mysql.cc | 12 +- .../PerconaFT/portability/toku_instr_mysql.h | 11 +- .../PerconaFT/portability/toku_pthread.h | 78 +- .../tokudb/PerconaFT/util/growable_array.h | 13 + storage/tokudb/PerconaFT/util/omt.cc | 2261 +- storage/tokudb/PerconaFT/util/omt.h | 13 + storage/tokudb/ha_tokudb.cc | 10 + storage/tokudb/hatoku_hton.cc | 4 +- storage/tokudb/hatoku_hton.h | 1 - .../mysql-test/tokudb/t/change_column_bin.py | 0 .../tokudb/t/change_column_bin_rename.py | 0 .../mysql-test/tokudb/t/change_column_char.py | 0 .../tokudb/t/change_column_char_binary.py | 0 .../tokudb/t/change_column_char_charbinary.py | 0 .../tokudb/t/change_column_char_rename.py | 0 .../mysql-test/tokudb/t/change_column_int.py | 0 .../tokudb/t/change_column_int_key.py | 0 .../t/change_column_int_not_supported.py | 0 .../tokudb/t/change_column_int_rename.py | 0 .../mysql-test/tokudb_bugs/r/PS-4979.result | 2 + .../mysql-test/tokudb_bugs/t/PS-4979.test | 13 + storage/tokudb/tokudb_background.cc | 4 +- storage/tokudb/tokudb_sysvars.cc | 14 +- storage/tokudb/tokudb_sysvars.h | 4 +- storage/xtradb/buf/buf0buf.cc | 247 +- storage/xtradb/buf/buf0dblwr.cc | 43 +- storage/xtradb/dict/dict0dict.cc | 45 +- storage/xtradb/dict/dict0mem.cc | 4 +- storage/xtradb/fil/fil0crypt.cc | 182 +- storage/xtradb/fil/fil0fil.cc | 16 +- storage/xtradb/fil/fil0pagecompress.cc | 8 +- storage/xtradb/fts/fts0fts.cc | 20 +- storage/xtradb/fts/fts0pars.cc | 4 +- storage/xtradb/fts/fts0pars.y | 4 +- storage/xtradb/handler/ha_innodb.cc | 187 +- storage/xtradb/handler/ha_innodb.h | 12 +- storage/xtradb/handler/handler0alter.cc | 141 +- storage/xtradb/include/buf0buf.h | 13 +- storage/xtradb/include/data0type.ic | 4 +- storage/xtradb/include/dict0mem.h | 7 +- storage/xtradb/include/fil0crypt.h | 11 +- storage/xtradb/include/fil0fil.h | 4 +- storage/xtradb/include/page0page.h | 18 +- storage/xtradb/include/univ.i | 15 +- storage/xtradb/log/log0online.cc | 41 +- storage/xtradb/os/os0proc.cc | 3 - storage/xtradb/page/page0page.cc | 46 - storage/xtradb/page/page0zip.cc | 92 +- storage/xtradb/row/row0ftsort.cc | 11 +- storage/xtradb/row/row0import.cc | 12 +- storage/xtradb/row/row0ins.cc | 40 +- storage/xtradb/row/row0mysql.cc | 24 +- storage/xtradb/row/row0sel.cc | 5 +- storage/xtradb/srv/srv0srv.cc | 6 +- storage/xtradb/srv/srv0start.cc | 3 + storage/xtradb/trx/trx0trx.cc | 6 + strings/ctype-simple.c | 4 +- support-files/mysql.server.sh | 6 +- support-files/policy/apparmor/usr.sbin.mysqld | 1 + .../policy/selinux/mariadb-server.fc | 1 + unittest/mysys/lf-t.c | 5 - unittest/mysys/my_atomic-t.c | 17 +- unittest/mysys/thr_template.c | 31 +- unittest/mysys/waiting_threads-t.c | 4 +- unittest/sql/mf_iocache-t.cc | 72 +- win/packaging/heidisql.cmake | 2 +- 415 files changed, 29847 insertions(+), 24091 deletions(-) create mode 100644 mysql-test/include/innodb_encrypt_tables.combinations create mode 100644 mysql-test/include/innodb_encrypt_tables.inc create mode 100644 mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_frag.result create mode 100644 mysql-test/suite/binlog/t/binlog_mysqlbinlog_row_frag.test create mode 100644 mysql-test/suite/galera/include/have_filekeymanagement.inc create mode 100644 mysql-test/suite/galera/r/galera_autoinc_sst_mariabackup.result create mode 100644 mysql-test/suite/galera/r/galera_ist_mariabackup,debug.rdiff create mode 100644 mysql-test/suite/galera/r/galera_ist_mariabackup.result create mode 100644 mysql-test/suite/galera/r/galera_ist_mariabackup_innodb_flush_logs,debug.rdiff create mode 100644 mysql-test/suite/galera/r/galera_ist_mariabackup_innodb_flush_logs.result create mode 100644 mysql-test/suite/galera/r/galera_sst_mariabackup_encrypt_with_key.result create mode 100644 mysql-test/suite/galera/r/galera_sst_mariabackup_table_options.result create mode 100644 mysql-test/suite/galera/r/galera_sst_mysqldump_with_key,debug.rdiff create mode 100644 mysql-test/suite/galera/r/galera_sst_xtrabackup-v2_data_dir,debug.rdiff create mode 100644 mysql-test/suite/galera/t/galera_autoinc_sst_mariabackup.cnf create mode 100644 mysql-test/suite/galera/t/galera_autoinc_sst_mariabackup.test create mode 100644 mysql-test/suite/galera/t/galera_ist_mariabackup.cnf create mode 100644 mysql-test/suite/galera/t/galera_ist_mariabackup.test create mode 100644 mysql-test/suite/galera/t/galera_ist_mariabackup_innodb_flush_logs.cnf create mode 100644 mysql-test/suite/galera/t/galera_ist_mariabackup_innodb_flush_logs.test create mode 100644 mysql-test/suite/galera/t/galera_sst_mariabackup_encrypt_with_key.cnf create mode 100644 mysql-test/suite/galera/t/galera_sst_mariabackup_encrypt_with_key.test create mode 100644 mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.cnf create mode 100644 mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.opt create mode 100644 mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.test delete mode 100644 mysql-test/suite/galera_3nodes/include/have_ipv6.inc create mode 100644 mysql-test/suite/galera_3nodes/r/galera_ipv6_mariabackup.result create mode 100644 mysql-test/suite/galera_3nodes/t/GAL-501.opt create mode 100644 mysql-test/suite/galera_3nodes/t/galera_innobackupex_backup.cnf create mode 100644 mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup.cnf create mode 100644 mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup.opt create mode 100644 mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup.test create mode 100644 mysql-test/suite/galera_3nodes/t/galera_ipv6_xtrabackup-v2.opt create mode 100644 mysql-test/suite/innodb/include/crc32.pl create mode 100644 mysql-test/suite/innodb/r/alter_candidate_key.result create mode 100644 mysql-test/suite/innodb/r/innodb_28867993.result create mode 100644 mysql-test/suite/innodb/t/alter_candidate_key.test create mode 100644 mysql-test/suite/innodb/t/innodb_28867993.test create mode 100644 mysql-test/suite/mariabackup/encrypted_page_compressed.opt create mode 100644 mysql-test/suite/mariabackup/encrypted_page_compressed.result create mode 100644 mysql-test/suite/mariabackup/encrypted_page_compressed.test create mode 100644 mysql-test/suite/mariabackup/encrypted_page_corruption.opt create mode 100644 mysql-test/suite/mariabackup/encrypted_page_corruption.result create mode 100644 mysql-test/suite/mariabackup/encrypted_page_corruption.test create mode 100644 mysql-test/suite/mariabackup/unencrypted_page_compressed.result create mode 100644 mysql-test/suite/mariabackup/unencrypted_page_compressed.test create mode 100644 mysql-test/suite/roles/flush_roles-17898.result create mode 100644 mysql-test/suite/roles/flush_roles-17898.test create mode 100644 mysql-test/suite/rpl/r/rpl_row_big_table_id,32bit.rdiff create mode 100644 mysql-test/suite/rpl/r/rpl_row_big_table_id.result delete mode 100644 mysql-test/suite/rpl/r/rpl_set_statement.test create mode 100644 mysql-test/suite/rpl/t/rpl_row_big_table_id.test create mode 100644 sql/wsrep_mysqld_c.h create mode 100644 storage/tokudb/PerconaFT/COPYING.APACHEv2 mode change 100755 => 100644 storage/tokudb/mysql-test/tokudb/t/change_column_bin.py mode change 100755 => 100644 storage/tokudb/mysql-test/tokudb/t/change_column_bin_rename.py mode change 100755 => 100644 storage/tokudb/mysql-test/tokudb/t/change_column_char.py mode change 100755 => 100644 storage/tokudb/mysql-test/tokudb/t/change_column_char_binary.py mode change 100755 => 100644 storage/tokudb/mysql-test/tokudb/t/change_column_char_charbinary.py mode change 100755 => 100644 storage/tokudb/mysql-test/tokudb/t/change_column_char_rename.py mode change 100755 => 100644 storage/tokudb/mysql-test/tokudb/t/change_column_int.py mode change 100755 => 100644 storage/tokudb/mysql-test/tokudb/t/change_column_int_key.py mode change 100755 => 100644 storage/tokudb/mysql-test/tokudb/t/change_column_int_not_supported.py mode change 100755 => 100644 storage/tokudb/mysql-test/tokudb/t/change_column_int_rename.py create mode 100644 storage/tokudb/mysql-test/tokudb_bugs/r/PS-4979.result create mode 100644 storage/tokudb/mysql-test/tokudb_bugs/t/PS-4979.test diff --git a/BUILD/check-cpu b/BUILD/check-cpu index ad8816dc4..c1c85cfd9 100755 --- a/BUILD/check-cpu +++ b/BUILD/check-cpu @@ -40,6 +40,12 @@ check_compiler_cpu_flags () { cc_major=$1 cc_minor=$2 cc_patch=$3 + if test -z "$cc_minor"; then + cc_minor="0"; + fi + if test -z "$cc_patch"; then + cc_minor="0"; + fi cc_comp=`expr $cc_major '*' 100 '+' $cc_minor` fi diff --git a/CMakeLists.txt b/CMakeLists.txt index 53d67813b..ef8786aff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -241,8 +241,14 @@ ENDIF() MY_CHECK_AND_SET_COMPILER_FLAG(-ggdb3 DEBUG) -OPTION(ENABLED_LOCAL_INFILE - "If we should should enable LOAD DATA LOCAL by default" ${IF_WIN}) +SET(ENABLED_LOCAL_INFILE "AUTO" CACHE STRING "If we should should enable LOAD DATA LOCAL by default (OFF/ON/AUTO)") +IF (ENABLED_LOCAL_INFILE MATCHES "^(0|FALSE)$") + SET(ENABLED_LOCAL_INFILE OFF) +ELSEIF(ENABLED_LOCAL_INFILE MATCHES "^(1|TRUE)$") + SET(ENABLED_LOCAL_INFILE ON) +ELSEIF (NOT ENABLED_LOCAL_INFILE MATCHES "^(ON|OFF|AUTO)$") + MESSAGE(FATAL_ERROR "ENABLED_LOCAL_INFILE must be one of OFF, ON, AUTO") +ENDIF() OPTION(WITH_FAST_MUTEXES "Compile with fast mutexes" OFF) MARK_AS_ADVANCED(WITH_FAST_MUTEXES) diff --git a/Docs/INFO_SRC b/Docs/INFO_SRC index f8062461f..8562cee91 100644 --- a/Docs/INFO_SRC +++ b/Docs/INFO_SRC @@ -1,8 +1,8 @@ -commit: 8d834cd0f370b306f63c2364552d187fc388e59e -date: 2018-10-31 23:48:29 +0200 -build-date: 2018-10-31 21:54:07 +0000 -short: 8d834cd +commit: 4c490d6df63695dc97b2c808e59954e6877d3a51 +date: 2019-02-04 18:55:35 +0200 +build-date: 2019-02-04 17:02:14 +0000 +short: 4c490d6 branch: HEAD -MariaDB source 10.1.37 +MariaDB source 10.1.38 diff --git a/Docs/README-wsrep b/Docs/README-wsrep index 422ec52f4..2058e1eb1 100644 --- a/Docs/README-wsrep +++ b/Docs/README-wsrep @@ -60,7 +60,7 @@ CONTENTS: Wsrep API developed by Codership Oy is a modern generic (database-agnostic) replication API for transactional databases with a goal to make database replication/logging subsystem completely modular and pluggable. It is developed -with flexibility and completeness in mind to satisfy broad range of modern +with flexibility and completeness in mind to satisfy a broad range of modern replication scenarios. It is equally suitable for synchronous and asynchronous, master-slave and multi-master replication. @@ -87,7 +87,7 @@ Upgrade from mysql-server-5.0 to mysql-wsrep is not supported yet, please upgrade to mysql-server-5.1 first. If you're installing over an existing mysql installation, mysql-server-wsrep -will conflict with mysql-server-5.1 package, so remove it first: +will conflict with the mysql-server-5.1 package, so remove it first: $ sudo apt-get remove mysql-server-5.1 mysql-server-core-5.1 @@ -105,7 +105,7 @@ For example, installation of required packages on Debian Lenny: $ sudo apt-get install psmisc $ sudo apt-get -t lenny-backports install mysql-client-5.1 -Now you should be able to install mysql-wsrep package: +Now you should be able to install the mysql-wsrep package: $ sudo dpkg -i @@ -150,7 +150,7 @@ and can be ignored unless specific functionality is needed. 3. FIRST TIME SETUP Unless you're upgrading an already installed mysql-wsrep package, you will need -to set up a few things to prepare server for operation. +to set up a few things to prepare the server for operation. 3.1 CONFIGURATION FILES @@ -162,7 +162,7 @@ to set up a few things to prepare server for operation. * Make sure system-wide my.cnf contains "!includedir /etc/mysql/conf.d/" line. * Edit /etc/mysql/conf.d/wsrep.cnf and set wsrep_provider option by specifying - a path to provider library. If you don't have a provider, leave it as it is. + a path to the provider library. If you don't have a provider, leave it as it is. * When a new node joins the cluster it'll have to receive a state snapshot from one of the peers. This requires a privileged MySQL account with access from @@ -267,7 +267,7 @@ innodb_autoinc_lock_mode=2 This is a required parameter. Without it INSERTs into tables with AUTO_INCREMENT column may fail. autoinc lock modes 0 and 1 can cause unresolved deadlock, and make - system unresponsive. + the system unresponsive. innodb_locks_unsafe_for_binlog=1 This option is required for parallel applying. @@ -299,14 +299,14 @@ wsrep_node_address= results (multiple network interfaces, NAT, etc.) If not explicitly overridden by wsrep_sst_receive_address, the
part will be used to listen for SST (see below). And the whole
[:port] - will be passed to wsrep provider to be used as a base address in its + will be passed to the wsrep provider to be used as a base address in its communications. wsrep_node_name= Human readable node name (for easier log reading only). Defaults to hostname. wsrep_slave_threads=1 - Number of threads dedicated to processing of writesets from other nodes. + The number of threads dedicated to the processing of writesets from other nodes. For best performance should be few per CPU core. wsrep_dbug_option @@ -326,7 +326,7 @@ wsrep_convert_LOCK_to_trx=0 wsrep_retry_autocommit=1 Retry autocommit queries and single statement transactions should they fail certification test. This is analogous to rescheduling an autocommit query - should it go into deadlock with other transactions in the database lock + should it go into a deadlock with other transactions in the database lock manager. wsrep_auto_increment_control=1 @@ -357,7 +357,7 @@ wsrep_OSU_method=TOI is not replicating and may be unable to process replication events (due to table lock). Once DDL operation is complete, the node will catch up and sync with the cluster to become fully operational again. The DDL statement or - its effects are not replicated, so it is user's responsibility to manually + its effects are not replicated, so it is the user's responsibility to manually perform this operation on each of the nodes. wsrep_forced_binlog_format=none @@ -366,7 +366,7 @@ wsrep_forced_binlog_format=none format, regardless of what the client session has specified in binlog_format. Valid choices for wsrep_forced_binlog_format are: ROW, STATEMENT, MIXED and special value NONE, meaning that there is no forced binlog format in effect. - This variable was intruduced to support STATEMENT format replication during + This variable was introduced to support STATEMENT format replication during rolling schema upgrade processing. However, in most cases ROW replication is valid for asymmetrict schema replication. @@ -412,8 +412,8 @@ wsrep_sst_auth= wsrep_sst_donor= A name of the node which should serve as state snapshot donor. This allows - to control which node will serve state snapshot request. By default the - most suitable node is chosen by wsrep provider. This is the same as given in + controlling which node will serve the state snapshot request. By default the + most suitable node is chosen by the wsrep provider. This is the same as given in wsrep_node_name. @@ -423,7 +423,7 @@ wsrep_sst_donor= for the database. They change the database structure and are non- transactional. - Release 22.3 brings a new method for performing schema upgrades. User can + Release 22.3 brings a new method for performing schema upgrades. A user can now choose whether to use the traditional total order isolation or new rolling schema upgrade method. The OSU method choice is done by global parameter: 'wsrep_OSU_method'. @@ -439,7 +439,7 @@ wsrep_sst_donor= 6.2 Rolling Schema Upgrade (RSU) - Rolling schema upgrade is new DDL processing method, where DDL will be + Rolling schema upgrade is a new DDL processing method, where DDL will be processed locally for the node. The node is disconnected of the replication for the duration of the DDL processing, so that there is only DDL statement processing in the node and it does not block the rest of the cluster. When @@ -468,7 +468,7 @@ wsrep_sst_donor= * LOCK/UNLOCK TABLES cannot be supported in multi-master setups. * lock functions (GET_LOCK(), RELEASE_LOCK()... ) -4) Query log cannot be directed to table. If you enable query logging, +4) Query log cannot be directed to a table. If you enable query logging, you must forward the log to a file: log_output = FILE Use general_log and general_log_file to choose query logging and the @@ -480,7 +480,7 @@ wsrep_sst_donor= 6) Due to cluster level optimistic concurrency control, transaction issuing COMMIT may still be aborted at that stage. There can be two transactions. writing to same rows and committing in separate cluster nodes, and only one - of the them can successfully commit. The failing one will be aborted. + of them can successfully commit. The failing one will be aborted. For cluster level aborts, MySQL/galera cluster gives back deadlock error. code (Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)). diff --git a/VERSION b/VERSION index 15d82f0de..f95ab5017 100644 --- a/VERSION +++ b/VERSION @@ -1,3 +1,3 @@ MYSQL_VERSION_MAJOR=10 MYSQL_VERSION_MINOR=1 -MYSQL_VERSION_PATCH=37 +MYSQL_VERSION_PATCH=38 diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index c75abd495..c760a9dbf 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -41,7 +41,7 @@ ENDIF(UNIX) MYSQL_ADD_EXECUTABLE(mysqltest mysqltest.cc COMPONENT Test) SET_SOURCE_FILES_PROPERTIES(mysqltest.cc PROPERTIES COMPILE_FLAGS "-DTHREADS") -TARGET_LINK_LIBRARIES(mysqltest mysqlclient pcre pcreposix) +TARGET_LINK_LIBRARIES(mysqltest mysqlclient pcreposix pcre) SET_TARGET_PROPERTIES(mysqltest PROPERTIES ENABLE_EXPORTS TRUE) diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index bc13aa6c2..2c05bb806 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -72,6 +72,7 @@ ulong mysqld_net_retry_count = 10L; ulong open_files_limit; ulong opt_binlog_rows_event_max_size; ulonglong test_flags = 0; +ulong opt_binlog_rows_event_max_encoded_size= MAX_MAX_ALLOWED_PACKET; static uint opt_protocol= 0; static FILE *result_file; static char *result_file_name= 0; @@ -813,7 +814,12 @@ write_event_header_and_base64(Log_event *ev, FILE *result_file, /* Write header and base64 output to cache */ ev->print_header(head, print_event_info, FALSE); - ev->print_base64(body, print_event_info, FALSE); + + DBUG_ASSERT(print_event_info->base64_output_mode == BASE64_OUTPUT_ALWAYS); + + ev->print_base64(body, print_event_info, + print_event_info->base64_output_mode != + BASE64_OUTPUT_DECODE_ROWS); /* Read data from cache and write to result file */ if (copy_event_cache_to_file_and_reinit(head, result_file) || @@ -852,7 +858,9 @@ static bool print_base64(PRINT_EVENT_INFO *print_event_info, Log_event *ev) return 1; } ev->print(result_file, print_event_info); - return print_event_info->head_cache.error == -1; + return + print_event_info->head_cache.error == -1 || + print_event_info->body_cache.error == -1; } @@ -1472,6 +1480,15 @@ that may lead to an endless loop.", "This value must be a multiple of 256.", &opt_binlog_rows_event_max_size, &opt_binlog_rows_event_max_size, 0, GET_ULONG, REQUIRED_ARG, UINT_MAX, 256, ULONG_MAX, 0, 256, 0}, +#ifndef DBUG_OFF + {"debug-binlog-row-event-max-encoded-size", 0, + "The maximum size of base64-encoded rows-event in one BINLOG pseudo-query " + "instance. When the computed actual size exceeds the limit " + "the BINLOG's argument string is fragmented in two.", + &opt_binlog_rows_event_max_encoded_size, + &opt_binlog_rows_event_max_encoded_size, 0, + GET_ULONG, REQUIRED_ARG, UINT_MAX/4, 256, ULONG_MAX, 0, 256, 0}, +#endif {"verify-binlog-checksum", 'c', "Verify checksum binlog events.", (uchar**) &opt_verify_binlog_checksum, (uchar**) &opt_verify_binlog_checksum, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, diff --git a/client/mysqltest.cc b/client/mysqltest.cc index a58b83bd3..b2a632877 100644 --- a/client/mysqltest.cc +++ b/client/mysqltest.cc @@ -20,7 +20,7 @@ Tool used for executing a .test file See the "MySQL Test framework manual" for more information - http://dev.mysql.com/doc/mysqltest/en/index.html + https://mariadb.com/kb/en/library/mysqltest/ Please keep the test framework tools identical in all versions! @@ -6075,7 +6075,6 @@ void do_connect(struct st_command *command) #endif if (opt_compress || con_compress) mysql_options(con_slot->mysql, MYSQL_OPT_COMPRESS, NullS); - mysql_options(con_slot->mysql, MYSQL_OPT_LOCAL_INFILE, 0); mysql_options(con_slot->mysql, MYSQL_SET_CHARSET_NAME, charset_info->csname); if (opt_charsets_dir) @@ -6175,6 +6174,11 @@ void do_connect(struct st_command *command) if (con_slot == next_con) next_con++; /* if we used the next_con slot, advance the pointer */ } + else // Failed to connect. Free the memory. + { + mysql_close(con_slot->mysql); + con_slot->mysql= NULL; + } dynstr_free(&ds_connection_name); dynstr_free(&ds_host); @@ -6547,8 +6551,6 @@ static inline bool is_escape_char(char c, char in_string) SYNOPSIS read_line - buf buffer for the read line - size size of the buffer i.e max size to read DESCRIPTION This function actually reads several lines and adds them to the @@ -6566,10 +6568,15 @@ static inline bool is_escape_char(char c, char in_string) */ -int read_line(char *buf, int size) +static char *read_command_buf= NULL; +static size_t read_command_buflen= 0; +static const size_t max_multibyte_length= 6; + +int read_line() { char c, last_quote=0, last_char= 0; - char *p= buf, *buf_end= buf + size - 1; + char *p= read_command_buf; + char *buf_end= read_command_buf + read_command_buflen - max_multibyte_length; int skip_char= 0; my_bool have_slash= FALSE; @@ -6577,10 +6584,21 @@ int read_line(char *buf, int size) R_COMMENT, R_LINE_START} state= R_LINE_START; DBUG_ENTER("read_line"); + *p= 0; start_lineno= cur_file->lineno; DBUG_PRINT("info", ("Starting to read at lineno: %d", start_lineno)); - for (; p < buf_end ;) + while (1) { + if (p >= buf_end) + { + my_ptrdiff_t off= p - read_command_buf; + read_command_buf= (char*)my_realloc(read_command_buf, + read_command_buflen*2, MYF(MY_FAE)); + p= read_command_buf + off; + read_command_buflen*= 2; + buf_end= read_command_buf + read_command_buflen - max_multibyte_length; + } + skip_char= 0; c= my_getc(cur_file->file); if (feof(cur_file->file)) @@ -6616,7 +6634,7 @@ int read_line(char *buf, int size) cur_file->lineno++; /* Convert cr/lf to lf */ - if (p != buf && *(p-1) == '\r') + if (p != read_command_buf && *(p-1) == '\r') p--; } @@ -6631,9 +6649,9 @@ int read_line(char *buf, int size) } else if ((c == '{' && (!my_strnncoll_simple(charset_info, (const uchar*) "while", 5, - (uchar*) buf, MY_MIN(5, p - buf), 0) || + (uchar*) read_command_buf, MY_MIN(5, p - read_command_buf), 0) || !my_strnncoll_simple(charset_info, (const uchar*) "if", 2, - (uchar*) buf, MY_MIN(2, p - buf), 0)))) + (uchar*) read_command_buf, MY_MIN(2, p - read_command_buf), 0)))) { /* Only if and while commands can be terminated by { */ *p++= c; @@ -6767,8 +6785,6 @@ int read_line(char *buf, int size) *p++= c; } } - die("The input buffer is too small for this query.x\n" \ - "check your query or increase MAX_QUERY and recompile"); DBUG_RETURN(0); } @@ -6913,12 +6929,8 @@ bool is_delimiter(const char* p) terminated by new line '\n' regardless how many "delimiter" it contain. */ -#define MAX_QUERY (256*1024*2) /* 256K -- a test in sp-big is >128K */ -static char read_command_buf[MAX_QUERY]; - int read_command(struct st_command** command_ptr) { - char *p= read_command_buf; struct st_command* command; DBUG_ENTER("read_command"); @@ -6934,8 +6946,7 @@ int read_command(struct st_command** command_ptr) die("Out of memory"); command->type= Q_UNKNOWN; - read_command_buf[0]= 0; - if (read_line(read_command_buf, sizeof(read_command_buf))) + if (read_line()) { check_eol_junk(read_command_buf); DBUG_RETURN(1); @@ -6944,6 +6955,7 @@ int read_command(struct st_command** command_ptr) if (opt_result_format_version == 1) convert_to_format_v1(read_command_buf); + char *p= read_command_buf; DBUG_PRINT("info", ("query: '%s'", read_command_buf)); if (*p == '#') { @@ -9095,6 +9107,8 @@ int main(int argc, char **argv) init_win_path_patterns(); #endif + read_command_buf= (char*)my_malloc(read_command_buflen= 65536, MYF(MY_FAE)); + init_dynamic_string(&ds_res, "", 2048, 2048); init_alloc_root(&require_file_root, 1024, 1024, MYF(0)); @@ -9165,7 +9179,6 @@ int main(int argc, char **argv) (void *) &opt_connect_timeout); if (opt_compress) mysql_options(con->mysql,MYSQL_OPT_COMPRESS,NullS); - mysql_options(con->mysql, MYSQL_OPT_LOCAL_INFILE, 0); mysql_options(con->mysql, MYSQL_SET_CHARSET_NAME, charset_info->csname); if (opt_charsets_dir) diff --git a/cmake/build_configurations/mysql_release.cmake b/cmake/build_configurations/mysql_release.cmake index 04860a40d..b73b44cdd 100644 --- a/cmake/build_configurations/mysql_release.cmake +++ b/cmake/build_configurations/mysql_release.cmake @@ -83,7 +83,6 @@ IF(FEATURE_SET) ENDIF() ENDIF() -OPTION(ENABLED_LOCAL_INFILE "" ON) SET(WITH_INNODB_SNAPPY OFF CACHE STRING "") IF(WIN32) SET(WITH_LIBARCHIVE STATIC CACHE STRING "") diff --git a/cmake/ssl.cmake b/cmake/ssl.cmake index 24e186004..308f725a0 100644 --- a/cmake/ssl.cmake +++ b/cmake/ssl.cmake @@ -177,12 +177,20 @@ MACRO (MYSQL_CHECK_SSL) ENDIF() INCLUDE(CheckSymbolExists) + INCLUDE(CheckCSourceCompiles) SET(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR}) CHECK_SYMBOL_EXISTS(SHA512_DIGEST_LENGTH "openssl/sha.h" HAVE_SHA512_DIGEST_LENGTH) + CHECK_C_SOURCE_COMPILES(" + #include + int main() + { + DH dh; + return sizeof(dh.version); + }" OLD_OPENSSL_API) SET(CMAKE_REQUIRED_INCLUDES) IF(OPENSSL_INCLUDE_DIR AND OPENSSL_LIBRARIES AND - OPENSSL_MAJOR_VERSION STRLESS "101" AND + OLD_OPENSSL_API AND CRYPTO_LIBRARY AND HAVE_SHA512_DIGEST_LENGTH) SET(SSL_SOURCES "") diff --git a/cmake/wsrep.cmake b/cmake/wsrep.cmake index 9fa127380..b272df51a 100644 --- a/cmake/wsrep.cmake +++ b/cmake/wsrep.cmake @@ -26,7 +26,7 @@ ENDIF() OPTION(WITH_WSREP "WSREP replication API (to use, e.g. Galera Replication library)" ${with_wsrep_default}) # Set the patch version -SET(WSREP_PATCH_VERSION "23") +SET(WSREP_PATCH_VERSION "24") # Obtain wsrep API version FILE(STRINGS "${MySQL_SOURCE_DIR}/wsrep/wsrep_api.h" WSREP_API_VERSION diff --git a/cmake/zlib.cmake b/cmake/zlib.cmake index 4b7faacc4..e269c473f 100644 --- a/cmake/zlib.cmake +++ b/cmake/zlib.cmake @@ -34,11 +34,6 @@ ENDMACRO() MACRO (MYSQL_CHECK_ZLIB_WITH_COMPRESS) - # For NDBCLUSTER: Use bundled zlib by default - IF (NOT WITH_ZLIB) - SET(WITH_ZLIB "bundled" CACHE STRING "By default use bundled zlib on this platform") - ENDIF() - IF(WITH_ZLIB STREQUAL "bundled") MYSQL_USE_BUNDLED_ZLIB() ELSE() diff --git a/config.h.cmake b/config.h.cmake index 52d837fad..3750ab717 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -544,7 +544,11 @@ /* MySQL features */ -#cmakedefine ENABLED_LOCAL_INFILE 1 +#define LOCAL_INFILE_MODE_OFF 0 +#define LOCAL_INFILE_MODE_ON 1 +#define LOCAL_INFILE_MODE_AUTO 2 +#define ENABLED_LOCAL_INFILE LOCAL_INFILE_MODE_@ENABLED_LOCAL_INFILE@ + #cmakedefine ENABLED_PROFILING 1 #cmakedefine EXTRA_DEBUG 1 #cmakedefine CYBOZU 1 diff --git a/extra/innochecksum.cc b/extra/innochecksum.cc index 7ad71aa81..b3fcbbfb9 100644 --- a/extra/innochecksum.cc +++ b/extra/innochecksum.cc @@ -522,7 +522,16 @@ is_page_corrupted( normal method. */ if (is_encrypted && key_version != 0) { is_corrupted = !fil_space_verify_crypt_checksum(buf, - page_size.is_compressed() ? page_size.physical() : 0, NULL, cur_page_num); + page_size.is_compressed() ? page_size.physical() : 0); + if (is_corrupted && log_file) { + fprintf(log_file, + "Page " ULINTPF ":%llu may be corrupted;" + " key_version=" ULINTPF "\n", + space_id, cur_page_num, + mach_read_from_4( + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION + + buf)); + } } else { is_corrupted = true; } diff --git a/extra/mariabackup/fil_cur.cc b/extra/mariabackup/fil_cur.cc index be4a62534..46465575a 100644 --- a/extra/mariabackup/fil_cur.cc +++ b/extra/mariabackup/fil_cur.cc @@ -30,6 +30,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA #include #include "fil_cur.h" +#include "fil0crypt.h" +#include "fil0pagecompress.h" #include "common.h" #include "read_filt.h" #include "xtrabackup.h" @@ -219,7 +221,7 @@ xb_fil_cur_open( posix_fadvise(cursor->file, 0, 0, POSIX_FADV_SEQUENTIAL); /* Determine the page size */ - zip_size = xb_get_zip_size(cursor->file); + zip_size = xb_get_zip_size(node); if (zip_size == ULINT_UNDEFINED) { xb_fil_cur_close(cursor); return(XB_FIL_CUR_SKIP); @@ -263,6 +265,100 @@ xb_fil_cur_open( return(XB_FIL_CUR_SUCCESS); } +static bool page_is_corrupted(const byte *page, ulint page_no, + const xb_fil_cur_t *cursor, + const fil_space_t *space) +{ + byte tmp_frame[UNIV_PAGE_SIZE_MAX]; + byte tmp_page[UNIV_PAGE_SIZE_MAX]; + + ulint page_type = mach_read_from_2(page + FIL_PAGE_TYPE); + + /* We ignore the doublewrite buffer pages.*/ + if (cursor->space_id == TRX_SYS_SPACE + && page_no >= FSP_EXTENT_SIZE + && page_no < FSP_EXTENT_SIZE * 3) { + return false; + } + + /* Validate page number. */ + if (mach_read_from_4(page + FIL_PAGE_OFFSET) != page_no + && space->id != TRX_SYS_SPACE) { + /* On pages that are not all zero, the + page number must match. + + There may be a mismatch on tablespace ID, + because files may be renamed during backup. + We disable the page number check + on the system tablespace, because it may consist + of multiple files, and here we count the pages + from the start of each file.) + + The first 38 and last 8 bytes are never encrypted. */ + const ulint* p = reinterpret_cast(page); + const ulint* const end = reinterpret_cast( + page + cursor->page_size); + do { + if (*p++) { + return true; + } + } while (p != end); + + /* Whole zero page is valid. */ + return false; + } + + /* Validate encrypted pages. The first page is never encrypted. + In the system tablespace, the first page would be written with + FIL_PAGE_FILE_FLUSH_LSN at shutdown, and if the LSN exceeds + 4,294,967,295, the mach_read_from_4() below would wrongly + interpret the page as encrypted. We prevent that by checking + page_no first. */ + if (page_no + && mach_read_from_4(page + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION) + && (opt_backup_encrypted + || (space->crypt_data + && space->crypt_data->type != CRYPT_SCHEME_UNENCRYPTED))) { + + if (!fil_space_verify_crypt_checksum(page, cursor->zip_size)) + return true; + + /* Compressed encrypted need to be unencryped and uncompressed for verification. */ + if (page_type != FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED && !opt_extended_validation) + return false; + + memcpy(tmp_page, page, cursor->page_size); + + bool decrypted = false; + if (!space->crypt_data + || space->crypt_data->type == CRYPT_SCHEME_UNENCRYPTED + || !fil_space_decrypt(space, tmp_frame, tmp_page, + &decrypted)) { + return true; + } + + if (page_type != FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) { + return buf_page_is_corrupted(true, tmp_page, cursor->zip_size, space); + } + } + + if (page_type == FIL_PAGE_PAGE_COMPRESSED) { + memcpy(tmp_page, page, cursor->page_size); + } + + if (page_type == FIL_PAGE_PAGE_COMPRESSED || page_type == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) { + ulint decomp = fil_page_decompress(tmp_frame, tmp_page); + page_type = mach_read_from_2(tmp_page + FIL_PAGE_TYPE); + + return (!decomp + || (decomp != srv_page_size && cursor->zip_size) + || page_type == FIL_PAGE_PAGE_COMPRESSED + || page_type == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED + || buf_page_is_corrupted(true, tmp_page, cursor->zip_size, space)); + } + + return buf_page_is_corrupted(true, page, cursor->zip_size, space); +} /************************************************************************ Reads and verifies the next block of pages from the source file. Positions the cursor after the last read non-corrupted page. @@ -336,55 +432,41 @@ xb_fil_cur_read( return(XB_FIL_CUR_ERROR); } - fil_system_enter(); - fil_space_t *space = fil_space_get_by_id(cursor->space_id); - fil_system_exit(); + fil_space_t *space = fil_space_acquire_for_io(cursor->space_id); /* check pages for corruption and re-read if necessary. i.e. in case of partially written pages */ for (page = cursor->buf, i = 0; i < npages; page += cursor->page_size, i++) { - ib_int64_t page_no = cursor->buf_page_no + i; - - bool checksum_ok = fil_space_verify_crypt_checksum(page, cursor->zip_size,space, (ulint)page_no); + ulint page_no = cursor->buf_page_no + i; - if (!checksum_ok && - buf_page_is_corrupted(true, page, cursor->zip_size,space)) { + if (page_is_corrupted(page, page_no, cursor, space)){ + retry_count--; - if (cursor->is_system && - page_no >= (ib_int64_t)FSP_EXTENT_SIZE && - page_no < (ib_int64_t) FSP_EXTENT_SIZE * 3) { - /* skip doublewrite buffer pages */ - xb_a(cursor->page_size == UNIV_PAGE_SIZE); - msg("[%02u] mariabackup: " - "Page " UINT64PF " is a doublewrite buffer page, " - "skipping.\n", cursor->thread_n, page_no); - } else { - retry_count--; - if (retry_count == 0) { - msg("[%02u] mariabackup: " - "Error: failed to read page after " - "10 retries. File %s seems to be " - "corrupted.\n", cursor->thread_n, - cursor->abs_path); - ret = XB_FIL_CUR_ERROR; - break; - } + if (retry_count == 0) { msg("[%02u] mariabackup: " - "Database page corruption detected at page " - UINT64PF ", retrying...\n", cursor->thread_n, - page_no); - - os_thread_sleep(100000); - - goto read_retry; + "Error: failed to read page after " + "10 retries. File %s seems to be " + "corrupted.\n", cursor->thread_n, + cursor->abs_path); + ret = XB_FIL_CUR_ERROR; + buf_page_print(page, cursor->page_size); + break; } + msg("[%02u] mariabackup: " + "Database page corruption detected at page " + ULINTPF ", retrying...\n", cursor->thread_n, + page_no); + + os_thread_sleep(100000); + goto read_retry; } cursor->buf_read += cursor->page_size; cursor->buf_npages++; } posix_fadvise(cursor->file, offset, to_read, POSIX_FADV_DONTNEED); + fil_space_release_for_io(space); return(ret); } diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc index 4e5b0c8e5..2d28a6caa 100644 --- a/extra/mariabackup/xtrabackup.cc +++ b/extra/mariabackup/xtrabackup.cc @@ -206,6 +206,8 @@ char* log_ignored_opt = NULL; extern my_bool opt_use_ssl; my_bool opt_ssl_verify_server_cert; +my_bool opt_extended_validation; +my_bool opt_backup_encrypted; /* === metadata of backup === */ #define XTRABACKUP_METADATA_FILENAME "xtrabackup_checkpoints" @@ -248,7 +250,6 @@ static ulong innobase_log_block_size = 512; char* innobase_doublewrite_file = NULL; char* innobase_buffer_pool_filename = NULL; -longlong innobase_buffer_pool_size = 8*1024*1024L; longlong innobase_log_file_size = 48*1024*1024L; /* The default values for the following char* start-up parameters @@ -510,6 +511,8 @@ enum options_xtrabackup OPT_XTRA_DATABASES_FILE, OPT_XTRA_CREATE_IB_LOGFILE, OPT_XTRA_PARALLEL, + OPT_XTRA_EXTENDED_VALIDATION, + OPT_XTRA_BACKUP_ENCRYPTED, OPT_XTRA_STREAM, OPT_XTRA_COMPRESS, OPT_XTRA_COMPRESS_THREADS, @@ -976,6 +979,22 @@ struct my_option xb_server_options[] = (G_PTR*) &xtrabackup_parallel, (G_PTR*) &xtrabackup_parallel, 0, GET_INT, REQUIRED_ARG, 1, 1, INT_MAX, 0, 0, 0}, + {"extended_validation", OPT_XTRA_EXTENDED_VALIDATION, + "Enable extended validation for Innodb data pages during backup phase. " + "Will slow down backup considerably, in case encryption is used. " + "May fail if tables are created during the backup.", + (G_PTR*)&opt_extended_validation, + (G_PTR*)&opt_extended_validation, + 0, GET_BOOL, NO_ARG, FALSE, 0, 0, 0, 0, 0}, + + {"backup_encrypted", OPT_XTRA_BACKUP_ENCRYPTED, + "In --backup, assume that nonzero key_version implies that the page" + " is encrypted. Use --backup --skip-backup-encrypted to allow" + " copying unencrypted that were originally created before MySQL 5.1.48.", + (G_PTR*)&opt_backup_encrypted, + (G_PTR*)&opt_backup_encrypted, + 0, GET_BOOL, NO_ARG, TRUE, 0, 0, 0, 0, 0}, + {"log", OPT_LOG, "Ignored option for MySQL option compatibility", (G_PTR*) &log_ignored_opt, (G_PTR*) &log_ignored_opt, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, @@ -1003,11 +1022,6 @@ struct my_option xb_server_options[] = (G_PTR*) &srv_auto_extend_increment, (G_PTR*) &srv_auto_extend_increment, 0, GET_ULONG, REQUIRED_ARG, 8L, 1L, 1000L, 0, 1L, 0}, - {"innodb_buffer_pool_size", OPT_INNODB_BUFFER_POOL_SIZE, - "The size of the memory buffer InnoDB uses to cache data and indexes of its tables.", - (G_PTR*) &innobase_buffer_pool_size, (G_PTR*) &innobase_buffer_pool_size, 0, - GET_LL, REQUIRED_ARG, 8*1024*1024L, 1024*1024L, LONGLONG_MAX, 0, - 1024*1024L, 0}, {"innodb_checksums", OPT_INNODB_CHECKSUMS, "Enable InnoDB checksums validation (enabled by default). \ Disable with --skip-innodb-checksums.", (G_PTR*) &innobase_use_checksums, (G_PTR*) &innobase_use_checksums, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0}, @@ -1214,11 +1228,23 @@ debug_sync_point(const char *name) #endif } -static const char *xb_client_default_groups[]= - { "xtrabackup", "mariabackup", "client", 0, 0, 0 }; +static const char *xb_client_default_groups[]={ + "xtrabackup", "mariabackup", + "client", "client-server", + "client-mariadb", + 0, 0, 0 +}; -static const char *xb_server_default_groups[]= - { "xtrabackup", "mariabackup", "mysqld", 0, 0, 0 }; +static const char *xb_server_default_groups[]={ + "xtrabackup", "mariabackup", + "mysqld", "server", MYSQL_BASE_VERSION, + "mariadb", MARIADB_BASE_VERSION, + "client-server", + #ifdef WITH_WSREP + "galera", + #endif + 0, 0, 0 +}; static void print_version(void) { @@ -1514,13 +1540,6 @@ innodb_init_param(void) " on 32-bit systems\n"); } - if (innobase_buffer_pool_size > UINT_MAX32) { - msg("mariabackup: innobase_buffer_pool_size can't be " - "over 4GB on 32-bit systems\n"); - - goto error; - } - if (innobase_log_file_size > UINT_MAX32) { msg("mariabackup: innobase_log_file_size can't be " "over 4GB on 32-bit systemsi\n"); @@ -1645,8 +1664,6 @@ innodb_init_param(void) /* We set srv_pool_size here in units of 1 kB. InnoDB internally changes the value so that it becomes the number of database pages. */ - - //srv_buf_pool_size = (ulint) innobase_buffer_pool_size; srv_buf_pool_size = (ulint) xtrabackup_use_memory; srv_mem_pool_size = (ulint) innobase_additional_mem_pool_size; @@ -2300,7 +2317,7 @@ check_if_skip_table( Reads the space flags from a given data file and returns the compressed page size, or 0 if the space is not compressed. */ ulint -xb_get_zip_size(pfs_os_file_t file) +xb_get_zip_size(fil_node_t* file) { byte *buf; byte *page; @@ -2311,7 +2328,7 @@ xb_get_zip_size(pfs_os_file_t file) buf = static_cast(ut_malloc(2 * UNIV_PAGE_SIZE)); page = static_cast(ut_align(buf, UNIV_PAGE_SIZE)); - success = os_file_read(file, page, 0, UNIV_PAGE_SIZE); + success = os_file_read(file->handle, page, 0, UNIV_PAGE_SIZE); if (!success) { goto end; } @@ -2319,6 +2336,17 @@ xb_get_zip_size(pfs_os_file_t file) space = mach_read_from_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID); zip_size = (space == 0 ) ? 0 : dict_tf_get_zip_size(fsp_header_get_flags(page)); + + if (!file->space->crypt_data) { + fil_system_enter(); + if (!file->space->crypt_data) { + file->space->crypt_data = fil_space_read_crypt_data( + space, page, + fsp_header_get_crypt_offset(zip_size)); + } + fil_system_exit(); + } + end: ut_free(buf); @@ -5235,6 +5263,7 @@ xb_process_datadir( path, NULL, fileinfo.name, data)) { + os_file_closedir(dbdir); return(FALSE); } } @@ -5295,6 +5324,7 @@ xb_process_datadir( dbinfo.name, fileinfo.name, data)) { + os_file_closedir(dbdir); return(FALSE); } } @@ -6823,3 +6853,12 @@ int main(int argc, char **argv) exit(EXIT_SUCCESS); } + + +#if defined (__SANITIZE_ADDRESS__) && defined (__linux__) +/* Avoid LeakSanitizer's false positives. */ +const char* __asan_default_options() +{ + return "detect_leaks=0"; +} +#endif diff --git a/extra/mariabackup/xtrabackup.h b/extra/mariabackup/xtrabackup.h index 3b2a25d45..e870ecbe2 100644 --- a/extra/mariabackup/xtrabackup.h +++ b/extra/mariabackup/xtrabackup.h @@ -128,6 +128,8 @@ extern my_bool opt_noversioncheck; extern my_bool opt_no_backup_locks; extern my_bool opt_decompress; extern my_bool opt_remove_original; +extern my_bool opt_extended_validation; +extern my_bool opt_backup_encrypted; extern char *opt_incremental_history_name; extern char *opt_incremental_history_uuid; @@ -184,7 +186,7 @@ void xb_data_files_close(void); /*********************************************************************** Reads the space flags from a given data file and returns the compressed page size, or 0 if the space is not compressed. */ -ulint xb_get_zip_size(pfs_os_file_t file); +ulint xb_get_zip_size(fil_node_t* file); /************************************************************************ Checks if a table specified as a name in the form "database/name" (InnoDB 5.6) diff --git a/include/my_global.h b/include/my_global.h index dcfd607b4..36e4b5368 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -1082,7 +1082,7 @@ typedef ulong myf; /* Type of MyFlags in my_funcs */ static inline char *dlerror(void) { static char win_errormsg[2048]; - FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, + FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, 0, GetLastError(), 0, win_errormsg, 2048, NULL); return win_errormsg; } diff --git a/include/my_sys.h b/include/my_sys.h index 110a2ee9a..c30580a8c 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -602,7 +602,9 @@ static inline size_t my_b_bytes_in_cache(const IO_CACHE *info) return *info->current_end - *info->current_pos; } -int my_b_copy_to_file(IO_CACHE *cache, FILE *file); +int my_b_copy_to_file (IO_CACHE *cache, FILE *file, size_t count); +int my_b_copy_all_to_file(IO_CACHE *cache, FILE *file); + my_off_t my_b_append_tell(IO_CACHE* info); my_off_t my_b_safe_tell(IO_CACHE* info); /* picks the correct tell() */ int my_b_pread(IO_CACHE *info, uchar *Buffer, size_t Count, my_off_t pos); diff --git a/include/my_valgrind.h b/include/my_valgrind.h index c488aaf10..78e5cf1ba 100644 --- a/include/my_valgrind.h +++ b/include/my_valgrind.h @@ -42,7 +42,7 @@ # define MEM_CHECK_ADDRESSABLE(a,len) ((void) 0) # define MEM_CHECK_DEFINED(a,len) ((void) 0) #else -# define MEM_UNDEFINED(a,len) ((void) 0) +# define MEM_UNDEFINED(a,len) ((void) (a), (void) (len)) # define MEM_NOACCESS(a,len) ((void) 0) # define MEM_CHECK_ADDRESSABLE(a,len) ((void) 0) # define MEM_CHECK_DEFINED(a,len) ((void) 0) @@ -51,7 +51,7 @@ #ifndef DBUG_OFF #define TRASH_FILL(A,B,C) do { const size_t trash_tmp= (B); MEM_UNDEFINED(A, trash_tmp); memset(A, C, trash_tmp); } while (0) #else -#define TRASH_FILL(A,B,C) do { const size_t trash_tmp __attribute__((unused))= (B); MEM_UNDEFINED(A,trash_tmp); } while (0) +#define TRASH_FILL(A,B,C) do { MEM_UNDEFINED((A), (B)); } while (0) #endif #define TRASH_ALLOC(A,B) do { TRASH_FILL(A,B,0xA5); MEM_UNDEFINED(A,B); } while(0) #define TRASH_FREE(A,B) do { TRASH_FILL(A,B,0x8F); MEM_NOACCESS(A,B); } while(0) diff --git a/include/mysql.h b/include/mysql.h index 53c86aee8..c538614c5 100644 --- a/include/mysql.h +++ b/include/mysql.h @@ -287,7 +287,7 @@ typedef struct st_mysql /* session-wide random string */ char scramble[SCRAMBLE_LENGTH+1]; - my_bool unused1; + my_bool auto_local_infile; void *unused2, *unused3, *unused4, *unused5; LIST *stmts; /* list of all statements */ diff --git a/include/mysql.h.pp b/include/mysql.h.pp index 8936a716b..6d0d2be5a 100644 --- a/include/mysql.h.pp +++ b/include/mysql.h.pp @@ -350,7 +350,7 @@ typedef struct st_mysql my_bool free_me; my_bool reconnect; char scramble[20 +1]; - my_bool unused1; + my_bool auto_local_infile; void *unused2, *unused3, *unused4, *unused5; LIST *stmts; const struct st_mysql_methods *methods; diff --git a/include/mysql/service_kill_statement.h b/include/mysql/service_kill_statement.h index 995b21f0a..bfb222301 100644 --- a/include/mysql/service_kill_statement.h +++ b/include/mysql/service_kill_statement.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2013, Monty Program Ab. +/* Copyright (c) 2013, 2018, MariaDB 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 @@ -27,7 +27,7 @@ time-consuming loops, and gracefully abort the operation if it is non-zero. - thd_is_killed(thd) + thd_killed(thd) @return 0 - no KILL statement was issued, continue normally @return 1 - there was a KILL statement, abort the execution. diff --git a/libmysqld/examples/CMakeLists.txt b/libmysqld/examples/CMakeLists.txt index d47638ad2..1eb07a2ad 100644 --- a/libmysqld/examples/CMakeLists.txt +++ b/libmysqld/examples/CMakeLists.txt @@ -34,7 +34,7 @@ ENDIF(UNIX) MYSQL_ADD_EXECUTABLE(mysqltest_embedded ../../client/mysqltest.cc COMPONENT Test) -TARGET_LINK_LIBRARIES(mysqltest_embedded mysqlserver pcre pcreposix) +TARGET_LINK_LIBRARIES(mysqltest_embedded mysqlserver pcreposix pcre) IF(CMAKE_GENERATOR MATCHES "Xcode") # It does not seem possible to tell Xcode the resulting target might need diff --git a/mysql-test/disabled.def b/mysql-test/disabled.def index b489139a5..b6991cc1d 100644 --- a/mysql-test/disabled.def +++ b/mysql-test/disabled.def @@ -21,3 +21,4 @@ innodb-wl5522-debug-zip : broken upstream innodb_bug12902967 : broken upstream file_contents : MDEV-6526 these files are not installed anymore max_statement_time : cannot possibly work, depends on timing +partition_open_files_limit : open_files_limit check broken by MDEV-18360 diff --git a/mysql-test/include/innodb_encrypt_tables.combinations b/mysql-test/include/innodb_encrypt_tables.combinations new file mode 100644 index 000000000..4ca9b6721 --- /dev/null +++ b/mysql-test/include/innodb_encrypt_tables.combinations @@ -0,0 +1,14 @@ +[crypt] +innodb_encrypt_tables=ON +plugin-load-add=$FILE_KEY_MANAGEMENT_SO +loose-file-key-management +loose-file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys.txt +file-key-management-encryption-algorithm=aes_cbc + +[clear] +innodb_encrypt_tables=OFF +plugin-load-add=$FILE_KEY_MANAGEMENT_SO +loose-file-key-management +loose-file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys.txt +file-key-management-encryption-algorithm=aes_cbc + diff --git a/mysql-test/include/innodb_encrypt_tables.inc b/mysql-test/include/innodb_encrypt_tables.inc new file mode 100644 index 000000000..31ab7999a --- /dev/null +++ b/mysql-test/include/innodb_encrypt_tables.inc @@ -0,0 +1,4 @@ +# The goal of including this file is to enable innodb_encrypt_tables combinations +# (see include/innodb_encrypt_tables.combinations) + +--source include/have_innodb.inc diff --git a/mysql-test/lib/v1/mysql-test-run.pl b/mysql-test/lib/v1/mysql-test-run.pl index 79489d927..01b4fd868 100755 --- a/mysql-test/lib/v1/mysql-test-run.pl +++ b/mysql-test/lib/v1/mysql-test-run.pl @@ -23,7 +23,7 @@ # Tool used for executing a suite of .test file # # See the "MySQL Test framework manual" for more information -# http://dev.mysql.com/doc/mysqltest/en/index.html +# https://mariadb.com/kb/en/library/mysqltest/ # # Please keep the test framework tools identical in all versions! # diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 0e5e1c3d9..5fe616c67 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -25,7 +25,7 @@ # Tool used for executing a suite of .test files # # See the "MySQL Test framework manual" for more information -# http://dev.mysql.com/doc/mysqltest/en/index.html +# https://mariadb.com/kb/en/library/mysqltest/ # # ############################################################################## @@ -5285,6 +5285,7 @@ sub server_need_restart { exists $server->{'restart_opts'}) { my $use_dynamic_option_switch= 0; + delete $server->{'restart_opts'}; if (!$use_dynamic_option_switch) { mtr_verbose_restart($server, "running with different options '" . diff --git a/mysql-test/r/auto_increment_ranges_innodb.result b/mysql-test/r/auto_increment_ranges_innodb.result index fb936ddfd..961f8b870 100644 --- a/mysql-test/r/auto_increment_ranges_innodb.result +++ b/mysql-test/r/auto_increment_ranges_innodb.result @@ -264,3 +264,17 @@ delete from t1 where a=32767; insert into t1 values(NULL); ERROR 22003: Out of range value for column 'a' at row 1 drop table t1; +create table t1 (pk int auto_increment primary key, f varchar(20)); +insert t1 (f) values ('a'), ('b'), ('c'), ('d'); +select null, f into outfile 'load.data' from t1 limit 1; +load data infile 'load.data' into table t1; +insert t1 (f) values ('<==='); +select * from t1; +pk f +1 a +2 b +3 c +4 d +5 a +6 <=== +drop table t1; diff --git a/mysql-test/r/bigint.result b/mysql-test/r/bigint.result index f21a1a763..618aa326e 100644 --- a/mysql-test/r/bigint.result +++ b/mysql-test/r/bigint.result @@ -508,3 +508,14 @@ DROP TABLE t1; SELECT 100 BETWEEN 1 AND 9223372036854775808; 100 BETWEEN 1 AND 9223372036854775808 1 +# +# MDEV-17724 Wrong result for BETWEEN 0 AND 18446744073709551615 +# +CREATE TABLE t1 (c1 bigint(20) unsigned NOT NULL); +INSERT INTO t1 VALUES (0),(101),(255); +SELECT * FROM t1 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1; +c1 +0 +101 +255 +DROP TABLE t1; diff --git a/mysql-test/r/connect.result b/mysql-test/r/connect.result index cb66ff483..d3c19fd1f 100644 --- a/mysql-test/r/connect.result +++ b/mysql-test/r/connect.result @@ -82,8 +82,20 @@ connect(localhost,test,zorro,test2,MASTER_PORT,MASTER_SOCKET); ERROR 28000: Access denied for user 'test'@'localhost' (using password: YES) connect(localhost,test,zorro,test,MASTER_PORT,MASTER_SOCKET); ERROR 28000: Access denied for user 'test'@'localhost' (using password: YES) +select user,host,password,plugin,authentication_string from mysql.user where user='test'; +user host password plugin authentication_string +test localhost *5FDFF3268A50F41C5D18D2CA2F754D7BDB9B3E59 +test 127.0.0.1 *5FDFF3268A50F41C5D18D2CA2F754D7BDB9B3E59 update mysql.user set password=old_password("gambling2") where user=_binary"test"; flush privileges; +show grants for test@localhost; +Grants for test@localhost +GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost' IDENTIFIED BY PASSWORD '2f27438961437573' +update mysql.user set plugin='mysql_old_password' where user='test'; +flush privileges; +show grants for test@localhost; +Grants for test@localhost +GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost' IDENTIFIED BY PASSWORD '2f27438961437573' set password=""; set password='gambling3'; ERROR HY000: Password hash should be a 41-digit hexadecimal number diff --git a/mysql-test/r/ctype_latin1.result b/mysql-test/r/ctype_latin1.result index 3b9b26334..cfebfd163 100644 --- a/mysql-test/r/ctype_latin1.result +++ b/mysql-test/r/ctype_latin1.result @@ -8013,6 +8013,15 @@ ABCDEFGHI-ABCDEFGHI DROP TABLE t1; SET optimizer_switch=@save_optimizer_switch; # +# MDEV-17298 ASAN unknown-crash / READ of size 1 in my_strntoul_8bit upon INSERT .. SELECT +# +SET NAMES latin1; +CREATE TABLE t1 (a CHAR); +CREATE TABLE t2 (b ENUM('foo','bar')); +INSERT INTO t1 VALUES ('1'); +INSERT INTO t2 SELECT * FROM t1; +DROP TABLE t1, t2; +# # End of 10.0 tests # # diff --git a/mysql-test/r/flush.result b/mysql-test/r/flush.result index 2d7b81b19..4e4aec4b9 100644 --- a/mysql-test/r/flush.result +++ b/mysql-test/r/flush.result @@ -508,7 +508,6 @@ ERROR HY000: Table 't1' was locked with a READ lock and can't be updated UNLOCK TABLES; LOCK TABLES v1 WRITE; FLUSH TABLES v1; -ERROR HY000: Table 't1' was locked with a READ lock and can't be updated UNLOCK TABLES; LOCK TABLES v1 READ; FLUSH TABLES t1; diff --git a/mysql-test/r/func_group_innodb.result b/mysql-test/r/func_group_innodb.result index 52d5922df..17b3c1e79 100644 --- a/mysql-test/r/func_group_innodb.result +++ b/mysql-test/r/func_group_innodb.result @@ -246,4 +246,34 @@ EXPLAIN SELECT MIN(c) FROM t1 GROUP BY b; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range NULL b 263 NULL 3 Using index for group-by DROP TABLE t1; +# +# MDEV-17589: Stack-buffer-overflow with indexed varchar (utf8) field +# +set @save_innodb_file_format= @@innodb_file_format; +set @save_innodb_large_prefix= @@innodb_large_prefix; +set global innodb_file_format = BARRACUDA; +set global innodb_large_prefix = ON; +CREATE TABLE t1 (v1 varchar(1020), v2 varchar(2), v3 varchar(2), +KEY k1 (v3,v2,v1)) ENGINE=InnoDB CHARACTER SET=utf8 ROW_FORMAT=DYNAMIC; +INSERT INTO t1 VALUES ('king', 'qu','qu'), ('bad','go','go'); +explain +SELECT MIN(t1.v1) FROM t1 where t1.v2='qu' and t1.v3='qu'; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away +SELECT MIN(t1.v1) FROM t1 where t1.v2='qu' and t1.v3='qu'; +MIN(t1.v1) +king +drop table t1; +CREATE TABLE t1 (v1 varchar(1024) CHARACTER SET utf8, KEY v1 (v1)) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +INSERT INTO t1 VALUES ('king'), ('bad'); +explain +SELECT MIN(x.v1) FROM (SELECT t1.* FROM t1 WHERE t1.v1 >= 'p') x; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No matching min/max row +SELECT MIN(x.v1) FROM (SELECT t1.* FROM t1 WHERE t1.v1 >= 'p') x; +MIN(x.v1) +NULL +drop table t1; +set global innodb_file_format = @save_innodb_file_format; +set global innodb_large_prefix = @save_innodb_large_prefix; End of 5.5 tests diff --git a/mysql-test/r/func_misc.result b/mysql-test/r/func_misc.result index 1f9aa2127..287a70f1f 100644 --- a/mysql-test/r/func_misc.result +++ b/mysql-test/r/func_misc.result @@ -1471,3 +1471,11 @@ CALL p1(); ip_full_addr 2000:: DROP PROCEDURE p1; +# +# MDEV-18195 ASAN use-after-poison in my_strcasecmp_utf8 / Item::eq upon prepared statement with ORDER BY NAME_CONST +# +PREPARE stmt FROM "SELECT 'x' ORDER BY NAME_CONST( 'f', 'foo' )"; +EXECUTE stmt; +x +x +DEALLOCATE PREPARE stmt; diff --git a/mysql-test/r/grant5.result b/mysql-test/r/grant5.result index d7f3b6812..8c32d90a6 100644 --- a/mysql-test/r/grant5.result +++ b/mysql-test/r/grant5.result @@ -16,3 +16,10 @@ show grants for foo@'%'; ERROR 42000: Access denied for user 'test'@'%' to database 'mysql' drop user test, foo; drop role foo; +CREATE TABLE t1 (a INT); +LOCK TABLE t1 WRITE; +REVOKE EXECUTE ON PROCEDURE sp FROM u; +ERROR HY000: Table 'user' was not locked with LOCK TABLES +REVOKE PROCESS ON *.* FROM u; +ERROR HY000: Table 'user' was not locked with LOCK TABLES +DROP TABLE t1; diff --git a/mysql-test/r/huge_frm-6224.result b/mysql-test/r/huge_frm-6224.result index 3772317c0..0d6dd9682 100644 --- a/mysql-test/r/huge_frm-6224.result +++ b/mysql-test/r/huge_frm-6224.result @@ -1 +1,3 @@ +set global max_allowed_packet=1024*1024*10; ERROR HY000: The definition for table `t1` is too big +set global max_allowed_packet=default; diff --git a/mysql-test/r/index_merge_myisam.result b/mysql-test/r/index_merge_myisam.result index 6ec172548..fb795c694 100644 --- a/mysql-test/r/index_merge_myisam.result +++ b/mysql-test/r/index_merge_myisam.result @@ -1712,3 +1712,53 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL PRIMARY,c1,i,c2 NULL NULL NULL 69 Using where DROP TABLE t1; set optimizer_switch= @optimizer_switch_save; +# +# MDEV-16695: Estimate for rows of derived tables is very high when we are using index_merge union +# +create table t0 +( +key1 int not null, +INDEX i1(key1) +); +insert into t0 values (1),(2),(3),(4),(5),(6),(7),(8); +set @d=8; +insert into t0 select key1+ @d from t0; +set @d=@d*2; +insert into t0 select key1+ @d from t0; +set @d=@d*2; +insert into t0 select key1+ @d from t0; +set @d=@d*2; +insert into t0 select key1+ @d from t0; +set @d=@d*2; +insert into t0 select key1+ @d from t0; +set @d=@d*2; +insert into t0 select key1+ @d from t0; +set @d=@d*2; +insert into t0 select key1+ @d from t0; +set @d=@d*2; +alter table t0 add key2 int not null, add index i2(key2); +alter table t0 add key3 int not null, add index i3(key3); +alter table t0 add key8 int not null, add index i8(key8); +update t0 set key2=key1,key3=key1,key8=1024-key1; +analyze table t0; +Table Op Msg_type Msg_text +test.t0 analyze status OK +set @optimizer_switch_save=@@optimizer_switch; +set optimizer_switch='derived_merge=off,derived_with_keys=off'; +explain select * from (select * from t0 where key1 = 3 or key2 =3) as Z where Z.key8 > 5; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY ALL NULL NULL NULL NULL 2 Using where +2 DERIVED t0 index_merge i1,i2 i1,i2 4,4 NULL 2 Using union(i1,i2); Using where +select * from (select * from t0 where key1 = 3 or key2 =3) as Z where Z.key8 > 5; +key1 key2 key3 key8 +3 3 3 1021 +set optimizer_use_condition_selectivity=2; +explain select * from (select * from t0 where key1 = 3 or key2 =3) as Z where Z.key8 > 5; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY ALL NULL NULL NULL NULL 2 Using where +2 DERIVED t0 index_merge i1,i2 i1,i2 4,4 NULL 2 Using union(i1,i2); Using where +select * from (select * from t0 where key1 = 3 or key2 =3) as Z where Z.key8 > 5; +key1 key2 key3 key8 +3 3 3 1021 +set @@optimizer_switch= @optimizer_switch_save; +drop table t0; diff --git a/mysql-test/r/innodb_ext_key.result b/mysql-test/r/innodb_ext_key.result index de1323e00..e02b78cad 100644 --- a/mysql-test/r/innodb_ext_key.result +++ b/mysql-test/r/innodb_ext_key.result @@ -1089,6 +1089,7 @@ from t0 A, t0 B, t0 C; drop table t0,t1; # +# # MDEV-10360: Extended keys: index properties depend on index order # create table t0 (a int); diff --git a/mysql-test/r/lock.result b/mysql-test/r/lock.result index 0dcc0de82..b6f19d11c 100644 --- a/mysql-test/r/lock.result +++ b/mysql-test/r/lock.result @@ -136,7 +136,7 @@ select * from t1; ERROR HY000: Table 't1' was not locked with LOCK TABLES unlock tables; create or replace view v_bug5719 as select * from t1; -lock tables v_bug5719 write; +lock tables v_bug5719 read; select * from v_bug5719; a @@ -299,7 +299,7 @@ create table t2 (j int); # # Try to perform DDL on table which is locked through view. create view v1 as select * from t2; -lock tables t1 write, v1 write; +lock tables t1 write, v1 read; flush table t2; ERROR HY000: Table 't2' was locked with a READ lock and can't be updated drop table t2; diff --git a/mysql-test/r/lock_multi.result b/mysql-test/r/lock_multi.result index 12960a4f5..4df415b06 100644 --- a/mysql-test/r/lock_multi.result +++ b/mysql-test/r/lock_multi.result @@ -276,15 +276,14 @@ DROP VIEW IF EXISTS v1; # # Test 1: LOCK TABLES v1 WRITE, t1 READ; # -# Thanks to the fact that we no longer allow DDL on tables -# which are locked for write implicitly, the exact scenario -# in which assert was failing is no longer repeatable. CREATE TABLE t1 ( f1 integer ); CREATE VIEW v1 AS SELECT f1 FROM t1 ; +# Connection 2 LOCK TABLES v1 WRITE, t1 READ; FLUSH TABLE t1; -ERROR HY000: Table 't1' was locked with a READ lock and can't be updated -UNLOCK TABLES; +# Connection 1 +LOCK TABLES t1 WRITE; +FLUSH TABLE t1; DROP TABLE t1; DROP VIEW v1; # diff --git a/mysql-test/r/lock_sync.result b/mysql-test/r/lock_sync.result index 219cc0834..8143f3fde 100644 --- a/mysql-test/r/lock_sync.result +++ b/mysql-test/r/lock_sync.result @@ -648,9 +648,6 @@ set debug_sync= 'RESET'; set @old_general_log = @@global.general_log; set @@global.general_log= OFF; create table t1 (i int) engine=InnoDB; -# We have to use view in order to make LOCK TABLES avoid -# acquiring SNRW metadata lock on table. -create view v1 as select * from t1; insert into t1 values (1); # Prepare user lock which will be used for resuming execution of # the first statement after it acquires TL_WRITE_ALLOW_WRITE lock. @@ -673,7 +670,7 @@ select count(*) > 0 from t1 as a, t1 as b for update;; # acquiring lock for the the first instance of 't1'. set debug_sync= 'now WAIT_FOR parked'; # Send LOCK TABLE statement which will try to get TL_WRITE lock on 't1': -lock table v1 write;; +lock table t1 write concurrent;; # Switch to connection 'default'. # Wait until this LOCK TABLES statement starts waiting for table lock. # Allow SELECT ... FOR UPDATE to resume. @@ -703,7 +700,6 @@ unlock tables; # Do clean-up. set debug_sync= 'RESET'; set @@global.general_log= @old_general_log; -drop view v1; drop table t1; # # Bug#50821 Deadlock between LOCK TABLES and ALTER TABLE diff --git a/mysql-test/r/mysql.result b/mysql-test/r/mysql.result index 06ef7e95b..07f49d32b 100644 --- a/mysql-test/r/mysql.result +++ b/mysql-test/r/mysql.result @@ -600,3 +600,29 @@ a 2 drop table "a1\""b1"; set sql_mode=default; +create table t1 (a text); +select count(*) from t1; +count(*) +41 +truncate table t1; +select count(*) from t1; +count(*) +41 +truncate table t1; +select count(*) from t1; +count(*) +0 +truncate table t1; +select count(*) from t1; +count(*) +0 +truncate table t1; +select count(*) from t1; +count(*) +41 +truncate table t1; +select count(*) from t1; +count(*) +0 +truncate table t1; +drop table t1; diff --git a/mysql-test/r/mysqlbinlog_row_minimal.result b/mysql-test/r/mysqlbinlog_row_minimal.result index 6ffaeeafc..2e34b2885 100644 --- a/mysql-test/r/mysqlbinlog_row_minimal.result +++ b/mysql-test/r/mysqlbinlog_row_minimal.result @@ -54,9 +54,9 @@ CREATE TABLE t2 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 INT, f4 INT, f5 MEDIUMIN BEGIN /*!*/; # at 781 -# server id 1 end_log_pos 833 Table_map: `test`.`t1` mapped to number 30 +# server id 1 end_log_pos 833 Table_map: `test`.`t1` mapped to number 31 # at 833 -# server id 1 end_log_pos 898 Write_rows: table id 30 flags: STMT_END_F +# server id 1 end_log_pos 898 Write_rows: table id 31 flags: STMT_END_F ### INSERT INTO `test`.`t1` ### SET ### @1=10 /* INT meta=0 nullable=0 is_null=0 */ @@ -79,9 +79,9 @@ COMMIT BEGIN /*!*/; # at 1005 -# server id 1 end_log_pos 1057 Table_map: `test`.`t1` mapped to number 30 +# server id 1 end_log_pos 1057 Table_map: `test`.`t1` mapped to number 31 # at 1057 -# server id 1 end_log_pos 1121 Write_rows: table id 30 flags: STMT_END_F +# server id 1 end_log_pos 1121 Write_rows: table id 31 flags: STMT_END_F ### INSERT INTO `test`.`t1` ### SET ### @1=11 /* INT meta=0 nullable=0 is_null=0 */ @@ -104,9 +104,9 @@ COMMIT BEGIN /*!*/; # at 1228 -# server id 1 end_log_pos 1280 Table_map: `test`.`t1` mapped to number 30 +# server id 1 end_log_pos 1280 Table_map: `test`.`t1` mapped to number 31 # at 1280 -# server id 1 end_log_pos 1343 Write_rows: table id 30 flags: STMT_END_F +# server id 1 end_log_pos 1343 Write_rows: table id 31 flags: STMT_END_F ### INSERT INTO `test`.`t1` ### SET ### @1=12 /* INT meta=0 nullable=0 is_null=0 */ @@ -129,9 +129,9 @@ COMMIT BEGIN /*!*/; # at 1450 -# server id 1 end_log_pos 1502 Table_map: `test`.`t1` mapped to number 30 +# server id 1 end_log_pos 1502 Table_map: `test`.`t1` mapped to number 31 # at 1502 -# server id 1 end_log_pos 1568 Write_rows: table id 30 flags: STMT_END_F +# server id 1 end_log_pos 1568 Write_rows: table id 31 flags: STMT_END_F ### INSERT INTO `test`.`t1` ### SET ### @1=13 /* INT meta=0 nullable=0 is_null=0 */ @@ -154,9 +154,9 @@ COMMIT BEGIN /*!*/; # at 1675 -# server id 1 end_log_pos 1727 Table_map: `test`.`t2` mapped to number 31 +# server id 1 end_log_pos 1727 Table_map: `test`.`t2` mapped to number 32 # at 1727 -# server id 1 end_log_pos 1890 Write_rows: table id 31 flags: STMT_END_F +# server id 1 end_log_pos 1890 Write_rows: table id 32 flags: STMT_END_F ### INSERT INTO `test`.`t2` ### SET ### @1=10 /* INT meta=0 nullable=0 is_null=0 */ @@ -212,41 +212,38 @@ COMMIT BEGIN /*!*/; # at 1997 -# server id 1 end_log_pos 2049 Table_map: `test`.`t2` mapped to number 31 +# server id 1 end_log_pos 2049 Table_map: `test`.`t2` mapped to number 32 # at 2049 -# server id 1 end_log_pos 2119 Update_rows: table id 31 flags: STMT_END_F +# server id 1 end_log_pos 2111 Update_rows: table id 32 flags: STMT_END_F ### UPDATE `test`.`t2` ### WHERE ### @1=10 /* INT meta=0 nullable=0 is_null=0 */ -### @5=4 /* INT meta=0 nullable=1 is_null=0 */ ### SET ### @5=5 /* INT meta=0 nullable=1 is_null=0 */ ### UPDATE `test`.`t2` ### WHERE ### @1=11 /* INT meta=0 nullable=0 is_null=0 */ -### @5=4 /* INT meta=0 nullable=1 is_null=0 */ ### SET ### @5=5 /* INT meta=0 nullable=1 is_null=0 */ ### UPDATE `test`.`t2` ### WHERE ### @1=12 /* INT meta=0 nullable=0 is_null=0 */ -### @5=NULL /* INT meta=0 nullable=1 is_null=1 */ ### SET ### @5=5 /* INT meta=0 nullable=1 is_null=0 */ -# at 2119 -# server id 1 end_log_pos 2188 Query thread_id=4 exec_time=x error_code=0 +# at 2111 +# server id 1 end_log_pos 2180 Query thread_id=4 exec_time=x error_code=0 SET TIMESTAMP=X/*!*/; COMMIT /*!*/; -# at 2188 -# server id 1 end_log_pos 2226 GTID 0-1-9 +# at 2180 +# server id 1 end_log_pos 2218 GTID 0-1-9 /*!100001 SET @@session.gtid_seq_no=9*//*!*/; BEGIN /*!*/; -# at 2226 -# server id 1 end_log_pos 2278 Table_map: `test`.`t1` mapped to number 30 -# at 2278 -# server id 1 end_log_pos 2328 Delete_rows: table id 30 flags: STMT_END_F +# at 2218 +# server id 1 end_log_pos 2270 Table_map: `test`.`t1` mapped to number 31 +# at 2270 +# server id 1 end_log_pos 2320 Delete_rows: table id 31 flags: STMT_END_F ### DELETE FROM `test`.`t1` ### WHERE ### @1=10 /* INT meta=0 nullable=0 is_null=0 */ @@ -259,20 +256,20 @@ BEGIN ### DELETE FROM `test`.`t1` ### WHERE ### @1=13 /* INT meta=0 nullable=0 is_null=0 */ -# at 2328 -# server id 1 end_log_pos 2397 Query thread_id=4 exec_time=x error_code=0 +# at 2320 +# server id 1 end_log_pos 2389 Query thread_id=4 exec_time=x error_code=0 SET TIMESTAMP=X/*!*/; COMMIT /*!*/; -# at 2397 -# server id 1 end_log_pos 2435 GTID 0-1-10 +# at 2389 +# server id 1 end_log_pos 2427 GTID 0-1-10 /*!100001 SET @@session.gtid_seq_no=10*//*!*/; BEGIN /*!*/; -# at 2435 -# server id 1 end_log_pos 2487 Table_map: `test`.`t2` mapped to number 31 -# at 2487 -# server id 1 end_log_pos 2537 Delete_rows: table id 31 flags: STMT_END_F +# at 2427 +# server id 1 end_log_pos 2479 Table_map: `test`.`t2` mapped to number 32 +# at 2479 +# server id 1 end_log_pos 2529 Delete_rows: table id 32 flags: STMT_END_F ### DELETE FROM `test`.`t2` ### WHERE ### @1=10 /* INT meta=0 nullable=0 is_null=0 */ @@ -285,13 +282,76 @@ BEGIN ### DELETE FROM `test`.`t2` ### WHERE ### @1=13 /* INT meta=0 nullable=0 is_null=0 */ -# at 2537 -# server id 1 end_log_pos 2606 Query thread_id=4 exec_time=x error_code=0 +# at 2529 +# server id 1 end_log_pos 2598 Query thread_id=4 exec_time=x error_code=0 SET TIMESTAMP=X/*!*/; COMMIT /*!*/; -# at 2606 -# server id 1 end_log_pos 2650 Rotate to master-bin.000002 pos: 4 +# at 2598 +# server id 1 end_log_pos 2642 Rotate to master-bin.000002 pos: 4 +DELIMITER ; +# End of log file +ROLLBACK /* added by mysqlbinlog */; +/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; +/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/; +DROP TABLE t1,t2; +CREATE TABLE `t1` ( +`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, +`is_deleted` BIT(1) DEFAULT b'0', +`last_updated` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, +`ref_id` BIGINT(20) UNSIGNED NOT NULL, +PRIMARY KEY (`id`), +KEY `last_updated_KEY` (`last_updated`) +); +CREATE TABLE `t2` ( +`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, +`short_desc` VARCHAR(50) NOT NULL, +PRIMARY KEY (`id`) +); +INSERT INTO t2 (id, short_desc) VALUES (1, 'test'); +INSERT INTO t1 (id, is_deleted, ref_id) VALUES (1, b'0', 1); +FLUSH BINARY LOGS; +UPDATE t1 t1 INNER JOIN t2 t2 ON t1.ref_id = t2.id +SET t1.is_deleted = TRUE +WHERE t1.id = 1; +FLUSH BINARY LOGS; +/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/; +/*!40019 SET @@session.max_insert_delayed_threads=0*/; +/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; +DELIMITER /*!*/; +# at 368 +# server id 1 end_log_pos 406 GTID 0-1-16 +/*!100101 SET @@session.skip_parallel_replication=0*//*!*/; +/*!100001 SET @@session.gtid_domain_id=0*//*!*/; +/*!100001 SET @@session.server_id=1*//*!*/; +/*!100001 SET @@session.gtid_seq_no=16*//*!*/; +BEGIN +/*!*/; +# at 406 +# server id 1 end_log_pos 453 Table_map: `test`.`t1` mapped to number 34 +# at 453 +# server id 1 end_log_pos 498 Update_rows: table id 34 flags: STMT_END_F +### UPDATE `test`.`t1` +### WHERE +### @1=1 /* LONGINT meta=0 nullable=0 is_null=0 */ +### SET +### @2=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */ +### @3=X /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */ +# at 498 +# server id 1 end_log_pos 576 Query thread_id=4 exec_time=x error_code=0 +SET TIMESTAMP=X/*!*/; +SET @@session.pseudo_thread_id=4/*!*/; +SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/; +SET @@session.sql_mode=1342177280/*!*/; +SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/; +/*!\C latin1 *//*!*/; +SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/; +SET @@session.lc_time_names=0/*!*/; +SET @@session.collation_database=DEFAULT/*!*/; +COMMIT +/*!*/; +# at 576 +# server id 1 end_log_pos 620 Rotate to master-bin.000004 pos: 4 DELIMITER ; # End of log file ROLLBACK /* added by mysqlbinlog */; diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index 48e77421b..28dfc697f 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -4317,12 +4317,12 @@ second ee1 root@localhost UTC ONE TIME 2035-12-31 20:01:23 NULL NULL NULL NULL E show create event ee1; Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation ee1 UTC CREATE DEFINER=`root`@`localhost` EVENT `ee1` ON SCHEDULE AT '2035-12-31 20:01:23' ON COMPLETION NOT PRESERVE ENABLE DO set @a=5 latin1 latin1_swedish_ci latin1_swedish_ci -create event ee2 on schedule at '2018-12-31 21:01:23' do set @a=5; +create event ee2 on schedule at '2030-12-31 21:01:22' do set @a=5; create event ee3 on schedule at '2030-12-31 22:01:23' do set @a=5; show events; Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation second ee1 root@localhost UTC ONE TIME 2035-12-31 20:01:23 NULL NULL NULL NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci -second ee2 root@localhost UTC ONE TIME 2018-12-31 21:01:23 NULL NULL NULL NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci +second ee2 root@localhost UTC ONE TIME 2030-12-31 21:01:22 NULL NULL NULL NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci second ee3 root@localhost UTC ONE TIME 2030-12-31 22:01:23 NULL NULL NULL NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci drop database second; create database third; @@ -4330,7 +4330,7 @@ use third; show events; Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation third ee1 root@localhost UTC ONE TIME 2035-12-31 20:01:23 NULL NULL NULL NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci -third ee2 root@localhost UTC ONE TIME 2018-12-31 21:01:23 NULL NULL NULL NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci +third ee2 root@localhost UTC ONE TIME 2030-12-31 21:01:22 NULL NULL NULL NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci third ee3 root@localhost UTC ONE TIME 2030-12-31 22:01:23 NULL NULL NULL NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci drop database third; set time_zone = 'SYSTEM'; diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index 53f89c9cd..d2b3d06b2 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -2646,6 +2646,106 @@ Note 1517 Duplicate partition name p2 DEALLOCATE PREPARE stmt; DROP TABLE t1; # +# MDEV-17032: Estimates are higher for partitions of a table with @@use_stat_tables= PREFERABLY +# +create table t0(a int); +insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +create table t1(a int); +insert into t1 select A.a + B.a* 10 + C.a * 100 from t0 A, t0 B, t0 C; +create table t2 ( +part_key int, +a int, +b int +) partition by list(part_key) ( +partition p0 values in (0), +partition p1 values in (1), +partition p2 values in (2), +partition p3 values in (3), +partition p4 values in (4) +); +insert into t2 +select mod(a,5), a/100, mod(a,5) from t1; +set @save_use_stat_tables= @@use_stat_tables; +set @save_optimizer_use_condition_selectivity=@@optimizer_use_condition_selectivity; +# +# Tests using stats provided by the storage engine +# +explain extended select * from t2 where part_key=1; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t2 ALL NULL NULL NULL NULL 200 100.00 Using where +Warnings: +Note 1003 select `test`.`t2`.`part_key` AS `part_key`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`part_key` = 1) +explain partitions select * from t2 where part_key=1; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t2 p1 ALL NULL NULL NULL NULL 200 Using where +explain extended select * from t2 where part_key in (1,2); +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t2 ALL NULL NULL NULL NULL 400 100.00 Using where +Warnings: +Note 1003 select `test`.`t2`.`part_key` AS `part_key`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`part_key` in (1,2)) +explain partitions select * from t2 where part_key in (1,2); +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t2 p1,p2 ALL NULL NULL NULL NULL 400 Using where +explain extended select * from t2 where b=5; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t2 ALL NULL NULL NULL NULL 1000 100.00 Using where +Warnings: +Note 1003 select `test`.`t2`.`part_key` AS `part_key`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`b` = 5) +explain partitions select * from t2 where b=5; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t2 p0,p1,p2,p3,p4 ALL NULL NULL NULL NULL 1000 Using where +explain extended select * from t2 partition(p0) where b=1; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t2 ALL NULL NULL NULL NULL 200 100.00 Using where +Warnings: +Note 1003 select `test`.`t2`.`part_key` AS `part_key`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` PARTITION (`p0`) where (`test`.`t2`.`b` = 1) +set @save_histogram_size=@@histogram_size; +set @@histogram_size=100; +set @@use_stat_tables= PREFERABLY; +set @@optimizer_use_condition_selectivity=4; +analyze table t2; +Table Op Msg_type Msg_text +test.t2 analyze status Engine-independent statistics collected +test.t2 analyze status OK +# +# Tests using EITS +# +# filtered should be 100 +explain extended select * from t2 where part_key=1; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t2 ALL NULL NULL NULL NULL 200 100.00 Using where +Warnings: +Note 1003 select `test`.`t2`.`part_key` AS `part_key`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`part_key` = 1) +explain partitions select * from t2 where part_key=1; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t2 p1 ALL NULL NULL NULL NULL 200 Using where +# filtered should be 100 +explain extended select * from t2 where part_key in (1,2); +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t2 ALL NULL NULL NULL NULL 400 100.00 Using where +Warnings: +Note 1003 select `test`.`t2`.`part_key` AS `part_key`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`part_key` in (1,2)) +explain partitions select * from t2 where part_key in (1,2); +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t2 p1,p2 ALL NULL NULL NULL NULL 400 Using where +explain extended select * from t2 where b=5; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t2 ALL NULL NULL NULL NULL 1000 19.80 Using where +Warnings: +Note 1003 select `test`.`t2`.`part_key` AS `part_key`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` where (`test`.`t2`.`b` = 5) +explain partitions select * from t2 where b=5; +id select_type table partitions type possible_keys key key_len ref rows Extra +1 SIMPLE t2 p0,p1,p2,p3,p4 ALL NULL NULL NULL NULL 1000 Using where +explain extended select * from t2 partition(p0) where b=1; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t2 ALL NULL NULL NULL NULL 200 19.80 Using where +Warnings: +Note 1003 select `test`.`t2`.`part_key` AS `part_key`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` PARTITION (`p0`) where (`test`.`t2`.`b` = 1) +set @@use_stat_tables= @save_use_stat_tables; +set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity; +set @@histogram_size= @save_histogram_size; +drop table t0,t1,t2; +# # End of 10.0 tests # # diff --git a/mysql-test/r/partition_innodb.result b/mysql-test/r/partition_innodb.result index b322d63a7..c00a75fed 100644 --- a/mysql-test/r/partition_innodb.result +++ b/mysql-test/r/partition_innodb.result @@ -892,3 +892,29 @@ ERROR HY000: Table definition has changed, please retry transaction SELECT b FROM t1 WHERE b = 0; ERROR HY000: Table definition has changed, please retry transaction DROP TABLE t1; +# +# MDEV-11167: InnoDB: Warning: using a partial-field key prefix +# in search, results in assertion failure or "Can't find record" error +# +CREATE TABLE t1 (a INT) ENGINE=InnoDB; +CREATE TABLE t2 (b INT, c INT, KEY(b)) ENGINE=InnoDB PARTITION BY HASH(c) PARTITIONS 2; +CREATE ALGORITHM = MERGE VIEW v AS SELECT a, b FROM t1 STRAIGHT_JOIN t2 WHERE b = 'foo' WITH CHECK OPTION; +INSERT INTO t1 VALUES (1),(2); +INSERT IGNORE INTO t2 VALUES (2,2),('three',3),(4,4); +Warnings: +Warning 1366 Incorrect integer value: 'three' for column 'b' at row 2 +UPDATE v SET a = NULL; +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'foo' +DROP view v; +DROP TABLE t1, t2; +SET @save_isp=@@innodb_stats_persistent; +SET GLOBAL innodb_stats_persistent= ON; +CREATE TABLE t (f1 INT, f2 INT, KEY(f2)) ENGINE=InnoDB PARTITION BY HASH (f1) PARTITIONS 2; +INSERT IGNORE INTO t VALUES (NULL,0),(NULL,0),(0,21),(4,0),(1,8),(5,66); +CREATE ALGORITHM=MERGE VIEW v AS SELECT t1.* FROM t t1 JOIN t t2 WHERE t1.f1 < t2.f2 WITH LOCAL CHECK OPTION; +UPDATE v SET f2 = NULL; +ERROR HY000: CHECK OPTION failed 'test.v' +SET GLOBAL innodb_stats_persistent= @save_isp; +DROP view v; +DROP TABLE t; diff --git a/mysql-test/r/range_innodb.result b/mysql-test/r/range_innodb.result index 794e6c7b3..6572b2489 100644 --- a/mysql-test/r/range_innodb.result +++ b/mysql-test/r/range_innodb.result @@ -37,3 +37,45 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t0 ALL NULL NULL NULL NULL 10 1 SIMPLE t2 range a,b b 5 NULL 201 Using where; Using join buffer (flat, BNL join) drop table t0,t1,t2; +CREATE TABLE t1 ( +pk INT PRIMARY KEY, f1 INT, f2 CHAR(1), f3 CHAR(1), +KEY(f1), KEY(f2) +) ENGINE=InnoDB; +INSERT INTO t1 VALUES +(1,4,'v',NULL),(2,6,'v',NULL),(3,7,'c',NULL),(4,1,'e',NULL),(5,0,'x',NULL), +(6,7,'i',NULL),(7,7,'e',NULL),(8,1,'p',NULL),(9,7,'s',NULL),(10,1,'j',NULL), +(11,5,'z',NULL),(12,2,'c',NULL),(13,0,'a',NULL),(14,1,'q',NULL),(15,8,'y',NULL), +(16,1,'m',NULL),(17,1,'r',NULL),(18,9,'v',NULL),(19,1,'n',NULL); +CREATE TABLE t2 (f4 INT, f5 CHAR(1)) ENGINE=InnoDB; +INSERT INTO t2 VALUES (4,'q'),(NULL,'j'); +SELECT * FROM t1 AS t1_1, t1 AS t1_2, t2 +WHERE f5 = t1_2.f2 AND ( t1_1.f1 = 103 AND t1_1.f2 = 'o' OR t1_1.pk < f4 ); +pk f1 f2 f3 pk f1 f2 f3 f4 f5 +1 4 v NULL 14 1 q NULL 4 q +2 6 v NULL 14 1 q NULL 4 q +3 7 c NULL 14 1 q NULL 4 q +drop table t1,t2; +# +# MDEV-14440: Server crash in in handler::ha_external_lock or Assertion `inited==RND' +# failed in handler::ha_rnd_end upon SELECT from partitioned table +# +set @optimizer_switch_save= @@optimizer_switch; +set optimizer_switch='index_merge_sort_intersection=off'; +create table t0 (a int)engine=innodb; +insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +create table t1 ( +a int, b int, c int, +key(a),key(b),key(c) +)engine=innodb; +insert into t1 +select A.a+10*B.a, A.a+10*B.a, A.a+10*B.a+100*C.a +from t0 A, t0 B, t0 C, t0 D where D.a<5; +set @@global.debug_dbug="+d,ha_index_init_fail"; +explain select * from t1 where a=10 and b=10; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 index_merge a,b a,b 5,5 NULL 1 Using intersect(a,b); Using where +select * from t1 where a=10 and b=10; +ERROR HY000: Table definition has changed, please retry transaction +DROP TABLE t0,t1; +set @@global.debug_dbug="-d"; +set @@optimizer_switch= @optimizer_switch_save; diff --git a/mysql-test/r/read_only.result b/mysql-test/r/read_only.result index 0640360f4..7690be281 100644 --- a/mysql-test/r/read_only.result +++ b/mysql-test/r/read_only.result @@ -168,11 +168,24 @@ flush privileges; drop database mysqltest_db1; set global read_only= @start_read_only; # +# MDEV-16987 - ALTER DATABASE possible in read-only mode +# +CREATE USER user1@localhost; +GRANT ALTER ON test1.* TO user1@localhost; +CREATE DATABASE test1; +SET GLOBAL read_only=1; +ALTER DATABASE test1 CHARACTER SET utf8; +ERROR HY000: The MariaDB server is running with the --read-only option so it cannot execute this statement +SET GLOBAL read_only=0; +DROP DATABASE test1; +DROP USER user1@localhost; +USE test; +# End of 5.5 tests +# # WL#5968 Implement START TRANSACTION READ (WRITE|ONLY); # # # Test interaction with read_only system variable. -DROP TABLE IF EXISTS t1; CREATE TABLE t1(a INT); INSERT INTO t1 VALUES (1), (2); CREATE USER user1; @@ -204,3 +217,4 @@ COMMIT; DROP USER user1; SET GLOBAL read_only= 0; DROP TABLE t1; +# End of 10.0 tests diff --git a/mysql-test/r/row-checksum-old.result b/mysql-test/r/row-checksum-old.result index ef5234638..920c5dbe8 100644 --- a/mysql-test/r/row-checksum-old.result +++ b/mysql-test/r/row-checksum-old.result @@ -85,3 +85,19 @@ checksum table t1 extended; Table Checksum test.t1 4108368782 drop table t1; +# +# MDEV-17085: CHECKSUM TABLE EXTENDED does not work correctly +# +CREATE TABLE t1 ( c1 int NOT NULL, c2 int NOT NULL, c4 varchar(20), c5 varchar(20), c6 varchar(20), c7 varchar(20), c8 varchar(20), c9 varchar(20), c10 varchar(20), c11 varchar(20), c12 varchar(20), c13 varchar(20), c14 varchar(20), c15 varchar(20), c16 varchar(20), c19 int NOT NULL, c20 int NOT NULL, c21 varchar(20), c22 VARCHAR(20), c23 varchar(20)); +insert into t1 values (5,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,"dog",NULL,NULL); +# Important is that checksum is different from following +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 2514025256 +UPDATE t1 SET c21='cat' WHERE c1=5; +# Important is that checksum is different from above +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 2326430205 +drop table t1; +# End of 5.5 tests diff --git a/mysql-test/r/row-checksum.result b/mysql-test/r/row-checksum.result index fb8a1260a..0f8311b70 100644 --- a/mysql-test/r/row-checksum.result +++ b/mysql-test/r/row-checksum.result @@ -85,3 +85,19 @@ checksum table t1 extended; Table Checksum test.t1 3885665021 drop table t1; +# +# MDEV-17085: CHECKSUM TABLE EXTENDED does not work correctly +# +CREATE TABLE t1 ( c1 int NOT NULL, c2 int NOT NULL, c4 varchar(20), c5 varchar(20), c6 varchar(20), c7 varchar(20), c8 varchar(20), c9 varchar(20), c10 varchar(20), c11 varchar(20), c12 varchar(20), c13 varchar(20), c14 varchar(20), c15 varchar(20), c16 varchar(20), c19 int NOT NULL, c20 int NOT NULL, c21 varchar(20), c22 VARCHAR(20), c23 varchar(20)); +insert into t1 values (5,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,"dog",NULL,NULL); +# Important is that checksum is different from following +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 2514025256 +UPDATE t1 SET c21='cat' WHERE c1=5; +# Important is that checksum is different from above +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 2326430205 +drop table t1; +# End of 5.5 tests diff --git a/mysql-test/r/stat_tables.result b/mysql-test/r/stat_tables.result index 40290ca98..3ebc3b478 100644 --- a/mysql-test/r/stat_tables.result +++ b/mysql-test/r/stat_tables.result @@ -591,6 +591,25 @@ id select_type table type possible_keys key key_len ref rows Extra set @@optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity; set use_stat_tables=@save_use_stat_tables; # +# MDEV-17734: AddressSanitizer: use-after-poison in create_key_parts_for_pseudo_indexes +# +set @@use_stat_tables= PREFERABLY; +set @save_optimizer_use_condition_selectivity= @@optimizer_use_condition_selectivity; +set @@optimizer_use_condition_selectivity=4; +set @save_use_stat_tables= @@use_stat_tables; +create table t1 (a int, b int); +insert into t1(a,b) values (1,2),(1,3),(1,4),(1,5),(2,6),(2,7),(3,8),(3,9),(3,9),(4,10); +analyze table t1 persistent for columns (a) indexes (); +Table Op Msg_type Msg_text +test.t1 analyze status Engine-independent statistics collected +test.t1 analyze status OK +select * from t1 where a=1 and b=3; +a b +1 3 +set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity; +set use_stat_tables=@save_use_stat_tables; +drop table t1; +# # MDEV-16711:CREATE OR REPLACE TABLE introducing BLOB column # SET use_stat_tables= PREFERABLY; diff --git a/mysql-test/r/stat_tables_innodb.result b/mysql-test/r/stat_tables_innodb.result index 1b1cd7d9d..b0f794c6c 100644 --- a/mysql-test/r/stat_tables_innodb.result +++ b/mysql-test/r/stat_tables_innodb.result @@ -618,6 +618,25 @@ id select_type table type possible_keys key key_len ref rows Extra set @@optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity; set use_stat_tables=@save_use_stat_tables; # +# MDEV-17734: AddressSanitizer: use-after-poison in create_key_parts_for_pseudo_indexes +# +set @@use_stat_tables= PREFERABLY; +set @save_optimizer_use_condition_selectivity= @@optimizer_use_condition_selectivity; +set @@optimizer_use_condition_selectivity=4; +set @save_use_stat_tables= @@use_stat_tables; +create table t1 (a int, b int); +insert into t1(a,b) values (1,2),(1,3),(1,4),(1,5),(2,6),(2,7),(3,8),(3,9),(3,9),(4,10); +analyze table t1 persistent for columns (a) indexes (); +Table Op Msg_type Msg_text +test.t1 analyze status Engine-independent statistics collected +test.t1 analyze status OK +select * from t1 where a=1 and b=3; +a b +1 3 +set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity; +set use_stat_tables=@save_use_stat_tables; +drop table t1; +# # MDEV-16711:CREATE OR REPLACE TABLE introducing BLOB column # SET use_stat_tables= PREFERABLY; diff --git a/mysql-test/r/subselect2.result b/mysql-test/r/subselect2.result index a54080f6c..7ce2e3c67 100644 --- a/mysql-test/r/subselect2.result +++ b/mysql-test/r/subselect2.result @@ -394,3 +394,25 @@ select null in (select a from t1 where a < out3.a union select a from t2 where (select a from t3) +1 < out3.a+1) from t3 out3; ERROR 21000: Subquery returns more than 1 row drop table t1, t2, t3; +CREATE TABLE t1( +q11 int, q12 int, q13 int, q14 int, q15 int, q16 int, q17 int, q18 int, q19 int, +q21 int, q22 int, q23 int, q24 int, q25 int, q26 int, q27 int, q28 int, q29 int, +f1 int +); +CREATE TABLE t2(f2 int, f21 int, f3 timestamp, f4 int, f5 int, f6 int); +INSERT INTO t1 (f1) VALUES (1),(1),(2),(2); +INSERT INTO t2 VALUES (1,1,"2004-02-29 11:11:11",0,0,0), (2,2,"2004-02-29 11:11:11",0,0,0); +SELECT f1, +(SELECT t.f21 from t2 t where max( +q11+q12+q13+q14+q15+q16+q17+q18+q19+ +q21+q22+q23+q24+q25+q26+q27+q28+q29) = t.f2 UNION +SELECT t.f3 FROM t2 AS t WHERE t1.f1=t.f2 AND t.f3=MAX(t1.f1) UNION +SELECT 1 LIMIT 1) AS test +FROM t1 GROUP BY f1; +f1 test +1 1 +2 1 +Warnings: +Warning 1292 Incorrect datetime value: '1' +Warning 1292 Incorrect datetime value: '2' +DROP TABLE t1,t2; diff --git a/mysql-test/r/subselect_exists2in.result b/mysql-test/r/subselect_exists2in.result index d47e446fe..b6b2f5b47 100644 --- a/mysql-test/r/subselect_exists2in.result +++ b/mysql-test/r/subselect_exists2in.result @@ -330,7 +330,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 3 MATERIALIZED t3 ALL NULL NULL NULL NULL 2 100.00 Using where Warnings: Note 1276 Field or reference 'test.t2.b' of SELECT #3 was resolved in SELECT #2 -Note 1003 select (select 1 from dual where (not(((1 is not null) and (1,1 in ( (select `test`.`t3`.`c` from `test`.`t3` where (`test`.`t3`.`c` is not null) ), (1 in on distinct_key where ((1 = ``.`c`))))))))) AS `( SELECT b FROM t2 WHERE NOT EXISTS ( SELECT c FROM t3 WHERE c = b ) )` from `test`.`t1` +Note 1003 select (select 1 from dual where (not(((1 is not null) and (1,1 in ((1 in on distinct_key where ((1 = ``.`c`))))))))) AS `( SELECT b FROM t2 WHERE NOT EXISTS ( SELECT c FROM t3 WHERE c = b ) )` from `test`.`t1` SELECT ( SELECT b FROM t2 WHERE NOT EXISTS ( SELECT c FROM t3 WHERE c = b ) ) FROM t1; ( SELECT b FROM t2 WHERE NOT EXISTS ( SELECT c FROM t3 WHERE c = b ) ) 1 @@ -344,7 +344,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 3 MATERIALIZED t3 ALL NULL NULL NULL NULL 2 100.00 Using where Warnings: Note 1276 Field or reference 'test.t2.b' of SELECT #3 was resolved in SELECT #2 -Note 1003 select (select 1 from dual where (not(((1 is not null) and (1,1 in ( (select `test`.`t3`.`c` from `test`.`t3` where (`test`.`t3`.`c` is not null) ), (1 in on distinct_key where ((1 = ``.`c`))))))))) AS `( SELECT b FROM t2 WHERE NOT EXISTS ( SELECT c FROM t3 WHERE c = b ) )` from `test`.`t1` +Note 1003 select (select 1 from dual where (not(((1 is not null) and (1,1 in ((1 in on distinct_key where ((1 = ``.`c`))))))))) AS `( SELECT b FROM t2 WHERE NOT EXISTS ( SELECT c FROM t3 WHERE c = b ) )` from `test`.`t1` SELECT ( SELECT b FROM t2 WHERE NOT EXISTS ( SELECT c FROM t3 WHERE c = b ) ) FROM t1; ( SELECT b FROM t2 WHERE NOT EXISTS ( SELECT c FROM t3 WHERE c = b ) ) 1 diff --git a/mysql-test/r/subselect_mat.result b/mysql-test/r/subselect_mat.result index ac1170931..6fae057dd 100644 --- a/mysql-test/r/subselect_mat.result +++ b/mysql-test/r/subselect_mat.result @@ -2865,6 +2865,22 @@ SELECT * FROM t2 WHERE f IN ( SELECT LEFT('foo',0) FROM t1 ORDER BY 1 ); f DROP TABLE t1, t2; # +# MDEV-18255: Server crashes in Bitmap<64u>::intersect +# +create table t1 (v1 varchar(1)) engine=myisam ; +create table t2 (v1 varchar(1)) engine=myisam ; +explain +select 1 from t1 where exists +(select 1 from t1 where t1.v1 in (select t2.v1 from t2 having t2.v1 < 'j')) ; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE +2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL no matching row in const table +3 MATERIALIZED NULL NULL NULL NULL NULL NULL NULL no matching row in const table +select 1 from t1 where exists +(select 1 from t1 where t1.v1 in (select t2.v1 from t2 having t2.v1 < 'j')) ; +1 +drop table t1,t2; +# # MDEV-9489: Assertion `0' failed in Protocol::end_statement() on # UNION ALL # diff --git a/mysql-test/r/union.result b/mysql-test/r/union.result index af0fb6b48..27f3f31be 100644 --- a/mysql-test/r/union.result +++ b/mysql-test/r/union.result @@ -2121,6 +2121,44 @@ select @advertAcctId as a from dual union all select 1.0 from dual; a 1000003.0 1.0 +# +# MDEV-13784: query causes seg fault +# +CREATE TABLE t1 (`bug_id` int NOT NULL PRIMARY KEY, `product_id` int NOT NULL); +INSERT INTO t1 VALUES (45199,1184); +CREATE TABLE t2 (`product_id` int NOT NULL,`userid` int NOT NULL, PRIMARY KEY (`product_id`,`userid`)); +INSERT INTO t2 VALUES (1184,103),(1184,624),(1184,1577),(1184,1582); +CREATE TABLE t3 (`id` int NOT NULL PRIMARY KEY,`name` varchar(64)); +CREATE TABLE t4 ( `userid` int NOT NULL PRIMARY KEY, `login_name` varchar(255)); +INSERT INTO t4 VALUES (103,'foo'),(624,'foo'),(1577,'foo'),(1582,'foo'); +CREATE TABLE t5 (`id` int NOT NULL PRIMARY KEY, `name` varchar(64)); +explain select +( +select login_name from t4 where userId = ( +select userid from t2 where product_id = t1.product_id +union +select userid from t2 where product_id = ( +select id from t5 where name = (select name from t3 where id = t1.product_id)) limit 1 ) +) as x from t1 where (t1.bug_id=45199); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t1 system PRIMARY NULL NULL NULL 1 +2 SUBQUERY t4 eq_ref PRIMARY PRIMARY 4 func 1 Using where +3 SUBQUERY t2 ref PRIMARY PRIMARY 4 const 3 Using index +4 UNION t2 ref PRIMARY PRIMARY 4 func 1 Using where; Using index +5 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +6 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +NULL UNION RESULT ALL NULL NULL NULL NULL NULL +select +( +select login_name from t4 where userId = ( +select userid from t2 where product_id = t1.product_id +union +select userid from t2 where product_id = ( +select id from t5 where name = (select name from t3 where id = t1.product_id)) limit 1 ) +) as x from t1 where (t1.bug_id=45199); +x +foo +drop table t1, t2, t3, t4, t5; End of 5.5 tests # # WL#1763 Avoid creating temporary table in UNION ALL diff --git a/mysql-test/r/view.result b/mysql-test/r/view.result index e8c96e499..a0f4b34af 100644 --- a/mysql-test/r/view.result +++ b/mysql-test/r/view.result @@ -4665,7 +4665,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 2 DEPENDENT SUBQUERY t4 ALL NULL NULL NULL NULL 2 100.00 Using where Warnings: Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1 -Note 1003 select `test`.`t1`.`a` AS `a`,10 AS `a` from `test`.`t1` where (not(<10,`test`.`t1`.`a`>((10,(select NULL from `test`.`t4` where ((`test`.`t4`.`a` >= `test`.`t1`.`a`) and trigcond((((10) = NULL) or (isnull(NULL))))) having trigcond((NULL))))))) +Note 1003 select `test`.`t1`.`a` AS `a`,10 AS `a` from `test`.`t1` where (not(<10,`test`.`t1`.`a`>((10,(select NULL from `test`.`t4` where ((`test`.`t4`.`a` >= `test`.`t1`.`a`) and trigcond((((10) = NULL) or 1))) having trigcond((NULL))))))) SELECT * FROM t1, t2 WHERE t2.a NOT IN (SELECT t3.b FROM t3 RIGHT JOIN t4 ON (t4.a = t3.a) WHERE t4.a >= t1.a); @@ -4681,7 +4681,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 2 DEPENDENT SUBQUERY t4 ALL NULL NULL NULL NULL 2 100.00 Using where Warnings: Note 1276 Field or reference 'v1.a' of SELECT #2 was resolved in SELECT #1 -Note 1003 select `test`.`t1`.`a` AS `a`,10 AS `a` from `test`.`t1` where (not(<10,`test`.`t1`.`a`>((10,(select NULL from `test`.`t4` where ((`test`.`t4`.`a` >= `test`.`t1`.`a`) and trigcond((((10) = NULL) or (isnull(NULL))))) having trigcond((NULL))))))) +Note 1003 select `test`.`t1`.`a` AS `a`,10 AS `a` from `test`.`t1` where (not(<10,`test`.`t1`.`a`>((10,(select NULL from `test`.`t4` where ((`test`.`t4`.`a` >= `test`.`t1`.`a`) and trigcond((((10) = NULL) or 1))) having trigcond((NULL))))))) SELECT * FROM v1, t2 WHERE t2.a NOT IN (SELECT t3.b FROM t3 RIGHT JOIN t4 ON (t4.a = t3.a) WHERE t4.a >= v1.a); diff --git a/mysql-test/suite/binlog/r/binlog_base64_flag.result b/mysql-test/suite/binlog/r/binlog_base64_flag.result index d13e13c97..b97cf9072 100644 --- a/mysql-test/suite/binlog/r/binlog_base64_flag.result +++ b/mysql-test/suite/binlog/r/binlog_base64_flag.result @@ -28,6 +28,25 @@ a 1 1 3 +DELETE FROM t1 WHERE a=3; +BINLOG ' +ODdYRw8BAAAAZgAAAGoAAAABAAQANS4xLjIzLXJjLWRlYnVnLWxvZwAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAA4N1hHEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC +'; +SET @binlog_fragment_0=' +TFtYRxMBAAAAKQAAAH8BAAAAABAAAAAAAAAABHRlc3QAAnQxAAEDAAE= +TFtYRxcBAAAAIgAAAKEBAAAQABAAAAAAAAEAAf/+AwAAAA== +'; +SET @binlog_fragment_1=''; +BINLOG @binlog_fragment_0, @binlog_fragment_1; +select * from t1; +a +1 +1 +3 +SELECT @binlog_fragment_0, @binlog_fragment_1 as 'NULL','NULL'; +@binlog_fragment_0 NULL NULL +NULL NULL NULL ==== Test --base64-output=never on a binlog with row events ==== /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/; /*!40019 SET @@session.max_insert_delayed_threads=0*/; diff --git a/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_frag.result b/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_frag.result new file mode 100644 index 000000000..041be5ed0 --- /dev/null +++ b/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_frag.result @@ -0,0 +1,24 @@ +CREATE TABLE t (a TEXT); +RESET MASTER; +INSERT INTO t SET a=repeat('a', 1024); +SELECT a from t into @a; +FLUSH LOGS; +DELETE FROM t; +FOUND /BINLOG @binlog_fragment_0, @binlog_fragment_1/ in mysqlbinlog.sql +SELECT a LIKE @a as 'true' FROM t; +true +1 +BINLOG number-of-fragments must be exactly two +BINLOG @binlog_fragment; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 +BINLOG @binlog_fragment, @binlog_fragment, @binlog_fragment; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' @binlog_fragment' at line 1 +SET @binlog_fragment_0='012345'; +SET @binlog_fragment_1='012345'; +BINLOG @binlog_fragment_0, @binlog_fragment_1; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use +SET @binlog_fragment_0='012345'; +BINLOG @binlog_fragment_0, @binlog_fragment_not_exist; +ERROR 42000: Incorrect argument type to variable 'binlog_fragment_not_exist' +# Cleanup +DROP TABLE t; diff --git a/mysql-test/suite/binlog/t/binlog_base64_flag.test b/mysql-test/suite/binlog/t/binlog_base64_flag.test index f83333150..575a73076 100644 --- a/mysql-test/suite/binlog/t/binlog_base64_flag.test +++ b/mysql-test/suite/binlog/t/binlog_base64_flag.test @@ -67,6 +67,28 @@ TFtYRxcBAAAAIgAAAKEBAAAQABAAAAAAAAEAAf/+AwAAAA== # The above line should succeed and 3 should be in the table select * from t1; +# The same as above with one-fragment BINLOG to prove +# equivalency with the fragmented BINLOG @frag_0, @frag_1. +DELETE FROM t1 WHERE a=3; +# This is a binlog statement containing a Format_description_log_event +# from the same version as the Table_map and Write_rows_log_event. +BINLOG ' +ODdYRw8BAAAAZgAAAGoAAAABAAQANS4xLjIzLXJjLWRlYnVnLWxvZwAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAA4N1hHEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC +'; + +# This is a Table_map_log_event+Write_rows_log_event corresponding to: +# INSERT INTO TABLE test.t1 VALUES (3) +SET @binlog_fragment_0=' +TFtYRxMBAAAAKQAAAH8BAAAAABAAAAAAAAAABHRlc3QAAnQxAAEDAAE= +TFtYRxcBAAAAIgAAAKEBAAAQABAAAAAAAAEAAf/+AwAAAA== +'; +SET @binlog_fragment_1=''; +BINLOG @binlog_fragment_0, @binlog_fragment_1; +# The above line should succeed and 3 should be in the table: +select * from t1; +# show "one-shot" feature of binlog_fragment variables +SELECT @binlog_fragment_0, @binlog_fragment_1 as 'NULL','NULL'; # Test that mysqlbinlog stops with an error message when the # --base64-output=never flag is used on a binlog with base64 events. diff --git a/mysql-test/suite/binlog/t/binlog_mysqlbinlog_row_frag.test b/mysql-test/suite/binlog/t/binlog_mysqlbinlog_row_frag.test new file mode 100644 index 000000000..f0317ef12 --- /dev/null +++ b/mysql-test/suite/binlog/t/binlog_mysqlbinlog_row_frag.test @@ -0,0 +1,45 @@ +--source include/have_debug.inc +--source include/have_binlog_format_row.inc + +--let $MYSQLD_DATADIR= `select @@datadir` + +CREATE TABLE t (a TEXT); +# events of interest are guaranteed to stay in 000001 log +RESET MASTER; +--eval INSERT INTO t SET a=repeat('a', 1024) +SELECT a from t into @a; +FLUSH LOGS; +DELETE FROM t; + +--exec $MYSQL_BINLOG --debug-binlog-row-event-max-encoded-size=256 $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mysqlbinlog.sql + +--let SEARCH_PATTERN= BINLOG @binlog_fragment_0, @binlog_fragment_1 +--let SEARCH_FILE= $MYSQLTEST_VARDIR/tmp/mysqlbinlog.sql +--source include/search_pattern_in_file.inc + +--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/mysqlbinlog.sql + +SELECT a LIKE @a as 'true' FROM t; + +# improper syntax error +--echo BINLOG number-of-fragments must be exactly two +--error ER_PARSE_ERROR +BINLOG @binlog_fragment; +--error ER_PARSE_ERROR +BINLOG @binlog_fragment, @binlog_fragment, @binlog_fragment; + +# corrupted fragments error check (to the expected error code notice, +# the same error code occurs in a similar unfragmented case) +SET @binlog_fragment_0='012345'; +SET @binlog_fragment_1='012345'; +--error ER_SYNTAX_ERROR +BINLOG @binlog_fragment_0, @binlog_fragment_1; + +# Not existing fragment is not allowed +SET @binlog_fragment_0='012345'; +--error ER_WRONG_TYPE_FOR_VAR +BINLOG @binlog_fragment_0, @binlog_fragment_not_exist; + +--echo # Cleanup +--remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog.sql +DROP TABLE t; diff --git a/mysql-test/suite/encryption/r/innodb-bad-key-change.result b/mysql-test/suite/encryption/r/innodb-bad-key-change.result index 51fc7a8cb..481dbcb28 100644 --- a/mysql-test/suite/encryption/r/innodb-bad-key-change.result +++ b/mysql-test/suite/encryption/r/innodb-bad-key-change.result @@ -1,6 +1,7 @@ call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[0-9]+\\] in file '.*test.t[12]\\.ibd' cannot be decrypted\\."); +call mtr.add_suppression("InnoDB: Encrypted page [1-9][0-9]*:3 in file .*test.t1.ibd looks corrupted; key_version=1"); call mtr.add_suppression("mysqld: File .*keysbad3.txt' not found "); # Start server with keys2.txt diff --git a/mysql-test/suite/encryption/r/innodb-checksum-algorithm.result b/mysql-test/suite/encryption/r/innodb-checksum-algorithm.result index a853f3869..7fdea4b67 100644 --- a/mysql-test/suite/encryption/r/innodb-checksum-algorithm.result +++ b/mysql-test/suite/encryption/r/innodb-checksum-algorithm.result @@ -59,31 +59,6 @@ tpe_crc32.cfg tpe_crc32.frm tpe_crc32.ibd UNLOCK TABLES; -SET GLOBAL innodb_checksum_algorithm=strict_crc32; -ALTER TABLE tce_crc32 DISCARD TABLESPACE; -ALTER TABLE tc_crc32 DISCARD TABLESPACE; -ALTER TABLE te_crc32 DISCARD TABLESPACE; -ALTER TABLE t_crc32 DISCARD TABLESPACE; -ALTER TABLE tpe_crc32 DISCARD TABLESPACE; -ALTER TABLE tp_crc32 DISCARD TABLESPACE; -restore: tce_crc32 .ibd and .cfg files -restore: tc_crc32 .ibd and .cfg files -restore: te_crc32 .ibd and .cfg files -restore: t_crc32 .ibd and .cfg files -restore: tpe_crc32 .ibd and .cfg files -restore: tp_crc32 .ibd and .cfg files -ALTER TABLE tce_crc32 IMPORT TABLESPACE; -update tce_crc32 set b=substr(b,1); -ALTER TABLE tc_crc32 IMPORT TABLESPACE; -update tc_crc32 set b=substr(b,1); -ALTER TABLE te_crc32 IMPORT TABLESPACE; -update te_crc32 set b=substr(b,1); -ALTER TABLE t_crc32 IMPORT TABLESPACE; -update t_crc32 set b=substr(b,1); -ALTER TABLE tpe_crc32 IMPORT TABLESPACE; -update tpe_crc32 set b=substr(b,1); -ALTER TABLE tp_crc32 IMPORT TABLESPACE; -update tp_crc32 set b=substr(b,1); SET GLOBAL innodb_checksum_algorithm=crc32; ALTER TABLE tce_crc32 DISCARD TABLESPACE; ALTER TABLE tc_crc32 DISCARD TABLESPACE; @@ -109,31 +84,6 @@ ALTER TABLE tpe_crc32 IMPORT TABLESPACE; update tpe_crc32 set b=substr(b,1); ALTER TABLE tp_crc32 IMPORT TABLESPACE; update tp_crc32 set b=substr(b,1); -SET GLOBAL innodb_checksum_algorithm=strict_innodb; -ALTER TABLE tce_crc32 DISCARD TABLESPACE; -ALTER TABLE tc_crc32 DISCARD TABLESPACE; -ALTER TABLE te_crc32 DISCARD TABLESPACE; -ALTER TABLE t_crc32 DISCARD TABLESPACE; -ALTER TABLE tpe_crc32 DISCARD TABLESPACE; -ALTER TABLE tp_crc32 DISCARD TABLESPACE; -restore: tce_crc32 .ibd and .cfg files -restore: tc_crc32 .ibd and .cfg files -restore: te_crc32 .ibd and .cfg files -restore: t_crc32 .ibd and .cfg files -restore: tpe_crc32 .ibd and .cfg files -restore: tp_crc32 .ibd and .cfg files -ALTER TABLE tce_crc32 IMPORT TABLESPACE; -update tce_crc32 set b=substr(b,1); -ALTER TABLE tc_crc32 IMPORT TABLESPACE; -update tc_crc32 set b=substr(b,1); -ALTER TABLE te_crc32 IMPORT TABLESPACE; -update te_crc32 set b=substr(b,1); -ALTER TABLE t_crc32 IMPORT TABLESPACE; -update t_crc32 set b=substr(b,1); -ALTER TABLE tpe_crc32 IMPORT TABLESPACE; -update tpe_crc32 set b=substr(b,1); -ALTER TABLE tp_crc32 IMPORT TABLESPACE; -update tp_crc32 set b=substr(b,1); SET GLOBAL innodb_checksum_algorithm=innodb; ALTER TABLE tce_crc32 DISCARD TABLESPACE; ALTER TABLE tc_crc32 DISCARD TABLESPACE; @@ -159,31 +109,6 @@ ALTER TABLE tpe_crc32 IMPORT TABLESPACE; update tpe_crc32 set b=substr(b,1); ALTER TABLE tp_crc32 IMPORT TABLESPACE; update tp_crc32 set b=substr(b,1); -SET GLOBAL innodb_checksum_algorithm=strict_none; -ALTER TABLE tce_crc32 DISCARD TABLESPACE; -ALTER TABLE tc_crc32 DISCARD TABLESPACE; -ALTER TABLE te_crc32 DISCARD TABLESPACE; -ALTER TABLE t_crc32 DISCARD TABLESPACE; -ALTER TABLE tpe_crc32 DISCARD TABLESPACE; -ALTER TABLE tp_crc32 DISCARD TABLESPACE; -restore: tce_crc32 .ibd and .cfg files -restore: tc_crc32 .ibd and .cfg files -restore: te_crc32 .ibd and .cfg files -restore: t_crc32 .ibd and .cfg files -restore: tpe_crc32 .ibd and .cfg files -restore: tp_crc32 .ibd and .cfg files -ALTER TABLE tce_crc32 IMPORT TABLESPACE; -update tce_crc32 set b=substr(b,1); -ALTER TABLE tc_crc32 IMPORT TABLESPACE; -update tc_crc32 set b=substr(b,1); -ALTER TABLE te_crc32 IMPORT TABLESPACE; -update te_crc32 set b=substr(b,1); -ALTER TABLE t_crc32 IMPORT TABLESPACE; -update t_crc32 set b=substr(b,1); -ALTER TABLE tpe_crc32 IMPORT TABLESPACE; -update tpe_crc32 set b=substr(b,1); -ALTER TABLE tp_crc32 IMPORT TABLESPACE; -update tp_crc32 set b=substr(b,1); SET GLOBAL innodb_checksum_algorithm=none; ALTER TABLE tce_crc32 DISCARD TABLESPACE; ALTER TABLE tc_crc32 DISCARD TABLESPACE; @@ -268,31 +193,6 @@ tpe_innodb.cfg tpe_innodb.frm tpe_innodb.ibd UNLOCK TABLES; -SET GLOBAL innodb_checksum_algorithm=strict_crc32; -ALTER TABLE tce_innodb DISCARD TABLESPACE; -ALTER TABLE tc_innodb DISCARD TABLESPACE; -ALTER TABLE te_innodb DISCARD TABLESPACE; -ALTER TABLE t_innodb DISCARD TABLESPACE; -ALTER TABLE tpe_innodb DISCARD TABLESPACE; -ALTER TABLE tp_innodb DISCARD TABLESPACE; -restore: tce_innodb .ibd and .cfg files -restore: tc_innodb .ibd and .cfg files -restore: te_innodb .ibd and .cfg files -restore: t_innodb .ibd and .cfg files -restore: tpe_innodb .ibd and .cfg files -restore: tp_innodb .ibd and .cfg files -ALTER TABLE tce_innodb IMPORT TABLESPACE; -update tce_innodb set b=substr(b,1); -ALTER TABLE tc_innodb IMPORT TABLESPACE; -update tc_innodb set b=substr(b,1); -ALTER TABLE te_innodb IMPORT TABLESPACE; -update te_innodb set b=substr(b,1); -ALTER TABLE t_innodb IMPORT TABLESPACE; -update t_innodb set b=substr(b,1); -ALTER TABLE tpe_innodb IMPORT TABLESPACE; -update tpe_innodb set b=substr(b,1); -ALTER TABLE tp_innodb IMPORT TABLESPACE; -update tp_innodb set b=substr(b,1); SET GLOBAL innodb_checksum_algorithm=crc32; ALTER TABLE tce_innodb DISCARD TABLESPACE; ALTER TABLE tc_innodb DISCARD TABLESPACE; @@ -318,31 +218,6 @@ ALTER TABLE tpe_innodb IMPORT TABLESPACE; update tpe_innodb set b=substr(b,1); ALTER TABLE tp_innodb IMPORT TABLESPACE; update tp_innodb set b=substr(b,1); -SET GLOBAL innodb_checksum_algorithm=strict_innodb; -ALTER TABLE tce_innodb DISCARD TABLESPACE; -ALTER TABLE tc_innodb DISCARD TABLESPACE; -ALTER TABLE te_innodb DISCARD TABLESPACE; -ALTER TABLE t_innodb DISCARD TABLESPACE; -ALTER TABLE tpe_innodb DISCARD TABLESPACE; -ALTER TABLE tp_innodb DISCARD TABLESPACE; -restore: tce_innodb .ibd and .cfg files -restore: tc_innodb .ibd and .cfg files -restore: te_innodb .ibd and .cfg files -restore: t_innodb .ibd and .cfg files -restore: tpe_innodb .ibd and .cfg files -restore: tp_innodb .ibd and .cfg files -ALTER TABLE tce_innodb IMPORT TABLESPACE; -update tce_innodb set b=substr(b,1); -ALTER TABLE tc_innodb IMPORT TABLESPACE; -update tc_innodb set b=substr(b,1); -ALTER TABLE te_innodb IMPORT TABLESPACE; -update te_innodb set b=substr(b,1); -ALTER TABLE t_innodb IMPORT TABLESPACE; -update t_innodb set b=substr(b,1); -ALTER TABLE tpe_innodb IMPORT TABLESPACE; -update tpe_innodb set b=substr(b,1); -ALTER TABLE tp_innodb IMPORT TABLESPACE; -update tp_innodb set b=substr(b,1); SET GLOBAL innodb_checksum_algorithm=innodb; ALTER TABLE tce_innodb DISCARD TABLESPACE; ALTER TABLE tc_innodb DISCARD TABLESPACE; @@ -368,31 +243,6 @@ ALTER TABLE tpe_innodb IMPORT TABLESPACE; update tpe_innodb set b=substr(b,1); ALTER TABLE tp_innodb IMPORT TABLESPACE; update tp_innodb set b=substr(b,1); -SET GLOBAL innodb_checksum_algorithm=strict_none; -ALTER TABLE tce_innodb DISCARD TABLESPACE; -ALTER TABLE tc_innodb DISCARD TABLESPACE; -ALTER TABLE te_innodb DISCARD TABLESPACE; -ALTER TABLE t_innodb DISCARD TABLESPACE; -ALTER TABLE tpe_innodb DISCARD TABLESPACE; -ALTER TABLE tp_innodb DISCARD TABLESPACE; -restore: tce_innodb .ibd and .cfg files -restore: tc_innodb .ibd and .cfg files -restore: te_innodb .ibd and .cfg files -restore: t_innodb .ibd and .cfg files -restore: tpe_innodb .ibd and .cfg files -restore: tp_innodb .ibd and .cfg files -ALTER TABLE tce_innodb IMPORT TABLESPACE; -update tce_innodb set b=substr(b,1); -ALTER TABLE tc_innodb IMPORT TABLESPACE; -update tc_innodb set b=substr(b,1); -ALTER TABLE te_innodb IMPORT TABLESPACE; -update te_innodb set b=substr(b,1); -ALTER TABLE t_innodb IMPORT TABLESPACE; -update t_innodb set b=substr(b,1); -ALTER TABLE tpe_innodb IMPORT TABLESPACE; -update tpe_innodb set b=substr(b,1); -ALTER TABLE tp_innodb IMPORT TABLESPACE; -update tp_innodb set b=substr(b,1); SET GLOBAL innodb_checksum_algorithm=none; ALTER TABLE tce_innodb DISCARD TABLESPACE; ALTER TABLE tc_innodb DISCARD TABLESPACE; @@ -477,31 +327,6 @@ tpe_none.cfg tpe_none.frm tpe_none.ibd UNLOCK TABLES; -SET GLOBAL innodb_checksum_algorithm=strict_crc32; -ALTER TABLE tce_none DISCARD TABLESPACE; -ALTER TABLE tc_none DISCARD TABLESPACE; -ALTER TABLE te_none DISCARD TABLESPACE; -ALTER TABLE t_none DISCARD TABLESPACE; -ALTER TABLE tpe_none DISCARD TABLESPACE; -ALTER TABLE tp_none DISCARD TABLESPACE; -restore: tce_none .ibd and .cfg files -restore: tc_none .ibd and .cfg files -restore: te_none .ibd and .cfg files -restore: t_none .ibd and .cfg files -restore: tpe_none .ibd and .cfg files -restore: tp_none .ibd and .cfg files -ALTER TABLE tce_none IMPORT TABLESPACE; -update tce_none set b=substr(b,1); -ALTER TABLE tc_none IMPORT TABLESPACE; -update tc_none set b=substr(b,1); -ALTER TABLE te_none IMPORT TABLESPACE; -update te_none set b=substr(b,1); -ALTER TABLE t_none IMPORT TABLESPACE; -update t_none set b=substr(b,1); -ALTER TABLE tpe_none IMPORT TABLESPACE; -update tpe_none set b=substr(b,1); -ALTER TABLE tp_none IMPORT TABLESPACE; -update tp_none set b=substr(b,1); SET GLOBAL innodb_checksum_algorithm=crc32; ALTER TABLE tce_none DISCARD TABLESPACE; ALTER TABLE tc_none DISCARD TABLESPACE; @@ -527,31 +352,6 @@ ALTER TABLE tpe_none IMPORT TABLESPACE; update tpe_none set b=substr(b,1); ALTER TABLE tp_none IMPORT TABLESPACE; update tp_none set b=substr(b,1); -SET GLOBAL innodb_checksum_algorithm=strict_innodb; -ALTER TABLE tce_none DISCARD TABLESPACE; -ALTER TABLE tc_none DISCARD TABLESPACE; -ALTER TABLE te_none DISCARD TABLESPACE; -ALTER TABLE t_none DISCARD TABLESPACE; -ALTER TABLE tpe_none DISCARD TABLESPACE; -ALTER TABLE tp_none DISCARD TABLESPACE; -restore: tce_none .ibd and .cfg files -restore: tc_none .ibd and .cfg files -restore: te_none .ibd and .cfg files -restore: t_none .ibd and .cfg files -restore: tpe_none .ibd and .cfg files -restore: tp_none .ibd and .cfg files -ALTER TABLE tce_none IMPORT TABLESPACE; -update tce_none set b=substr(b,1); -ALTER TABLE tc_none IMPORT TABLESPACE; -update tc_none set b=substr(b,1); -ALTER TABLE te_none IMPORT TABLESPACE; -update te_none set b=substr(b,1); -ALTER TABLE t_none IMPORT TABLESPACE; -update t_none set b=substr(b,1); -ALTER TABLE tpe_none IMPORT TABLESPACE; -update tpe_none set b=substr(b,1); -ALTER TABLE tp_none IMPORT TABLESPACE; -update tp_none set b=substr(b,1); SET GLOBAL innodb_checksum_algorithm=innodb; ALTER TABLE tce_none DISCARD TABLESPACE; ALTER TABLE tc_none DISCARD TABLESPACE; @@ -577,31 +377,6 @@ ALTER TABLE tpe_none IMPORT TABLESPACE; update tpe_none set b=substr(b,1); ALTER TABLE tp_none IMPORT TABLESPACE; update tp_none set b=substr(b,1); -SET GLOBAL innodb_checksum_algorithm=strict_none; -ALTER TABLE tce_none DISCARD TABLESPACE; -ALTER TABLE tc_none DISCARD TABLESPACE; -ALTER TABLE te_none DISCARD TABLESPACE; -ALTER TABLE t_none DISCARD TABLESPACE; -ALTER TABLE tpe_none DISCARD TABLESPACE; -ALTER TABLE tp_none DISCARD TABLESPACE; -restore: tce_none .ibd and .cfg files -restore: tc_none .ibd and .cfg files -restore: te_none .ibd and .cfg files -restore: t_none .ibd and .cfg files -restore: tpe_none .ibd and .cfg files -restore: tp_none .ibd and .cfg files -ALTER TABLE tce_none IMPORT TABLESPACE; -update tce_none set b=substr(b,1); -ALTER TABLE tc_none IMPORT TABLESPACE; -update tc_none set b=substr(b,1); -ALTER TABLE te_none IMPORT TABLESPACE; -update te_none set b=substr(b,1); -ALTER TABLE t_none IMPORT TABLESPACE; -update t_none set b=substr(b,1); -ALTER TABLE tpe_none IMPORT TABLESPACE; -update tpe_none set b=substr(b,1); -ALTER TABLE tp_none IMPORT TABLESPACE; -update tp_none set b=substr(b,1); SET GLOBAL innodb_checksum_algorithm=none; ALTER TABLE tce_none DISCARD TABLESPACE; ALTER TABLE tc_none DISCARD TABLESPACE; diff --git a/mysql-test/suite/encryption/r/innodb-encryption-alter.result b/mysql-test/suite/encryption/r/innodb-encryption-alter.result index 9ff0f4920..5245d1da7 100644 --- a/mysql-test/suite/encryption/r/innodb-encryption-alter.result +++ b/mysql-test/suite/encryption/r/innodb-encryption-alter.result @@ -50,3 +50,40 @@ Warning 140 InnoDB: ENCRYPTION_KEY_ID 99 not available Error 1478 Table storage engine 'InnoDB' does not support the create option 'ENCRYPTION_KEY_ID' set innodb_default_encryption_key_id = 1; drop table t1,t2; +SET GLOBAL innodb_encrypt_tables=OFF; +CREATE TABLE t1 (a int not null primary key) engine=innodb; +ALTER TABLE t1 ENCRYPTION_KEY_ID=4; +ERROR HY000: Table storage engine 'InnoDB' does not support the create option 'ENCRYPTION_KEY_ID' +SHOW WARNINGS; +Level Code Message +Warning 140 InnoDB: innodb_encrypt_tables=OFF only allows ENCRYPTION_KEY_ID=1 +Error 1478 Table storage engine 'InnoDB' does not support the create option 'ENCRYPTION_KEY_ID' +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) NOT NULL, + PRIMARY KEY (`a`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t2 (a int not null primary key) engine=innodb; +ALTER TABLE t2 ENCRYPTION_KEY_ID=4, ALGORITHM=COPY; +ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create options") +SHOW WARNINGS; +Level Code Message +Warning 140 InnoDB: innodb_encrypt_tables=OFF only allows ENCRYPTION_KEY_ID=1 +Error 1005 Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create options") +Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB +SHOW CREATE TABLE t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `a` int(11) NOT NULL, + PRIMARY KEY (`a`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t2; +CREATE TABLE t3 (a int not null primary key) engine=innodb ENCRYPTION_KEY_ID=4; +ERROR HY000: Can't create table `test`.`t3` (errno: 140 "Wrong create options") +SHOW WARNINGS; +Level Code Message +Warning 140 InnoDB: innodb_encrypt_tables=OFF only allows ENCRYPTION_KEY_ID=1 +Error 1005 Can't create table `test`.`t3` (errno: 140 "Wrong create options") +Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB diff --git a/mysql-test/suite/encryption/r/innodb-encryption-disable.result b/mysql-test/suite/encryption/r/innodb-encryption-disable.result index 4d15098d9..6b6aee2c7 100644 --- a/mysql-test/suite/encryption/r/innodb-encryption-disable.result +++ b/mysql-test/suite/encryption/r/innodb-encryption-disable.result @@ -1,4 +1,5 @@ call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[15]\\.ibd' cannot be decrypted\\."); +call mtr.add_suppression("InnoDB: Encrypted page [1-9][0-9]*:3 in file .*test.t[15].ibd looks corrupted; key_version=1"); call mtr.add_suppression("Couldn't load plugins from 'file_key_management*"); create table t5 ( `intcol1` int(32) DEFAULT NULL, diff --git a/mysql-test/suite/encryption/r/innodb-force-corrupt.result b/mysql-test/suite/encryption/r/innodb-force-corrupt.result index 7d63f47d1..3b1a2d830 100644 --- a/mysql-test/suite/encryption/r/innodb-force-corrupt.result +++ b/mysql-test/suite/encryption/r/innodb-force-corrupt.result @@ -1,5 +1,4 @@ -call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[123]\\.ibd' cannot be decrypted\\."); -call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t[0-9]+ page \[page id: space=[0-9]+, page number=[0-9]+\]. You may have to recover from a backup."); +call mtr.add_suppression("InnoDB: Encrypted page \\d+:[36] in file .*test.t[123]\\.ibd looks corrupted; key_version=3221342974"); SET GLOBAL innodb_file_format = `Barracuda`; SET GLOBAL innodb_file_per_table = ON; set global innodb_compression_algorithm = 1; diff --git a/mysql-test/suite/encryption/r/innodb-missing-key.result b/mysql-test/suite/encryption/r/innodb-missing-key.result index 53ca0845c..da19f65df 100644 --- a/mysql-test/suite/encryption/r/innodb-missing-key.result +++ b/mysql-test/suite/encryption/r/innodb-missing-key.result @@ -1,4 +1,5 @@ call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[123]\\.ibd' cannot be decrypted\\."); +call mtr.add_suppression("InnoDB: Encrypted page [1-9][0-9]*:[1-9][0-9]* in file .*test.t[12].ibd looks corrupted; key_version=1"); # Start server with keys2.txt CREATE TABLE t1(a int not null primary key auto_increment, b varchar(128)) engine=innodb ENCRYPTED=YES ENCRYPTION_KEY_ID=19; diff --git a/mysql-test/suite/encryption/t/innodb-bad-key-change.test b/mysql-test/suite/encryption/t/innodb-bad-key-change.test index 9d61770f5..46a6d2fa2 100644 --- a/mysql-test/suite/encryption/t/innodb-bad-key-change.test +++ b/mysql-test/suite/encryption/t/innodb-bad-key-change.test @@ -11,6 +11,7 @@ call mtr.add_suppression("Plugin 'file_key_management' init function returned error"); call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[0-9]+\\] in file '.*test.t[12]\\.ibd' cannot be decrypted\\."); +call mtr.add_suppression("InnoDB: Encrypted page [1-9][0-9]*:3 in file .*test.t1.ibd looks corrupted; key_version=1"); call mtr.add_suppression("mysqld: File .*keysbad3.txt' not found "); diff --git a/mysql-test/suite/encryption/t/innodb-checksum-algorithm.test b/mysql-test/suite/encryption/t/innodb-checksum-algorithm.test index d0caed050..b31678b7e 100644 --- a/mysql-test/suite/encryption/t/innodb-checksum-algorithm.test +++ b/mysql-test/suite/encryption/t/innodb-checksum-algorithm.test @@ -67,17 +67,14 @@ EOF --list_files $MYSQLD_DATADIR/test UNLOCK TABLES; -let $to = 6; +let $to = 3; while ($to) { dec $to; let $tocksum = `select case $to when 0 then 'none' - when 1 then 'strict_none' - when 2 then 'innodb' - when 3 then 'strict_innodb' - when 4 then 'crc32' - when 5 then 'strict_crc32' + when 1 then 'innodb' + when 2 then 'crc32' end`; eval SET GLOBAL innodb_checksum_algorithm=$tocksum; diff --git a/mysql-test/suite/encryption/t/innodb-encryption-alter.test b/mysql-test/suite/encryption/t/innodb-encryption-alter.test index 9420fb74a..9465226dd 100644 --- a/mysql-test/suite/encryption/t/innodb-encryption-alter.test +++ b/mysql-test/suite/encryption/t/innodb-encryption-alter.test @@ -87,6 +87,30 @@ connection default; drop table t1,t2; +# +# MDEV-17230: encryption_key_id from alter is ignored by encryption threads +# +SET GLOBAL innodb_encrypt_tables=OFF; +CREATE TABLE t1 (a int not null primary key) engine=innodb; +--error ER_ILLEGAL_HA_CREATE_OPTION +ALTER TABLE t1 ENCRYPTION_KEY_ID=4; +SHOW WARNINGS; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t2 (a int not null primary key) engine=innodb; +--replace_regex /#sql-[0-9a-f_]*`/#sql-temporary`/ +--error ER_CANT_CREATE_TABLE +ALTER TABLE t2 ENCRYPTION_KEY_ID=4, ALGORITHM=COPY; +--replace_regex /#sql-[0-9a-f_]*`/#sql-temporary`/ +SHOW WARNINGS; +SHOW CREATE TABLE t2; +DROP TABLE t2; + +--error ER_CANT_CREATE_TABLE +CREATE TABLE t3 (a int not null primary key) engine=innodb ENCRYPTION_KEY_ID=4; +SHOW WARNINGS; + # reset system --disable_query_log EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig; diff --git a/mysql-test/suite/encryption/t/innodb-encryption-disable.test b/mysql-test/suite/encryption/t/innodb-encryption-disable.test index 6ade8d6e3..4e6147f77 100644 --- a/mysql-test/suite/encryption/t/innodb-encryption-disable.test +++ b/mysql-test/suite/encryption/t/innodb-encryption-disable.test @@ -8,6 +8,7 @@ # call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[15]\\.ibd' cannot be decrypted\\."); +call mtr.add_suppression("InnoDB: Encrypted page [1-9][0-9]*:3 in file .*test.t[15].ibd looks corrupted; key_version=1"); # Suppression for builds where file_key_management plugin is linked statically call mtr.add_suppression("Couldn't load plugins from 'file_key_management*"); diff --git a/mysql-test/suite/encryption/t/innodb-force-corrupt.test b/mysql-test/suite/encryption/t/innodb-force-corrupt.test index cb6440127..07f79c6b3 100644 --- a/mysql-test/suite/encryption/t/innodb-force-corrupt.test +++ b/mysql-test/suite/encryption/t/innodb-force-corrupt.test @@ -7,8 +7,7 @@ # Don't test under embedded -- source include/not_embedded.inc -call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[123]\\.ibd' cannot be decrypted\\."); -call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t[0-9]+ page \[page id: space=[0-9]+, page number=[0-9]+\]. You may have to recover from a backup."); +call mtr.add_suppression("InnoDB: Encrypted page \\d+:[36] in file .*test.t[123]\\.ibd looks corrupted; key_version=3221342974"); --disable_warnings SET GLOBAL innodb_file_format = `Barracuda`; @@ -53,17 +52,17 @@ perl; open(FILE, "+<", "$ENV{MYSQLD_DATADIR}/test/t1.ibd") or die "open"; binmode FILE; seek(FILE, $ENV{'INNODB_PAGE_SIZE'} * 3 + 26, SEEK_SET) or die "seek"; -print FILE pack("H*", "c00lcafedeadb017"); +print FILE pack("H*", "c001cafedeadb017"); close FILE or die "close"; open(FILE, "+<", "$ENV{MYSQLD_DATADIR}/test/t2.ibd") or die "open"; binmode FILE; seek(FILE, $ENV{'INNODB_PAGE_SIZE'} * 3 + 26, SEEK_SET) or die "seek"; -print FILE pack("H*", "c00lcafedeadb017"); +print FILE pack("H*", "c001cafedeadb017"); close FILE or die "close"; open(FILE, "+<", "$ENV{MYSQLD_DATADIR}/test/t3.ibd") or die "open"; binmode FILE; seek(FILE, $ENV{'INNODB_PAGE_SIZE'} * 3 + 26, SEEK_SET) or die "seek"; -print FILE pack("H*", "c00lcafedeadb017"); +print FILE pack("H*", "c001cafedeadb017"); close FILE or die "close"; EOF diff --git a/mysql-test/suite/encryption/t/innodb-missing-key.test b/mysql-test/suite/encryption/t/innodb-missing-key.test index 6ea052882..72c24802c 100644 --- a/mysql-test/suite/encryption/t/innodb-missing-key.test +++ b/mysql-test/suite/encryption/t/innodb-missing-key.test @@ -8,6 +8,7 @@ # call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[123]\\.ibd' cannot be decrypted\\."); +call mtr.add_suppression("InnoDB: Encrypted page [1-9][0-9]*:[1-9][0-9]* in file .*test.t[12].ibd looks corrupted; key_version=1"); --echo --echo # Start server with keys2.txt diff --git a/mysql-test/suite/engines/iuds/r/insert_number.result b/mysql-test/suite/engines/iuds/r/insert_number.result index 904a9697d..575518303 100644 --- a/mysql-test/suite/engines/iuds/r/insert_number.result +++ b/mysql-test/suite/engines/iuds/r/insert_number.result @@ -31583,8 +31583,33 @@ c1 c2 c3 c4 c5 c6 c7 0 -9223372036854775808 1 2 3 4 5 SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6; c1 c2 c3 c4 c5 c6 c7 +0 NULL 5 6 NULL 0 NULL +0 -9223372036854775808 1 2 3 4 5 +0 0 17 18 19 20 21 +0 124 22 23 24 25 26 +0 124 27 28 29 30 31 +0 -9223372036854775808 31 32 33 34 35 +0 0 32 32 34 35 36 +101 0 37 38 39 40 41 +101 -102 103 104 105 106 107 +102 -109 110 111 112 113 114 +103 -109 110 111 112 113 114 +105 NULL 102 103 104 105 106 +108 -109 110 111 112 101 114 +108 -109 110 111 112 102 114 +108 -109 110 111 112 113 114 +115 -116 117 118 119 120 121 +122 -123 124 125 126 127 128 +255 -2147483648 6 7 8 9 10 +65535 -8388608 11 12 13 14 15 +16777215 -32768 16 17 18 19 20 +4294967295 -128 21 22 23 24 25 +18446744073709551615 9223372036854775807 26 27 28 29 30 +18446744073709551615 9223372036854775807 36 37 38 39 40 SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6 LIMIT 2; c1 c2 c3 c4 c5 c6 c7 +0 NULL 5 6 NULL 0 NULL +0 -9223372036854775808 1 2 3 4 5 SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6; c1 c2 c3 c4 c5 c6 c7 0 NULL 5 6 NULL 0 NULL @@ -31744,8 +31769,33 @@ c1 c2 c3 c4 c5 c6 c7 0 -9223372036854775808 31 32 33 34 35 SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6 DESC; c1 c2 c3 c4 c5 c6 c7 +0 0 32 32 34 35 36 +0 -9223372036854775808 31 32 33 34 35 +0 124 27 28 29 30 31 +0 124 22 23 24 25 26 +0 0 17 18 19 20 21 +0 -9223372036854775808 1 2 3 4 5 +0 NULL 5 6 NULL 0 NULL +101 -102 103 104 105 106 107 +101 0 37 38 39 40 41 +102 -109 110 111 112 113 114 +103 -109 110 111 112 113 114 +105 NULL 102 103 104 105 106 +108 -109 110 111 112 113 114 +108 -109 110 111 112 102 114 +108 -109 110 111 112 101 114 +115 -116 117 118 119 120 121 +122 -123 124 125 126 127 128 +255 -2147483648 6 7 8 9 10 +65535 -8388608 11 12 13 14 15 +16777215 -32768 16 17 18 19 20 +4294967295 -128 21 22 23 24 25 +18446744073709551615 9223372036854775807 36 37 38 39 40 +18446744073709551615 9223372036854775807 26 27 28 29 30 SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2; c1 c2 c3 c4 c5 c6 c7 +0 0 32 32 34 35 36 +0 -9223372036854775808 31 32 33 34 35 SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6 DESC; c1 c2 c3 c4 c5 c6 c7 0 0 32 32 34 35 36 @@ -32011,8 +32061,33 @@ c1 c2 c3 c4 c5 c6 c7 18446744073709551615 9223372036854775807 36 37 38 39 40 SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6; c1 c2 c3 c4 c5 c6 c7 +0 NULL 5 6 NULL 0 NULL +0 -9223372036854775808 1 2 3 4 5 +0 0 17 18 19 20 21 +0 124 22 23 24 25 26 +0 124 27 28 29 30 31 +0 -9223372036854775808 31 32 33 34 35 +0 0 32 32 34 35 36 +101 0 37 38 39 40 41 +101 -102 103 104 105 106 107 +102 -109 110 111 112 113 114 +103 -109 110 111 112 113 114 +105 NULL 102 103 104 105 106 +108 -109 110 111 112 101 114 +108 -109 110 111 112 102 114 +108 -109 110 111 112 113 114 +115 -116 117 118 119 120 121 +122 -123 124 125 126 127 128 +255 -2147483648 6 7 8 9 10 +65535 -8388608 11 12 13 14 15 +16777215 -32768 16 17 18 19 20 +4294967295 -128 21 22 23 24 25 +18446744073709551615 9223372036854775807 26 27 28 29 30 +18446744073709551615 9223372036854775807 36 37 38 39 40 SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6 LIMIT 2; c1 c2 c3 c4 c5 c6 c7 +0 NULL 5 6 NULL 0 NULL +0 -9223372036854775808 1 2 3 4 5 SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6; c1 c2 c3 c4 c5 c6 c7 0 NULL 5 6 NULL 0 NULL @@ -32172,8 +32247,33 @@ c1 c2 c3 c4 c5 c6 c7 18446744073709551615 9223372036854775807 26 27 28 29 30 SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6 DESC; c1 c2 c3 c4 c5 c6 c7 +0 0 32 32 34 35 36 +0 -9223372036854775808 31 32 33 34 35 +0 124 27 28 29 30 31 +0 124 22 23 24 25 26 +0 0 17 18 19 20 21 +0 -9223372036854775808 1 2 3 4 5 +0 NULL 5 6 NULL 0 NULL +101 -102 103 104 105 106 107 +101 0 37 38 39 40 41 +102 -109 110 111 112 113 114 +103 -109 110 111 112 113 114 +105 NULL 102 103 104 105 106 +108 -109 110 111 112 113 114 +108 -109 110 111 112 102 114 +108 -109 110 111 112 101 114 +115 -116 117 118 119 120 121 +122 -123 124 125 126 127 128 +255 -2147483648 6 7 8 9 10 +65535 -8388608 11 12 13 14 15 +16777215 -32768 16 17 18 19 20 +4294967295 -128 21 22 23 24 25 +18446744073709551615 9223372036854775807 36 37 38 39 40 +18446744073709551615 9223372036854775807 26 27 28 29 30 SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2; c1 c2 c3 c4 c5 c6 c7 +0 0 32 32 34 35 36 +0 -9223372036854775808 31 32 33 34 35 SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6 DESC; c1 c2 c3 c4 c5 c6 c7 0 0 32 32 34 35 36 diff --git a/mysql-test/suite/engines/iuds/r/update_delete_number.result b/mysql-test/suite/engines/iuds/r/update_delete_number.result index 15de16ed7..b89dea75d 100644 --- a/mysql-test/suite/engines/iuds/r/update_delete_number.result +++ b/mysql-test/suite/engines/iuds/r/update_delete_number.result @@ -3768,8 +3768,25 @@ c1 c2 c3 -12 18446744073709551615 12 SELECT * FROM t2 WHERE c2 BETWEEN 0 AND 18446744073709551615 ORDER BY c2,c1; c1 c2 c3 +-4 4 4 +-9 9 9 +0 255 13 +-9223372036854775808 18446744073709551615 12 +-12 18446744073709551615 12 +-11 18446744073709551615 11 +-8 18446744073709551615 8 +-7 18446744073709551615 7 +-6 18446744073709551615 6 +-5 18446744073709551615 5 +-3 18446744073709551615 3 +-2 18446744073709551615 2 +-1 18446744073709551615 1 +50 18446744073709551615 10 +9223372036854775807 18446744073709551615 14 SELECT * FROM t2 WHERE c2 BETWEEN 0 AND 18446744073709551615 ORDER BY c2,c1 DESC LIMIT 2; c1 c2 c3 +-4 4 4 +-9 9 9 SELECT * FROM t2 WHERE c2 IN(0,18446744073709551615) ORDER BY c2,c1 DESC; c1 c2 c3 9223372036854775807 18446744073709551615 14 diff --git a/mysql-test/suite/galera/disabled.def b/mysql-test/suite/galera/disabled.def index 603031f52..1d8f8ad59 100644 --- a/mysql-test/suite/galera/disabled.def +++ b/mysql-test/suite/galera/disabled.def @@ -20,9 +20,6 @@ galera_as_slave_preordered : wsrep-preordered feature not merged to MariaDB GAL-419 : MDEV-13549 Galera test failures galera_var_notify_cmd : MDEV-13549 Galera test failures galera_as_slave_replication_bundle : MDEV-13549 Galera test failures -galera_gcache_recover : MDEV-13549 Galera test failures -galera_gcache_recover_full_gcache : MDEV-13549 Galera test failures -galera_gcache_recover_manytrx : MDEV-13549 Galera test failures galera_ssl_upgrade : MDEV-13549 Galera test failures galera.MW-329 : wsrep_local_replays not stable MW-416 : MDEV-13549 Galera test failures @@ -30,8 +27,6 @@ MW-388 : MDEV-13549 Galera test failures galera_sst_mysqldump_with_key : MDEV-16890 Galera test failure galera_binlog_stmt_autoinc: MDEV-17106 Test failure on galera.galera_binlog_stmt_autoinc galera_gc_fc_limit : MDEV-17061 Test failure on galera.galera_gc_fc_limit -partition : MDEV-13881 galera.partition failed in buildbot with wrong result galera_as_slave_replication_budle : MDEV-15785 Test case galera_as_slave_replication_bundle caused debug assertion galera_wan : MDEV-17259: Test failure on galera.galera_wan galera_pc_ignore_sb : MDEV-17357 Test failure on galera.galera_pc_ignore_sb -galera_drop_database : test diff --git a/mysql-test/suite/galera/include/have_filekeymanagement.inc b/mysql-test/suite/galera/include/have_filekeymanagement.inc new file mode 100644 index 000000000..f5507ca45 --- /dev/null +++ b/mysql-test/suite/galera/include/have_filekeymanagement.inc @@ -0,0 +1,3 @@ +# +# Used in galera/suite.pm to check file key management plugin +# diff --git a/mysql-test/suite/galera/r/galera_autoinc_sst_mariabackup.result b/mysql-test/suite/galera/r/galera_autoinc_sst_mariabackup.result new file mode 100644 index 000000000..228d7c6f0 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_autoinc_sst_mariabackup.result @@ -0,0 +1,36 @@ +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB; +CREATE PROCEDURE p1 () +BEGIN +DECLARE x INT DEFAULT 1; +DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END; +WHILE 1 DO +INSERT INTO t1 VALUES (DEFAULT); +COMMIT; +END WHILE; +END| +CALL p1();; +CALL p1();; +Killing server ... +INSERT INTO t1 VALUES (DEFAULT); +INSERT INTO t1 VALUES (DEFAULT); +Got one of the listed errors +Got one of the listed errors +count_equal +1 +CALL mtr.add_suppression("WSREP: Action message in non-primary configuration from member 0"); +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; +VARIABLE_VALUE +2 +SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; +VARIABLE_VALUE = 2 +1 +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; +VARIABLE_VALUE +2 +SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; +VARIABLE_VALUE = 2 +1 +DROP PROCEDURE p1; +DROP TABLE t1; +CALL mtr.add_suppression("gcs_caused\\(\\) returned -1 \\(Operation not permitted\\)"); +CALL mtr.add_suppression("WSREP: Action message in non-primary configuration from member 0"); diff --git a/mysql-test/suite/galera/r/galera_defaults.result b/mysql-test/suite/galera/r/galera_defaults.result index 8083784bb..e7a2508c0 100644 --- a/mysql-test/suite/galera/r/galera_defaults.result +++ b/mysql-test/suite/galera/r/galera_defaults.result @@ -19,6 +19,7 @@ ORDER BY VARIABLE_NAME; VARIABLE_NAME VARIABLE_VALUE WSREP_AUTO_INCREMENT_CONTROL ON WSREP_CAUSAL_READS ON +WSREP_CERTIFICATION_RULES strict WSREP_CERTIFY_NONPK ON WSREP_CLUSTER_ADDRESS gcomm:// WSREP_CLUSTER_NAME my_wsrep_cluster @@ -52,4 +53,3 @@ WSREP_SST_DONOR WSREP_SST_DONOR_REJECTS_QUERIES OFF WSREP_SST_METHOD rsync WSREP_SYNC_WAIT 15 -; ; ; cert.log_conflicts = no; debug = no; evs.auto_evict = 0; evs.causal_keepalive_period = PT1S; evs.debug_log_mask = 0x1; evs.delay_margin = PT1S; evs.delayed_keep_period = PT30S; evs.inactive_check_period = PT0.5S; evs.inactive_timeout = PT30S; evs.info_log_mask = 0; evs.install_timeout = PT15S; evs.join_retrans_period = PT1S; evs.keepalive_period = PT1S; evs.max_install_timeouts = 3; evs.send_window = 4; evs.stats_report_period = PT1M; evs.suspect_timeout = PT10S; evs.use_aggregate = true; evs.user_send_window = 2; evs.version = 0; evs.view_forget_timeout = P1D; ; gcache.keep_pages_size = 0; gcache.mem_size = 0; ; gcache.page_size = 128M; gcache.recover = no; gcache.size = 10M; gcomm.thread_prio = ; gcs.fc_debug = 0; gcs.fc_factor = 1.0; gcs.fc_limit = 16; gcs.fc_master_slave = no; gcs.max_packet_size = 64500; gcs.max_throttle = 0.25; ; gcs.recv_q_soft_limit = 0.25; gcs.sync_donor = no; ; gmcast.mcast_addr = ; gmcast.mcast_ttl = 1; gmcast.peer_timeout = PT3S; gmcast.segment = 0; gmcast.time_wait = PT5S; gmcast.version = 0; ; pc.announce_timeout = PT3S; pc.checksum = false; pc.ignore_quorum = false; pc.ignore_sb = false; pc.linger = PT20S; pc.npvo = false; pc.recovery = true; pc.version = 0; pc.wait_prim = true; pc.wait_prim_timeout = PT30S; pc.weight = 1; protonet.backend = asio; protonet.version = 0; repl.causal_read_timeout = PT90S; repl.commit_order = 3; repl.key_format = FLAT8; repl.max_ws_size = 2147483647; ;socket.checksum = 2; socket.recv_buf_size = 212992; diff --git a/mysql-test/suite/galera/r/galera_gcache_recover_full_gcache.result b/mysql-test/suite/galera/r/galera_gcache_recover_full_gcache.result index 30ee57724..ca81d7d81 100644 --- a/mysql-test/suite/galera/r/galera_gcache_recover_full_gcache.result +++ b/mysql-test/suite/galera/r/galera_gcache_recover_full_gcache.result @@ -1,3 +1,7 @@ +call mtr.add_suppression("InnoDB: Warning: innodb_page_size has been changed from default value *"); +call mtr.add_suppression("InnoDB: Resizing redo log from *"); +call mtr.add_suppression("InnoDB: Starting to delete and rewrite log files."); +call mtr.add_suppression("InnoDB: New log files created, LSN=*"); SET SESSION wsrep_sync_wait = 0; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT, f2 LONGBLOB) ENGINE=InnoDB; SET SESSION wsrep_sync_wait = 0; diff --git a/mysql-test/suite/galera/r/galera_gcache_recover_manytrx.result b/mysql-test/suite/galera/r/galera_gcache_recover_manytrx.result index 868b39bfb..1483c5d1d 100644 --- a/mysql-test/suite/galera/r/galera_gcache_recover_manytrx.result +++ b/mysql-test/suite/galera/r/galera_gcache_recover_manytrx.result @@ -1,3 +1,7 @@ +call mtr.add_suppression("InnoDB: Warning: innodb_page_size has been changed from default value *"); +call mtr.add_suppression("InnoDB: Resizing redo log from *"); +call mtr.add_suppression("InnoDB: Starting to delete and rewrite log files."); +call mtr.add_suppression("InnoDB: New log files created, LSN=*"); SET SESSION wsrep_sync_wait = 0; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT, f2 LONGBLOB) ENGINE=InnoDB; CREATE TABLE ten (f1 INTEGER) ENGINE=InnoDB; diff --git a/mysql-test/suite/galera/r/galera_gtid_slave_sst_rsync.result b/mysql-test/suite/galera/r/galera_gtid_slave_sst_rsync.result index 81fae57d7..7953910b3 100644 --- a/mysql-test/suite/galera/r/galera_gtid_slave_sst_rsync.result +++ b/mysql-test/suite/galera/r/galera_gtid_slave_sst_rsync.result @@ -123,6 +123,7 @@ DROP TABLE t2,t1; #Connection 2 STOP SLAVE; RESET SLAVE ALL; +set global gtid_slave_pos=""; reset master; #Connection 3 reset master; diff --git a/mysql-test/suite/galera/r/galera_ist_mariabackup,debug.rdiff b/mysql-test/suite/galera/r/galera_ist_mariabackup,debug.rdiff new file mode 100644 index 000000000..1c787cd2f --- /dev/null +++ b/mysql-test/suite/galera/r/galera_ist_mariabackup,debug.rdiff @@ -0,0 +1,103 @@ +--- r/galera_ist_mariabackup.result 2018-11-19 15:15:21.093874145 +0200 ++++ r/galera_ist_mariabackup.reject 2018-11-19 16:25:52.220523327 +0200 +@@ -259,3 +259,100 @@ + DROP TABLE t1; + COMMIT; + SET AUTOCOMMIT=ON; ++Performing State Transfer on a server that has been killed and restarted ++while a DDL was in progress on it ++CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++START TRANSACTION; ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++COMMIT; ++SET GLOBAL debug_dbug = 'd,sync.alter_opened_table'; ++ALTER TABLE t1 ADD COLUMN f2 INTEGER; ++SET wsrep_sync_wait = 0; ++Killing server ... ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++COMMIT; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++Performing --wsrep-recover ... ++Starting server ... ++Using --wsrep-start-position when starting mysqld ... ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++COMMIT; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++COMMIT; ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++COMMIT; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++ROLLBACK; ++SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; ++COUNT(*) = 2 ++1 ++SELECT COUNT(*) = 35 FROM t1; ++COUNT(*) = 35 ++1 ++SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; ++COUNT(*) = 0 ++1 ++COMMIT; ++SET AUTOCOMMIT=ON; ++SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; ++COUNT(*) = 2 ++1 ++SELECT COUNT(*) = 35 FROM t1; ++COUNT(*) = 35 ++1 ++SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; ++COUNT(*) = 0 ++1 ++DROP TABLE t1; ++COMMIT; ++SET AUTOCOMMIT=ON; ++SET GLOBAL debug_dbug = $debug_orig; diff --git a/mysql-test/suite/galera/r/galera_ist_mariabackup.result b/mysql-test/suite/galera/r/galera_ist_mariabackup.result new file mode 100644 index 000000000..099d944d4 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_ist_mariabackup.result @@ -0,0 +1,261 @@ +Performing State Transfer on a server that has been temporarily disconnected +CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +COMMIT; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +COMMIT; +Unloading wsrep provider ... +SET GLOBAL wsrep_provider = 'none'; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +COMMIT; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +Loading wsrep provider ... +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +COMMIT; +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +COMMIT; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +COMMIT; +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +ROLLBACK; +SELECT COUNT(*) = 35 FROM t1; +COUNT(*) = 35 +1 +SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; +COUNT(*) = 0 +1 +COMMIT; +SET AUTOCOMMIT=ON; +SELECT COUNT(*) = 35 FROM t1; +COUNT(*) = 35 +1 +SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; +COUNT(*) = 0 +1 +DROP TABLE t1; +COMMIT; +SET AUTOCOMMIT=ON; +Performing State Transfer on a server that has been shut down cleanly and restarted +CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +COMMIT; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +COMMIT; +Shutting down server ... +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +COMMIT; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +Starting server ... +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +COMMIT; +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +COMMIT; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +COMMIT; +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +ROLLBACK; +SELECT COUNT(*) = 35 FROM t1; +COUNT(*) = 35 +1 +SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; +COUNT(*) = 0 +1 +COMMIT; +SET AUTOCOMMIT=ON; +SELECT COUNT(*) = 35 FROM t1; +COUNT(*) = 35 +1 +SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; +COUNT(*) = 0 +1 +DROP TABLE t1; +COMMIT; +SET AUTOCOMMIT=ON; +Performing State Transfer on a server that has been killed and restarted +CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +COMMIT; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +COMMIT; +Killing server ... +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +COMMIT; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +Performing --wsrep-recover ... +Starting server ... +Using --wsrep-start-position when starting mysqld ... +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +COMMIT; +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +COMMIT; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +COMMIT; +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +ROLLBACK; +SELECT COUNT(*) = 35 FROM t1; +COUNT(*) = 35 +1 +SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; +COUNT(*) = 0 +1 +COMMIT; +SET AUTOCOMMIT=ON; +SELECT COUNT(*) = 35 FROM t1; +COUNT(*) = 35 +1 +SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; +COUNT(*) = 0 +1 +DROP TABLE t1; +COMMIT; +SET AUTOCOMMIT=ON; diff --git a/mysql-test/suite/galera/r/galera_ist_mariabackup_innodb_flush_logs,debug.rdiff b/mysql-test/suite/galera/r/galera_ist_mariabackup_innodb_flush_logs,debug.rdiff new file mode 100644 index 000000000..d85d3bdad --- /dev/null +++ b/mysql-test/suite/galera/r/galera_ist_mariabackup_innodb_flush_logs,debug.rdiff @@ -0,0 +1,103 @@ +--- r/galera_ist_mariabackup_innodb_flush_logs.result 2018-11-19 15:21:15.429784085 +0200 ++++ r/galera_ist_mariabackup_innodb_flush_logs.reject 2018-11-19 16:27:43.100491616 +0200 +@@ -86,3 +86,100 @@ + DROP TABLE t1; + COMMIT; + SET AUTOCOMMIT=ON; ++Performing State Transfer on a server that has been killed and restarted ++while a DDL was in progress on it ++CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++START TRANSACTION; ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++COMMIT; ++SET GLOBAL debug_dbug = 'd,sync.alter_opened_table'; ++ALTER TABLE t1 ADD COLUMN f2 INTEGER; ++SET wsrep_sync_wait = 0; ++Killing server ... ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++COMMIT; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++Performing --wsrep-recover ... ++Starting server ... ++Using --wsrep-start-position when starting mysqld ... ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++COMMIT; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++COMMIT; ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++COMMIT; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++ROLLBACK; ++SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; ++COUNT(*) = 2 ++1 ++SELECT COUNT(*) = 35 FROM t1; ++COUNT(*) = 35 ++1 ++SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; ++COUNT(*) = 0 ++1 ++COMMIT; ++SET AUTOCOMMIT=ON; ++SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; ++COUNT(*) = 2 ++1 ++SELECT COUNT(*) = 35 FROM t1; ++COUNT(*) = 35 ++1 ++SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; ++COUNT(*) = 0 ++1 ++DROP TABLE t1; ++COMMIT; ++SET AUTOCOMMIT=ON; ++SET GLOBAL debug_dbug = $debug_orig; diff --git a/mysql-test/suite/galera/r/galera_ist_mariabackup_innodb_flush_logs.result b/mysql-test/suite/galera/r/galera_ist_mariabackup_innodb_flush_logs.result new file mode 100644 index 000000000..e3bf407dd --- /dev/null +++ b/mysql-test/suite/galera/r/galera_ist_mariabackup_innodb_flush_logs.result @@ -0,0 +1,88 @@ +Performing State Transfer on a server that has been killed and restarted +CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +COMMIT; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +COMMIT; +Killing server ... +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +COMMIT; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +Performing --wsrep-recover ... +Starting server ... +Using --wsrep-start-position when starting mysqld ... +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +COMMIT; +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +COMMIT; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +COMMIT; +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +ROLLBACK; +SELECT COUNT(*) = 35 FROM t1; +COUNT(*) = 35 +1 +SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; +COUNT(*) = 0 +1 +COMMIT; +SET AUTOCOMMIT=ON; +SELECT COUNT(*) = 35 FROM t1; +COUNT(*) = 35 +1 +SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; +COUNT(*) = 0 +1 +DROP TABLE t1; +COMMIT; +SET AUTOCOMMIT=ON; diff --git a/mysql-test/suite/galera/r/galera_ist_mysqldump,debug.rdiff b/mysql-test/suite/galera/r/galera_ist_mysqldump,debug.rdiff index 74e6abd71..49d216d0f 100644 --- a/mysql-test/suite/galera/r/galera_ist_mysqldump,debug.rdiff +++ b/mysql-test/suite/galera/r/galera_ist_mysqldump,debug.rdiff @@ -1,5 +1,5 @@ ---- r/galera_ist_mysqldump.result 2018-09-11 12:38:42.027479411 +0300 -+++ r/galera_ist_mysqldump.reject 2018-09-17 10:28:44.483441364 +0300 +--- r/galera_ist_mysqldump.result ++++ r/galera_ist_mysqldump,debug.result @@ -180,6 +180,103 @@ DROP TABLE t1; COMMIT; diff --git a/mysql-test/suite/galera/r/galera_sst_mariabackup_encrypt_with_key.result b/mysql-test/suite/galera/r/galera_sst_mariabackup_encrypt_with_key.result new file mode 100644 index 000000000..990e0a295 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_sst_mariabackup_encrypt_with_key.result @@ -0,0 +1,3 @@ +SELECT 1; +1 +1 diff --git a/mysql-test/suite/galera/r/galera_sst_mariabackup_table_options.result b/mysql-test/suite/galera/r/galera_sst_mariabackup_table_options.result new file mode 100644 index 000000000..f55a926d4 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_sst_mariabackup_table_options.result @@ -0,0 +1,985 @@ +Performing State Transfer on a server that starts from a clean var directory +This is accomplished by shutting down node #2 and removing its var directory before restarting it +CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; +CREATE TABLE t2 (f1 CHAR(255)) ENGINE=InnoDB PAGE_COMPRESSED=1; +CREATE TABLE t3 (f1 CHAR(255)) ENGINE=InnoDB PAGE_COMPRESSED=1 ENCRYPTED=NO; +CREATE TABLE t4 (f1 CHAR(255)) ENGINE=InnoDB PAGE_COMPRESSED=1 ENCRYPTED=YES; +CREATE TABLE t5 (f1 CHAR(255)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED; +CREATE TABLE t6 (f1 CHAR(255)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED ENCRYPTED=NO; +CREATE TABLE t7 (f1 CHAR(255)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED ENCRYPTED=YES; +CREATE TABLE t8 (f1 CHAR(255)) ENGINE=InnoDB ENCRYPTED=NO; +CREATE TABLE t9 (f1 CHAR(255)) ENGINE=InnoDB ENCRYPTED=YES; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +insert into t9 values ('node1_committed_before'); +insert into t9 values ('node1_committed_before'); +insert into t9 values ('node1_committed_before'); +insert into t9 values ('node1_committed_before'); +insert into t9 values ('node1_committed_before'); +insert into t8 values ('node1_committed_before'); +insert into t8 values ('node1_committed_before'); +insert into t8 values ('node1_committed_before'); +insert into t8 values ('node1_committed_before'); +insert into t8 values ('node1_committed_before'); +insert into t7 values ('node1_committed_before'); +insert into t7 values ('node1_committed_before'); +insert into t7 values ('node1_committed_before'); +insert into t7 values ('node1_committed_before'); +insert into t7 values ('node1_committed_before'); +insert into t6 values ('node1_committed_before'); +insert into t6 values ('node1_committed_before'); +insert into t6 values ('node1_committed_before'); +insert into t6 values ('node1_committed_before'); +insert into t6 values ('node1_committed_before'); +insert into t5 values ('node1_committed_before'); +insert into t5 values ('node1_committed_before'); +insert into t5 values ('node1_committed_before'); +insert into t5 values ('node1_committed_before'); +insert into t5 values ('node1_committed_before'); +insert into t4 values ('node1_committed_before'); +insert into t4 values ('node1_committed_before'); +insert into t4 values ('node1_committed_before'); +insert into t4 values ('node1_committed_before'); +insert into t4 values ('node1_committed_before'); +insert into t3 values ('node1_committed_before'); +insert into t3 values ('node1_committed_before'); +insert into t3 values ('node1_committed_before'); +insert into t3 values ('node1_committed_before'); +insert into t3 values ('node1_committed_before'); +insert into t2 values ('node1_committed_before'); +insert into t2 values ('node1_committed_before'); +insert into t2 values ('node1_committed_before'); +insert into t2 values ('node1_committed_before'); +insert into t2 values ('node1_committed_before'); +insert into t1 values ('node1_committed_before'); +insert into t1 values ('node1_committed_before'); +insert into t1 values ('node1_committed_before'); +insert into t1 values ('node1_committed_before'); +insert into t1 values ('node1_committed_before'); +COMMIT; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +insert into t9 values ('node2_committed_before'); +insert into t9 values ('node2_committed_before'); +insert into t9 values ('node2_committed_before'); +insert into t9 values ('node2_committed_before'); +insert into t9 values ('node2_committed_before'); +insert into t8 values ('node2_committed_before'); +insert into t8 values ('node2_committed_before'); +insert into t8 values ('node2_committed_before'); +insert into t8 values ('node2_committed_before'); +insert into t8 values ('node2_committed_before'); +insert into t7 values ('node2_committed_before'); +insert into t7 values ('node2_committed_before'); +insert into t7 values ('node2_committed_before'); +insert into t7 values ('node2_committed_before'); +insert into t7 values ('node2_committed_before'); +insert into t6 values ('node2_committed_before'); +insert into t6 values ('node2_committed_before'); +insert into t6 values ('node2_committed_before'); +insert into t6 values ('node2_committed_before'); +insert into t6 values ('node2_committed_before'); +insert into t5 values ('node2_committed_before'); +insert into t5 values ('node2_committed_before'); +insert into t5 values ('node2_committed_before'); +insert into t5 values ('node2_committed_before'); +insert into t5 values ('node2_committed_before'); +insert into t4 values ('node2_committed_before'); +insert into t4 values ('node2_committed_before'); +insert into t4 values ('node2_committed_before'); +insert into t4 values ('node2_committed_before'); +insert into t4 values ('node2_committed_before'); +insert into t3 values ('node2_committed_before'); +insert into t3 values ('node2_committed_before'); +insert into t3 values ('node2_committed_before'); +insert into t3 values ('node2_committed_before'); +insert into t3 values ('node2_committed_before'); +insert into t2 values ('node2_committed_before'); +insert into t2 values ('node2_committed_before'); +insert into t2 values ('node2_committed_before'); +insert into t2 values ('node2_committed_before'); +insert into t2 values ('node2_committed_before'); +insert into t1 values ('node2_committed_before'); +insert into t1 values ('node2_committed_before'); +insert into t1 values ('node2_committed_before'); +insert into t1 values ('node2_committed_before'); +insert into t1 values ('node2_committed_before'); +COMMIT; +Shutting down server ... +Cleaning var directory ... +SET AUTOCOMMIT=OFF; +START TRANSACTION; +insert into t9 values ('node1_committed_during'); +insert into t9 values ('node1_committed_during'); +insert into t9 values ('node1_committed_during'); +insert into t9 values ('node1_committed_during'); +insert into t9 values ('node1_committed_during'); +insert into t8 values ('node1_committed_during'); +insert into t8 values ('node1_committed_during'); +insert into t8 values ('node1_committed_during'); +insert into t8 values ('node1_committed_during'); +insert into t8 values ('node1_committed_during'); +insert into t7 values ('node1_committed_during'); +insert into t7 values ('node1_committed_during'); +insert into t7 values ('node1_committed_during'); +insert into t7 values ('node1_committed_during'); +insert into t7 values ('node1_committed_during'); +insert into t6 values ('node1_committed_during'); +insert into t6 values ('node1_committed_during'); +insert into t6 values ('node1_committed_during'); +insert into t6 values ('node1_committed_during'); +insert into t6 values ('node1_committed_during'); +insert into t5 values ('node1_committed_during'); +insert into t5 values ('node1_committed_during'); +insert into t5 values ('node1_committed_during'); +insert into t5 values ('node1_committed_during'); +insert into t5 values ('node1_committed_during'); +insert into t4 values ('node1_committed_during'); +insert into t4 values ('node1_committed_during'); +insert into t4 values ('node1_committed_during'); +insert into t4 values ('node1_committed_during'); +insert into t4 values ('node1_committed_during'); +insert into t3 values ('node1_committed_during'); +insert into t3 values ('node1_committed_during'); +insert into t3 values ('node1_committed_during'); +insert into t3 values ('node1_committed_during'); +insert into t3 values ('node1_committed_during'); +insert into t2 values ('node1_committed_during'); +insert into t2 values ('node1_committed_during'); +insert into t2 values ('node1_committed_during'); +insert into t2 values ('node1_committed_during'); +insert into t2 values ('node1_committed_during'); +insert into t1 values ('node1_committed_during'); +insert into t1 values ('node1_committed_during'); +insert into t1 values ('node1_committed_during'); +insert into t1 values ('node1_committed_during'); +insert into t1 values ('node1_committed_during'); +COMMIT; +START TRANSACTION; +insert into t9 values ('node1_to_be_committed_after'); +insert into t9 values ('node1_to_be_committed_after'); +insert into t9 values ('node1_to_be_committed_after'); +insert into t9 values ('node1_to_be_committed_after'); +insert into t9 values ('node1_to_be_committed_after'); +insert into t8 values ('node1_to_be_committed_after'); +insert into t8 values ('node1_to_be_committed_after'); +insert into t8 values ('node1_to_be_committed_after'); +insert into t8 values ('node1_to_be_committed_after'); +insert into t8 values ('node1_to_be_committed_after'); +insert into t7 values ('node1_to_be_committed_after'); +insert into t7 values ('node1_to_be_committed_after'); +insert into t7 values ('node1_to_be_committed_after'); +insert into t7 values ('node1_to_be_committed_after'); +insert into t7 values ('node1_to_be_committed_after'); +insert into t6 values ('node1_to_be_committed_after'); +insert into t6 values ('node1_to_be_committed_after'); +insert into t6 values ('node1_to_be_committed_after'); +insert into t6 values ('node1_to_be_committed_after'); +insert into t6 values ('node1_to_be_committed_after'); +insert into t5 values ('node1_to_be_committed_after'); +insert into t5 values ('node1_to_be_committed_after'); +insert into t5 values ('node1_to_be_committed_after'); +insert into t5 values ('node1_to_be_committed_after'); +insert into t5 values ('node1_to_be_committed_after'); +insert into t4 values ('node1_to_be_committed_after'); +insert into t4 values ('node1_to_be_committed_after'); +insert into t4 values ('node1_to_be_committed_after'); +insert into t4 values ('node1_to_be_committed_after'); +insert into t4 values ('node1_to_be_committed_after'); +insert into t3 values ('node1_to_be_committed_after'); +insert into t3 values ('node1_to_be_committed_after'); +insert into t3 values ('node1_to_be_committed_after'); +insert into t3 values ('node1_to_be_committed_after'); +insert into t3 values ('node1_to_be_committed_after'); +insert into t2 values ('node1_to_be_committed_after'); +insert into t2 values ('node1_to_be_committed_after'); +insert into t2 values ('node1_to_be_committed_after'); +insert into t2 values ('node1_to_be_committed_after'); +insert into t2 values ('node1_to_be_committed_after'); +insert into t1 values ('node1_to_be_committed_after'); +insert into t1 values ('node1_to_be_committed_after'); +insert into t1 values ('node1_to_be_committed_after'); +insert into t1 values ('node1_to_be_committed_after'); +insert into t1 values ('node1_to_be_committed_after'); +SET AUTOCOMMIT=OFF; +START TRANSACTION; +insert into t9 values ('node1_to_be_rollbacked_after'); +insert into t9 values ('node1_to_be_rollbacked_after'); +insert into t9 values ('node1_to_be_rollbacked_after'); +insert into t9 values ('node1_to_be_rollbacked_after'); +insert into t9 values ('node1_to_be_rollbacked_after'); +insert into t8 values ('node1_to_be_rollbacked_after'); +insert into t8 values ('node1_to_be_rollbacked_after'); +insert into t8 values ('node1_to_be_rollbacked_after'); +insert into t8 values ('node1_to_be_rollbacked_after'); +insert into t8 values ('node1_to_be_rollbacked_after'); +insert into t7 values ('node1_to_be_rollbacked_after'); +insert into t7 values ('node1_to_be_rollbacked_after'); +insert into t7 values ('node1_to_be_rollbacked_after'); +insert into t7 values ('node1_to_be_rollbacked_after'); +insert into t7 values ('node1_to_be_rollbacked_after'); +insert into t6 values ('node1_to_be_rollbacked_after'); +insert into t6 values ('node1_to_be_rollbacked_after'); +insert into t6 values ('node1_to_be_rollbacked_after'); +insert into t6 values ('node1_to_be_rollbacked_after'); +insert into t6 values ('node1_to_be_rollbacked_after'); +insert into t5 values ('node1_to_be_rollbacked_after'); +insert into t5 values ('node1_to_be_rollbacked_after'); +insert into t5 values ('node1_to_be_rollbacked_after'); +insert into t5 values ('node1_to_be_rollbacked_after'); +insert into t5 values ('node1_to_be_rollbacked_after'); +insert into t4 values ('node1_to_be_rollbacked_after'); +insert into t4 values ('node1_to_be_rollbacked_after'); +insert into t4 values ('node1_to_be_rollbacked_after'); +insert into t4 values ('node1_to_be_rollbacked_after'); +insert into t4 values ('node1_to_be_rollbacked_after'); +insert into t3 values ('node1_to_be_rollbacked_after'); +insert into t3 values ('node1_to_be_rollbacked_after'); +insert into t3 values ('node1_to_be_rollbacked_after'); +insert into t3 values ('node1_to_be_rollbacked_after'); +insert into t3 values ('node1_to_be_rollbacked_after'); +insert into t2 values ('node1_to_be_rollbacked_after'); +insert into t2 values ('node1_to_be_rollbacked_after'); +insert into t2 values ('node1_to_be_rollbacked_after'); +insert into t2 values ('node1_to_be_rollbacked_after'); +insert into t2 values ('node1_to_be_rollbacked_after'); +insert into t1 values ('node1_to_be_rollbacked_after'); +insert into t1 values ('node1_to_be_rollbacked_after'); +insert into t1 values ('node1_to_be_rollbacked_after'); +insert into t1 values ('node1_to_be_rollbacked_after'); +insert into t1 values ('node1_to_be_rollbacked_after'); +Starting server ... +SET AUTOCOMMIT=OFF; +START TRANSACTION; +COMMIT; +insert into t9 values ('node1_to_be_committed_after'); +insert into t9 values ('node1_to_be_committed_after'); +insert into t9 values ('node1_to_be_committed_after'); +insert into t9 values ('node1_to_be_committed_after'); +insert into t9 values ('node1_to_be_committed_after'); +insert into t8 values ('node1_to_be_committed_after'); +insert into t8 values ('node1_to_be_committed_after'); +insert into t8 values ('node1_to_be_committed_after'); +insert into t8 values ('node1_to_be_committed_after'); +insert into t8 values ('node1_to_be_committed_after'); +insert into t7 values ('node1_to_be_committed_after'); +insert into t7 values ('node1_to_be_committed_after'); +insert into t7 values ('node1_to_be_committed_after'); +insert into t7 values ('node1_to_be_committed_after'); +insert into t7 values ('node1_to_be_committed_after'); +insert into t6 values ('node1_to_be_committed_after'); +insert into t6 values ('node1_to_be_committed_after'); +insert into t6 values ('node1_to_be_committed_after'); +insert into t6 values ('node1_to_be_committed_after'); +insert into t6 values ('node1_to_be_committed_after'); +insert into t5 values ('node1_to_be_committed_after'); +insert into t5 values ('node1_to_be_committed_after'); +insert into t5 values ('node1_to_be_committed_after'); +insert into t5 values ('node1_to_be_committed_after'); +insert into t5 values ('node1_to_be_committed_after'); +insert into t4 values ('node1_to_be_committed_after'); +insert into t4 values ('node1_to_be_committed_after'); +insert into t4 values ('node1_to_be_committed_after'); +insert into t4 values ('node1_to_be_committed_after'); +insert into t4 values ('node1_to_be_committed_after'); +insert into t3 values ('node1_to_be_committed_after'); +insert into t3 values ('node1_to_be_committed_after'); +insert into t3 values ('node1_to_be_committed_after'); +insert into t3 values ('node1_to_be_committed_after'); +insert into t3 values ('node1_to_be_committed_after'); +insert into t2 values ('node1_to_be_committed_after'); +insert into t2 values ('node1_to_be_committed_after'); +insert into t2 values ('node1_to_be_committed_after'); +insert into t2 values ('node1_to_be_committed_after'); +insert into t2 values ('node1_to_be_committed_after'); +insert into t1 values ('node1_to_be_committed_after'); +insert into t1 values ('node1_to_be_committed_after'); +insert into t1 values ('node1_to_be_committed_after'); +insert into t1 values ('node1_to_be_committed_after'); +insert into t1 values ('node1_to_be_committed_after'); +COMMIT; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +insert into t9 values ('node1_committed_after'); +insert into t9 values ('node1_committed_after'); +insert into t9 values ('node1_committed_after'); +insert into t9 values ('node1_committed_after'); +insert into t9 values ('node1_committed_after'); +insert into t8 values ('node1_committed_after'); +insert into t8 values ('node1_committed_after'); +insert into t8 values ('node1_committed_after'); +insert into t8 values ('node1_committed_after'); +insert into t8 values ('node1_committed_after'); +insert into t7 values ('node1_committed_after'); +insert into t7 values ('node1_committed_after'); +insert into t7 values ('node1_committed_after'); +insert into t7 values ('node1_committed_after'); +insert into t7 values ('node1_committed_after'); +insert into t6 values ('node1_committed_after'); +insert into t6 values ('node1_committed_after'); +insert into t6 values ('node1_committed_after'); +insert into t6 values ('node1_committed_after'); +insert into t6 values ('node1_committed_after'); +insert into t5 values ('node1_committed_after'); +insert into t5 values ('node1_committed_after'); +insert into t5 values ('node1_committed_after'); +insert into t5 values ('node1_committed_after'); +insert into t5 values ('node1_committed_after'); +insert into t4 values ('node1_committed_after'); +insert into t4 values ('node1_committed_after'); +insert into t4 values ('node1_committed_after'); +insert into t4 values ('node1_committed_after'); +insert into t4 values ('node1_committed_after'); +insert into t3 values ('node1_committed_after'); +insert into t3 values ('node1_committed_after'); +insert into t3 values ('node1_committed_after'); +insert into t3 values ('node1_committed_after'); +insert into t3 values ('node1_committed_after'); +insert into t2 values ('node1_committed_after'); +insert into t2 values ('node1_committed_after'); +insert into t2 values ('node1_committed_after'); +insert into t2 values ('node1_committed_after'); +insert into t2 values ('node1_committed_after'); +insert into t1 values ('node1_committed_after'); +insert into t1 values ('node1_committed_after'); +insert into t1 values ('node1_committed_after'); +insert into t1 values ('node1_committed_after'); +insert into t1 values ('node1_committed_after'); +COMMIT; +ROLLBACK; +SELECT COUNT(*) FROM t1; +COUNT(*) +30 +SELECT COUNT(*) FROM t2; +COUNT(*) +30 +SELECT COUNT(*) FROM t3; +COUNT(*) +30 +SELECT COUNT(*) FROM t4; +COUNT(*) +30 +SELECT COUNT(*) FROM t5; +COUNT(*) +30 +SELECT COUNT(*) FROM t6; +COUNT(*) +30 +SELECT COUNT(*) FROM t7; +COUNT(*) +30 +SELECT COUNT(*) FROM t8; +COUNT(*) +30 +SELECT COUNT(*) FROM t9; +COUNT(*) +30 +SELECT * FROM t1; +f1 +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +SELECT * FROM t2; +f1 +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +SELECT * FROM t3; +f1 +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +SELECT * FROM t4; +f1 +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +SELECT * FROM t5; +f1 +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +SELECT * FROM t6; +f1 +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +SELECT * FROM t7; +f1 +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +SELECT * FROM t8; +f1 +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +SELECT * FROM t9; +f1 +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +COMMIT; +SET AUTOCOMMIT=ON; +SELECT COUNT(*) FROM t1; +COUNT(*) +30 +SELECT COUNT(*) FROM t2; +COUNT(*) +30 +SELECT COUNT(*) FROM t3; +COUNT(*) +30 +SELECT COUNT(*) FROM t4; +COUNT(*) +30 +SELECT COUNT(*) FROM t5; +COUNT(*) +30 +SELECT COUNT(*) FROM t6; +COUNT(*) +30 +SELECT COUNT(*) FROM t7; +COUNT(*) +30 +SELECT COUNT(*) FROM t8; +COUNT(*) +30 +SELECT COUNT(*) FROM t9; +COUNT(*) +30 +SELECT * FROM t1; +f1 +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +SELECT * FROM t2; +f1 +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +SELECT * FROM t3; +f1 +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +SELECT * FROM t4; +f1 +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +SELECT * FROM t5; +f1 +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +SELECT * FROM t6; +f1 +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +SELECT * FROM t7; +f1 +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +SELECT * FROM t8; +f1 +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +SELECT * FROM t9; +f1 +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node1_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node2_committed_before +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_committed_during +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_to_be_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +node1_committed_after +COMMIT; +DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9; +COMMIT; +SET AUTOCOMMIT=ON; diff --git a/mysql-test/suite/galera/r/galera_sst_mysqldump_with_key,debug.rdiff b/mysql-test/suite/galera/r/galera_sst_mysqldump_with_key,debug.rdiff new file mode 100644 index 000000000..4a7db96dc --- /dev/null +++ b/mysql-test/suite/galera/r/galera_sst_mysqldump_with_key,debug.rdiff @@ -0,0 +1,106 @@ +--- r/galera_sst_mysqldump_with_key.result 2018-11-19 09:56:30.081976558 +0200 ++++ r/galera_sst_mysqldump_with_key.reject 2018-11-19 10:47:41.609299365 +0200 +@@ -183,6 +183,103 @@ + DROP TABLE t1; + COMMIT; + SET AUTOCOMMIT=ON; ++Performing State Transfer on a server that has been killed and restarted ++while a DDL was in progress on it ++CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++START TRANSACTION; ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++COMMIT; ++SET GLOBAL debug_dbug = 'd,sync.alter_opened_table'; ++ALTER TABLE t1 ADD COLUMN f2 INTEGER; ++SET wsrep_sync_wait = 0; ++Killing server ... ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++COMMIT; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++Performing --wsrep-recover ... ++Starting server ... ++Using --wsrep-start-position when starting mysqld ... ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++COMMIT; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++COMMIT; ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++COMMIT; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++ROLLBACK; ++SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; ++COUNT(*) = 2 ++1 ++SELECT COUNT(*) = 35 FROM t1; ++COUNT(*) = 35 ++1 ++SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; ++COUNT(*) = 0 ++1 ++COMMIT; ++SET AUTOCOMMIT=ON; ++SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; ++COUNT(*) = 2 ++1 ++SELECT COUNT(*) = 35 FROM t1; ++COUNT(*) = 35 ++1 ++SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; ++COUNT(*) = 0 ++1 ++DROP TABLE t1; ++COMMIT; ++SET AUTOCOMMIT=ON; ++SET GLOBAL debug_dbug = $debug_orig; + CALL mtr.add_suppression("Slave SQL: Error 'The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement' on query"); + DROP USER sst; + CALL mtr.add_suppression("Slave SQL: Error 'The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement' on query"); diff --git a/mysql-test/suite/galera/r/galera_sst_mysqldump_with_key.result b/mysql-test/suite/galera/r/galera_sst_mysqldump_with_key.result index bf9613f6d..bdf3844f2 100644 --- a/mysql-test/suite/galera/r/galera_sst_mysqldump_with_key.result +++ b/mysql-test/suite/galera/r/galera_sst_mysqldump_with_key.result @@ -183,103 +183,6 @@ COUNT(*) = 0 DROP TABLE t1; COMMIT; SET AUTOCOMMIT=ON; -Performing State Transfer on a server that has been killed and restarted -while a DDL was in progress on it -CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; -SET AUTOCOMMIT=OFF; -START TRANSACTION; -INSERT INTO t1 VALUES ('node1_committed_before'); -INSERT INTO t1 VALUES ('node1_committed_before'); -INSERT INTO t1 VALUES ('node1_committed_before'); -INSERT INTO t1 VALUES ('node1_committed_before'); -INSERT INTO t1 VALUES ('node1_committed_before'); -START TRANSACTION; -INSERT INTO t1 VALUES ('node2_committed_before'); -INSERT INTO t1 VALUES ('node2_committed_before'); -INSERT INTO t1 VALUES ('node2_committed_before'); -INSERT INTO t1 VALUES ('node2_committed_before'); -INSERT INTO t1 VALUES ('node2_committed_before'); -COMMIT; -SET GLOBAL debug_dbug = 'd,sync.alter_opened_table'; -ALTER TABLE t1 ADD COLUMN f2 INTEGER; -SET wsrep_sync_wait = 0; -Killing server ... -SET AUTOCOMMIT=OFF; -START TRANSACTION; -INSERT INTO t1 (f1) VALUES ('node1_committed_during'); -INSERT INTO t1 (f1) VALUES ('node1_committed_during'); -INSERT INTO t1 (f1) VALUES ('node1_committed_during'); -INSERT INTO t1 (f1) VALUES ('node1_committed_during'); -INSERT INTO t1 (f1) VALUES ('node1_committed_during'); -COMMIT; -START TRANSACTION; -INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); -INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); -INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); -INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); -INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); -SET AUTOCOMMIT=OFF; -START TRANSACTION; -INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); -INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); -INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); -INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); -INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); -Performing --wsrep-recover ... -Starting server ... -Using --wsrep-start-position when starting mysqld ... -SET AUTOCOMMIT=OFF; -START TRANSACTION; -INSERT INTO t1 (f1) VALUES ('node2_committed_after'); -INSERT INTO t1 (f1) VALUES ('node2_committed_after'); -INSERT INTO t1 (f1) VALUES ('node2_committed_after'); -INSERT INTO t1 (f1) VALUES ('node2_committed_after'); -INSERT INTO t1 (f1) VALUES ('node2_committed_after'); -COMMIT; -INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); -INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); -INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); -INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); -INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); -COMMIT; -SET AUTOCOMMIT=OFF; -START TRANSACTION; -INSERT INTO t1 (f1) VALUES ('node1_committed_after'); -INSERT INTO t1 (f1) VALUES ('node1_committed_after'); -INSERT INTO t1 (f1) VALUES ('node1_committed_after'); -INSERT INTO t1 (f1) VALUES ('node1_committed_after'); -INSERT INTO t1 (f1) VALUES ('node1_committed_after'); -COMMIT; -INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); -INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); -INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); -INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); -INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); -ROLLBACK; -SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; -COUNT(*) = 2 -1 -SELECT COUNT(*) = 35 FROM t1; -COUNT(*) = 35 -1 -SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; -COUNT(*) = 0 -1 -COMMIT; -SET AUTOCOMMIT=ON; -SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; -COUNT(*) = 2 -1 -SELECT COUNT(*) = 35 FROM t1; -COUNT(*) = 35 -1 -SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; -COUNT(*) = 0 -1 -DROP TABLE t1; -COMMIT; -SET AUTOCOMMIT=ON; -SET GLOBAL debug_dbug = $debug_orig; CALL mtr.add_suppression("Slave SQL: Error 'The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement' on query"); DROP USER sst; CALL mtr.add_suppression("Slave SQL: Error 'The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement' on query"); diff --git a/mysql-test/suite/galera/r/galera_sst_xtrabackup-v2_data_dir,debug.rdiff b/mysql-test/suite/galera/r/galera_sst_xtrabackup-v2_data_dir,debug.rdiff new file mode 100644 index 000000000..ac2320200 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_sst_xtrabackup-v2_data_dir,debug.rdiff @@ -0,0 +1,103 @@ +--- r/galera_sst_xtrabackup-v2_data_dir.result 2018-11-19 12:27:24.795221479 +0200 ++++ r/galera_sst_xtrabackup-v2_data_dir.reject 2018-11-19 19:15:38.774008404 +0200 +@@ -260,3 +260,100 @@ + DROP TABLE t1; + COMMIT; + SET AUTOCOMMIT=ON; ++Performing State Transfer on a server that has been killed and restarted ++while a DDL was in progress on it ++CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++START TRANSACTION; ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++COMMIT; ++SET GLOBAL debug_dbug = 'd,sync.alter_opened_table'; ++ALTER TABLE t1 ADD COLUMN f2 INTEGER; ++SET wsrep_sync_wait = 0; ++Killing server ... ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++COMMIT; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++Performing --wsrep-recover ... ++Starting server ... ++Using --wsrep-start-position when starting mysqld ... ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++COMMIT; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++COMMIT; ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++COMMIT; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++ROLLBACK; ++SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; ++COUNT(*) = 2 ++1 ++SELECT COUNT(*) = 35 FROM t1; ++COUNT(*) = 35 ++1 ++SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; ++COUNT(*) = 0 ++1 ++COMMIT; ++SET AUTOCOMMIT=ON; ++SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; ++COUNT(*) = 2 ++1 ++SELECT COUNT(*) = 35 FROM t1; ++COUNT(*) = 35 ++1 ++SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; ++COUNT(*) = 0 ++1 ++DROP TABLE t1; ++COMMIT; ++SET AUTOCOMMIT=ON; ++SET GLOBAL debug_dbug = $debug_orig; diff --git a/mysql-test/suite/galera/r/galera_var_reject_queries.result b/mysql-test/suite/galera/r/galera_var_reject_queries.result index 5958e6ae9..1c932eb55 100644 --- a/mysql-test/suite/galera/r/galera_var_reject_queries.result +++ b/mysql-test/suite/galera/r/galera_var_reject_queries.result @@ -5,7 +5,6 @@ SET GLOBAL wsrep_reject_queries = ALL; SELECT * FROM t1; ERROR 08S01: WSREP has not yet prepared node for application use SET GLOBAL wsrep_reject_queries = ALL_KILL; -ERROR HY000: Lost connection to MySQL server during query SELECT * FROM t1; Got one of the listed errors SELECT * FROM t1; diff --git a/mysql-test/suite/galera/r/partition.result b/mysql-test/suite/galera/r/partition.result index 3907b4f08..6b0868aab 100644 --- a/mysql-test/suite/galera/r/partition.result +++ b/mysql-test/suite/galera/r/partition.result @@ -109,9 +109,9 @@ DROP TABLE t1, p1; SET GLOBAL wsrep_load_data_splitting = ON; CREATE TABLE t1 (pk INT PRIMARY KEY) ENGINE=INNODB PARTITION BY HASH(pk) PARTITIONS 2; -SELECT COUNT(*) = 20002 FROM t1; -COUNT(*) = 20002 -1 +SELECT COUNT(*) FROM t1; +COUNT(*) +20002 wsrep_last_committed_diff 1 DROP TABLE t1; @@ -119,9 +119,9 @@ DROP TABLE t1; SET GLOBAL wsrep_load_data_splitting = ON; CREATE TABLE t1 (pk INT PRIMARY KEY) ENGINE=INNODB PARTITION BY HASH(pk) PARTITIONS 2; -SELECT COUNT(*) = 101 FROM t1; -COUNT(*) = 101 -1 +SELECT COUNT(*) FROM t1; +COUNT(*) +101 wsrep_last_committed_diff 1 DROP TABLE t1; @@ -130,9 +130,9 @@ DROP TABLE t1; SET GLOBAL wsrep_load_data_splitting = OFF; CREATE TABLE t1 (pk INT PRIMARY KEY) ENGINE=INNODB PARTITION BY HASH(pk) PARTITIONS 2; -SELECT COUNT(*) = 20002 FROM t1; -COUNT(*) = 20002 -1 +SELECT COUNT(*) FROM t1; +COUNT(*) +20002 wsrep_last_committed_diff 1 DROP TABLE t1; diff --git a/mysql-test/suite/galera/suite.pm b/mysql-test/suite/galera/suite.pm index 57615e5e9..8b7b7034f 100644 --- a/mysql-test/suite/galera/suite.pm +++ b/mysql-test/suite/galera/suite.pm @@ -96,6 +96,8 @@ if (which(socat)) { sub skip_combinations { my %skip = (); + $skip{'include/have_filekeymanagement.inc'} = 'needs file_key_management plugin' + unless $ENV{FILE_KEY_MANAGEMENT_SO}; $skip{'include/have_xtrabackup.inc'} = 'Need innobackupex' unless which(innobackupex); $skip{'include/have_xtrabackup.inc'} = 'Need socat or nc' diff --git a/mysql-test/suite/galera/t/galera_autoinc_sst_mariabackup.cnf b/mysql-test/suite/galera/t/galera_autoinc_sst_mariabackup.cnf new file mode 100644 index 000000000..7e5577177 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_autoinc_sst_mariabackup.cnf @@ -0,0 +1,12 @@ +!include ../galera_2nodes.cnf + +[mysqld] +wsrep_sst_method=mariabackup +wsrep_sst_auth="root:" + +[mysqld.1] +wsrep_provider_options='base_port=@mysqld.1.#galera_port;gcache.size=1;pc.ignore_sb=true' + +[mysqld.2] +wsrep_provider_options='base_port=@mysqld.2.#galera_port;gcache.size=1;pc.ignore_sb=true' + diff --git a/mysql-test/suite/galera/t/galera_autoinc_sst_mariabackup.test b/mysql-test/suite/galera/t/galera_autoinc_sst_mariabackup.test new file mode 100644 index 000000000..731059dc5 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_autoinc_sst_mariabackup.test @@ -0,0 +1,96 @@ +# +# Test that autoincrement works correctly while the cluster membership +# is changing and SST takes place. +# + +--source include/big_test.inc +--source include/galera_cluster.inc +--source include/have_innodb.inc +--source include/have_mariabackup.inc + +--connection node_1 +--let $connection_id = `SELECT CONNECTION_ID()` + +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB; + +# Issue an endless stream of autoincrement inserts + +DELIMITER |; +CREATE PROCEDURE p1 () +BEGIN + DECLARE x INT DEFAULT 1; + DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END; + + WHILE 1 DO + INSERT INTO t1 VALUES (DEFAULT); + COMMIT; + END WHILE; +END| +DELIMITER ;| + +--send CALL p1(); +--sleep 2 + +--connection node_2 +--send CALL p1(); +--sleep 2 + +# Kill and restart node #2 + +--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connection node_2a +--source include/kill_galera.inc + +--sleep 10 +--source include/start_mysqld.inc +--sleep 25 +--source include/wait_until_connected_again.inc + +INSERT INTO t1 VALUES (DEFAULT); + +# Terminate the stored procedure + +--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 +--connection node_1a +--disable_query_log +--eval KILL CONNECTION $connection_id +--enable_query_log + +INSERT INTO t1 VALUES (DEFAULT); + +--connection node_1 +# CR_SERVER_LOST +--error 2013,2006 +--reap + +--connection node_2 +# CR_SERVER_LOST +--error 2013,2006 +--reap + +--sleep 10 + +# Confirm that the count is correct and that the cluster is intact + +--connection node_1a +--let $count = `SELECT COUNT(*) FROM t1` + +--connection node_2a +--disable_query_log +--eval SELECT COUNT(*) = $count AS count_equal FROM t1 +--enable_query_log + +CALL mtr.add_suppression("WSREP: Action message in non-primary configuration from member 0"); + +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; +SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; + +--connection node_1a +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; +SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; + +DROP PROCEDURE p1; +DROP TABLE t1; + +CALL mtr.add_suppression("gcs_caused\\(\\) returned -1 \\(Operation not permitted\\)"); +CALL mtr.add_suppression("WSREP: Action message in non-primary configuration from member 0"); diff --git a/mysql-test/suite/galera/t/galera_defaults.test b/mysql-test/suite/galera/t/galera_defaults.test index 0ad979163..3d4a7da7b 100644 --- a/mysql-test/suite/galera/t/galera_defaults.test +++ b/mysql-test/suite/galera/t/galera_defaults.test @@ -36,26 +36,3 @@ AND VARIABLE_NAME NOT IN ( 'WSREP_PATCH_VERSION' ) ORDER BY VARIABLE_NAME; - -# wsrep_provider_options -# -# We replace the ones that vary from run to run with placeholders - ---let _WSREP_PROVIDER_OPTIONS = `SELECT @@wsrep_provider_options` ---perl - use strict; - my $wsrep_provider_options = $ENV{'_WSREP_PROVIDER_OPTIONS'}; - $wsrep_provider_options =~ s/base_dir = .*?;/;/sgio; - $wsrep_provider_options =~ s/base_host = .*?;/;/sgio; - $wsrep_provider_options =~ s/base_port = .*?;/;/sgio; - $wsrep_provider_options =~ s/gcache\.dir = .*?;/;/sgio; - $wsrep_provider_options =~ s/gcache\.name = .*?;/;/sgio; - $wsrep_provider_options =~ s/gmcast\.listen_addr = .*?;/;/sgio; - $wsrep_provider_options =~ s/gcs\.recv_q_hard_limit = .*?;/;/sgio; - $wsrep_provider_options =~ s/ist\.recv_addr = .*?;/;/sgio; - $wsrep_provider_options =~ s/evs\.evict = .*?;/;/sgio; - $wsrep_provider_options =~ s/signal = .*?;\s*//sgio; - $wsrep_provider_options =~ s/dbug = .*?;\s*//sgio; - $wsrep_provider_options =~ s/repl.proto_max = .*?;\s*/;/sgio; - print $wsrep_provider_options."\n"; -EOF diff --git a/mysql-test/suite/galera/t/galera_drop_database.test b/mysql-test/suite/galera/t/galera_drop_database.test index 47fe83151..12d9efea2 100644 --- a/mysql-test/suite/galera/t/galera_drop_database.test +++ b/mysql-test/suite/galera/t/galera_drop_database.test @@ -9,6 +9,7 @@ --let $node_2=node_2 --source include/auto_increment_offset_save.inc +# Create test database with two sets of the FTS indexes: CREATE DATABASE fts; USE fts; CREATE TABLE fts_t1 (f1 INT PRIMARY KEY AUTO_INCREMENT, f2 VARCHAR(100), FULLTEXT (f2)) ENGINE=InnoDB; @@ -23,34 +24,19 @@ DROP TABLE ten; UPDATE fts_t1 SET f2 = 'abcd'; UPDATE fts_t2 SET f2 = 'efjh'; +# Restart the second node: --connection node_2 -let $wsrep_cluster_address = `SELECT @@global.wsrep_node_incoming_address`; --source include/restart_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 ---let $galera_connection_name = node_2a ---let $galera_server_number = 2 ---source include/galera_connect.inc ---connection node_2a +--connection node_2 --source include/wait_until_ready.inc +# Drop the tables and database after nodes restarted: --connection node_1 ---let $restart_parameters = --wsrep-cluster-address=gcomm://$wsrep_cluster_address ---source include/restart_mysqld.inc - ---connection node_2a ---let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; ---source include/wait_condition.inc - ---let $galera_connection_name = node_1a ---let $galera_server_number = 1 ---source include/galera_connect.inc ---connection node_1a ---source include/wait_until_ready.inc - USE fts; DROP TABLE fts_t1; DROP TABLE fts_t2; @@ -58,8 +44,4 @@ SHOW TABLES; DROP DATABASE fts; # Restore original auto_increment_offset values. ---let $node_1=node_1a ---let $node_2=node_2a --source include/auto_increment_offset_restore.inc - ---source include/galera_end.inc diff --git a/mysql-test/suite/galera/t/galera_gcache_recover_full_gcache.test b/mysql-test/suite/galera/t/galera_gcache_recover_full_gcache.test index b7fd9cf3a..7eb25d001 100644 --- a/mysql-test/suite/galera/t/galera_gcache_recover_full_gcache.test +++ b/mysql-test/suite/galera/t/galera_gcache_recover_full_gcache.test @@ -5,6 +5,11 @@ --source include/galera_cluster.inc --source include/big_test.inc +call mtr.add_suppression("InnoDB: Warning: innodb_page_size has been changed from default value *"); +call mtr.add_suppression("InnoDB: Resizing redo log from *"); +call mtr.add_suppression("InnoDB: Starting to delete and rewrite log files."); +call mtr.add_suppression("InnoDB: New log files created, LSN=*"); + SET SESSION wsrep_sync_wait = 0; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT, f2 LONGBLOB) ENGINE=InnoDB; diff --git a/mysql-test/suite/galera/t/galera_gcache_recover_manytrx.test b/mysql-test/suite/galera/t/galera_gcache_recover_manytrx.test index 08165f30f..ac28a070c 100644 --- a/mysql-test/suite/galera/t/galera_gcache_recover_manytrx.test +++ b/mysql-test/suite/galera/t/galera_gcache_recover_manytrx.test @@ -7,6 +7,11 @@ --source include/big_test.inc --source include/have_log_bin.inc +call mtr.add_suppression("InnoDB: Warning: innodb_page_size has been changed from default value *"); +call mtr.add_suppression("InnoDB: Resizing redo log from *"); +call mtr.add_suppression("InnoDB: Starting to delete and rewrite log files."); +call mtr.add_suppression("InnoDB: New log files created, LSN=*"); + SET SESSION wsrep_sync_wait = 0; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT, f2 LONGBLOB) ENGINE=InnoDB; CREATE TABLE ten (f1 INTEGER) ENGINE=InnoDB; 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 3fe94ad16..3ed7ec1d0 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 @@ -196,6 +196,9 @@ DROP TABLE t2,t1; --connection node_2 STOP SLAVE; RESET SLAVE ALL; +--disable_warnings +set global gtid_slave_pos=""; +--enable_warnings reset master; --echo #Connection 3 diff --git a/mysql-test/suite/galera/t/galera_ist_mariabackup.cnf b/mysql-test/suite/galera/t/galera_ist_mariabackup.cnf new file mode 100644 index 000000000..75dff7814 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_ist_mariabackup.cnf @@ -0,0 +1,12 @@ +!include ../galera_2nodes.cnf + +[mysqld] +wsrep_sst_method=mariabackup +wsrep_sst_auth=root: + +[mysqld.1] +wsrep_provider_options='base_port=@mysqld.1.#galera_port;pc.ignore_sb=true' + +[mysqld.2] +wsrep_provider_options='base_port=@mysqld.2.#galera_port;pc.ignore_sb=true' + diff --git a/mysql-test/suite/galera/t/galera_ist_mariabackup.test b/mysql-test/suite/galera/t/galera_ist_mariabackup.test new file mode 100644 index 000000000..6ef4f65cc --- /dev/null +++ b/mysql-test/suite/galera/t/galera_ist_mariabackup.test @@ -0,0 +1,16 @@ +--source include/big_test.inc +--source include/galera_cluster.inc +--source include/have_innodb.inc +--source include/have_mariabackup.inc + +--let $node_1=node_1 +--let $node_2=node_2 +--source include/auto_increment_offset_save.inc + +--source suite/galera/include/galera_st_disconnect_slave.inc +--source suite/galera/include/galera_st_shutdown_slave.inc + +--source suite/galera/include/galera_st_kill_slave.inc +--source suite/galera/include/galera_st_kill_slave_ddl.inc + +--source include/auto_increment_offset_restore.inc diff --git a/mysql-test/suite/galera/t/galera_ist_mariabackup_innodb_flush_logs.cnf b/mysql-test/suite/galera/t/galera_ist_mariabackup_innodb_flush_logs.cnf new file mode 100644 index 000000000..1542376b2 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_ist_mariabackup_innodb_flush_logs.cnf @@ -0,0 +1,14 @@ +!include ../galera_2nodes.cnf + +[mysqld] +wsrep_sst_method=mariabackup +wsrep_sst_auth=root: + +innodb_flush_log_at_trx_commit=0 + +[mysqld.1] +wsrep_provider_options='base_port=@mysqld.1.#galera_port;pc.ignore_sb=true' + +[mysqld.2] +wsrep_provider_options='base_port=@mysqld.2.#galera_port;pc.ignore_sb=true' + diff --git a/mysql-test/suite/galera/t/galera_ist_mariabackup_innodb_flush_logs.test b/mysql-test/suite/galera/t/galera_ist_mariabackup_innodb_flush_logs.test new file mode 100644 index 000000000..07838702d --- /dev/null +++ b/mysql-test/suite/galera/t/galera_ist_mariabackup_innodb_flush_logs.test @@ -0,0 +1,12 @@ +# +# This test performs server kill and IST while innodb_flush_logs_on_trx_commit = 0 +# This confirms that IST can properly catch up even in the face of relaxed single-node durability +# +# + +--source include/big_test.inc +--source include/galera_cluster.inc +--source include/have_innodb.inc + +--source suite/galera/include/galera_st_kill_slave.inc +--source suite/galera/include/galera_st_kill_slave_ddl.inc diff --git a/mysql-test/suite/galera/t/galera_sst_mariabackup_encrypt_with_key.cnf b/mysql-test/suite/galera/t/galera_sst_mariabackup_encrypt_with_key.cnf new file mode 100644 index 000000000..5a989ea81 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_sst_mariabackup_encrypt_with_key.cnf @@ -0,0 +1,12 @@ +!include ../galera_2nodes.cnf + +[mysqld] +wsrep_sst_method=mariabackup +wsrep_sst_auth="root:" +wsrep_debug=ON + +[SST] +tkey=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem +tcert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem +encrypt=3 +transferfmt=@ENV.MTR_GALERA_TFMT diff --git a/mysql-test/suite/galera/t/galera_sst_mariabackup_encrypt_with_key.test b/mysql-test/suite/galera/t/galera_sst_mariabackup_encrypt_with_key.test new file mode 100644 index 000000000..4449ea43c --- /dev/null +++ b/mysql-test/suite/galera/t/galera_sst_mariabackup_encrypt_with_key.test @@ -0,0 +1,14 @@ +# +# This test checks that key and cert encryption options can be passed to mariabackup via the my.cnf file +# Initial SST happens via mariabackup, so there is not much to do in the body of the test +# + +--source include/big_test.inc +--source include/galera_cluster.inc +--source include/have_innodb.inc +--source include/have_mariabackup.inc + +SELECT 1; + +--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; +--source include/wait_condition.inc diff --git a/mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.cnf b/mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.cnf new file mode 100644 index 000000000..336296e9b --- /dev/null +++ b/mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.cnf @@ -0,0 +1,16 @@ +!include ../galera_2nodes.cnf + +[mysqld] +wsrep_sst_method=mariabackup +wsrep_sst_auth="root:" +wsrep_debug=ON + +[mysqld.1] +wsrep_provider_options='base_port=@mysqld.1.#galera_port;gcache.size=1;pc.ignore_sb=true' + +[mysqld.2] +wsrep_provider_options='base_port=@mysqld.2.#galera_port;gcache.size=1;pc.ignore_sb=true' + +[sst] +transferfmt=@ENV.MTR_GALERA_TFMT +streamfmt=xbstream diff --git a/mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.opt b/mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.opt new file mode 100644 index 000000000..ae3fb5804 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.opt @@ -0,0 +1,2 @@ +--innodb-file-format='Barracuda' +--innodb-file-per-table=ON diff --git a/mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.test b/mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.test new file mode 100644 index 000000000..024075470 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.test @@ -0,0 +1,227 @@ +--source include/big_test.inc +--source include/galera_cluster.inc +--source include/have_filekeymanagement.inc +--source include/innodb_encrypt_tables.inc +--source include/have_mariabackup.inc + +# Save original auto_increment_offset values. +--let $node_1=node_1 +--let $node_2=node_2 +--source include/auto_increment_offset_save.inc + +--echo Performing State Transfer on a server that starts from a clean var directory +--echo This is accomplished by shutting down node #2 and removing its var directory before restarting it + +--connection node_1 +CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; +CREATE TABLE t2 (f1 CHAR(255)) ENGINE=InnoDB PAGE_COMPRESSED=1; +CREATE TABLE t3 (f1 CHAR(255)) ENGINE=InnoDB PAGE_COMPRESSED=1 ENCRYPTED=NO; +CREATE TABLE t4 (f1 CHAR(255)) ENGINE=InnoDB PAGE_COMPRESSED=1 ENCRYPTED=YES; +CREATE TABLE t5 (f1 CHAR(255)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED; +CREATE TABLE t6 (f1 CHAR(255)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED ENCRYPTED=NO; +CREATE TABLE t7 (f1 CHAR(255)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED ENCRYPTED=YES; +CREATE TABLE t8 (f1 CHAR(255)) ENGINE=InnoDB ENCRYPTED=NO; +CREATE TABLE t9 (f1 CHAR(255)) ENGINE=InnoDB ENCRYPTED=YES; + +SET AUTOCOMMIT=OFF; +START TRANSACTION; +let $tables = 9; +while ($tables) +{ + let $rows = 5; + while($rows) + { + eval insert into t$tables values ('node1_committed_before'); + dec $rows; + } + dec $tables; +} +COMMIT; + +--connection node_2 +--let $wait_condition = SELECT COUNT(*) = 5 FROM t7; +--source include/wait_condition.inc + +SET AUTOCOMMIT=OFF; +START TRANSACTION; +let $tables = 9; +while ($tables) +{ + let $rows = 5; + while($rows) + { + eval insert into t$tables values ('node2_committed_before'); + dec $rows; + } + dec $tables; +} +COMMIT; + +--echo Shutting down server ... +--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 + +--echo Cleaning var directory ... +--remove_files_wildcard $MYSQLTEST_VARDIR/mysqld.2/data/mtr +--remove_files_wildcard $MYSQLTEST_VARDIR/mysqld.2/data/performance_schema +--remove_files_wildcard $MYSQLTEST_VARDIR/mysqld.2/data/test +--remove_files_wildcard $MYSQLTEST_VARDIR/mysqld.2/data/mysql +--remove_files_wildcard $MYSQLTEST_VARDIR/mysqld.2/data + +SET AUTOCOMMIT=OFF; +START TRANSACTION; +let $tables = 9; +while ($tables) +{ + let $rows = 5; + while($rows) + { + eval insert into t$tables values ('node1_committed_during'); + dec $rows; + } + dec $tables; +} +COMMIT; + +START TRANSACTION; +let $tables = 9; +while ($tables) +{ + let $rows = 5; + while($rows) + { + eval insert into t$tables values ('node1_to_be_committed_after'); + dec $rows; + } + dec $tables; +} + +--connect node_1a_galera_st_clean_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1 +SET AUTOCOMMIT=OFF; +START TRANSACTION; +let $tables = 9; +while ($tables) +{ + let $rows = 5; + while($rows) + { + eval insert into t$tables values ('node1_to_be_rollbacked_after'); + dec $rows; + } + dec $tables; +} + +--connection node_2 +--echo Starting server ... +--source include/start_mysqld.inc + +--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size' +--source include/wait_condition.inc + +SET AUTOCOMMIT=OFF; +START TRANSACTION; +while ($tables) +{ + let $rows = 5; + while($rows) + { + eval insert into t$tables values ('node2_committed_after'); + dec $rows; + } + dec $tables; +} +COMMIT; + +--connection node_1 +let $tables = 9; +while ($tables) +{ + let $rows = 5; + while($rows) + { + eval insert into t$tables values ('node1_to_be_committed_after'); + dec $rows; + } + dec $tables; +} +COMMIT; + +SET AUTOCOMMIT=OFF; +START TRANSACTION; +let $tables = 9; +while ($tables) +{ + let $rows = 5; + while($rows) + { + eval insert into t$tables values ('node1_committed_after'); + dec $rows; + } + dec $tables; +} +COMMIT; + +--connection node_1a_galera_st_clean_slave +while ($tables) +{ + let $rows = 5; + while($rows) + { + eval insert into t$tables values ('node1_to_be_rollbacked_after'); + dec $rows; + } + dec $tables; +} +ROLLBACK; + +SELECT COUNT(*) FROM t1; +SELECT COUNT(*) FROM t2; +SELECT COUNT(*) FROM t3; +SELECT COUNT(*) FROM t4; +SELECT COUNT(*) FROM t5; +SELECT COUNT(*) FROM t6; +SELECT COUNT(*) FROM t7; +SELECT COUNT(*) FROM t8; +SELECT COUNT(*) FROM t9; +SELECT * FROM t1; +SELECT * FROM t2; +SELECT * FROM t3; +SELECT * FROM t4; +SELECT * FROM t5; +SELECT * FROM t6; +SELECT * FROM t7; +SELECT * FROM t8; +SELECT * FROM t9; +COMMIT; +SET AUTOCOMMIT=ON; + +--connection node_1 +SELECT COUNT(*) FROM t1; +SELECT COUNT(*) FROM t2; +SELECT COUNT(*) FROM t3; +SELECT COUNT(*) FROM t4; +SELECT COUNT(*) FROM t5; +SELECT COUNT(*) FROM t6; +SELECT COUNT(*) FROM t7; +SELECT COUNT(*) FROM t8; +SELECT COUNT(*) FROM t9; +SELECT * FROM t1; +SELECT * FROM t2; +SELECT * FROM t3; +SELECT * FROM t4; +SELECT * FROM t5; +SELECT * FROM t6; +SELECT * FROM t7; +SELECT * FROM t8; +SELECT * FROM t9; +COMMIT; + +DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9; +COMMIT; +SET AUTOCOMMIT=ON; + +# Restore original auto_increment_offset values. +--source include/auto_increment_offset_restore.inc diff --git a/mysql-test/suite/galera/t/galera_var_reject_queries.test b/mysql-test/suite/galera/t/galera_var_reject_queries.test index 6859855c3..8b80c04e3 100644 --- a/mysql-test/suite/galera/t/galera_var_reject_queries.test +++ b/mysql-test/suite/galera/t/galera_var_reject_queries.test @@ -18,8 +18,11 @@ SET GLOBAL wsrep_reject_queries = ALL; --error ER_UNKNOWN_COM_ERROR SELECT * FROM t1; -# Lost connection ---error 2013 +# +# Original behavior was lost connection, +# but since 10.1, we allow controlling connection to remain alive +# +--error 0,2013 SET GLOBAL wsrep_reject_queries = ALL_KILL; --connection node_1a diff --git a/mysql-test/suite/galera/t/partition.test b/mysql-test/suite/galera/t/partition.test index bb5a02411..0159ef8f6 100644 --- a/mysql-test/suite/galera/t/partition.test +++ b/mysql-test/suite/galera/t/partition.test @@ -129,7 +129,10 @@ CREATE TABLE t1 (pk INT PRIMARY KEY) --let $wsrep_last_committed_after = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME = 'wsrep_last_committed'` --connection node_2 -SELECT COUNT(*) = 20002 FROM t1; +--let $wait_condition = SELECT COUNT(*) = 20002 FROM t1; +--source include/wait_condition.inc + +SELECT COUNT(*) FROM t1; # LOAD-ing 20002 rows causes 3 commits to be registered --disable_query_log @@ -157,7 +160,10 @@ CREATE TABLE t1 (pk INT PRIMARY KEY) --let $wsrep_last_committed_after = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME = 'wsrep_last_committed'` --connection node_2 -SELECT COUNT(*) = 101 FROM t1; +--let $wait_condition = SELECT COUNT(*) = 101 FROM t1; +--source include/wait_condition.inc + +SELECT COUNT(*) FROM t1; # LOAD-ing 101 rows causes 1 commit to be registered --disable_query_log @@ -186,7 +192,9 @@ CREATE TABLE t1 (pk INT PRIMARY KEY) --let $wsrep_last_committed_after = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME = 'wsrep_last_committed'` --connection node_2 -SELECT COUNT(*) = 20002 FROM t1; +--let $wait_condition = SELECT COUNT(*) = 20002 FROM t1; +--source include/wait_condition.inc +SELECT COUNT(*) FROM t1; # LOAD-ing 20002 rows causes 1 commit to be registered --disable_query_log diff --git a/mysql-test/suite/galera_3nodes/disabled.def b/mysql-test/suite/galera_3nodes/disabled.def index a9b9b00b4..168348598 100644 --- a/mysql-test/suite/galera_3nodes/disabled.def +++ b/mysql-test/suite/galera_3nodes/disabled.def @@ -1,3 +1,2 @@ galera_slave_options_do :MDEV-8798 galera_slave_options_ignore : MDEV-8798 - diff --git a/mysql-test/suite/galera_3nodes/galera_2x3nodes.cnf b/mysql-test/suite/galera_3nodes/galera_2x3nodes.cnf index 3f39b82f7..df51920c1 100644 --- a/mysql-test/suite/galera_3nodes/galera_2x3nodes.cnf +++ b/mysql-test/suite/galera_3nodes/galera_2x3nodes.cnf @@ -22,7 +22,7 @@ wsrep_node_address=127.0.0.1 #ist_port=@OPT.port #sst_port=@OPT.port wsrep-cluster-address='gcomm://' -wsrep_provider_options='base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT300S;evs.inactive_timeout=PT1000M;evs.install_timeout=PT155S;evs.keepalive_period = PT100S' +wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT300S;evs.inactive_timeout=PT1000M;evs.install_timeout=PT155S;evs.keepalive_period = PT100S' wsrep_sst_receive_address=127.0.0.2:@mysqld.1.#sst_port wsrep_node_incoming_address=127.0.0.1:@mysqld.1.port @@ -33,7 +33,7 @@ wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port' #ist_port=@OPT.port #sst_port=@OPT.port wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port' -wsrep_provider_options='base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT300S;evs.inactive_timeout=PT1000M;evs.install_timeout=PT155S;evs.keepalive_period = PT100S' +wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT300S;evs.inactive_timeout=PT1000M;evs.install_timeout=PT155S;evs.keepalive_period = PT100S' wsrep_sst_receive_address=127.0.0.2:@mysqld.2.#sst_port wsrep_node_incoming_address=127.0.0.1:@mysqld.2.port @@ -44,7 +44,7 @@ wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port' #ist_port=@OPT.port #sst_port=@OPT.port wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port' -wsrep_provider_options='base_port=@mysqld.3.#galera_port;evs.suspect_timeout=PT300S;evs.inactive_timeout=PT1000M;evs.install_timeout=PT155S;evs.keepalive_period = PT100S' +wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#galera_port;evs.suspect_timeout=PT300S;evs.inactive_timeout=PT1000M;evs.install_timeout=PT155S;evs.keepalive_period = PT100S' wsrep_sst_receive_address=127.0.0.2:@mysqld.3.#sst_port wsrep_node_incoming_address=127.0.0.1:@mysqld.3.port @@ -58,7 +58,7 @@ wsrep_cluster_name=cluster2 #sst_port=@OPT.port wsrep-cluster-address='gcomm://' -wsrep_provider_options='base_port=@mysqld.4.#galera_port;evs.suspect_timeout=PT300S;evs.inactive_timeout=PT1000M;evs.install_timeout=PT155S;evs.keepalive_period = PT100S' +wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.4.#galera_port;evs.suspect_timeout=PT300S;evs.inactive_timeout=PT1000M;evs.install_timeout=PT155S;evs.keepalive_period = PT100S' wsrep_sst_receive_address=127.0.0.2:@mysqld.4.#sst_port wsrep_node_incoming_address=127.0.0.1:@mysqld.4.port @@ -70,7 +70,7 @@ wsrep_cluster_name=cluster2 #ist_port=@OPT.port #sst_port=@OPT.port wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.4.#galera_port' -wsrep_provider_options='base_port=@mysqld.5.#galera_port;evs.suspect_timeout=PT300S;evs.inactive_timeout=PT1000M;evs.install_timeout=PT155S;evs.keepalive_period = PT100S' +wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.5.#galera_port;evs.suspect_timeout=PT300S;evs.inactive_timeout=PT1000M;evs.install_timeout=PT155S;evs.keepalive_period = PT100S' wsrep_sst_receive_address=127.0.0.2:@mysqld.5.#sst_port wsrep_node_incoming_address=127.0.0.1:@mysqld.5.port @@ -82,7 +82,7 @@ wsrep_cluster_name=cluster2 #ist_port=@OPT.port #sst_port=@OPT.port wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.4.#galera_port' -wsrep_provider_options='base_port=@mysqld.6.#galera_port;evs.suspect_timeout=PT300S;evs.inactive_timeout=PT1000M;evs.install_timeout=PT155S;evs.keepalive_period = PT100S' +wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.6.#galera_port;evs.suspect_timeout=PT300S;evs.inactive_timeout=PT1000M;evs.install_timeout=PT155S;evs.keepalive_period = PT100S' wsrep_sst_receive_address=127.0.0.2:@mysqld.6.#sst_port wsrep_node_incoming_address=127.0.0.1:@mysqld.6.port diff --git a/mysql-test/suite/galera_3nodes/galera_3nodes.cnf b/mysql-test/suite/galera_3nodes/galera_3nodes.cnf index 91aa53ad7..7b68d36c0 100644 --- a/mysql-test/suite/galera_3nodes/galera_3nodes.cnf +++ b/mysql-test/suite/galera_3nodes/galera_3nodes.cnf @@ -18,7 +18,7 @@ wsrep-sync-wait=15 #ist_port=@OPT.port #sst_port=@OPT.port wsrep-cluster-address='gcomm://' -wsrep_provider_options='base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S' +wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S' wsrep_sst_receive_address=127.0.0.2:@mysqld.1.#sst_port wsrep_node_incoming_address=127.0.0.1:@mysqld.1.port @@ -29,7 +29,7 @@ wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port' #ist_port=@OPT.port #sst_port=@OPT.port wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port' -wsrep_provider_options='base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S' +wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S' wsrep_sst_receive_address=127.0.0.2:@mysqld.2.#sst_port wsrep_node_incoming_address=127.0.0.1:@mysqld.2.port @@ -40,7 +40,7 @@ wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port' #ist_port=@OPT.port #sst_port=@OPT.port wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port' -wsrep_provider_options='base_port=@mysqld.3.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S' +wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S' wsrep_sst_receive_address=127.0.0.2:@mysqld.3.#sst_port wsrep_node_incoming_address=127.0.0.1:@mysqld.3.port diff --git a/mysql-test/suite/galera_3nodes/include/have_ipv6.inc b/mysql-test/suite/galera_3nodes/include/have_ipv6.inc deleted file mode 100644 index 560cad033..000000000 --- a/mysql-test/suite/galera_3nodes/include/have_ipv6.inc +++ /dev/null @@ -1,15 +0,0 @@ -# Check if ipv6 is available. -# ---disable_query_log ---disable_result_log -connect (checkcon123456789,::1,root,,test); -if($mysql_errno) -{ - skip No IPv6 support; -} -connection default; -disconnect checkcon123456789; ---enable_result_log ---enable_query_log -# end check - diff --git a/mysql-test/suite/galera_3nodes/r/galera_ipv6_mariabackup.result b/mysql-test/suite/galera_3nodes/r/galera_ipv6_mariabackup.result new file mode 100644 index 000000000..53e35939a --- /dev/null +++ b/mysql-test/suite/galera_3nodes/r/galera_ipv6_mariabackup.result @@ -0,0 +1,18 @@ +SELECT VARIABLE_VALUE LIKE '%[::1]%' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_incoming_addresses'; +VARIABLE_VALUE LIKE '%[::1]%' +1 +SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; +VARIABLE_VALUE = 3 +1 +SET GLOBAL wsrep_provider_options='gmcast.isolate=1'; +CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1); +SET GLOBAL wsrep_provider_options='gmcast.isolate=0'; +SELECT COUNT(*) = 1 FROM t1; +COUNT(*) = 1 +1 +DROP TABLE t1; +include/assert_grep.inc [Streaming the backup to joiner at \[::1\]] +include/assert_grep.inc [async IST sender starting to serve tcp://\[::1\]:] +include/assert_grep.inc [IST receiver addr using tcp://\[::1\]] +include/assert_grep.inc [Prepared IST receiver, listening at: tcp://\[::1\]] diff --git a/mysql-test/suite/galera_3nodes/r/galera_ipv6_mysqldump.result b/mysql-test/suite/galera_3nodes/r/galera_ipv6_mysqldump.result index f51965495..1d9ae940c 100644 --- a/mysql-test/suite/galera_3nodes/r/galera_ipv6_mysqldump.result +++ b/mysql-test/suite/galera_3nodes/r/galera_ipv6_mysqldump.result @@ -1,11 +1,14 @@ +call mtr.add_suppression("WSREP: wsrep_sst_method is set to 'mysqldump' yet mysqld bind_address is set to'"); +call mtr.add_suppression("Failed to load slave replication state from table mysql.gtid_slave_pos"); +CREATE USER 'sst'; GRANT ALL PRIVILEGES ON *.* TO 'sst'; SET GLOBAL wsrep_sst_auth = 'sst:'; SET GLOBAL wsrep_sst_method = 'mysqldump'; -Unloading wsrep provider ... -SET GLOBAL wsrep_provider = 'none'; +Shutting down server ... +Cleaning var directory ... CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); -Loading wsrep provider ... +Starting server ... SELECT COUNT(*) = 1 FROM t1; COUNT(*) = 1 1 diff --git a/mysql-test/suite/galera_3nodes/suite.pm b/mysql-test/suite/galera_3nodes/suite.pm index c91e6e07d..66502c00c 100644 --- a/mysql-test/suite/galera_3nodes/suite.pm +++ b/mysql-test/suite/galera_3nodes/suite.pm @@ -9,8 +9,10 @@ return "Not run for embedded server" if $::opt_embedded_server; return "WSREP is not compiled in" unless defined $::mysqld_variables{'wsrep-on'}; my ($provider) = grep { -f $_ } $ENV{WSREP_PROVIDER}, - "/usr/lib/galera/libgalera_smm.so", - "/usr/lib64/galera/libgalera_smm.so"; + "/usr/lib64/galera-3/libgalera_smm.so", + "/usr/lib64/galera/libgalera_smm.so", + "/usr/lib/galera-3/libgalera_smm.so", + "/usr/lib/galera/libgalera_smm.so"; return "No wsrep provider library" unless -f $provider; @@ -19,14 +21,21 @@ $ENV{WSREP_PROVIDER} = $provider; my ($spath) = grep { -f "$_/wsrep_sst_rsync"; } "$::bindir/scripts", $::path_client_bindir; return "No SST scripts" unless $spath; +my ($cpath) = grep { -f "$_/mysql"; } "$::bindir/scripts", $::path_client_bindir; +return "No scritps" unless $cpath; + my ($epath) = grep { -f "$_/my_print_defaults"; } "$::bindir/extra", $::path_client_bindir; return "No my_print_defaults" unless $epath; +my ($bpath) = grep { -f "$_/mariabackup"; } "$::bindir/extra/mariabackup", $::path_client_bindir; + +sub which($) { return `sh -c "command -v $_[0]"` } + push @::global_suppressions, ( qr(WSREP: wsrep_sst_receive_address is set to '127.0.0.1), - qr(WSREP: Could not open saved state file for reading: ), - qr(WSREP: Could not open state file for reading: ), + qr(WSREP: Could not open saved state file for reading: .*), + qr(WSREP: Could not open state file for reading: .*), qr(WSREP: Gap in state sequence. Need state transfer.), qr(WSREP: Failed to prepare for incremental state transfer:), qr(WSREP:.*down context.*), @@ -40,16 +49,46 @@ push @::global_suppressions, qr|WSREP: discarding established \(time wait\) .*|, qr(WSREP: There are no nodes in the same segment that will ever be able to become donors, yet there is a suitable donor outside. Will use that one.), qr(WSREP: evs::proto.*), - qr|WSREP: Ignoring possible split-brain (allowed by configuration) from view:.*|, + qr|WSREP: Ignoring possible split-brain \(allowed by configuration\) from view:.*|, + qr(WSREP: no nodes coming from prim view, prim not possible), qr(WSREP: Member .* requested state transfer from .* but it is impossible to select State Transfer donor: Resource temporarily unavailable), + qr(WSREP: user message in state LEAVING), + qr(WSREP: .* sending install message failed: Transport endpoint is not connected), + qr(WSREP: .* sending install message failed: Resource temporarily unavailable), + qr(WSREP: Sending JOIN failed: -107 \(Transport endpoint is not connected\). Will retry in new primary component.), qr(WSREP: Could not find peer:), - qr(WSREP: Protocol violation. JOIN message sender .*), - qr(WSREP: JOIN message from member [0-9]* in non-primary configuration. Ignored.), + qr|WSREP: gcs_caused\(\) returned .*|, + qr|WSREP: Protocol violation. JOIN message sender .* is not in state transfer \(SYNCED\). Message ignored.|, + qr|WSREP: Protocol violation. JOIN message sender .* is not in state transfer \(JOINED\). Message ignored.|, + qr(WSREP: Action message in non-primary configuration from member [0-9]*), + qr(WSREP: --wsrep-causal-reads=ON takes precedence over --wsrep-sync-wait=0. WSREP_SYNC_WAIT_BEFORE_READ is on), + qr(WSREP: JOIN message from member .* in non-primary configuration. Ignored.), ); $ENV{PATH}="$epath:$ENV{PATH}"; $ENV{PATH}="$spath:$ENV{PATH}" unless $epath eq $spath; +$ENV{PATH}="$cpath:$ENV{PATH}" unless $cpath eq $spath; +$ENV{PATH}="$bpath:$ENV{PATH}" unless $bpath eq $spath; + +if (which(socat)) { + $ENV{MTR_GALERA_TFMT}='socat'; +} elsif (which(nc)) { + $ENV{MTR_GALERA_TFMT}='nc'; +} + +sub skip_combinations { + my %skip = (); + $skip{'include/have_filekeymanagement.inc'} = 'needs file_key_management plugin' + unless $ENV{FILE_KEY_MANAGEMENT_SO}; + $skip{'include/have_mariabackup.inc'} = 'Need mariabackup' + unless which(mariabackup); + $skip{'include/have_mariabackup.inc'} = 'Need ss' + unless which(ss); + $skip{'include/have_mariabackup.inc'} = 'Need socat or nc' + unless $ENV{MTR_GALERA_TFMT}; + %skip; +} bless { }; diff --git a/mysql-test/suite/galera_3nodes/t/GAL-501.opt b/mysql-test/suite/galera_3nodes/t/GAL-501.opt new file mode 100644 index 000000000..c2bb4d156 --- /dev/null +++ b/mysql-test/suite/galera_3nodes/t/GAL-501.opt @@ -0,0 +1 @@ +--bind-address=:: diff --git a/mysql-test/suite/galera_3nodes/t/GAL-501.test b/mysql-test/suite/galera_3nodes/t/GAL-501.test index 60ed59892..a36f21630 100644 --- a/mysql-test/suite/galera_3nodes/t/GAL-501.test +++ b/mysql-test/suite/galera_3nodes/t/GAL-501.test @@ -5,7 +5,7 @@ # ist.recv_addr=[::1] --source include/galera_cluster.inc ---source include/have_ipv6.inc +--source include/check_ipv6.inc # Confirm that initial handshake happened over ipv6 diff --git a/mysql-test/suite/galera_3nodes/t/galera_innobackupex_backup.cnf b/mysql-test/suite/galera_3nodes/t/galera_innobackupex_backup.cnf new file mode 100644 index 000000000..35ecb8b59 --- /dev/null +++ b/mysql-test/suite/galera_3nodes/t/galera_innobackupex_backup.cnf @@ -0,0 +1,4 @@ +!include ../galera_3nodes.cnf + +[mysqld] +wsrep-causal-reads=OFF diff --git a/mysql-test/suite/galera_3nodes/t/galera_innobackupex_backup.test b/mysql-test/suite/galera_3nodes/t/galera_innobackupex_backup.test index cc3f42c72..8dfb4660f 100644 --- a/mysql-test/suite/galera_3nodes/t/galera_innobackupex_backup.test +++ b/mysql-test/suite/galera_3nodes/t/galera_innobackupex_backup.test @@ -4,6 +4,17 @@ --source include/galera_cluster.inc --source include/have_innodb.inc +--source include/have_mariabackup.inc + +--let $galera_connection_name = node_3 +--let $galera_server_number = 3 +--source include/galera_connect.inc + +# Save original auto_increment_offset values. +--let $node_1=node_1 +--let $node_2=node_2 +--let $node_3=node_3 +--source ../galera/include/auto_increment_offset_save.inc --connection node_1 CREATE TABLE t1 (f1 INTEGER); @@ -13,8 +24,8 @@ INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); SELECT COUNT(*) = 10 FROM t1; --exec rm -rf $MYSQL_TMP_DIR/innobackupex_backup ---exec innobackupex --defaults-file=$MYSQLTEST_VARDIR/my.cnf --defaults-group=mysqld.2 $MYSQL_TMP_DIR/innobackupex_backup --galera-info --port=$NODE_MYPORT_2 --host=127.0.0.1 --no-timestamp > $MYSQL_TMP_DIR/innobackupex-backup.log ---exec innobackupex --defaults-file=$MYSQLTEST_VARDIR/my.cnf --defaults-group=mysqld.2 $MYSQL_TMP_DIR/innobackupex_backup --apply-log --galera-info --port=$NODE_MYPORT_2 --host=127.0.0.1 --no-timestamp > $MYSQL_TMP_DIR/innobackupex-apply.log +--exec mariabackup --innobackupex --defaults-file=$MYSQLTEST_VARDIR/my.cnf --defaults-group=mysqld.2 --galera-info --port=$NODE_MYPORT_2 --host=127.0.0.1 --no-timestamp $MYSQL_TMP_DIR/innobackupex_backup &> $MYSQL_TMP_DIR/innobackupex-backup.log +--exec mariabackup --innobackupex --defaults-file=$MYSQLTEST_VARDIR/my.cnf --defaults-group=mysqld.2 --apply-log --galera-info --port=$NODE_MYPORT_2 --host=127.0.0.1 --no-timestamp $MYSQL_TMP_DIR/innobackupex_backup &> $MYSQL_TMP_DIR/innobackupex-apply.log --source ../galera/include/kill_galera.inc --sleep 1 @@ -23,7 +34,7 @@ SELECT COUNT(*) = 10 FROM t1; INSERT INTO t1 VALUES (11),(12),(13),(14),(15),(16),(17),(18),(19),(20); --exec rm -rf $MYSQLTEST_VARDIR/mysqld.2/data/* ---exec innobackupex --defaults-file=$MYSQLTEST_VARDIR/my.cnf --defaults-group=mysqld.2 --copy-back $MYSQL_TMP_DIR/innobackupex_backup --port=$NODE_MYPORT_2 --host=127.0.0.1 > $MYSQL_TMP_DIR/innobackupex-restore.log +--exec mariabackup --innobackupex --defaults-file=$MYSQLTEST_VARDIR/my.cnf --defaults-group=mysqld.2 --copy-back --port=$NODE_MYPORT_2 --host=127.0.0.1 $MYSQL_TMP_DIR/innobackupex_backup &> $MYSQL_TMP_DIR/innobackupex-restore.log # # Convert the xtrabackup_galera_info into a grastate.dat file @@ -51,8 +62,19 @@ EOF --sleep 5 --source include/wait_until_connected_again.inc +--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; +--source include/wait_condition.inc + SELECT COUNT(*) = 20 FROM t1; DROP TABLE t1; --sleep 10 + +--let $galera_connection_name = node_2a +--let $galera_server_number = 2 +--source include/galera_connect.inc +--let $node_2=node_2a + +# Restore original auto_increment_offset values. +--source ../galera/include/auto_increment_offset_restore.inc diff --git a/mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup.cnf b/mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup.cnf new file mode 100644 index 000000000..5ac00fa05 --- /dev/null +++ b/mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup.cnf @@ -0,0 +1,29 @@ +!include ../galera_3nodes.cnf + +[mysqld] +wsrep_sst_method=mariabackup +wsrep_sst_auth="root:" +wsrep_node_address=::1 + +[mysqld.1] +wsrep-cluster-address=gcomm:// +wsrep_provider_options='base_host=[::1];base_port=@mysqld.1.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.1.#galera_port;ist.recv_addr=[::1]:@mysqld.1.#ist_port' +wsrep_sst_receive_address='[::1]:@mysqld.1.#sst_port' +wsrep_node_incoming_address='[::1]:@mysqld.1.port' + +[mysqld.2] +wsrep_cluster_address='gcomm://[::1]:@mysqld.1.#galera_port' +wsrep_provider_options='base_host=[::1];base_port=@mysqld.2.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.2.#galera_port;ist.recv_addr=[::1]:@mysqld.2.#ist_port' +wsrep_sst_receive_address='[::1]:@mysqld.2.#sst_port' +wsrep_node_incoming_address='[::1]:@mysqld.2.port' + +[mysqld.3] +wsrep_cluster_address='gcomm://[::1]:@mysqld.1.#galera_port' +wsrep_provider_options='base_host=[::1];base_port=@mysqld.3.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.3.#galera_port;ist.recv_addr=[::1]:@mysqld.3.#ist_port' +wsrep_sst_receive_address='[::1]:@mysqld.3.#sst_port' +wsrep_node_incoming_address='[::1]:@mysqld.3.port' + +[SST] +transferfmt=@ENV.MTR_GALERA_TFMT +streamfmt=xbstream +sockopt=",pf=ip6" diff --git a/mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup.opt b/mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup.opt new file mode 100644 index 000000000..c2bb4d156 --- /dev/null +++ b/mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup.opt @@ -0,0 +1 @@ +--bind-address=:: diff --git a/mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup.test b/mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup.test new file mode 100644 index 000000000..8cbd8cf24 --- /dev/null +++ b/mysql-test/suite/galera_3nodes/t/galera_ipv6_mariabackup.test @@ -0,0 +1,59 @@ +--source include/galera_cluster.inc +--source include/check_ipv6.inc +--source include/have_mariabackup.inc + +# Confirm that initial handshake happened over ipv6 + +SELECT VARIABLE_VALUE LIKE '%[::1]%' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_incoming_addresses'; +SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; + +# Force IST + +--connection node_2 +SET GLOBAL wsrep_provider_options='gmcast.isolate=1'; + +--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 + +CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1); + +--connection node_2 +SET GLOBAL wsrep_provider_options='gmcast.isolate=0'; + +--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; +--source include/wait_condition.inc + +--let $wait_condition = SELECT VARIABLE_VALUE = 'ON' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_ready'; +--source include/wait_condition.inc + +SELECT COUNT(*) = 1 FROM t1; + +DROP TABLE t1; + +# Confirm that key messages around SST and IST reference IPv6 + +--connection node_1 +--let $assert_file = $MYSQLTEST_VARDIR/log/mysqld.1.err +--let $assert_only_after = CURRENT_TEST + +--let $assert_count = 2 +--let $assert_text = Streaming the backup to joiner at \[::1\] +--let $assert_select = Streaming the backup to joiner at \[::1\] +--source include/assert_grep.inc + +--let $assert_count = 1 +--let $assert_text = async IST sender starting to serve tcp://\[::1\]: +--let $assert_select = async IST sender starting to serve tcp://\[::1\]: +--source include/assert_grep.inc + +--let $assert_file = $MYSQLTEST_VARDIR/log/mysqld.2.err + +--let $assert_text = IST receiver addr using tcp://\[::1\] +--let $assert_select = IST receiver addr using tcp://\[::1\] +--source include/assert_grep.inc + +--let $assert_text = Prepared IST receiver, listening at: tcp://\[::1\] +--let $assert_select = Prepared IST receiver, listening at: tcp://\[::1\] +--source include/assert_grep.inc diff --git a/mysql-test/suite/galera_3nodes/t/galera_ipv6_mysqldump.cnf b/mysql-test/suite/galera_3nodes/t/galera_ipv6_mysqldump.cnf index 3728e1ce0..80dd0c41c 100644 --- a/mysql-test/suite/galera_3nodes/t/galera_ipv6_mysqldump.cnf +++ b/mysql-test/suite/galera_3nodes/t/galera_ipv6_mysqldump.cnf @@ -2,21 +2,25 @@ [mysqld] wsrep_sst_method=rsync +wsrep_node_address=::1 [mysqld.1] wsrep-cluster-address=gcomm:// -wsrep_provider_options='base_port=@mysqld.1.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.1.#galera_port;ist.recv_addr=[::1]:@mysqld.1.#ist_port' +wsrep_provider_options='base_host=[::1];base_port=@mysqld.1.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.1.#galera_port;ist.recv_addr=[::1]:@mysqld.1.#ist_port' wsrep_sst_receive_address='[::1]:@mysqld.1.#sst_port' wsrep_node_incoming_address='[::1]:@mysqld.1.port' [mysqld.2] wsrep_cluster_address='gcomm://[::1]:@mysqld.1.#galera_port' -wsrep_provider_options='base_port=@mysqld.2.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.2.#galera_port;ist.recv_addr=[::1]:@mysqld.2.#ist_port' +wsrep_provider_options='base_host=[::1];base_port=@mysqld.2.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.2.#galera_port;ist.recv_addr=[::1]:@mysqld.2.#ist_port' wsrep_sst_receive_address='[::1]:@mysqld.2.#sst_port' wsrep_node_incoming_address='[::1]:@mysqld.2.port' [mysqld.3] wsrep_cluster_address='gcomm://[::1]:@mysqld.1.#galera_port' -wsrep_provider_options='base_port=@mysqld.3.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.3.#galera_port;ist.recv_addr=[::1]:@mysqld.3.#ist_port' +wsrep_provider_options='base_host=[::1];base_port=@mysqld.3.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.3.#galera_port;ist.recv_addr=[::1]:@mysqld.3.#ist_port' wsrep_sst_receive_address='[::1]:@mysqld.3.#sst_port' wsrep_node_incoming_address='[::1]:@mysqld.3.port' + +[SST] +sockopt=",pf=ip6" diff --git a/mysql-test/suite/galera_3nodes/t/galera_ipv6_mysqldump.test b/mysql-test/suite/galera_3nodes/t/galera_ipv6_mysqldump.test index 5b06e617e..4a6de8abb 100644 --- a/mysql-test/suite/galera_3nodes/t/galera_ipv6_mysqldump.test +++ b/mysql-test/suite/galera_3nodes/t/galera_ipv6_mysqldump.test @@ -1,7 +1,21 @@ --source include/galera_cluster.inc ---source include/have_ipv6.inc +--source include/check_ipv6.inc + +call mtr.add_suppression("WSREP: wsrep_sst_method is set to 'mysqldump' yet mysqld bind_address is set to'"); +call mtr.add_suppression("Failed to load slave replication state from table mysql.gtid_slave_pos"); + +--let $galera_connection_name = node_3 +--let $galera_server_number = 3 +--source include/galera_connect.inc + +# Save original auto_increment_offset values. +--let $node_1=node_1 +--let $node_2=node_2 +--let $node_3=node_3 +--source ../galera/include/auto_increment_offset_save.inc --connection node_1 +CREATE USER 'sst'; GRANT ALL PRIVILEGES ON *.* TO 'sst'; --let $wsrep_sst_auth_orig = `SELECT @@wsrep_sst_auth` @@ -17,25 +31,37 @@ SET GLOBAL wsrep_sst_auth = 'sst:'; --enable_query_log SET GLOBAL wsrep_sst_method = 'mysqldump'; - # # Force mysqldump SST # ---connection node_2 ---source suite/galera/include/galera_unload_provider.inc ---remove_file $MYSQLTEST_VARDIR/mysqld.2/data/grastate.dat +#--connection node_2 +#--source suite/galera/include/galera_unload_provider.inc + +--echo Shutting down server ... +--source include/shutdown_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 +--echo Cleaning var directory ... +--remove_file $MYSQLTEST_VARDIR/mysqld.2/data/grastate.dat +--remove_files_wildcard $MYSQLTEST_VARDIR/mysqld.2/data/mtr +--remove_files_wildcard $MYSQLTEST_VARDIR/mysqld.2/data/performance_schema +--remove_files_wildcard $MYSQLTEST_VARDIR/mysqld.2/data/test +--remove_files_wildcard $MYSQLTEST_VARDIR/mysqld.2/data/mysql +--remove_files_wildcard $MYSQLTEST_VARDIR/mysqld.2/data + CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); - --connection node_2 ---source suite/galera/include/galera_load_provider.inc +--echo Starting server ... +--let $start_mysqld_params = --wsrep_sst_auth=sst: --wsrep_sst_method=mysqldump --wsrep-sst-receive-address=[::1].1:$NODE_MYPORT_2 +--source include/start_mysqld.inc + +#--source suite/galera/include/galera_load_provider.inc --let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size' --source include/wait_condition.inc @@ -54,3 +80,6 @@ SELECT VARIABLE_VALUE LIKE '%[::1]%' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE --source suite/galera/include/galera_sst_restore.inc --connection node_2 CALL mtr.add_suppression("Unsupported protocol downgrade: incremental data collection disabled. Expect abort"); + +# Restore original auto_increment_offset values. +--source ../galera/include/auto_increment_offset_restore.inc diff --git a/mysql-test/suite/galera_3nodes/t/galera_ipv6_rsync.cnf b/mysql-test/suite/galera_3nodes/t/galera_ipv6_rsync.cnf index 3728e1ce0..80dd0c41c 100644 --- a/mysql-test/suite/galera_3nodes/t/galera_ipv6_rsync.cnf +++ b/mysql-test/suite/galera_3nodes/t/galera_ipv6_rsync.cnf @@ -2,21 +2,25 @@ [mysqld] wsrep_sst_method=rsync +wsrep_node_address=::1 [mysqld.1] wsrep-cluster-address=gcomm:// -wsrep_provider_options='base_port=@mysqld.1.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.1.#galera_port;ist.recv_addr=[::1]:@mysqld.1.#ist_port' +wsrep_provider_options='base_host=[::1];base_port=@mysqld.1.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.1.#galera_port;ist.recv_addr=[::1]:@mysqld.1.#ist_port' wsrep_sst_receive_address='[::1]:@mysqld.1.#sst_port' wsrep_node_incoming_address='[::1]:@mysqld.1.port' [mysqld.2] wsrep_cluster_address='gcomm://[::1]:@mysqld.1.#galera_port' -wsrep_provider_options='base_port=@mysqld.2.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.2.#galera_port;ist.recv_addr=[::1]:@mysqld.2.#ist_port' +wsrep_provider_options='base_host=[::1];base_port=@mysqld.2.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.2.#galera_port;ist.recv_addr=[::1]:@mysqld.2.#ist_port' wsrep_sst_receive_address='[::1]:@mysqld.2.#sst_port' wsrep_node_incoming_address='[::1]:@mysqld.2.port' [mysqld.3] wsrep_cluster_address='gcomm://[::1]:@mysqld.1.#galera_port' -wsrep_provider_options='base_port=@mysqld.3.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.3.#galera_port;ist.recv_addr=[::1]:@mysqld.3.#ist_port' +wsrep_provider_options='base_host=[::1];base_port=@mysqld.3.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.3.#galera_port;ist.recv_addr=[::1]:@mysqld.3.#ist_port' wsrep_sst_receive_address='[::1]:@mysqld.3.#sst_port' wsrep_node_incoming_address='[::1]:@mysqld.3.port' + +[SST] +sockopt=",pf=ip6" diff --git a/mysql-test/suite/galera_3nodes/t/galera_ipv6_rsync.test b/mysql-test/suite/galera_3nodes/t/galera_ipv6_rsync.test index 7ee209d8e..1937eb43e 100644 --- a/mysql-test/suite/galera_3nodes/t/galera_ipv6_rsync.test +++ b/mysql-test/suite/galera_3nodes/t/galera_ipv6_rsync.test @@ -1,5 +1,5 @@ --source include/galera_cluster.inc ---source include/have_ipv6.inc +--source include/check_ipv6.inc # Confirm that initial handshake happened over ipv6 diff --git a/mysql-test/suite/galera_3nodes/t/galera_ipv6_xtrabackup-v2.cnf b/mysql-test/suite/galera_3nodes/t/galera_ipv6_xtrabackup-v2.cnf index 8a80be0d2..78fbd793a 100644 --- a/mysql-test/suite/galera_3nodes/t/galera_ipv6_xtrabackup-v2.cnf +++ b/mysql-test/suite/galera_3nodes/t/galera_ipv6_xtrabackup-v2.cnf @@ -3,6 +3,7 @@ [mysqld] wsrep_sst_method=xtrabackup-v2 wsrep_sst_auth="root:" +wsrep_node_address=::1 [mysqld.1] wsrep-cluster-address=gcomm:// @@ -23,4 +24,6 @@ wsrep_sst_receive_address='[::1]:@mysqld.3.#sst_port' wsrep_node_incoming_address='[::1]:@mysqld.3.port' [SST] +transferfmt=@ENV.MTR_GALERA_TFMT +streamfmt=xbstream sockopt=",pf=ip6" diff --git a/mysql-test/suite/galera_3nodes/t/galera_ipv6_xtrabackup-v2.opt b/mysql-test/suite/galera_3nodes/t/galera_ipv6_xtrabackup-v2.opt new file mode 100644 index 000000000..c2bb4d156 --- /dev/null +++ b/mysql-test/suite/galera_3nodes/t/galera_ipv6_xtrabackup-v2.opt @@ -0,0 +1 @@ +--bind-address=:: diff --git a/mysql-test/suite/galera_3nodes/t/galera_ipv6_xtrabackup-v2.test b/mysql-test/suite/galera_3nodes/t/galera_ipv6_xtrabackup-v2.test index 84eee0177..fd7e0c508 100644 --- a/mysql-test/suite/galera_3nodes/t/galera_ipv6_xtrabackup-v2.test +++ b/mysql-test/suite/galera_3nodes/t/galera_ipv6_xtrabackup-v2.test @@ -1,5 +1,5 @@ --source include/galera_cluster.inc ---source include/have_ipv6.inc +--source include/check_ipv6.inc # Confirm that initial handshake happened over ipv6 @@ -56,7 +56,3 @@ DROP TABLE t1; --let $assert_text = Prepared IST receiver, listening at: tcp://\[::1\] --let $assert_select = Prepared IST receiver, listening at: tcp://\[::1\] --source include/assert_grep.inc - - - - diff --git a/mysql-test/suite/innodb/include/crc32.pl b/mysql-test/suite/innodb/include/crc32.pl new file mode 100644 index 000000000..c2bce09dd --- /dev/null +++ b/mysql-test/suite/innodb/include/crc32.pl @@ -0,0 +1,33 @@ +# The following is Public Domain / Creative Commons CC0 from +# http://billauer.co.il/blog/2011/05/perl-crc32-crc-xs-module/ + +sub mycrc32 { + my ($input, $init_value, $polynomial) = @_; + + $init_value = 0 unless (defined $init_value); + $polynomial = 0xedb88320 unless (defined $polynomial); + + my @lookup_table; + + for (my $i=0; $i<256; $i++) { + my $x = $i; + for (my $j=0; $j<8; $j++) { + if ($x & 1) { + $x = ($x >> 1) ^ $polynomial; + } else { + $x = $x >> 1; + } + } + push @lookup_table, $x; + } + + my $crc = $init_value ^ 0xffffffff; + + foreach my $x (unpack ('C*', $input)) { + $crc = (($crc >> 8) & 0xffffff) ^ $lookup_table[ ($crc ^ $x) & 0xff ]; + } + + $crc = $crc ^ 0xffffffff; + + return $crc; +} diff --git a/mysql-test/suite/innodb/r/alter_candidate_key.result b/mysql-test/suite/innodb/r/alter_candidate_key.result new file mode 100644 index 000000000..12cd6b9a7 --- /dev/null +++ b/mysql-test/suite/innodb/r/alter_candidate_key.result @@ -0,0 +1,107 @@ +CREATE TABLE t1 (f1 INT NOT NULL, f2 INT NOT NULL, +UNIQUE KEY uidx2(f1,f2), +UNIQUE KEY uidx1(f2)) ENGINE=InnoDB; +INSERT INTO t1 VALUES(1, 1); +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` int(11) NOT NULL, + UNIQUE KEY `uidx2` (`f1`,`f2`), + UNIQUE KEY `uidx1` (`f2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +SET DEBUG_SYNC = 'innodb_inplace_alter_table_enter + SIGNAL conc_dml WAIT_FOR go_ahead'; +ALTER TABLE t1 CHANGE COLUMN f1 f11 INT, ALGORITHM=INPLACE; +SET DEBUG_SYNC = 'now WAIT_FOR conc_dml'; +DELETE FROM t1; +SET DEBUG_SYNC = 'now SIGNAL go_ahead'; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f11` int(11) DEFAULT NULL, + `f2` int(11) NOT NULL, + UNIQUE KEY `uidx1` (`f2`), + UNIQUE KEY `uidx2` (`f11`,`f2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check status OK +DROP TABLE t1; +CREATE TABLE t1(f1 INT, f2 INT, +PRIMARY KEY(f1, f2), +UNIQUE INDEX uidx2 (f1, f2), +UNIQUE INDEX uidx1 (f2))ENGINE=InnoDB; +ALTER TABLE t1 DROP PRIMARY KEY; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` int(11) NOT NULL, + UNIQUE KEY `uidx2` (`f1`,`f2`), + UNIQUE KEY `uidx1` (`f2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +SET DEBUG_SYNC = 'innodb_inplace_alter_table_enter + SIGNAL conc_dml WAIT_FOR go_ahead'; +ALTER TABLE t1 CHANGE COLUMN f1 f11 INT, ALGORITHM=INPLACE; +SET DEBUG_SYNC = 'now WAIT_FOR conc_dml'; +INSERT INTO t1 VALUES(1, 1), (1, 1); +ERROR 23000: Duplicate entry '1-1' for key 'uidx2' +SET DEBUG_SYNC = 'now SIGNAL go_ahead'; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f11` int(11) DEFAULT NULL, + `f2` int(11) NOT NULL, + UNIQUE KEY `uidx1` (`f2`), + UNIQUE KEY `uidx2` (`f11`,`f2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check status OK +DROP TABLE t1; +SET SQL_MODE= strict_trans_tables; +CREATE TABLE t1(a INT UNIQUE) ENGINE=InnoDB; +SET DEBUG_SYNC='row_log_table_apply1_before SIGNAL dml WAIT_FOR dml_done'; +ALTER TABLE t1 MODIFY COLUMN a INT NOT NULL; +SET DEBUG_SYNC='now WAIT_FOR dml'; +BEGIN; +INSERT INTO t1 SET a=NULL; +ROLLBACK; +set DEBUG_SYNC='now SIGNAL dml_done'; +ERROR 22004: Invalid use of NULL value +DROP TABLE t1; +SET DEBUG_SYNC="RESET"; +SET SQL_MODE=DEFAULT; +CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL, PRIMARY KEY(f1, f2), +UNIQUE KEY(f2))ENGINE=InnoDB; +ALTER TABLE t1 DROP PRIMARY KEY; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` int(11) NOT NULL, + UNIQUE KEY `f2` (`f2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL, +UNIQUE KEY(f2), UNIQUE KEY(f2))ENGINE=InnoDB; +Warnings: +Note 1831 Duplicate index `f2_2`. This is deprecated and will be disallowed in a future release. +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` int(11) NOT NULL, + UNIQUE KEY `f2` (`f2`), + UNIQUE KEY `f2_2` (`f2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +ALTER TABLE t1 DROP INDEX f2, ALGORITHM=INPLACE; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` int(11) NOT NULL, + UNIQUE KEY `f2_2` (`f2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; diff --git a/mysql-test/suite/innodb/r/foreign_key.result b/mysql-test/suite/innodb/r/foreign_key.result index b6462000b..4e253261f 100644 --- a/mysql-test/suite/innodb/r/foreign_key.result +++ b/mysql-test/suite/innodb/r/foreign_key.result @@ -49,3 +49,36 @@ INSERT INTO t3 SET a=1; kill query @id; ERROR 70100: Query execution was interrupted DROP TABLE t3,t1; +# +# MDEV-18222 InnoDB: Failing assertion: heap->magic_n == MEM_BLOCK_MAGIC_N +# or ASAN heap-use-after-free in dict_foreign_remove_from_cache upon CHANGE COLUMN +# +CREATE TABLE t1 (a INT, UNIQUE(a), KEY(a)) ENGINE=InnoDB; +ALTER TABLE t1 ADD FOREIGN KEY (a) REFERENCES t1 (a); +SET SESSION FOREIGN_KEY_CHECKS = OFF; +ALTER TABLE t1 CHANGE COLUMN a a TIME NOT NULL; +ALTER TABLE t1 ADD pk INT NOT NULL AUTO_INCREMENT PRIMARY KEY; +ALTER TABLE t1 CHANGE COLUMN a b TIME; +SET SESSION FOREIGN_KEY_CHECKS = ON; +DROP TABLE t1; +# +# MDEV-18256 InnoDB: Failing assertion: heap->magic_n == MEM_BLOCK_MAGIC_N +# upon DROP FOREIGN KEY +# +CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB; +CREATE TABLE t2 (b INT PRIMARY KEY, FOREIGN KEY fk1 (b) REFERENCES t1 (a)) +ENGINE=InnoDB; +ALTER TABLE t2 DROP FOREIGN KEY fk1, DROP FOREIGN KEY fk1; +DROP TABLE t2, t1; +CREATE TABLE t1 (f VARCHAR(256)) ENGINE=InnoDB; +SET SESSION FOREIGN_KEY_CHECKS = OFF; +ALTER TABLE t1 ADD FOREIGN KEY (f) REFERENCES non_existing_table (x); +SET SESSION FOREIGN_KEY_CHECKS = ON; +ALTER TABLE t1 ADD FULLTEXT INDEX ft1 (f); +Warnings: +Warning 124 InnoDB rebuilding table to add column FTS_DOC_ID +Warning 1088 failed to load FOREIGN KEY constraints +ALTER TABLE t1 ADD FULLTEXT INDEX ft2 (f); +Warnings: +Warning 1088 failed to load FOREIGN KEY constraints +DROP TABLE t1; diff --git a/mysql-test/suite/innodb/r/innodb-alter-debug.result b/mysql-test/suite/innodb/r/innodb-alter-debug.result index d888fb5b0..fa6670e6f 100644 --- a/mysql-test/suite/innodb/r/innodb-alter-debug.result +++ b/mysql-test/suite/innodb/r/innodb-alter-debug.result @@ -68,3 +68,21 @@ SET DEBUG_SYNC = 'now SIGNAL S2'; ERROR 23000: Duplicate entry '1' for key 'a' SET DEBUG_SYNC='RESET'; DROP TABLE t1; +# +# MDEV-17470 Orphan temporary files after interrupted ALTER +# cause InnoDB: Operating system error number 17 and eventual +# fatal error 71 +# +CREATE TABLE t1 (pk INT AUTO_INCREMENT PRIMARY KEY, i INT) ENGINE=InnoDB; +INSERT INTO t1 VALUES (NULL,1),(NULL,2),(NULL,3),(NULL,4),(NULL,5),(NULL,6),(NULL,7),(NULL,8); +INSERT INTO t1 SELECT NULL, i FROM t1; +INSERT INTO t1 SELECT NULL, i FROM t1; +INSERT INTO t1 SELECT NULL, i FROM t1; +INSERT INTO t1 SELECT NULL, i FROM t1; +INSERT INTO t1 SELECT NULL, i FROM t1; +LOCK TABLE t1 READ; +ALTER TABLE t1 FORCE, ALGORITHM=COPY; +kill query @id; +ERROR 70100: Query execution was interrupted +UNLOCK TABLES; +DROP TABLE t1; diff --git a/mysql-test/suite/innodb/r/innodb-alter.result b/mysql-test/suite/innodb/r/innodb-alter.result index d41df53e5..ebafc4fdb 100644 --- a/mysql-test/suite/innodb/r/innodb-alter.result +++ b/mysql-test/suite/innodb/r/innodb-alter.result @@ -714,6 +714,7 @@ t2 CREATE TABLE `t2` ( CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`c2`) REFERENCES `t1` (`c1`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ALTER TABLE t1 CHANGE COLUMN c1 C1 INT; +ALTER TABLE t2 CHANGE COLUMN c2 C2 INT; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( @@ -723,24 +724,168 @@ t1 CREATE TABLE `t1` ( SHOW CREATE TABLE t2; Table Create Table t2 CREATE TABLE `t2` ( - `c2` int(11) NOT NULL, - KEY `c2` (`c2`), + `C2` int(11) DEFAULT NULL, + KEY `c2` (`C2`), CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`c2`) REFERENCES `t1` (`c1`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 +ALTER TABLE t1 CHANGE COLUMN C1 c5 INT; +ALTER TABLE t2 CHANGE COLUMN C2 c6 INT; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( - `C1` int(11) NOT NULL, - PRIMARY KEY (`C1`) + `c5` int(11) NOT NULL, + PRIMARY KEY (`c5`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 SHOW CREATE TABLE t2; Table Create Table t2 CREATE TABLE `t2` ( - `c2` int(11) NOT NULL, - KEY `c2` (`c2`), - CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`c2`) REFERENCES `t1` (`c1`) + `c6` int(11) DEFAULT NULL, + KEY `c2` (`c6`), + CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`c6`) REFERENCES `t1` (`c5`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +SELECT C.NAME FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS C INNER JOIN +INFORMATION_SCHEMA.INNODB_SYS_TABLES T ON C.TABLE_ID=T.TABLE_ID +WHERE T.NAME='test/t1'; +NAME +c5 +SELECT F.NAME FROM INFORMATION_SCHEMA.INNODB_SYS_FIELDS F INNER JOIN +INFORMATION_SCHEMA.INNODB_SYS_INDEXES I ON F.INDEX_ID=I.INDEX_ID INNER JOIN +INFORMATION_SCHEMA.INNODB_SYS_TABLES T ON I.TABLE_ID=T.TABLE_ID +WHERE T.NAME='test/t1' AND I.NAME='PRIMARY'; +NAME +c5 +SELECT C.REF_COL_NAME, C.FOR_COL_NAME FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS C INNER JOIN +INFORMATION_SCHEMA.INNODB_SYS_FOREIGN F ON C.ID=F.ID +WHERE F.FOR_NAME='test/t2'; +REF_COL_NAME FOR_COL_NAME +c5 c6 +DROP TABLE t2, t1; +# virtual columns case too +CREATE TABLE t1 (a INT, b INT GENERATED ALWAYS AS (a) VIRTUAL) ENGINE = InnoDB; +ALTER TABLE t1 CHANGE COLUMN a A INT; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `A` int(11) DEFAULT NULL, + `b` int(11) AS (a) VIRTUAL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +SELECT C.NAME FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS C INNER JOIN +INFORMATION_SCHEMA.INNODB_SYS_TABLES T ON C.TABLE_ID=T.TABLE_ID +WHERE T.NAME='test/t1'; +NAME +a +DROP TABLE t1; +# different FOREIGN KEY cases +CREATE TABLE t1 ( +a INT UNIQUE KEY, +b INT UNIQUE KEY, +c INT UNIQUE KEY, +d INT UNIQUE KEY +) ENGINE=INNODB; +CREATE TABLE t2 ( +aa INT, +bb INT, +cc INT, +dd INT +) ENGINE=INNODB; +INSERT INTO t1 VALUES (1, 1, 1, 1); +INSERT INTO t2 VALUES (1, 1, 1, 1); +ALTER TABLE t1 CHANGE a A INT, ALGORITHM=INPLACE; +ALTER TABLE t1 CHANGE c C INT, ALGORITHM=INPLACE; +ALTER TABLE t2 CHANGE cc CC INT, ALGORITHM=INPLACE; +ALTER TABLE t2 CHANGE dd DD INT, ALGORITHM=INPLACE; +SET foreign_key_checks=0; +ALTER TABLE t2 +ADD FOREIGN KEY(aa) REFERENCES t1(a), +ADD FOREIGN KEY(bb) REFERENCES t1(b), +ADD FOREIGN KEY(cc) REFERENCES t1(c), +ADD FOREIGN KEY(dd) REFERENCES t1(d), +ALGORITHM=INPLACE; +ALTER TABLE t1 CHANGE b B INT, ALGORITHM=INPLACE; +ALTER TABLE t2 CHANGE aa AA INT, ALGORITHM=INPLACE; +ALTER TABLE t1 CHANGE d D INT, ALGORITHM=INPLACE; +ALTER TABLE t2 CHANGE bb BB INT, ALGORITHM=INPLACE; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `A` int(11) DEFAULT NULL, + `B` int(11) DEFAULT NULL, + `C` int(11) DEFAULT NULL, + `D` int(11) DEFAULT NULL, + UNIQUE KEY `a` (`A`), + UNIQUE KEY `b` (`B`), + UNIQUE KEY `c` (`C`), + UNIQUE KEY `d` (`D`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +SHOW CREATE TABLE t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `AA` int(11) DEFAULT NULL, + `BB` int(11) DEFAULT NULL, + `CC` int(11) DEFAULT NULL, + `DD` int(11) DEFAULT NULL, + KEY `aa` (`AA`), + KEY `bb` (`BB`), + KEY `CC` (`CC`), + KEY `DD` (`DD`), + CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`aa`) REFERENCES `t1` (`a`), + CONSTRAINT `t2_ibfk_2` FOREIGN KEY (`bb`) REFERENCES `t1` (`b`), + CONSTRAINT `t2_ibfk_3` FOREIGN KEY (`cc`) REFERENCES `t1` (`c`), + CONSTRAINT `t2_ibfk_4` FOREIGN KEY (`dd`) REFERENCES `t1` (`d`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DELETE FROM t1 WHERE a=1; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`aa`) REFERENCES `t1` (`a`)) +DELETE FROM t1 WHERE A=1; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`aa`) REFERENCES `t1` (`a`)) +DELETE FROM t1 WHERE b=1; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`aa`) REFERENCES `t1` (`a`)) +DELETE FROM t1 WHERE B=1; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`aa`) REFERENCES `t1` (`a`)) +DELETE FROM t1 WHERE c=1; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`aa`) REFERENCES `t1` (`a`)) +DELETE FROM t1 WHERE C=1; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`aa`) REFERENCES `t1` (`a`)) +DELETE FROM t1 WHERE d=1; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`aa`) REFERENCES `t1` (`a`)) +DELETE FROM t1 WHERE D=1; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`aa`) REFERENCES `t1` (`a`)) DROP TABLE t2, t1; +# virtual columns case too +CREATE TABLE t1 (a INT, b INT GENERATED ALWAYS AS (a) VIRTUAL) ENGINE = InnoDB; +ALTER TABLE t1 CHANGE COLUMN a A INT; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `A` int(11) DEFAULT NULL, + `b` int(11) AS (a) VIRTUAL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +SELECT C.NAME FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS C INNER JOIN +INFORMATION_SCHEMA.INNODB_SYS_TABLES T ON C.TABLE_ID=T.TABLE_ID +WHERE T.NAME='test/t1'; +NAME +a +DROP TABLE t1; +# and an MDEV-18041 regression related to indexes prefixes +create table `test` ( +`test_old` varchar(255) NOT NULL, +`other` varchar(255) NOT NULL, +PRIMARY KEY (`test_old`,`other`), +UNIQUE KEY uk (`test_old`(100), `other`) +) ENGINE=InnoDB; +select name, pos from information_schema.innodb_SYS_FIELDS where name in ('test_old', 'other', 'test_new'); +name pos +test_old 0 +other 1 +test_old 0 +other 1 +alter table `test` CHANGE COLUMN `test_old` `test_new` varchar(255) NOT NULL; +select name, pos from information_schema.innodb_SYS_FIELDS where name in ('test_old', 'other', 'test_new'); +name pos +test_new 0 +other 1 +test_new 0 +other 1 +drop table `test`; # # BUG 20029625 - HANDLE_FATAL_SIGNAL (SIG=11) IN # DICT_MEM_TABLE_COL_RENAME_LOW diff --git a/mysql-test/suite/innodb/r/innodb-index.result b/mysql-test/suite/innodb/r/innodb-index.result index 2b72f38a9..52344e1e4 100644 --- a/mysql-test/suite/innodb/r/innodb-index.result +++ b/mysql-test/suite/innodb/r/innodb-index.result @@ -1180,3 +1180,36 @@ t2c CREATE TABLE `t2c` ( KEY `t2a` (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 DROP TABLE t1,t2,t2c,t2i; +SET @save_format = @@GLOBAL.innodb_file_format; +SET @save_prefix = @@GLOBAL.innodb_large_prefix; +SET GLOBAL innodb_file_format=barracuda; +SET GLOBAL innodb_large_prefix=ON; +CREATE TABLE t1 (c VARCHAR(1024), +c1 CHAR(255) NOT NULL,c2 CHAR(255) NOT NULL,c3 CHAR(255) NOT NULL, +c4 CHAR(255) NOT NULL,c5 CHAR(255) NOT NULL,c6 CHAR(255) NOT NULL, +c7 CHAR(255) NOT NULL,c8 CHAR(255) NOT NULL,c9 CHAR(255) NOT NULL, +ca CHAR(255) NOT NULL,cb CHAR(255) NOT NULL,cc CHAR(255) NOT NULL, +cd CHAR(255) NOT NULL,ce CHAR(255) NOT NULL,cf CHAR(255) NOT NULL, +d0 CHAR(255) NOT NULL,d1 CHAR(255) NOT NULL,d2 CHAR(255) NOT NULL, +d3 CHAR(255) NOT NULL,d4 CHAR(255) NOT NULL,d5 CHAR(255) NOT NULL, +d6 CHAR(255) NOT NULL,d7 CHAR(255) NOT NULL,d8 CHAR(255) NOT NULL, +d9 CHAR(255) NOT NULL,da CHAR(255) NOT NULL,db CHAR(255) NOT NULL, +dc CHAR(255) NOT NULL,dd CHAR(255) NOT NULL,de CHAR(255) NOT NULL, +UNIQUE KEY(c)) +ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +INSERT INTO t1 VALUES +(repeat('a',999),'','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''), +(CONCAT(repeat('a',999),'b'),'','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''); +ALTER TABLE t1 ROW_FORMAT=REDUNDANT, algorithm=inplace; +ERROR HY000: Index column size too large. The maximum column size is 767 bytes. +ALTER TABLE t1 ROW_FORMAT=REDUNDANT, algorithm=copy; +ERROR HY000: Index column size too large. The maximum column size is 767 bytes. +SELECT COUNT(*) FROM t1; +COUNT(*) +2 +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check status OK +DROP TABLE t1; +SET GLOBAL innodb_file_format=@save_format; +SET GLOBAL innodb_large_prefix=@save_prefix; diff --git a/mysql-test/suite/innodb/r/innodb-table-online.result b/mysql-test/suite/innodb/r/innodb-table-online.result index 9b1097b3a..fc9ab3874 100644 --- a/mysql-test/suite/innodb/r/innodb-table-online.result +++ b/mysql-test/suite/innodb/r/innodb-table-online.result @@ -87,17 +87,6 @@ t1 CREATE TABLE `t1` ( UNIQUE KEY `c2` (`c2`), UNIQUE KEY `c2_2` (`c2`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT -ALTER TABLE t1 DROP INDEX c2, ALGORITHM = INPLACE; -ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Dropping a primary key is not allowed without also adding a new primary key. Try ALGORITHM=COPY. -SHOW CREATE TABLE t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `c1` int(11) NOT NULL, - `c2` int(11) NOT NULL, - `c3` char(255) NOT NULL, - UNIQUE KEY `c2` (`c2`), - UNIQUE KEY `c2_2` (`c2`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT ALTER TABLE t1 DROP INDEX c2, ADD PRIMARY KEY(c1); # session default SET DEBUG_SYNC = 'now WAIT_FOR scanned'; diff --git a/mysql-test/suite/innodb/r/innodb-virtual-columns.result b/mysql-test/suite/innodb/r/innodb-virtual-columns.result index 558bb23de..900fca830 100644 --- a/mysql-test/suite/innodb/r/innodb-virtual-columns.result +++ b/mysql-test/suite/innodb/r/innodb-virtual-columns.result @@ -320,3 +320,18 @@ term uw_id plan wdraw_rsn admit_term 1035 2 CSM ACAD 1009 drop table grad_degree; drop table gso_grad_supr; +CREATE TABLE t1 (a INT, b CHAR(12), c INT AS (a) VIRTUAL, FULLTEXT KEY(b)) ENGINE=InnoDB; +INSERT INTO t1 (a,b) VALUES (1,'foo'); +SELECT * FROM t1; +a b c +1 foo 1 +DROP TABLE t1; +CREATE TABLE t1 (a INT, b CHAR(12), c INT AS (a) VIRTUAL) ENGINE=InnoDB; +INSERT INTO t1 (a,b) VALUES (1,'foo'); +ALTER TABLE t1 ADD FULLTEXT KEY(b); +Warnings: +Warning 124 InnoDB rebuilding table to add column FTS_DOC_ID +SELECT * FROM t1; +a b c +1 foo 1 +DROP TABLE t1; diff --git a/mysql-test/suite/innodb/r/innodb_28867993.result b/mysql-test/suite/innodb/r/innodb_28867993.result new file mode 100644 index 000000000..acc6734ea --- /dev/null +++ b/mysql-test/suite/innodb/r/innodb_28867993.result @@ -0,0 +1,9 @@ +create table t1 (a int) engine=innodb; +insert t1 values (1),(2); +create database ib_logfile2; +select * from t1; +a +1 +2 +drop table t1; +drop database ib_logfile2; diff --git a/mysql-test/suite/innodb/t/alter_candidate_key.test b/mysql-test/suite/innodb/t/alter_candidate_key.test new file mode 100644 index 000000000..7429cd89a --- /dev/null +++ b/mysql-test/suite/innodb/t/alter_candidate_key.test @@ -0,0 +1,72 @@ +--source include/have_innodb.inc +--source include/have_debug.inc +--source include/have_debug_sync.inc + +CREATE TABLE t1 (f1 INT NOT NULL, f2 INT NOT NULL, + UNIQUE KEY uidx2(f1,f2), + UNIQUE KEY uidx1(f2)) ENGINE=InnoDB; +INSERT INTO t1 VALUES(1, 1); +SHOW CREATE TABLE t1; +SET DEBUG_SYNC = 'innodb_inplace_alter_table_enter + SIGNAL conc_dml WAIT_FOR go_ahead'; +--send ALTER TABLE t1 CHANGE COLUMN f1 f11 INT, ALGORITHM=INPLACE +connect (con1,localhost,root,,); +SET DEBUG_SYNC = 'now WAIT_FOR conc_dml'; +DELETE FROM t1; +SET DEBUG_SYNC = 'now SIGNAL go_ahead'; +connection default; +reap; +SHOW CREATE TABLE t1; +CHECK TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT, f2 INT, + PRIMARY KEY(f1, f2), + UNIQUE INDEX uidx2 (f1, f2), + UNIQUE INDEX uidx1 (f2))ENGINE=InnoDB; +ALTER TABLE t1 DROP PRIMARY KEY; +SHOW CREATE TABLE t1; +SET DEBUG_SYNC = 'innodb_inplace_alter_table_enter + SIGNAL conc_dml WAIT_FOR go_ahead'; +--send ALTER TABLE t1 CHANGE COLUMN f1 f11 INT, ALGORITHM=INPLACE +connection con1; +SET DEBUG_SYNC = 'now WAIT_FOR conc_dml'; +--error ER_DUP_ENTRY +INSERT INTO t1 VALUES(1, 1), (1, 1); +SET DEBUG_SYNC = 'now SIGNAL go_ahead'; +connection default; +reap; +SHOW CREATE TABLE t1; +CHECK TABLE t1; +DROP TABLE t1; + +SET SQL_MODE= strict_trans_tables; +CREATE TABLE t1(a INT UNIQUE) ENGINE=InnoDB; +SET DEBUG_SYNC='row_log_table_apply1_before SIGNAL dml WAIT_FOR dml_done'; +--send ALTER TABLE t1 MODIFY COLUMN a INT NOT NULL +connection con1; +SET DEBUG_SYNC='now WAIT_FOR dml'; +BEGIN; +INSERT INTO t1 SET a=NULL; +ROLLBACK; +set DEBUG_SYNC='now SIGNAL dml_done'; +connection default; +--error ER_INVALID_USE_OF_NULL +reap; +DROP TABLE t1; +disconnect con1; +SET DEBUG_SYNC="RESET"; +SET SQL_MODE=DEFAULT; + +CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL, PRIMARY KEY(f1, f2), + UNIQUE KEY(f2))ENGINE=InnoDB; +ALTER TABLE t1 DROP PRIMARY KEY; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL, + UNIQUE KEY(f2), UNIQUE KEY(f2))ENGINE=InnoDB; +SHOW CREATE TABLE t1; +ALTER TABLE t1 DROP INDEX f2, ALGORITHM=INPLACE; +SHOW CREATE TABLE t1; +DROP TABLE t1; diff --git a/mysql-test/suite/innodb/t/foreign_key.test b/mysql-test/suite/innodb/t/foreign_key.test index c1a92697d..b4e2ee1bb 100644 --- a/mysql-test/suite/innodb/t/foreign_key.test +++ b/mysql-test/suite/innodb/t/foreign_key.test @@ -73,3 +73,34 @@ reap; disconnect fk; DROP TABLE t3,t1; + +--echo # +--echo # MDEV-18222 InnoDB: Failing assertion: heap->magic_n == MEM_BLOCK_MAGIC_N +--echo # or ASAN heap-use-after-free in dict_foreign_remove_from_cache upon CHANGE COLUMN +--echo # +CREATE TABLE t1 (a INT, UNIQUE(a), KEY(a)) ENGINE=InnoDB; +ALTER TABLE t1 ADD FOREIGN KEY (a) REFERENCES t1 (a); +SET SESSION FOREIGN_KEY_CHECKS = OFF; +ALTER TABLE t1 CHANGE COLUMN a a TIME NOT NULL; +ALTER TABLE t1 ADD pk INT NOT NULL AUTO_INCREMENT PRIMARY KEY; +ALTER TABLE t1 CHANGE COLUMN a b TIME; +SET SESSION FOREIGN_KEY_CHECKS = ON; +DROP TABLE t1; + +--echo # +--echo # MDEV-18256 InnoDB: Failing assertion: heap->magic_n == MEM_BLOCK_MAGIC_N +--echo # upon DROP FOREIGN KEY +--echo # +CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB; +CREATE TABLE t2 (b INT PRIMARY KEY, FOREIGN KEY fk1 (b) REFERENCES t1 (a)) +ENGINE=InnoDB; +ALTER TABLE t2 DROP FOREIGN KEY fk1, DROP FOREIGN KEY fk1; +DROP TABLE t2, t1; + +CREATE TABLE t1 (f VARCHAR(256)) ENGINE=InnoDB; +SET SESSION FOREIGN_KEY_CHECKS = OFF; +ALTER TABLE t1 ADD FOREIGN KEY (f) REFERENCES non_existing_table (x); +SET SESSION FOREIGN_KEY_CHECKS = ON; +ALTER TABLE t1 ADD FULLTEXT INDEX ft1 (f); +ALTER TABLE t1 ADD FULLTEXT INDEX ft2 (f); +DROP TABLE t1; diff --git a/mysql-test/suite/innodb/t/innodb-alter-debug.test b/mysql-test/suite/innodb/t/innodb-alter-debug.test index bc4b2ad8e..3c4572948 100644 --- a/mysql-test/suite/innodb/t/innodb-alter-debug.test +++ b/mysql-test/suite/innodb/t/innodb-alter-debug.test @@ -98,5 +98,37 @@ SET DEBUG_SYNC='RESET'; DROP TABLE t1; +--echo # +--echo # MDEV-17470 Orphan temporary files after interrupted ALTER +--echo # cause InnoDB: Operating system error number 17 and eventual +--echo # fatal error 71 +--echo # +CREATE TABLE t1 (pk INT AUTO_INCREMENT PRIMARY KEY, i INT) ENGINE=InnoDB; +INSERT INTO t1 VALUES (NULL,1),(NULL,2),(NULL,3),(NULL,4),(NULL,5),(NULL,6),(NULL,7),(NULL,8); +INSERT INTO t1 SELECT NULL, i FROM t1; +INSERT INTO t1 SELECT NULL, i FROM t1; +INSERT INTO t1 SELECT NULL, i FROM t1; +INSERT INTO t1 SELECT NULL, i FROM t1; +INSERT INTO t1 SELECT NULL, i FROM t1; + +LOCK TABLE t1 READ; + +--connect (con1,localhost,root,,test) +let $ID= `SELECT @id := CONNECTION_ID()`; +send ALTER TABLE t1 FORCE, ALGORITHM=COPY; + +--connection default +let $wait_condition= select 1 from information_schema.processlist where state='Waiting for table metadata lock'; +source include/wait_condition.inc; +let $ignore= `SELECT @id := $ID`; +kill query @id; +--connection con1 +--error ER_QUERY_INTERRUPTED +reap; +--disconnect con1 +--connection default +UNLOCK TABLES; +DROP TABLE t1; + # Wait till all disconnects are completed --source include/wait_until_count_sessions.inc diff --git a/mysql-test/suite/innodb/t/innodb-alter.test b/mysql-test/suite/innodb/t/innodb-alter.test index 0d3cc6f17..a47573626 100644 --- a/mysql-test/suite/innodb/t/innodb-alter.test +++ b/mysql-test/suite/innodb/t/innodb-alter.test @@ -419,15 +419,123 @@ CREATE TABLE t2(c2 INT NOT NULL, FOREIGN KEY(c2) REFERENCES t1(c1))ENGINE=INNODB SHOW CREATE TABLE t1; SHOW CREATE TABLE t2; ALTER TABLE t1 CHANGE COLUMN c1 C1 INT; +ALTER TABLE t2 CHANGE COLUMN c2 C2 INT; SHOW CREATE TABLE t1; SHOW CREATE TABLE t2; -# FIXME: MDEV-13671 InnoDB should use case-insensitive column name comparisons -# like the rest of the server -#ALTER TABLE t1 CHANGE COLUMN C1 c5 INT; +ALTER TABLE t1 CHANGE COLUMN C1 c5 INT; +ALTER TABLE t2 CHANGE COLUMN C2 c6 INT; SHOW CREATE TABLE t1; SHOW CREATE TABLE t2; + +SELECT C.NAME FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS C INNER JOIN + INFORMATION_SCHEMA.INNODB_SYS_TABLES T ON C.TABLE_ID=T.TABLE_ID + WHERE T.NAME='test/t1'; + +SELECT F.NAME FROM INFORMATION_SCHEMA.INNODB_SYS_FIELDS F INNER JOIN + INFORMATION_SCHEMA.INNODB_SYS_INDEXES I ON F.INDEX_ID=I.INDEX_ID INNER JOIN + INFORMATION_SCHEMA.INNODB_SYS_TABLES T ON I.TABLE_ID=T.TABLE_ID + WHERE T.NAME='test/t1' AND I.NAME='PRIMARY'; + +SELECT C.REF_COL_NAME, C.FOR_COL_NAME FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS C INNER JOIN + INFORMATION_SCHEMA.INNODB_SYS_FOREIGN F ON C.ID=F.ID + WHERE F.FOR_NAME='test/t2'; + +DROP TABLE t2, t1; +--echo # virtual columns case too +CREATE TABLE t1 (a INT, b INT GENERATED ALWAYS AS (a) VIRTUAL) ENGINE = InnoDB; +ALTER TABLE t1 CHANGE COLUMN a A INT; +SHOW CREATE TABLE t1; +SELECT C.NAME FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS C INNER JOIN + INFORMATION_SCHEMA.INNODB_SYS_TABLES T ON C.TABLE_ID=T.TABLE_ID + WHERE T.NAME='test/t1'; +DROP TABLE t1; + + +--echo # different FOREIGN KEY cases +CREATE TABLE t1 ( + a INT UNIQUE KEY, + b INT UNIQUE KEY, + c INT UNIQUE KEY, + d INT UNIQUE KEY +) ENGINE=INNODB; +CREATE TABLE t2 ( + aa INT, + bb INT, + cc INT, + dd INT +) ENGINE=INNODB; + +INSERT INTO t1 VALUES (1, 1, 1, 1); +INSERT INTO t2 VALUES (1, 1, 1, 1); + +ALTER TABLE t1 CHANGE a A INT, ALGORITHM=INPLACE; +ALTER TABLE t1 CHANGE c C INT, ALGORITHM=INPLACE; +ALTER TABLE t2 CHANGE cc CC INT, ALGORITHM=INPLACE; +ALTER TABLE t2 CHANGE dd DD INT, ALGORITHM=INPLACE; + +SET foreign_key_checks=0; +ALTER TABLE t2 + ADD FOREIGN KEY(aa) REFERENCES t1(a), + ADD FOREIGN KEY(bb) REFERENCES t1(b), + ADD FOREIGN KEY(cc) REFERENCES t1(c), + ADD FOREIGN KEY(dd) REFERENCES t1(d), + ALGORITHM=INPLACE; + +ALTER TABLE t1 CHANGE b B INT, ALGORITHM=INPLACE; +ALTER TABLE t2 CHANGE aa AA INT, ALGORITHM=INPLACE; + +--source include/restart_mysqld.inc + +ALTER TABLE t1 CHANGE d D INT, ALGORITHM=INPLACE; +ALTER TABLE t2 CHANGE bb BB INT, ALGORITHM=INPLACE; +SHOW CREATE TABLE t1; +SHOW CREATE TABLE t2; + +--error ER_ROW_IS_REFERENCED_2 +DELETE FROM t1 WHERE a=1; +--error ER_ROW_IS_REFERENCED_2 +DELETE FROM t1 WHERE A=1; + +--error ER_ROW_IS_REFERENCED_2 +DELETE FROM t1 WHERE b=1; +--error ER_ROW_IS_REFERENCED_2 +DELETE FROM t1 WHERE B=1; + +--error ER_ROW_IS_REFERENCED_2 +DELETE FROM t1 WHERE c=1; +--error ER_ROW_IS_REFERENCED_2 +DELETE FROM t1 WHERE C=1; + +--error ER_ROW_IS_REFERENCED_2 +DELETE FROM t1 WHERE d=1; +--error ER_ROW_IS_REFERENCED_2 +DELETE FROM t1 WHERE D=1; + DROP TABLE t2, t1; +--echo # virtual columns case too +CREATE TABLE t1 (a INT, b INT GENERATED ALWAYS AS (a) VIRTUAL) ENGINE = InnoDB; +ALTER TABLE t1 CHANGE COLUMN a A INT; +SHOW CREATE TABLE t1; +SELECT C.NAME FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS C INNER JOIN + INFORMATION_SCHEMA.INNODB_SYS_TABLES T ON C.TABLE_ID=T.TABLE_ID + WHERE T.NAME='test/t1'; +DROP TABLE t1; + +--echo # and an MDEV-18041 regression related to indexes prefixes +create table `test` ( + `test_old` varchar(255) NOT NULL, + `other` varchar(255) NOT NULL, + PRIMARY KEY (`test_old`,`other`), + UNIQUE KEY uk (`test_old`(100), `other`) +) ENGINE=InnoDB; + +select name, pos from information_schema.innodb_SYS_FIELDS where name in ('test_old', 'other', 'test_new'); +alter table `test` CHANGE COLUMN `test_old` `test_new` varchar(255) NOT NULL; +select name, pos from information_schema.innodb_SYS_FIELDS where name in ('test_old', 'other', 'test_new'); +drop table `test`; + + --echo # --echo # BUG 20029625 - HANDLE_FATAL_SIGNAL (SIG=11) IN --echo # DICT_MEM_TABLE_COL_RENAME_LOW diff --git a/mysql-test/suite/innodb/t/innodb-index.test b/mysql-test/suite/innodb/t/innodb-index.test index 8598647de..d28930de8 100644 --- a/mysql-test/suite/innodb/t/innodb-index.test +++ b/mysql-test/suite/innodb/t/innodb-index.test @@ -563,3 +563,33 @@ DROP TABLE t1,t2,t2c,t2i; eval SET GLOBAL innodb_file_format=$innodb_file_format_orig; eval SET GLOBAL innodb_file_format_max=$innodb_file_format_max_orig; --enable_query_log + +SET @save_format = @@GLOBAL.innodb_file_format; +SET @save_prefix = @@GLOBAL.innodb_large_prefix; +SET GLOBAL innodb_file_format=barracuda; +SET GLOBAL innodb_large_prefix=ON; +CREATE TABLE t1 (c VARCHAR(1024), +c1 CHAR(255) NOT NULL,c2 CHAR(255) NOT NULL,c3 CHAR(255) NOT NULL, +c4 CHAR(255) NOT NULL,c5 CHAR(255) NOT NULL,c6 CHAR(255) NOT NULL, +c7 CHAR(255) NOT NULL,c8 CHAR(255) NOT NULL,c9 CHAR(255) NOT NULL, +ca CHAR(255) NOT NULL,cb CHAR(255) NOT NULL,cc CHAR(255) NOT NULL, +cd CHAR(255) NOT NULL,ce CHAR(255) NOT NULL,cf CHAR(255) NOT NULL, +d0 CHAR(255) NOT NULL,d1 CHAR(255) NOT NULL,d2 CHAR(255) NOT NULL, +d3 CHAR(255) NOT NULL,d4 CHAR(255) NOT NULL,d5 CHAR(255) NOT NULL, +d6 CHAR(255) NOT NULL,d7 CHAR(255) NOT NULL,d8 CHAR(255) NOT NULL, +d9 CHAR(255) NOT NULL,da CHAR(255) NOT NULL,db CHAR(255) NOT NULL, +dc CHAR(255) NOT NULL,dd CHAR(255) NOT NULL,de CHAR(255) NOT NULL, +UNIQUE KEY(c)) +ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +INSERT INTO t1 VALUES +(repeat('a',999),'','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''), +(CONCAT(repeat('a',999),'b'),'','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''); +--error ER_INDEX_COLUMN_TOO_LONG +ALTER TABLE t1 ROW_FORMAT=REDUNDANT, algorithm=inplace; +--error ER_INDEX_COLUMN_TOO_LONG +ALTER TABLE t1 ROW_FORMAT=REDUNDANT, algorithm=copy; +SELECT COUNT(*) FROM t1; +CHECK TABLE t1; +DROP TABLE t1; +SET GLOBAL innodb_file_format=@save_format; +SET GLOBAL innodb_large_prefix=@save_prefix; diff --git a/mysql-test/suite/innodb/t/innodb-table-online.test b/mysql-test/suite/innodb/t/innodb-table-online.test index b9c9dc085..14f7b6b77 100644 --- a/mysql-test/suite/innodb/t/innodb-table-online.test +++ b/mysql-test/suite/innodb/t/innodb-table-online.test @@ -104,10 +104,6 @@ LOCK = SHARED, ALGORITHM = INPLACE; ALTER TABLE t1 ADD UNIQUE INDEX(c2), LOCK = EXCLUSIVE, ALGORITHM = INPLACE; -SHOW CREATE TABLE t1; -# We do not support plain DROP_PK_INDEX without ADD_PK_INDEX. ---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON -ALTER TABLE t1 DROP INDEX c2, ALGORITHM = INPLACE; SHOW CREATE TABLE t1; # Now the previous DEBUG_SYNC should kick in. --send diff --git a/mysql-test/suite/innodb/t/innodb-virtual-columns.test b/mysql-test/suite/innodb/t/innodb-virtual-columns.test index 368c6fc8c..99f550eb6 100644 --- a/mysql-test/suite/innodb/t/innodb-virtual-columns.test +++ b/mysql-test/suite/innodb/t/innodb-virtual-columns.test @@ -300,3 +300,14 @@ select * from gso_grad_supr; drop table grad_degree; drop table gso_grad_supr; + +CREATE TABLE t1 (a INT, b CHAR(12), c INT AS (a) VIRTUAL, FULLTEXT KEY(b)) ENGINE=InnoDB; +INSERT INTO t1 (a,b) VALUES (1,'foo'); +SELECT * FROM t1; +DROP TABLE t1; + +CREATE TABLE t1 (a INT, b CHAR(12), c INT AS (a) VIRTUAL) ENGINE=InnoDB; +INSERT INTO t1 (a,b) VALUES (1,'foo'); +ALTER TABLE t1 ADD FULLTEXT KEY(b); +SELECT * FROM t1; +DROP TABLE t1; diff --git a/mysql-test/suite/innodb/t/innodb_28867993.test b/mysql-test/suite/innodb/t/innodb_28867993.test new file mode 100644 index 000000000..61e9578df --- /dev/null +++ b/mysql-test/suite/innodb/t/innodb_28867993.test @@ -0,0 +1,12 @@ +# +# Bug#28867993: POSSIBLE ISSUE WITH MYSQL SERVER RESTART +# + +source include/have_innodb.inc; +create table t1 (a int) engine=innodb; +insert t1 values (1),(2); +create database ib_logfile2; +source include/restart_mysqld.inc; +select * from t1; +drop table t1; +drop database ib_logfile2; diff --git a/mysql-test/suite/innodb/t/innodb_zip_innochecksum.opt b/mysql-test/suite/innodb/t/innodb_zip_innochecksum.opt index f8c8c9d24..f47343e5e 100644 --- a/mysql-test/suite/innodb/t/innodb_zip_innochecksum.opt +++ b/mysql-test/suite/innodb/t/innodb_zip_innochecksum.opt @@ -1,4 +1,4 @@ --skip-innodb-doublewrite --innodb-file-per-table --innodb-file-format=Barracuda - +--innodb_checksum_algorithm=crc32 diff --git a/mysql-test/suite/innodb/t/innodb_zip_innochecksum.test b/mysql-test/suite/innodb/t/innodb_zip_innochecksum.test index 63a4b4186..fec8acf52 100644 --- a/mysql-test/suite/innodb/t/innodb_zip_innochecksum.test +++ b/mysql-test/suite/innodb/t/innodb_zip_innochecksum.test @@ -79,18 +79,22 @@ let SEARCH_PATTERN= Error: --strict-check option cannot be used together with -- --echo [9]: check the innochecksum with full form --strict-check=innodb # Server Default checksum = crc32 +--error 1 --exec $INNOCHECKSUM --strict-check=innodb $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE --echo [10]: check the innochecksum with full form --strict-check=none --echo # when server Default checksum=crc32 +--error 1 --exec $INNOCHECKSUM --strict-check=none $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE --echo [11]: check the innochecksum with short form -C innodb --echo # when server Default checksum=crc32 +--error 1 --exec $INNOCHECKSUM -C innodb $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE --echo [12]: check the innochecksum with short form -C none --echo # when server Default checksum=crc32 +--error 1 --exec $INNOCHECKSUM -C none $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE --echo [13]: check strict-check with invalid values diff --git a/mysql-test/suite/mariabackup/encrypted_page_compressed.opt b/mysql-test/suite/mariabackup/encrypted_page_compressed.opt new file mode 100644 index 000000000..e5a02a1a1 --- /dev/null +++ b/mysql-test/suite/mariabackup/encrypted_page_compressed.opt @@ -0,0 +1,6 @@ +--innodb-encryption-rotate-key-age=2 +--innodb-encryption-threads=4 +--innodb-tablespaces-encryption +--plugin-load-add=$FILE_KEY_MANAGEMENT_SO +--loose-file-key-management +--loose-file-key-management-filename=$MYSQL_TEST_DIR/std_data/logkey.txt diff --git a/mysql-test/suite/mariabackup/encrypted_page_compressed.result b/mysql-test/suite/mariabackup/encrypted_page_compressed.result new file mode 100644 index 000000000..92ad84fc0 --- /dev/null +++ b/mysql-test/suite/mariabackup/encrypted_page_compressed.result @@ -0,0 +1,6 @@ +CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT, c char(200)) ENGINE=InnoDB page_compressed=yes encrypted=yes; +insert into t1(b, c) values("mariadb", "mariabackup"); +# Corrupt the table +# xtrabackup backup +FOUND /Database page corruption detected/ in backup.log +drop table t1; diff --git a/mysql-test/suite/mariabackup/encrypted_page_compressed.test b/mysql-test/suite/mariabackup/encrypted_page_compressed.test new file mode 100644 index 000000000..eaca762d4 --- /dev/null +++ b/mysql-test/suite/mariabackup/encrypted_page_compressed.test @@ -0,0 +1,47 @@ +source include/have_file_key_management.inc; +CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT, c char(200)) ENGINE=InnoDB page_compressed=yes encrypted=yes; +insert into t1(b, c) values("mariadb", "mariabackup"); + +let $MYSQLD_DATADIR=`select @@datadir`; +let t1_IBD = $MYSQLD_DATADIR/test/t1.ibd; +let INNODB_PAGE_SIZE=`select @@innodb_page_size`; + +--source include/shutdown_mysqld.inc + +--echo # Corrupt the table + +perl; +use strict; +use warnings; +use Fcntl qw(:DEFAULT :seek); + +my $ibd_file = $ENV{'t1_IBD'}; + +my $chunk; +my $page_size = $ENV{'INNODB_PAGE_SIZE'}; + +sysopen IBD_FILE, $ibd_file, O_RDWR || die "Unable to open $ibd_file"; +sysseek IBD_FILE, $page_size * 3 + 75, SEEK_CUR; +$chunk = '\xAA\xAA\xAA\xAA'; +syswrite IBD_FILE, $chunk, 4; + +close IBD_FILE; +EOF + +--source include/start_mysqld.inc + +echo # xtrabackup backup; +--disable_result_log +let $targetdir=$MYSQLTEST_VARDIR/tmp/backup; +let $backuplog=$MYSQLTEST_VARDIR/tmp/backup.log; +--error 1 +exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$targetdir > $backuplog; +--enable_result_log + +--let SEARCH_PATTERN=Database page corruption detected +--let SEARCH_FILE=$backuplog +--source include/search_pattern_in_file.inc +remove_file $backuplog; + +drop table t1; +rmdir $targetdir; diff --git a/mysql-test/suite/mariabackup/encrypted_page_corruption.opt b/mysql-test/suite/mariabackup/encrypted_page_corruption.opt new file mode 100644 index 000000000..74a6450a1 --- /dev/null +++ b/mysql-test/suite/mariabackup/encrypted_page_corruption.opt @@ -0,0 +1,6 @@ +--innodb-encrypt-log=ON +--plugin-load-add=$FILE_KEY_MANAGEMENT_SO +--loose-file-key-management +--loose-file-key-management-filekey=FILE:$MTR_SUITE_DIR/filekeys-data.key +--loose-file-key-management-filename=$MTR_SUITE_DIR/filekeys-data.enc +--loose-file-key-management-encryption-algorithm=aes_cbc diff --git a/mysql-test/suite/mariabackup/encrypted_page_corruption.result b/mysql-test/suite/mariabackup/encrypted_page_corruption.result new file mode 100644 index 000000000..0198cfb3d --- /dev/null +++ b/mysql-test/suite/mariabackup/encrypted_page_corruption.result @@ -0,0 +1,7 @@ +call mtr.add_suppression("\\[ERROR\\] InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=3\\] in file '.*test.t1\\.ibd' cannot be decrypted."); +CREATE TABLE t1(c VARCHAR(128)) ENGINE INNODB, encrypted=yes; +insert into t1 select repeat('a',100); +# Corrupt the table +# xtrabackup backup +FOUND /Database page corruption detected/ in backup.log +drop table t1; diff --git a/mysql-test/suite/mariabackup/encrypted_page_corruption.test b/mysql-test/suite/mariabackup/encrypted_page_corruption.test new file mode 100644 index 000000000..7ee4e8c5d --- /dev/null +++ b/mysql-test/suite/mariabackup/encrypted_page_corruption.test @@ -0,0 +1,79 @@ +--source include/have_file_key_management.inc +--source include/innodb_page_size.inc + +perl; +open(OUT, ">$ENV{MYSQLTEST_VARDIR}/log/check.txt") || die; +print OUT "--skip innodb_checksum_algorithm=crc32 needs little-endian\n" +unless unpack("L","macs")==unpack("N","scam"); +close(OUT); +EOF + +--source $MYSQLTEST_VARDIR/log/check.txt +--remove_file $MYSQLTEST_VARDIR/log/check.txt + +call mtr.add_suppression("\\[ERROR\\] InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=3\\] in file '.*test.t1\\.ibd' cannot be decrypted."); +CREATE TABLE t1(c VARCHAR(128)) ENGINE INNODB, encrypted=yes; +insert into t1 select repeat('a',100); + +let MYSQLD_DATADIR=`select @@datadir`; +let INNODB_PAGE_SIZE=`select @@innodb_page_size`; + +--source include/shutdown_mysqld.inc + +--echo # Corrupt the table + +perl; +use strict; +use warnings; +use Fcntl qw(:DEFAULT :seek); +do "$ENV{MTR_SUITE_DIR}/../innodb/include/crc32.pl"; + +my $page_size = $ENV{INNODB_PAGE_SIZE}; + +sysopen IBD_FILE, "$ENV{MYSQLD_DATADIR}/test/t1.ibd", O_RDWR +|| die "Cannot open t1.ibd\n"; +sysread(IBD_FILE, $_, 38) || die "Cannot read t1.ibd\n"; +my $space = unpack("x[34]N", $_); +sysseek(IBD_FILE, $page_size * 3, SEEK_SET) || die "Cannot seek t1.ibd\n"; + +my $head = pack("Nx[18]", 3); # better to have a valid page number +my $body = chr(0) x ($page_size - 38 - 8); + +# Calculate innodb_checksum_algorithm=crc32 for the unencrypted page. +# The following bytes are excluded: +# bytes 0..3 (the checksum is stored there) +# bytes 26..37 (encryption key version, post-encryption checksum, tablespace id) +# bytes $page_size-8..$page_size-1 (checksum, LSB of FIL_PAGE_LSN) +my $polynomial = 0x82f63b78; # CRC-32C +my $ck = mycrc32($head, 0, $polynomial) ^ mycrc32($body, 0, $polynomial); + +my $page= pack("N",$ck).$head.pack("NNN",1,$ck,$space).$body.pack("Nx[4]",$ck); +die unless syswrite(IBD_FILE, $page, $page_size) == $page_size; +close IBD_FILE; +EOF + +--source include/start_mysqld.inc + +echo # xtrabackup backup; +let $targetdir=$MYSQLTEST_VARDIR/tmp/backup; +let $backuplog=$MYSQLTEST_VARDIR/tmp/backup.log; + +--disable_result_log +--error 1 +exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --extended-validation --target-dir=$targetdir > $backuplog; +--enable_result_log + + +--let SEARCH_PATTERN=Database page corruption detected +--let SEARCH_FILE=$backuplog +--source include/search_pattern_in_file.inc +remove_file $backuplog; +rmdir $targetdir; + +# Due to very constructed nature of the "corruption" (faking checksums), the "corruption" won't be found without --extended-validation +--disable_result_log +exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$targetdir; +--enable_result_log + +drop table t1; +rmdir $targetdir; diff --git a/mysql-test/suite/mariabackup/huge_lsn.opt b/mysql-test/suite/mariabackup/huge_lsn.opt index 74a6450a1..c65b76fb7 100644 --- a/mysql-test/suite/mariabackup/huge_lsn.opt +++ b/mysql-test/suite/mariabackup/huge_lsn.opt @@ -1,4 +1,8 @@ --innodb-encrypt-log=ON +--innodb-tablespaces-encryption +--innodb-encrypt-tables=ON +--innodb-encryption-rotate-key-age=1 +--innodb-encryption-threads=4 --plugin-load-add=$FILE_KEY_MANAGEMENT_SO --loose-file-key-management --loose-file-key-management-filekey=FILE:$MTR_SUITE_DIR/filekeys-data.key diff --git a/mysql-test/suite/mariabackup/unencrypted_page_compressed.result b/mysql-test/suite/mariabackup/unencrypted_page_compressed.result new file mode 100644 index 000000000..b4cb27d30 --- /dev/null +++ b/mysql-test/suite/mariabackup/unencrypted_page_compressed.result @@ -0,0 +1,6 @@ +CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT, c char(200)) ENGINE=InnoDB page_compressed=yes; +insert into t1(b, c) values("mariadb", "mariabackup"); +# Corrupt the table +# xtrabackup backup +FOUND /Database page corruption detected/ in backup.log +drop table t1; diff --git a/mysql-test/suite/mariabackup/unencrypted_page_compressed.test b/mysql-test/suite/mariabackup/unencrypted_page_compressed.test new file mode 100644 index 000000000..48df75bc5 --- /dev/null +++ b/mysql-test/suite/mariabackup/unencrypted_page_compressed.test @@ -0,0 +1,46 @@ +CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT, c char(200)) ENGINE=InnoDB page_compressed=yes; +insert into t1(b, c) values("mariadb", "mariabackup"); + +let $MYSQLD_DATADIR=`select @@datadir`; +let t1_IBD = $MYSQLD_DATADIR/test/t1.ibd; +let INNODB_PAGE_SIZE=`select @@innodb_page_size`; + +--source include/shutdown_mysqld.inc + +--echo # Corrupt the table + +perl; +use strict; +use warnings; +use Fcntl qw(:DEFAULT :seek); + +my $ibd_file = $ENV{'t1_IBD'}; + +my $chunk; +my $page_size = $ENV{'INNODB_PAGE_SIZE'}; + +sysopen IBD_FILE, $ibd_file, O_RDWR || die "Unable to open $ibd_file"; +sysseek IBD_FILE, 16384 * 3 + 75, SEEK_CUR; +$chunk = '\xAA\xAA\xAA\xAA'; +syswrite IBD_FILE, $chunk, 4; + +close IBD_FILE; +EOF + +--source include/start_mysqld.inc + +echo # xtrabackup backup; +--disable_result_log +let $targetdir=$MYSQLTEST_VARDIR/tmp/backup; +let $backuplog=$MYSQLTEST_VARDIR/tmp/backup.log; +--error 1 +exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$targetdir > $backuplog; +--enable_result_log + +--let SEARCH_PATTERN=Database page corruption detected +--let SEARCH_FILE=$backuplog +--source include/search_pattern_in_file.inc +remove_file $backuplog; + +drop table t1; +rmdir $targetdir; diff --git a/mysql-test/suite/perfschema/r/dml_setup_instruments.result b/mysql-test/suite/perfschema/r/dml_setup_instruments.result index ce1cdf188..14ed8eb2d 100644 --- a/mysql-test/suite/perfschema/r/dml_setup_instruments.result +++ b/mysql-test/suite/perfschema/r/dml_setup_instruments.result @@ -16,7 +16,9 @@ wait/synch/mutex/sql/LOCK_audit_mask YES YES wait/synch/mutex/sql/LOCK_binlog_state YES YES select * from performance_schema.setup_instruments where name like 'Wait/Synch/Rwlock/sql/%' - and name not in ('wait/synch/rwlock/sql/CRYPTO_dynlock_value::lock') + and name not in ( +'wait/synch/rwlock/sql/CRYPTO_dynlock_value::lock', +'wait/synch/rwlock/sql/LOCK_named_pipe_full_access_group') order by name limit 10; NAME ENABLED TIMED wait/synch/rwlock/sql/LOCK_dboptions YES YES diff --git a/mysql-test/suite/perfschema/r/socket_connect.result b/mysql-test/suite/perfschema/r/socket_connect.result index 10540fd30..4b77b3e0a 100644 --- a/mysql-test/suite/perfschema/r/socket_connect.result +++ b/mysql-test/suite/perfschema/r/socket_connect.result @@ -159,19 +159,6 @@ Expect 1 # 6.1 Verify that there are no TCP/IP connections in the socket instance table -SELECT COUNT(*) = 0 AS 'Expect 1' -FROM performance_schema.socket_instances -WHERE EVENT_NAME LIKE '%client_connection%' - AND OBJECT_INSTANCE_BEGIN <> @default_object_instance_begin -AND (IP LIKE '%127.0.0.1' OR IP LIKE '%::1'); -Expect 1 -1 # 6.2 Verify that there are no TCP/IP connections in the summary instance table -SELECT COUNT(*) = 0 AS 'Expect 1' -FROM performance_schema.socket_summary_by_instance -WHERE EVENT_NAME LIKE '%client_connection%' - AND OBJECT_INSTANCE_BEGIN <> @default_object_instance_begin; -Expect 1 -1 diff --git a/mysql-test/suite/perfschema/t/dml_setup_instruments.test b/mysql-test/suite/perfschema/t/dml_setup_instruments.test index 6b4fe89a1..098d6bd03 100644 --- a/mysql-test/suite/perfschema/t/dml_setup_instruments.test +++ b/mysql-test/suite/perfschema/t/dml_setup_instruments.test @@ -22,10 +22,13 @@ select * from performance_schema.setup_instruments order by name limit 10; # CRYPTO_dynlock_value::lock is dependent on the build (SSL) +# LOCK_named_pipe_full_access_group is dependent on the build (Windows) select * from performance_schema.setup_instruments where name like 'Wait/Synch/Rwlock/sql/%' - and name not in ('wait/synch/rwlock/sql/CRYPTO_dynlock_value::lock') + and name not in ( + 'wait/synch/rwlock/sql/CRYPTO_dynlock_value::lock', + 'wait/synch/rwlock/sql/LOCK_named_pipe_full_access_group') order by name limit 10; # COND_handler_count is dependent on the build (Windows only) diff --git a/mysql-test/suite/perfschema/t/socket_connect.test b/mysql-test/suite/perfschema/t/socket_connect.test index 909840144..b4579605e 100644 --- a/mysql-test/suite/perfschema/t/socket_connect.test +++ b/mysql-test/suite/perfschema/t/socket_connect.test @@ -273,18 +273,21 @@ WHERE EVENT_NAME LIKE '%client_connection%' --echo --echo # 6.1 Verify that there are no TCP/IP connections in the socket instance table --echo -eval SELECT COUNT(*) = 0 AS 'Expect 1' +let $wait_condition= +SELECT COUNT(*) = 0 AS 'Expect 1' FROM performance_schema.socket_instances WHERE EVENT_NAME LIKE '%client_connection%' AND OBJECT_INSTANCE_BEGIN <> @default_object_instance_begin AND $ip_localhost; +--source include/wait_condition.inc --echo --echo # 6.2 Verify that there are no TCP/IP connections in the summary instance table --echo -eval SELECT COUNT(*) = 0 AS 'Expect 1' +let $wait_condition= +SELECT COUNT(*) = 0 AS 'Expect 1' FROM performance_schema.socket_summary_by_instance WHERE EVENT_NAME LIKE '%client_connection%' AND OBJECT_INSTANCE_BEGIN <> @default_object_instance_begin; - +--source include/wait_condition.inc exit; diff --git a/mysql-test/suite/roles/flush_roles-17898.result b/mysql-test/suite/roles/flush_roles-17898.result new file mode 100644 index 000000000..c09fa166d --- /dev/null +++ b/mysql-test/suite/roles/flush_roles-17898.result @@ -0,0 +1,13 @@ +use mysql; +insert db (db,user,select_priv) values ('foo','dwr_foo','Y'), ('bar','dwr_bar','Y'); +insert roles_mapping (user,role) values ('dwr_qux_dev','dwr_foo'),('dwr_qux_dev','dwr_bar'); +insert user (user,show_db_priv,is_role) values ('dwr_foo','N','Y'), ('dwr_bar','N','Y'), ('dwr_qux_dev','Y','Y'); +Warnings: +Warning 1364 Field 'ssl_cipher' doesn't have a default value +Warning 1364 Field 'x509_issuer' doesn't have a default value +Warning 1364 Field 'x509_subject' doesn't have a default value +Warning 1364 Field 'authentication_string' doesn't have a default value +flush privileges; +drop role dwr_foo; +drop role dwr_bar; +drop role dwr_qux_dev; diff --git a/mysql-test/suite/roles/flush_roles-17898.test b/mysql-test/suite/roles/flush_roles-17898.test new file mode 100644 index 000000000..e94efc44d --- /dev/null +++ b/mysql-test/suite/roles/flush_roles-17898.test @@ -0,0 +1,11 @@ +# +# MDEV-17898 FLUSH PRIVILEGES crashes server with segfault +# +use mysql; +insert db (db,user,select_priv) values ('foo','dwr_foo','Y'), ('bar','dwr_bar','Y'); +insert roles_mapping (user,role) values ('dwr_qux_dev','dwr_foo'),('dwr_qux_dev','dwr_bar'); +insert user (user,show_db_priv,is_role) values ('dwr_foo','N','Y'), ('dwr_bar','N','Y'), ('dwr_qux_dev','Y','Y'); +flush privileges; +drop role dwr_foo; +drop role dwr_bar; +drop role dwr_qux_dev; diff --git a/mysql-test/suite/rpl/r/rpl_idempotency.result b/mysql-test/suite/rpl/r/rpl_idempotency.result index 38b955d76..03482e6fe 100644 --- a/mysql-test/suite/rpl/r/rpl_idempotency.result +++ b/mysql-test/suite/rpl/r/rpl_idempotency.result @@ -67,6 +67,18 @@ a -3 1 include/check_slave_no_error.inc +drop table t1, t2; DROP TABLE t1, t2; +include/check_slave_no_error.inc +create database d; +create database e; +create database d; +create database if not exists e; +include/check_slave_no_error.inc +drop database d; +drop database e; +drop database d; +drop database if exists e; +include/check_slave_no_error.inc SET @@global.slave_exec_mode= @old_slave_exec_mode; include/rpl_end.inc diff --git a/mysql-test/suite/rpl/r/rpl_row_big_table_id,32bit.rdiff b/mysql-test/suite/rpl/r/rpl_row_big_table_id,32bit.rdiff new file mode 100644 index 000000000..1dbbfa925 --- /dev/null +++ b/mysql-test/suite/rpl/r/rpl_row_big_table_id,32bit.rdiff @@ -0,0 +1,29 @@ +--- r/rpl_row_big_table_id.result 2019-01-23 19:58:07.204914873 +0200 ++++ r/rpl_row_big_table_id_32bit.result 2019-01-23 19:43:54.590640934 +0200 +@@ -19,20 +19,20 @@ + master-bin.000002 # Gtid 1 # GTID #-#-# + master-bin.000002 # Query 1 # use `test`; ALTER TABLE t comment '' + master-bin.000002 # Gtid 1 # BEGIN GTID #-#-# +-master-bin.000002 # Table_map 1 # table_id: 4294967295 (test.t) +-master-bin.000002 # Write_rows_v1 1 # table_id: 4294967295 flags: STMT_END_F ++master-bin.000002 # Table_map 1 # table_id: 1 (test.t) ++master-bin.000002 # Write_rows_v1 1 # table_id: 1 flags: STMT_END_F + master-bin.000002 # Query 1 # COMMIT + master-bin.000002 # Gtid 1 # GTID #-#-# + master-bin.000002 # Query 1 # use `test`; ALTER TABLE t comment '' + master-bin.000002 # Gtid 1 # BEGIN GTID #-#-# +-master-bin.000002 # Table_map 1 # table_id: 4294967296 (test.t) +-master-bin.000002 # Write_rows_v1 1 # table_id: 4294967296 flags: STMT_END_F ++master-bin.000002 # Table_map 1 # table_id: 2 (test.t) ++master-bin.000002 # Write_rows_v1 1 # table_id: 2 flags: STMT_END_F + master-bin.000002 # Query 1 # COMMIT + master-bin.000002 # Gtid 1 # GTID #-#-# + master-bin.000002 # Query 1 # use `test`; ALTER TABLE t comment '' + master-bin.000002 # Gtid 1 # BEGIN GTID #-#-# +-master-bin.000002 # Table_map 1 # table_id: 4294967297 (test.t) +-master-bin.000002 # Write_rows_v1 1 # table_id: 4294967297 flags: STMT_END_F ++master-bin.000002 # Table_map 1 # table_id: 3 (test.t) ++master-bin.000002 # Write_rows_v1 1 # table_id: 3 flags: STMT_END_F + master-bin.000002 # Query 1 # COMMIT + DROP TABLE t; + include/rpl_end.inc diff --git a/mysql-test/suite/rpl/r/rpl_row_big_table_id.result b/mysql-test/suite/rpl/r/rpl_row_big_table_id.result new file mode 100644 index 000000000..d8ecadc61 --- /dev/null +++ b/mysql-test/suite/rpl/r/rpl_row_big_table_id.result @@ -0,0 +1,38 @@ +include/master-slave.inc +[connection master] +include/rpl_restart_server.inc [server_number=1] +SET @@debug_dbug="d,simulate_big_table_id"; +CREATE TABLE t (a int); +INSERT INTO t SET a= 0; +ALTER TABLE t comment ''; +INSERT INTO t SET a= 1; +ALTER TABLE t comment ''; +INSERT INTO t SET a= 2; +ALTER TABLE t comment ''; +INSERT INTO t SET a= 3; +show binlog events in from ; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000002 # Gtid 1 # BEGIN GTID #-#-# +master-bin.000002 # Table_map 1 # table_id: 4294967294 (test.t) +master-bin.000002 # Write_rows_v1 1 # table_id: 4294967294 flags: STMT_END_F +master-bin.000002 # Query 1 # COMMIT +master-bin.000002 # Gtid 1 # GTID #-#-# +master-bin.000002 # Query 1 # use `test`; ALTER TABLE t comment '' +master-bin.000002 # Gtid 1 # BEGIN GTID #-#-# +master-bin.000002 # Table_map 1 # table_id: 4294967295 (test.t) +master-bin.000002 # Write_rows_v1 1 # table_id: 4294967295 flags: STMT_END_F +master-bin.000002 # Query 1 # COMMIT +master-bin.000002 # Gtid 1 # GTID #-#-# +master-bin.000002 # Query 1 # use `test`; ALTER TABLE t comment '' +master-bin.000002 # Gtid 1 # BEGIN GTID #-#-# +master-bin.000002 # Table_map 1 # table_id: 4294967296 (test.t) +master-bin.000002 # Write_rows_v1 1 # table_id: 4294967296 flags: STMT_END_F +master-bin.000002 # Query 1 # COMMIT +master-bin.000002 # Gtid 1 # GTID #-#-# +master-bin.000002 # Query 1 # use `test`; ALTER TABLE t comment '' +master-bin.000002 # Gtid 1 # BEGIN GTID #-#-# +master-bin.000002 # Table_map 1 # table_id: 4294967297 (test.t) +master-bin.000002 # Write_rows_v1 1 # table_id: 4294967297 flags: STMT_END_F +master-bin.000002 # Query 1 # COMMIT +DROP TABLE t; +include/rpl_end.inc diff --git a/mysql-test/suite/rpl/r/rpl_set_statement.test b/mysql-test/suite/rpl/r/rpl_set_statement.test deleted file mode 100644 index e69de29bb..000000000 diff --git a/mysql-test/suite/rpl/t/rpl_idempotency.test b/mysql-test/suite/rpl/t/rpl_idempotency.test index 186c62601..e801aac9b 100644 --- a/mysql-test/suite/rpl/t/rpl_idempotency.test +++ b/mysql-test/suite/rpl/t/rpl_idempotency.test @@ -75,9 +75,30 @@ SELECT * FROM t1 ORDER BY a; SELECT * FROM t2 ORDER BY a; --source include/check_slave_no_error.inc +connection slave; +drop table t1, t2; + connection master; DROP TABLE t1, t2; sync_slave_with_master; +--source include/check_slave_no_error.inc +create database d; +create database e; + +connection master; +create database d; +create database if not exists e; + +sync_slave_with_master; +--source include/check_slave_no_error.inc +drop database d; +drop database e; + +connection master; +drop database d; +drop database if exists e; +sync_slave_with_master; +--source include/check_slave_no_error.inc SET @@global.slave_exec_mode= @old_slave_exec_mode; diff --git a/mysql-test/suite/rpl/t/rpl_row_big_table_id.test b/mysql-test/suite/rpl/t/rpl_row_big_table_id.test new file mode 100644 index 000000000..0c6f9d5e8 --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_row_big_table_id.test @@ -0,0 +1,57 @@ +################################################################## +# rpl_row_big_table_id +# +# MDEV-17803 Row-based event is not applied when +# table map id is greater 32 bit int +# +# Verify row-based events applying when table map id value is about and greater +# than 1 << 32. +################################################################## +--source include/word_size.inc +--source include/have_debug.inc +--source include/have_binlog_format_row.inc +--source include/master-slave.inc + +--connection master +# To reset last table id +--let $rpl_server_number= 1 +--source include/rpl_restart_server.inc + +SET @@debug_dbug="d,simulate_big_table_id"; +CREATE TABLE t (a int); + +--let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1) +--let $binlog_pos= query_get_value(SHOW MASTER STATUS, Position, 1) +INSERT INTO t SET a= 0; +ALTER TABLE t comment ''; +INSERT INTO t SET a= 1; +ALTER TABLE t comment ''; +INSERT INTO t SET a= 2; +ALTER TABLE t comment ''; +INSERT INTO t SET a= 3; + +# display simulated big table_id +--let $_in_from=in '$binlog_file' from $binlog_pos +--replace_result "$_in_from" "in from " +--replace_column 2 # 5 # +--replace_regex /\/\* xid=.* \*\//\/* XID *\// /file_id=[0-9]+/file_id=#/ /GTID [0-9]+-[0-9]+-[0-9]+/GTID #-#-#/ +--eval show binlog events in '$binlog_file' from $binlog_pos + + +--sync_slave_with_master + +if (`SELECT sum(a) != 6 FROM t`) +{ + --echo *** unexpected result; check slave applier *** + --die +} + + +# Cleanup + +--connection master +DROP TABLE t; + +--sync_slave_with_master + +--source include/rpl_end.inc diff --git a/mysql-test/suite/sys_vars/r/all_vars.result b/mysql-test/suite/sys_vars/r/all_vars.result index 1bd4e394f..b7beb7b53 100644 --- a/mysql-test/suite/sys_vars/r/all_vars.result +++ b/mysql-test/suite/sys_vars/r/all_vars.result @@ -10,5 +10,6 @@ there should be *no* long test name listed below: select distinct variable_name as `there should be *no* variables listed below:` from t2 left join t1 on variable_name=test_name where test_name is null; there should be *no* variables listed below: +wsrep_certification_rules drop table t1; drop table t2; diff --git a/mysql-test/suite/sys_vars/r/delayed_insert_limit_func.result b/mysql-test/suite/sys_vars/r/delayed_insert_limit_func.result index eeb7a28c8..6076d024d 100644 --- a/mysql-test/suite/sys_vars/r/delayed_insert_limit_func.result +++ b/mysql-test/suite/sys_vars/r/delayed_insert_limit_func.result @@ -13,7 +13,7 @@ INSERT INTO t1 VALUES('3','1','1'); INSERT INTO t1 VALUES('4','1','1'); INSERT INTO t1 VALUES('5','1','1'); INSERT INTO t1 VALUES('6','1','1'); -LOCK TABLE v1 WRITE; +LOCK TABLE v1 READ; ** Connection con1 ** INSERT DELAYED INTO t1 VALUES('7','1','1'); INSERT DELAYED INTO t1 VALUES('8','1','1'); @@ -82,7 +82,7 @@ INSERT INTO t1 VALUES('3'); INSERT INTO t1 VALUES('4'); INSERT INTO t1 VALUES('5'); INSERT INTO t1 VALUES('6'); -LOCK TABLE v1 WRITE; +LOCK TABLE v1 READ; ** Connection con1 ** Asynchronous execute INSERT DELAYED INTO t1 VALUES('7'); diff --git a/mysql-test/suite/sys_vars/r/sql_low_priority_updates_func.result b/mysql-test/suite/sys_vars/r/sql_low_priority_updates_func.result index fe76c2c4b..e9758e238 100644 --- a/mysql-test/suite/sys_vars/r/sql_low_priority_updates_func.result +++ b/mysql-test/suite/sys_vars/r/sql_low_priority_updates_func.result @@ -20,7 +20,7 @@ INSERT INTO t1 VALUES('3'); INSERT INTO t1 VALUES('4'); INSERT INTO t1 VALUES('5'); INSERT INTO t1 VALUES('6'); -LOCK TABLE v1 WRITE; +LOCK TABLE v1 WRITE CONCURRENT; ** Connection con1 ** ** Asynchronous Execution ** UPDATE t1 SET a = CONCAT(a,"-updated");| @@ -56,7 +56,7 @@ INSERT INTO t1 VALUES('3'); INSERT INTO t1 VALUES('4'); INSERT INTO t1 VALUES('5'); INSERT INTO t1 VALUES('6'); -LOCK TABLE v1 WRITE; +LOCK TABLE v1 READ; ** Connection con1 ** ** Asynchronous Execution ** UPDATE t1 SET a = CONCAT(a,"-updated");| diff --git a/mysql-test/suite/sys_vars/r/sysvars_innodb,32bit,xtradb.rdiff b/mysql-test/suite/sys_vars/r/sysvars_innodb,32bit,xtradb.rdiff index 73dd57ed1..2019c4dc6 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_innodb,32bit,xtradb.rdiff +++ b/mysql-test/suite/sys_vars/r/sysvars_innodb,32bit,xtradb.rdiff @@ -1214,8 +1214,8 @@ COMMAND_LINE_ARGUMENT OPTIONAL VARIABLE_NAME INNODB_VERSION SESSION_VALUE NULL --GLOBAL_VALUE 5.6.42 -+GLOBAL_VALUE 5.6.41-84.1 +-GLOBAL_VALUE 5.6.43 ++GLOBAL_VALUE 5.6.42-84.2 GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE NULL VARIABLE_SCOPE GLOBAL diff --git a/mysql-test/suite/sys_vars/r/sysvars_innodb,xtradb.rdiff b/mysql-test/suite/sys_vars/r/sysvars_innodb,xtradb.rdiff index 44269b2c7..998d95e52 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_innodb,xtradb.rdiff +++ b/mysql-test/suite/sys_vars/r/sysvars_innodb,xtradb.rdiff @@ -684,8 +684,8 @@ COMMAND_LINE_ARGUMENT OPTIONAL VARIABLE_NAME INNODB_VERSION SESSION_VALUE NULL --GLOBAL_VALUE 5.6.42 -+GLOBAL_VALUE 5.6.41-84.1 +-GLOBAL_VALUE 5.6.43 ++GLOBAL_VALUE 5.6.42-84.2 GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE NULL VARIABLE_SCOPE GLOBAL diff --git a/mysql-test/suite/sys_vars/r/sysvars_innodb.result b/mysql-test/suite/sys_vars/r/sysvars_innodb.result index 60b5f52f6..f747a493b 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_innodb.result +++ b/mysql-test/suite/sys_vars/r/sysvars_innodb.result @@ -2401,7 +2401,7 @@ READ_ONLY NO COMMAND_LINE_ARGUMENT OPTIONAL VARIABLE_NAME INNODB_VERSION SESSION_VALUE NULL -GLOBAL_VALUE 5.6.42 +GLOBAL_VALUE 5.6.43 GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE NULL VARIABLE_SCOPE GLOBAL diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff b/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff index 0569b2755..8e74f84fc 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff +++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff @@ -89,7 +89,7 @@ VARIABLE_COMMENT The number of seconds the mysqld server is waiting for a connect packet before responding with 'Bad handshake' NUMERIC_MIN_VALUE 2 NUMERIC_MAX_VALUE 31536000 -@@ -519,7 +519,7 @@ +@@ -533,7 +533,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 15 VARIABLE_SCOPE SESSION @@ -98,7 +98,7 @@ VARIABLE_COMMENT Long search depth for the two-step deadlock detection NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 33 -@@ -533,7 +533,7 @@ +@@ -547,7 +547,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 4 VARIABLE_SCOPE SESSION @@ -107,7 +107,7 @@ VARIABLE_COMMENT Short search depth for the two-step deadlock detection NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 32 -@@ -547,7 +547,7 @@ +@@ -561,7 +561,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 50000000 VARIABLE_SCOPE SESSION @@ -116,7 +116,7 @@ VARIABLE_COMMENT Long timeout for the two-step deadlock detection (in microseconds) NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 4294967295 -@@ -561,7 +561,7 @@ +@@ -575,7 +575,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 10000 VARIABLE_SCOPE SESSION @@ -125,7 +125,7 @@ VARIABLE_COMMENT Short timeout for the two-step deadlock detection (in microseconds) NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 4294967295 -@@ -617,7 +617,7 @@ +@@ -631,7 +631,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 0 VARIABLE_SCOPE SESSION @@ -134,7 +134,7 @@ VARIABLE_COMMENT The default week format used by WEEK() functions NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 7 -@@ -631,7 +631,7 @@ +@@ -645,7 +645,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 100 VARIABLE_SCOPE GLOBAL @@ -143,7 +143,7 @@ VARIABLE_COMMENT After inserting delayed_insert_limit rows, the INSERT DELAYED handler will check if there are any SELECT statements pending. If so, it allows these to execute before continuing. NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 4294967295 -@@ -645,7 +645,7 @@ +@@ -659,7 +659,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 300 VARIABLE_SCOPE GLOBAL @@ -152,7 +152,7 @@ VARIABLE_COMMENT How long a INSERT DELAYED thread should wait for INSERT statements before terminating NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 31536000 -@@ -659,7 +659,7 @@ +@@ -673,7 +673,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1000 VARIABLE_SCOPE GLOBAL @@ -161,7 +161,7 @@ VARIABLE_COMMENT What size queue (in rows) should be allocated for handling INSERT DELAYED. If the queue becomes full, any client that does INSERT DELAYED will wait until there is room in the queue again NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 4294967295 -@@ -687,7 +687,7 @@ +@@ -701,7 +701,7 @@ GLOBAL_VALUE_ORIGIN SQL DEFAULT_VALUE 4 VARIABLE_SCOPE SESSION @@ -170,7 +170,7 @@ VARIABLE_COMMENT Precision of the result of '/' operator will be increased on that value NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 30 -@@ -785,7 +785,7 @@ +@@ -799,7 +799,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 0 VARIABLE_SCOPE GLOBAL @@ -179,7 +179,7 @@ VARIABLE_COMMENT If non-zero, binary logs will be purged after expire_logs_days days; possible purges happen at startup and at binary log rotation NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 99 -@@ -827,7 +827,7 @@ +@@ -841,7 +841,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1 VARIABLE_SCOPE GLOBAL @@ -188,7 +188,7 @@ VARIABLE_COMMENT The number of connections on extra-port NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 100000 -@@ -869,7 +869,7 @@ +@@ -883,7 +883,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 0 VARIABLE_SCOPE GLOBAL @@ -197,7 +197,7 @@ VARIABLE_COMMENT A dedicated thread is created to flush all tables at the given interval NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 31536000 -@@ -911,7 +911,7 @@ +@@ -925,7 +925,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 84 VARIABLE_SCOPE GLOBAL @@ -206,7 +206,7 @@ VARIABLE_COMMENT The maximum length of the word to be included in a FULLTEXT index. Note: FULLTEXT indexes must be rebuilt after changing this variable NUMERIC_MIN_VALUE 10 NUMERIC_MAX_VALUE 84 -@@ -925,7 +925,7 @@ +@@ -939,7 +939,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 4 VARIABLE_SCOPE GLOBAL @@ -215,7 +215,7 @@ VARIABLE_COMMENT The minimum length of the word to be included in a FULLTEXT index. Note: FULLTEXT indexes must be rebuilt after changing this variable NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 84 -@@ -939,7 +939,7 @@ +@@ -953,7 +953,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 20 VARIABLE_SCOPE GLOBAL @@ -224,7 +224,7 @@ VARIABLE_COMMENT Number of best matches to use for query expansion NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 1000 -@@ -998,7 +998,7 @@ +@@ -1012,7 +1012,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT The maximum length of the result of function GROUP_CONCAT() NUMERIC_MIN_VALUE 4 @@ -233,7 +233,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -1149,7 +1149,7 @@ +@@ -1163,7 +1163,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 0 VARIABLE_SCOPE SESSION @@ -242,7 +242,7 @@ VARIABLE_COMMENT Number of bytes used for a histogram. If set to 0, no histograms are created by ANALYZE. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 255 -@@ -1177,7 +1177,7 @@ +@@ -1191,7 +1191,7 @@ GLOBAL_VALUE_ORIGIN AUTO DEFAULT_VALUE 128 VARIABLE_SCOPE GLOBAL @@ -251,7 +251,7 @@ VARIABLE_COMMENT How many host names should be cached to avoid resolving. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 65536 -@@ -1289,7 +1289,7 @@ +@@ -1303,7 +1303,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 28800 VARIABLE_SCOPE SESSION @@ -260,7 +260,7 @@ VARIABLE_COMMENT The number of seconds the server waits for activity on an interactive connection before closing it NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 31536000 -@@ -1320,7 +1320,7 @@ +@@ -1334,7 +1334,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT The size of the buffer that is used for joins NUMERIC_MIN_VALUE 128 @@ -269,7 +269,7 @@ NUMERIC_BLOCK_SIZE 128 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -1345,7 +1345,7 @@ +@@ -1359,7 +1359,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 2 VARIABLE_SCOPE SESSION @@ -278,7 +278,7 @@ VARIABLE_COMMENT Controls what join operations can be executed with join buffers. Odd numbers are used for plain join buffers while even numbers are used for linked buffers NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 8 -@@ -1376,7 +1376,7 @@ +@@ -1390,7 +1390,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT The size of the buffer used for index blocks for MyISAM tables. Increase this to get better index handling (for all reads and multiple writes) to as much as you can afford NUMERIC_MIN_VALUE 0 @@ -287,7 +287,7 @@ NUMERIC_BLOCK_SIZE 4096 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -1583,7 +1583,7 @@ +@@ -1597,7 +1597,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 31536000 VARIABLE_SCOPE SESSION @@ -296,7 +296,7 @@ VARIABLE_COMMENT Timeout in seconds to wait for a lock before returning an error. NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 31536000 -@@ -1695,7 +1695,7 @@ +@@ -1709,7 +1709,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1 VARIABLE_SCOPE SESSION @@ -305,7 +305,7 @@ VARIABLE_COMMENT Write to slow log every #th slow query. Set to 1 to log everything. Increase it to reduce the size of the slow or the performance impact of slow logging NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 4294967295 -@@ -1737,7 +1737,7 @@ +@@ -1751,7 +1751,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1 VARIABLE_SCOPE SESSION @@ -314,7 +314,7 @@ VARIABLE_COMMENT Log some not critical warnings to the general log file.Value can be between 0 and 11. Higher values mean more verbosity NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 4294967295 -@@ -1779,7 +1779,7 @@ +@@ -1793,7 +1793,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 4194304 VARIABLE_SCOPE SESSION @@ -323,7 +323,7 @@ VARIABLE_COMMENT Max packet length to send to or receive from the server NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 1073741824 -@@ -1789,14 +1789,14 @@ +@@ -1803,14 +1803,14 @@ COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME MAX_BINLOG_CACHE_SIZE SESSION_VALUE NULL @@ -341,7 +341,7 @@ NUMERIC_BLOCK_SIZE 4096 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -1807,7 +1807,7 @@ +@@ -1821,7 +1821,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1073741824 VARIABLE_SCOPE GLOBAL @@ -350,7 +350,7 @@ VARIABLE_COMMENT Binary log will be rotated automatically when the size exceeds this value. NUMERIC_MIN_VALUE 4096 NUMERIC_MAX_VALUE 1073741824 -@@ -1817,14 +1817,14 @@ +@@ -1831,14 +1831,14 @@ COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME MAX_BINLOG_STMT_CACHE_SIZE SESSION_VALUE NULL @@ -368,16 +368,16 @@ NUMERIC_BLOCK_SIZE 4096 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -1835,7 +1835,7 @@ +@@ -1849,7 +1849,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 151 VARIABLE_SCOPE GLOBAL -VARIABLE_TYPE BIGINT UNSIGNED +VARIABLE_TYPE INT UNSIGNED VARIABLE_COMMENT The number of simultaneous clients allowed - NUMERIC_MIN_VALUE 1 + NUMERIC_MIN_VALUE 10 NUMERIC_MAX_VALUE 100000 -@@ -1849,7 +1849,7 @@ +@@ -1863,7 +1863,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 100 VARIABLE_SCOPE GLOBAL @@ -386,7 +386,7 @@ VARIABLE_COMMENT If there is more than this number of interrupted connections from a host this host will be blocked from further connections NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 4294967295 -@@ -1863,7 +1863,7 @@ +@@ -1877,7 +1877,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 20 VARIABLE_SCOPE SESSION @@ -395,7 +395,7 @@ VARIABLE_COMMENT Don't start more than this number of threads to handle INSERT DELAYED statements. If set to zero INSERT DELAYED will be not used NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 16384 -@@ -1891,7 +1891,7 @@ +@@ -1905,7 +1905,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 64 VARIABLE_SCOPE SESSION @@ -404,7 +404,7 @@ VARIABLE_COMMENT Max number of errors/warnings to store for a statement NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 65535 -@@ -1908,7 +1908,7 @@ +@@ -1922,7 +1922,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT Don't allow creation of heap tables bigger than this NUMERIC_MIN_VALUE 16384 @@ -413,7 +413,7 @@ NUMERIC_BLOCK_SIZE 1024 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -1919,7 +1919,7 @@ +@@ -1933,7 +1933,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 20 VARIABLE_SCOPE SESSION @@ -422,7 +422,7 @@ VARIABLE_COMMENT Don't start more than this number of threads to handle INSERT DELAYED statements. If set to zero INSERT DELAYED will be not used NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 16384 -@@ -1947,7 +1947,7 @@ +@@ -1961,7 +1961,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1024 VARIABLE_SCOPE SESSION @@ -431,7 +431,7 @@ VARIABLE_COMMENT Max number of bytes in sorted records NUMERIC_MIN_VALUE 4 NUMERIC_MAX_VALUE 8388608 -@@ -1961,7 +1961,7 @@ +@@ -1975,7 +1975,7 @@ GLOBAL_VALUE_ORIGIN AUTO DEFAULT_VALUE 1048576 VARIABLE_SCOPE GLOBAL @@ -440,16 +440,7 @@ VARIABLE_COMMENT The maximum BLOB length to send to server from mysql_send_long_data API. Deprecated option; use max_allowed_packet instead. NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 4294967295 -@@ -1975,7 +1975,7 @@ - GLOBAL_VALUE_ORIGIN COMPILE-TIME - DEFAULT_VALUE 16382 - VARIABLE_SCOPE GLOBAL --VARIABLE_TYPE BIGINT UNSIGNED -+VARIABLE_TYPE INT UNSIGNED - VARIABLE_COMMENT Maximum number of prepared statements in the server - NUMERIC_MIN_VALUE 0 - NUMERIC_MAX_VALUE 1048576 -@@ -1989,7 +1989,7 @@ +@@ -2003,7 +2003,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 4294967295 VARIABLE_SCOPE SESSION @@ -458,7 +449,7 @@ VARIABLE_COMMENT Limit assumed max number of seeks when looking up rows based on a key NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 4294967295 -@@ -2017,7 +2017,7 @@ +@@ -2031,7 +2031,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1024 VARIABLE_SCOPE SESSION @@ -467,7 +458,7 @@ VARIABLE_COMMENT The number of bytes to use when sorting BLOB or TEXT values (only the first max_sort_length bytes of each value are used; the rest are ignored) NUMERIC_MIN_VALUE 4 NUMERIC_MAX_VALUE 8388608 -@@ -2031,7 +2031,7 @@ +@@ -2045,7 +2045,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 0 VARIABLE_SCOPE SESSION @@ -476,7 +467,7 @@ VARIABLE_COMMENT Maximum stored procedure recursion depth NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 255 -@@ -2059,7 +2059,7 @@ +@@ -2073,7 +2073,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 32 VARIABLE_SCOPE SESSION @@ -485,7 +476,7 @@ VARIABLE_COMMENT Unused, will be removed. NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 4294967295 -@@ -2087,7 +2087,7 @@ +@@ -2101,7 +2101,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 4294967295 VARIABLE_SCOPE GLOBAL @@ -494,7 +485,7 @@ VARIABLE_COMMENT After this many write locks, allow some read locks to run in between NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 4294967295 -@@ -2101,7 +2101,7 @@ +@@ -2115,7 +2115,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1024 VARIABLE_SCOPE GLOBAL @@ -503,7 +494,7 @@ VARIABLE_COMMENT Unused NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 1048576 -@@ -2115,7 +2115,7 @@ +@@ -2129,7 +2129,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 8 VARIABLE_SCOPE GLOBAL @@ -512,7 +503,7 @@ VARIABLE_COMMENT Unused NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 1024 -@@ -2129,7 +2129,7 @@ +@@ -2143,7 +2143,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 0 VARIABLE_SCOPE SESSION @@ -521,7 +512,7 @@ VARIABLE_COMMENT Don't write queries to slow log that examine fewer rows than that NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 4294967295 -@@ -2143,7 +2143,7 @@ +@@ -2157,7 +2157,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 262144 VARIABLE_SCOPE SESSION @@ -530,7 +521,7 @@ VARIABLE_COMMENT Size of buffer to use when using MRR with range access NUMERIC_MIN_VALUE 8192 NUMERIC_MAX_VALUE 2147483647 -@@ -2157,10 +2157,10 @@ +@@ -2171,10 +2171,10 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 256 VARIABLE_SCOPE SESSION @@ -543,7 +534,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -2171,7 +2171,7 @@ +@@ -2185,7 +2185,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1024 VARIABLE_SCOPE GLOBAL @@ -552,7 +543,7 @@ VARIABLE_COMMENT Block size to be used for MyISAM index pages NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 16384 -@@ -2185,7 +2185,7 @@ +@@ -2199,7 +2199,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 6 VARIABLE_SCOPE GLOBAL @@ -561,7 +552,7 @@ VARIABLE_COMMENT Default pointer size to be used for MyISAM tables NUMERIC_MIN_VALUE 2 NUMERIC_MAX_VALUE 7 -@@ -2195,9 +2195,9 @@ +@@ -2209,9 +2209,9 @@ COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME MYISAM_MAX_SORT_FILE_SIZE SESSION_VALUE NULL @@ -573,7 +564,7 @@ VARIABLE_SCOPE GLOBAL VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT Don't use the fast sort index method to created index if the temporary file would get bigger than this -@@ -2209,14 +2209,14 @@ +@@ -2223,14 +2223,14 @@ COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME MYISAM_MMAP_SIZE SESSION_VALUE NULL @@ -591,7 +582,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY YES -@@ -2241,10 +2241,10 @@ +@@ -2255,10 +2255,10 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1 VARIABLE_SCOPE SESSION @@ -604,7 +595,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -2258,7 +2258,7 @@ +@@ -2272,7 +2272,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT The buffer that is allocated when sorting the index when doing a REPAIR or when creating indexes with CREATE INDEX or ALTER TABLE NUMERIC_MIN_VALUE 4096 @@ -613,7 +604,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -2311,7 +2311,7 @@ +@@ -2325,7 +2325,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 16384 VARIABLE_SCOPE SESSION @@ -622,7 +613,7 @@ VARIABLE_COMMENT Buffer length for TCP/IP and socket communication NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 1048576 -@@ -2325,7 +2325,7 @@ +@@ -2339,7 +2339,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 30 VARIABLE_SCOPE SESSION @@ -631,7 +622,7 @@ VARIABLE_COMMENT Number of seconds to wait for more data from a connection before aborting the read NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 31536000 -@@ -2339,7 +2339,7 @@ +@@ -2353,7 +2353,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 10 VARIABLE_SCOPE SESSION @@ -640,7 +631,7 @@ VARIABLE_COMMENT If a read on a communication port is interrupted, retry this many times before giving up NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 4294967295 -@@ -2353,7 +2353,7 @@ +@@ -2367,7 +2367,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 60 VARIABLE_SCOPE SESSION @@ -649,7 +640,7 @@ VARIABLE_COMMENT Number of seconds to wait for a block to be written to a connection before aborting the write NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 31536000 -@@ -2423,7 +2423,7 @@ +@@ -2437,7 +2437,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1 VARIABLE_SCOPE SESSION @@ -658,7 +649,7 @@ VARIABLE_COMMENT Controls the heuristic(s) applied during query optimization to prune less-promising partial plans from the optimizer search space. Meaning: 0 - do not apply any heuristic, thus perform exhaustive search; 1 - prune plans based on number of retrieved rows NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 1 -@@ -2437,7 +2437,7 @@ +@@ -2451,7 +2451,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 62 VARIABLE_SCOPE SESSION @@ -667,7 +658,7 @@ VARIABLE_COMMENT Maximum depth of search performed by the query optimizer. Values larger than the number of relations in a query result in better query plans, but take longer to compile a query. Values smaller than the number of tables in a relation result in faster optimization, but may produce very bad query plans. If set to 0, the system will automatically pick a reasonable value; if set to 63, the optimizer will switch to the original find_best search. NOTE: The value 63 and its associated behaviour is deprecated. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 63 -@@ -2451,7 +2451,7 @@ +@@ -2465,7 +2465,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 100 VARIABLE_SCOPE SESSION @@ -676,7 +667,7 @@ VARIABLE_COMMENT Controls number of record samples to check condition selectivity NUMERIC_MIN_VALUE 10 NUMERIC_MAX_VALUE 4294967295 -@@ -2479,7 +2479,7 @@ +@@ -2493,7 +2493,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1 VARIABLE_SCOPE SESSION @@ -685,7 +676,7 @@ VARIABLE_COMMENT Controls selectivity of which conditions the optimizer takes into account to calculate cardinality of a partial join when it searches for the best execution plan Meaning: 1 - use selectivity of index backed range conditions to calculate the cardinality of a partial join if the last joined table is accessed by full table scan or an index scan, 2 - use selectivity of index backed range conditions to calculate the cardinality of a partial join in any case, 3 - additionally always use selectivity of range conditions that are not backed by any index to calculate the cardinality of a partial join, 4 - use histograms to calculate selectivity of range conditions that are not backed by any index to calculate the cardinality of a partial join.5 - additionally use selectivity of certain non-range predicates calculated on record samples NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 5 -@@ -2507,7 +2507,7 @@ +@@ -2521,7 +2521,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -694,7 +685,7 @@ VARIABLE_COMMENT Maximum number of instrumented user@host accounts. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2521,7 +2521,7 @@ +@@ -2535,7 +2535,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -703,7 +694,7 @@ VARIABLE_COMMENT Size of the statement digest. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 200 -@@ -2535,7 +2535,7 @@ +@@ -2549,7 +2549,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -712,7 +703,7 @@ VARIABLE_COMMENT Number of rows in EVENTS_STAGES_HISTORY_LONG. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2549,7 +2549,7 @@ +@@ -2563,7 +2563,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -721,7 +712,7 @@ VARIABLE_COMMENT Number of rows per thread in EVENTS_STAGES_HISTORY. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1024 -@@ -2563,7 +2563,7 @@ +@@ -2577,7 +2577,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -730,7 +721,7 @@ VARIABLE_COMMENT Number of rows in EVENTS_STATEMENTS_HISTORY_LONG. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2577,7 +2577,7 @@ +@@ -2591,7 +2591,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -739,7 +730,7 @@ VARIABLE_COMMENT Number of rows per thread in EVENTS_STATEMENTS_HISTORY. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1024 -@@ -2591,7 +2591,7 @@ +@@ -2605,7 +2605,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -748,7 +739,7 @@ VARIABLE_COMMENT Number of rows in EVENTS_WAITS_HISTORY_LONG. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2605,7 +2605,7 @@ +@@ -2619,7 +2619,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -757,7 +748,7 @@ VARIABLE_COMMENT Number of rows per thread in EVENTS_WAITS_HISTORY. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1024 -@@ -2619,7 +2619,7 @@ +@@ -2633,7 +2633,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -766,7 +757,7 @@ VARIABLE_COMMENT Maximum number of instrumented hosts. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2633,7 +2633,7 @@ +@@ -2647,7 +2647,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 80 VARIABLE_SCOPE GLOBAL @@ -775,7 +766,7 @@ VARIABLE_COMMENT Maximum number of condition instruments. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 256 -@@ -2647,7 +2647,7 @@ +@@ -2661,7 +2661,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -784,7 +775,7 @@ VARIABLE_COMMENT Maximum number of instrumented condition objects. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2661,7 +2661,7 @@ +@@ -2675,7 +2675,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1024 VARIABLE_SCOPE GLOBAL @@ -793,7 +784,7 @@ VARIABLE_COMMENT Maximum length considered for digest text, when stored in performance_schema tables. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 1048576 -@@ -2675,7 +2675,7 @@ +@@ -2689,7 +2689,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 50 VARIABLE_SCOPE GLOBAL @@ -802,7 +793,7 @@ VARIABLE_COMMENT Maximum number of file instruments. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 256 -@@ -2689,7 +2689,7 @@ +@@ -2703,7 +2703,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 32768 VARIABLE_SCOPE GLOBAL @@ -811,7 +802,7 @@ VARIABLE_COMMENT Maximum number of opened instrumented files. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 1048576 -@@ -2703,7 +2703,7 @@ +@@ -2717,7 +2717,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -820,7 +811,7 @@ VARIABLE_COMMENT Maximum number of instrumented files. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2717,7 +2717,7 @@ +@@ -2731,7 +2731,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 200 VARIABLE_SCOPE GLOBAL @@ -829,7 +820,7 @@ VARIABLE_COMMENT Maximum number of mutex instruments. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 256 -@@ -2731,7 +2731,7 @@ +@@ -2745,7 +2745,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -838,7 +829,7 @@ VARIABLE_COMMENT Maximum number of instrumented MUTEX objects. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 104857600 -@@ -2745,7 +2745,7 @@ +@@ -2759,7 +2759,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 40 VARIABLE_SCOPE GLOBAL @@ -847,7 +838,7 @@ VARIABLE_COMMENT Maximum number of rwlock instruments. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 256 -@@ -2759,7 +2759,7 @@ +@@ -2773,7 +2773,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -856,7 +847,7 @@ VARIABLE_COMMENT Maximum number of instrumented RWLOCK objects. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 104857600 -@@ -2773,7 +2773,7 @@ +@@ -2787,7 +2787,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 10 VARIABLE_SCOPE GLOBAL @@ -865,7 +856,7 @@ VARIABLE_COMMENT Maximum number of socket instruments. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 256 -@@ -2787,7 +2787,7 @@ +@@ -2801,7 +2801,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -874,7 +865,7 @@ VARIABLE_COMMENT Maximum number of opened instrumented sockets. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2801,7 +2801,7 @@ +@@ -2815,7 +2815,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 150 VARIABLE_SCOPE GLOBAL @@ -883,7 +874,7 @@ VARIABLE_COMMENT Maximum number of stage instruments. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 256 -@@ -2815,7 +2815,7 @@ +@@ -2829,7 +2829,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 178 VARIABLE_SCOPE GLOBAL @@ -892,7 +883,7 @@ VARIABLE_COMMENT Maximum number of statement instruments. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 256 -@@ -2829,7 +2829,7 @@ +@@ -2843,7 +2843,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -901,7 +892,7 @@ VARIABLE_COMMENT Maximum number of opened instrumented tables. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2843,7 +2843,7 @@ +@@ -2857,7 +2857,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -910,7 +901,7 @@ VARIABLE_COMMENT Maximum number of instrumented tables. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2857,7 +2857,7 @@ +@@ -2871,7 +2871,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 50 VARIABLE_SCOPE GLOBAL @@ -919,7 +910,7 @@ VARIABLE_COMMENT Maximum number of thread instruments. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 256 -@@ -2871,7 +2871,7 @@ +@@ -2885,7 +2885,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -928,7 +919,7 @@ VARIABLE_COMMENT Maximum number of instrumented threads. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2885,7 +2885,7 @@ +@@ -2899,7 +2899,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -937,7 +928,7 @@ VARIABLE_COMMENT Size of session attribute string buffer per thread. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2899,7 +2899,7 @@ +@@ -2913,7 +2913,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 100 VARIABLE_SCOPE GLOBAL @@ -946,7 +937,7 @@ VARIABLE_COMMENT Maximum number of rows in SETUP_ACTORS. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 1024 -@@ -2913,7 +2913,7 @@ +@@ -2927,7 +2927,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 100 VARIABLE_SCOPE GLOBAL @@ -955,7 +946,7 @@ VARIABLE_COMMENT Maximum number of rows in SETUP_OBJECTS. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 1048576 -@@ -2927,7 +2927,7 @@ +@@ -2941,7 +2941,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -964,7 +955,7 @@ VARIABLE_COMMENT Maximum number of instrumented users. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2997,7 +2997,7 @@ +@@ -3011,7 +3011,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 32768 VARIABLE_SCOPE SESSION @@ -973,7 +964,7 @@ VARIABLE_COMMENT The size of the buffer that is allocated when preloading indexes NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 1073741824 -@@ -3025,7 +3025,7 @@ +@@ -3039,7 +3039,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 15 VARIABLE_SCOPE SESSION @@ -982,7 +973,7 @@ VARIABLE_COMMENT Number of statements about which profiling information is maintained. If set to 0, no profiles are stored. See SHOW PROFILES. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 100 -@@ -3039,7 +3039,7 @@ +@@ -3053,7 +3053,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 5 VARIABLE_SCOPE SESSION @@ -991,7 +982,7 @@ VARIABLE_COMMENT Seconds between sending progress reports to the client for time-consuming statements. Set to 0 to disable progress reporting. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 4294967295 -@@ -3095,10 +3095,10 @@ +@@ -3109,10 +3109,10 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 0 VARIABLE_SCOPE SESSION ONLY @@ -1004,7 +995,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -3109,7 +3109,7 @@ +@@ -3123,7 +3123,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 16384 VARIABLE_SCOPE SESSION @@ -1013,7 +1004,7 @@ VARIABLE_COMMENT Allocation block size for query parsing and execution NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 4294967295 -@@ -3123,7 +3123,7 @@ +@@ -3137,7 +3137,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1048576 VARIABLE_SCOPE GLOBAL @@ -1022,7 +1013,7 @@ VARIABLE_COMMENT Don't cache results that are bigger than this NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 4294967295 -@@ -3137,7 +3137,7 @@ +@@ -3151,7 +3151,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 4096 VARIABLE_SCOPE GLOBAL @@ -1031,7 +1022,7 @@ VARIABLE_COMMENT The minimum size for blocks allocated by the query cache NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 4294967295 -@@ -3154,7 +3154,7 @@ +@@ -3168,7 +3168,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT The memory allocated to store results from old queries NUMERIC_MIN_VALUE 0 @@ -1040,7 +1031,7 @@ NUMERIC_BLOCK_SIZE 1024 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -3207,7 +3207,7 @@ +@@ -3221,7 +3221,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 24576 VARIABLE_SCOPE SESSION @@ -1049,7 +1040,7 @@ VARIABLE_COMMENT Persistent buffer for query parsing and execution NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 4294967295 -@@ -3221,7 +3221,7 @@ +@@ -3235,7 +3235,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 4096 VARIABLE_SCOPE SESSION @@ -1058,7 +1049,7 @@ VARIABLE_COMMENT Allocation block size for storing ranges during optimization NUMERIC_MIN_VALUE 4096 NUMERIC_MAX_VALUE 4294967295 -@@ -3235,7 +3235,7 @@ +@@ -3249,7 +3249,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 131072 VARIABLE_SCOPE SESSION @@ -1067,7 +1058,7 @@ VARIABLE_COMMENT Each thread that does a sequential scan allocates a buffer of this size for each table it scans. If you do many sequential scans, you may want to increase this value NUMERIC_MIN_VALUE 8192 NUMERIC_MAX_VALUE 2147483647 -@@ -3263,7 +3263,7 @@ +@@ -3277,7 +3277,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 262144 VARIABLE_SCOPE SESSION @@ -1076,7 +1067,7 @@ VARIABLE_COMMENT When reading rows in sorted order after a sort, the rows are read through this buffer to avoid a disk seeks NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 2147483647 -@@ -3277,10 +3277,10 @@ +@@ -3291,10 +3291,10 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 8388608 VARIABLE_SCOPE SESSION @@ -1089,7 +1080,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -3319,7 +3319,7 @@ +@@ -3333,7 +3333,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE 0 VARIABLE_SCOPE SESSION @@ -1098,7 +1089,7 @@ VARIABLE_COMMENT Uniquely identifies the server instance in the community of replication partners NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 4294967295 -@@ -3417,7 +3417,7 @@ +@@ -3431,7 +3431,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1073741824 VARIABLE_SCOPE GLOBAL @@ -1107,7 +1098,7 @@ VARIABLE_COMMENT The maximum packet length to sent successfully from the master to slave. NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 1073741824 -@@ -3431,7 +3431,7 @@ +@@ -3445,7 +3445,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 2 VARIABLE_SCOPE GLOBAL @@ -1116,7 +1107,7 @@ VARIABLE_COMMENT If creating the thread takes longer than this value (in seconds), the Slow_launch_threads counter will be incremented NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 31536000 -@@ -3490,7 +3490,7 @@ +@@ -3504,7 +3504,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT Each thread that needs to do a sort allocates a buffer of this size NUMERIC_MIN_VALUE 1024 @@ -1125,7 +1116,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -3767,7 +3767,7 @@ +@@ -3781,7 +3781,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 256 VARIABLE_SCOPE GLOBAL @@ -1134,7 +1125,7 @@ VARIABLE_COMMENT The soft upper limit for number of cached stored routines for one connection. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 524288 -@@ -3837,7 +3837,7 @@ +@@ -3851,7 +3851,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 400 VARIABLE_SCOPE GLOBAL @@ -1142,17 +1133,17 @@ +VARIABLE_TYPE INT UNSIGNED VARIABLE_COMMENT The number of cached table definitions NUMERIC_MIN_VALUE 400 - NUMERIC_MAX_VALUE 524288 -@@ -3851,7 +3851,7 @@ - GLOBAL_VALUE_ORIGIN COMPILE-TIME + NUMERIC_MAX_VALUE 2097152 +@@ -3865,7 +3865,7 @@ + GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE 2000 VARIABLE_SCOPE GLOBAL -VARIABLE_TYPE BIGINT UNSIGNED +VARIABLE_TYPE INT UNSIGNED VARIABLE_COMMENT The number of cached open tables - NUMERIC_MIN_VALUE 1 + NUMERIC_MIN_VALUE 10 NUMERIC_MAX_VALUE 1048576 -@@ -3865,7 +3865,7 @@ +@@ -3879,7 +3879,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 0 VARIABLE_SCOPE GLOBAL @@ -1161,7 +1152,7 @@ VARIABLE_COMMENT How many threads we should keep in a cache for reuse NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 16384 -@@ -3879,7 +3879,7 @@ +@@ -3893,7 +3893,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 10 VARIABLE_SCOPE GLOBAL @@ -1170,7 +1161,7 @@ VARIABLE_COMMENT Permits the application to give the threads system a hint for the desired number of threads that should be run at the same time.This variable has no effect, and is deprecated. It will be removed in a future release. NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 512 -@@ -3994,7 +3994,7 @@ +@@ -4008,7 +4008,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT If an internal in-memory temporary table exceeds this size, MariaDB will automatically convert it to an on-disk MyISAM or Aria table. NUMERIC_MIN_VALUE 1024 @@ -1179,7 +1170,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -4005,7 +4005,7 @@ +@@ -4019,7 +4019,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 8192 VARIABLE_SCOPE SESSION @@ -1188,7 +1179,7 @@ VARIABLE_COMMENT Allocation block size for transactions to be stored in binary log NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 134217728 -@@ -4019,7 +4019,7 @@ +@@ -4033,7 +4033,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 4096 VARIABLE_SCOPE SESSION @@ -1197,7 +1188,7 @@ VARIABLE_COMMENT Persistent buffer for transactions to be stored in binary log NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 134217728 -@@ -4117,7 +4117,7 @@ +@@ -4131,7 +4131,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 28800 VARIABLE_SCOPE SESSION @@ -1206,7 +1197,7 @@ VARIABLE_COMMENT The number of seconds the server waits for activity on a connection before closing it NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 31536000 -@@ -4221,7 +4221,7 @@ +@@ -4235,7 +4235,7 @@ COMMAND_LINE_ARGUMENT OPTIONAL VARIABLE_NAME OPEN_FILES_LIMIT VARIABLE_SCOPE GLOBAL @@ -1215,7 +1206,7 @@ VARIABLE_COMMENT If this is not 0, then mysqld will use this value to reserve file descriptors to use with setrlimit(). If this value is 0 then mysqld will reserve max_connections*5 or max_connections + table_cache*2 (whichever is larger) number of file descriptors NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 4294967295 -@@ -4234,7 +4234,7 @@ +@@ -4248,7 +4248,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT Sets the internal state of the RAND() generator for replication purposes NUMERIC_MIN_VALUE 0 @@ -1224,7 +1215,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -4244,7 +4244,7 @@ +@@ -4258,7 +4258,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT Sets the internal state of the RAND() generator for replication purposes NUMERIC_MIN_VALUE 0 @@ -1233,7 +1224,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -4329,7 +4329,7 @@ +@@ -4343,7 +4343,7 @@ VARIABLE_NAME LOG_TC_SIZE GLOBAL_VALUE_ORIGIN AUTO VARIABLE_SCOPE GLOBAL diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result index 2b3ecc367..4da76bdae 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result @@ -3854,7 +3854,7 @@ VARIABLE_SCOPE GLOBAL VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT The number of cached table definitions NUMERIC_MIN_VALUE 400 -NUMERIC_MAX_VALUE 524288 +NUMERIC_MAX_VALUE 2097152 NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff index 980b06a10..80e08c6f6 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff +++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff @@ -89,7 +89,7 @@ VARIABLE_COMMENT The number of seconds the mysqld server is waiting for a connect packet before responding with 'Bad handshake' NUMERIC_MIN_VALUE 2 NUMERIC_MAX_VALUE 31536000 -@@ -519,7 +519,7 @@ +@@ -533,7 +533,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 15 VARIABLE_SCOPE SESSION @@ -98,7 +98,7 @@ VARIABLE_COMMENT Long search depth for the two-step deadlock detection NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 33 -@@ -533,7 +533,7 @@ +@@ -547,7 +547,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 4 VARIABLE_SCOPE SESSION @@ -107,7 +107,7 @@ VARIABLE_COMMENT Short search depth for the two-step deadlock detection NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 32 -@@ -547,7 +547,7 @@ +@@ -561,7 +561,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 50000000 VARIABLE_SCOPE SESSION @@ -116,7 +116,7 @@ VARIABLE_COMMENT Long timeout for the two-step deadlock detection (in microseconds) NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 4294967295 -@@ -561,7 +561,7 @@ +@@ -575,7 +575,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 10000 VARIABLE_SCOPE SESSION @@ -125,7 +125,7 @@ VARIABLE_COMMENT Short timeout for the two-step deadlock detection (in microseconds) NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 4294967295 -@@ -631,7 +631,7 @@ +@@ -645,7 +645,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 0 VARIABLE_SCOPE SESSION @@ -134,7 +134,7 @@ VARIABLE_COMMENT The default week format used by WEEK() functions NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 7 -@@ -645,7 +645,7 @@ +@@ -659,7 +659,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 100 VARIABLE_SCOPE GLOBAL @@ -143,7 +143,7 @@ VARIABLE_COMMENT After inserting delayed_insert_limit rows, the INSERT DELAYED handler will check if there are any SELECT statements pending. If so, it allows these to execute before continuing. NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 4294967295 -@@ -659,7 +659,7 @@ +@@ -673,7 +673,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 300 VARIABLE_SCOPE GLOBAL @@ -152,7 +152,7 @@ VARIABLE_COMMENT How long a INSERT DELAYED thread should wait for INSERT statements before terminating NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 31536000 -@@ -673,7 +673,7 @@ +@@ -687,7 +687,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1000 VARIABLE_SCOPE GLOBAL @@ -161,7 +161,7 @@ VARIABLE_COMMENT What size queue (in rows) should be allocated for handling INSERT DELAYED. If the queue becomes full, any client that does INSERT DELAYED will wait until there is room in the queue again NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 4294967295 -@@ -701,7 +701,7 @@ +@@ -715,7 +715,7 @@ GLOBAL_VALUE_ORIGIN SQL DEFAULT_VALUE 4 VARIABLE_SCOPE SESSION @@ -170,7 +170,7 @@ VARIABLE_COMMENT Precision of the result of '/' operator will be increased on that value NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 30 -@@ -813,7 +813,7 @@ +@@ -827,7 +827,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 0 VARIABLE_SCOPE GLOBAL @@ -179,7 +179,7 @@ VARIABLE_COMMENT If non-zero, binary logs will be purged after expire_logs_days days; possible purges happen at startup and at binary log rotation NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 99 -@@ -855,7 +855,7 @@ +@@ -869,7 +869,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1 VARIABLE_SCOPE GLOBAL @@ -188,7 +188,7 @@ VARIABLE_COMMENT The number of connections on extra-port NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 100000 -@@ -897,7 +897,7 @@ +@@ -911,7 +911,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 0 VARIABLE_SCOPE GLOBAL @@ -197,7 +197,7 @@ VARIABLE_COMMENT A dedicated thread is created to flush all tables at the given interval NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 31536000 -@@ -939,7 +939,7 @@ +@@ -953,7 +953,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 84 VARIABLE_SCOPE GLOBAL @@ -206,7 +206,7 @@ VARIABLE_COMMENT The maximum length of the word to be included in a FULLTEXT index. Note: FULLTEXT indexes must be rebuilt after changing this variable NUMERIC_MIN_VALUE 10 NUMERIC_MAX_VALUE 84 -@@ -953,7 +953,7 @@ +@@ -967,7 +967,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 4 VARIABLE_SCOPE GLOBAL @@ -215,7 +215,7 @@ VARIABLE_COMMENT The minimum length of the word to be included in a FULLTEXT index. Note: FULLTEXT indexes must be rebuilt after changing this variable NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 84 -@@ -967,7 +967,7 @@ +@@ -981,7 +981,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 20 VARIABLE_SCOPE GLOBAL @@ -224,7 +224,7 @@ VARIABLE_COMMENT Number of best matches to use for query expansion NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 1000 -@@ -1026,7 +1026,7 @@ +@@ -1040,7 +1040,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT The maximum length of the result of function GROUP_CONCAT() NUMERIC_MIN_VALUE 4 @@ -233,7 +233,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -1261,7 +1261,7 @@ +@@ -1275,7 +1275,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 0 VARIABLE_SCOPE SESSION @@ -242,7 +242,7 @@ VARIABLE_COMMENT Number of bytes used for a histogram. If set to 0, no histograms are created by ANALYZE. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 255 -@@ -1289,7 +1289,7 @@ +@@ -1303,7 +1303,7 @@ GLOBAL_VALUE_ORIGIN AUTO DEFAULT_VALUE 128 VARIABLE_SCOPE GLOBAL @@ -251,7 +251,7 @@ VARIABLE_COMMENT How many host names should be cached to avoid resolving. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 65536 -@@ -1401,7 +1401,7 @@ +@@ -1415,7 +1415,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 28800 VARIABLE_SCOPE SESSION @@ -260,7 +260,7 @@ VARIABLE_COMMENT The number of seconds the server waits for activity on an interactive connection before closing it NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 31536000 -@@ -1432,7 +1432,7 @@ +@@ -1446,7 +1446,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT The size of the buffer that is used for joins NUMERIC_MIN_VALUE 128 @@ -269,7 +269,7 @@ NUMERIC_BLOCK_SIZE 128 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -1457,7 +1457,7 @@ +@@ -1471,7 +1471,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 2 VARIABLE_SCOPE SESSION @@ -278,7 +278,7 @@ VARIABLE_COMMENT Controls what join operations can be executed with join buffers. Odd numbers are used for plain join buffers while even numbers are used for linked buffers NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 8 -@@ -1488,7 +1488,7 @@ +@@ -1502,7 +1502,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT The size of the buffer used for index blocks for MyISAM tables. Increase this to get better index handling (for all reads and multiple writes) to as much as you can afford NUMERIC_MIN_VALUE 0 @@ -287,7 +287,7 @@ NUMERIC_BLOCK_SIZE 4096 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -1709,7 +1709,7 @@ +@@ -1723,7 +1723,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 31536000 VARIABLE_SCOPE SESSION @@ -296,7 +296,7 @@ VARIABLE_COMMENT Timeout in seconds to wait for a lock before returning an error. NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 31536000 -@@ -1863,7 +1863,7 @@ +@@ -1877,7 +1877,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1 VARIABLE_SCOPE SESSION @@ -305,7 +305,7 @@ VARIABLE_COMMENT Write to slow log every #th slow query. Set to 1 to log everything. Increase it to reduce the size of the slow or the performance impact of slow logging NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 4294967295 -@@ -1905,7 +1905,7 @@ +@@ -1919,7 +1919,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1 VARIABLE_SCOPE SESSION @@ -314,7 +314,7 @@ VARIABLE_COMMENT Log some not critical warnings to the general log file.Value can be between 0 and 11. Higher values mean more verbosity NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 4294967295 -@@ -1961,7 +1961,7 @@ +@@ -1975,7 +1975,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 4194304 VARIABLE_SCOPE SESSION @@ -323,7 +323,7 @@ VARIABLE_COMMENT Max packet length to send to or receive from the server NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 1073741824 -@@ -1971,14 +1971,14 @@ +@@ -1985,14 +1985,14 @@ COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME MAX_BINLOG_CACHE_SIZE SESSION_VALUE NULL @@ -341,7 +341,7 @@ NUMERIC_BLOCK_SIZE 4096 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -1989,7 +1989,7 @@ +@@ -2003,7 +2003,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1073741824 VARIABLE_SCOPE GLOBAL @@ -350,7 +350,7 @@ VARIABLE_COMMENT Binary log will be rotated automatically when the size exceeds this value. NUMERIC_MIN_VALUE 4096 NUMERIC_MAX_VALUE 1073741824 -@@ -1999,14 +1999,14 @@ +@@ -2013,14 +2013,14 @@ COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME MAX_BINLOG_STMT_CACHE_SIZE SESSION_VALUE NULL @@ -368,16 +368,16 @@ NUMERIC_BLOCK_SIZE 4096 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -2017,7 +2017,7 @@ +@@ -2031,7 +2031,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 151 VARIABLE_SCOPE GLOBAL -VARIABLE_TYPE BIGINT UNSIGNED +VARIABLE_TYPE INT UNSIGNED VARIABLE_COMMENT The number of simultaneous clients allowed - NUMERIC_MIN_VALUE 1 + NUMERIC_MIN_VALUE 10 NUMERIC_MAX_VALUE 100000 -@@ -2031,7 +2031,7 @@ +@@ -2045,7 +2045,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 100 VARIABLE_SCOPE GLOBAL @@ -386,7 +386,7 @@ VARIABLE_COMMENT If there is more than this number of interrupted connections from a host this host will be blocked from further connections NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 4294967295 -@@ -2045,7 +2045,7 @@ +@@ -2059,7 +2059,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 20 VARIABLE_SCOPE SESSION @@ -395,7 +395,7 @@ VARIABLE_COMMENT Don't start more than this number of threads to handle INSERT DELAYED statements. If set to zero INSERT DELAYED will be not used NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 16384 -@@ -2073,7 +2073,7 @@ +@@ -2087,7 +2087,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 64 VARIABLE_SCOPE SESSION @@ -404,7 +404,7 @@ VARIABLE_COMMENT Max number of errors/warnings to store for a statement NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 65535 -@@ -2090,7 +2090,7 @@ +@@ -2104,7 +2104,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT Don't allow creation of heap tables bigger than this NUMERIC_MIN_VALUE 16384 @@ -413,7 +413,7 @@ NUMERIC_BLOCK_SIZE 1024 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -2101,7 +2101,7 @@ +@@ -2115,7 +2115,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 20 VARIABLE_SCOPE SESSION @@ -422,7 +422,7 @@ VARIABLE_COMMENT Don't start more than this number of threads to handle INSERT DELAYED statements. If set to zero INSERT DELAYED will be not used NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 16384 -@@ -2129,7 +2129,7 @@ +@@ -2143,7 +2143,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1024 VARIABLE_SCOPE SESSION @@ -431,7 +431,7 @@ VARIABLE_COMMENT Max number of bytes in sorted records NUMERIC_MIN_VALUE 4 NUMERIC_MAX_VALUE 8388608 -@@ -2143,7 +2143,7 @@ +@@ -2157,7 +2157,7 @@ GLOBAL_VALUE_ORIGIN AUTO DEFAULT_VALUE 1048576 VARIABLE_SCOPE GLOBAL @@ -440,16 +440,7 @@ VARIABLE_COMMENT The maximum BLOB length to send to server from mysql_send_long_data API. Deprecated option; use max_allowed_packet instead. NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 4294967295 -@@ -2157,7 +2157,7 @@ - GLOBAL_VALUE_ORIGIN COMPILE-TIME - DEFAULT_VALUE 16382 - VARIABLE_SCOPE GLOBAL --VARIABLE_TYPE BIGINT UNSIGNED -+VARIABLE_TYPE INT UNSIGNED - VARIABLE_COMMENT Maximum number of prepared statements in the server - NUMERIC_MIN_VALUE 0 - NUMERIC_MAX_VALUE 1048576 -@@ -2185,7 +2185,7 @@ +@@ -2199,7 +2199,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 4294967295 VARIABLE_SCOPE SESSION @@ -458,7 +449,7 @@ VARIABLE_COMMENT Limit assumed max number of seeks when looking up rows based on a key NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 4294967295 -@@ -2213,7 +2213,7 @@ +@@ -2227,7 +2227,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1024 VARIABLE_SCOPE SESSION @@ -467,7 +458,7 @@ VARIABLE_COMMENT The number of bytes to use when sorting BLOB or TEXT values (only the first max_sort_length bytes of each value are used; the rest are ignored) NUMERIC_MIN_VALUE 4 NUMERIC_MAX_VALUE 8388608 -@@ -2227,7 +2227,7 @@ +@@ -2241,7 +2241,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 0 VARIABLE_SCOPE SESSION @@ -476,7 +467,7 @@ VARIABLE_COMMENT Maximum stored procedure recursion depth NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 255 -@@ -2255,7 +2255,7 @@ +@@ -2269,7 +2269,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 32 VARIABLE_SCOPE SESSION @@ -485,7 +476,7 @@ VARIABLE_COMMENT Unused, will be removed. NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 4294967295 -@@ -2283,7 +2283,7 @@ +@@ -2297,7 +2297,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 4294967295 VARIABLE_SCOPE GLOBAL @@ -494,7 +485,7 @@ VARIABLE_COMMENT After this many write locks, allow some read locks to run in between NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 4294967295 -@@ -2297,7 +2297,7 @@ +@@ -2311,7 +2311,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1024 VARIABLE_SCOPE GLOBAL @@ -503,7 +494,7 @@ VARIABLE_COMMENT Unused NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 1048576 -@@ -2311,7 +2311,7 @@ +@@ -2325,7 +2325,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 8 VARIABLE_SCOPE GLOBAL @@ -512,7 +503,7 @@ VARIABLE_COMMENT Unused NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 1024 -@@ -2325,7 +2325,7 @@ +@@ -2339,7 +2339,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 0 VARIABLE_SCOPE SESSION @@ -521,7 +512,7 @@ VARIABLE_COMMENT Don't write queries to slow log that examine fewer rows than that NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 4294967295 -@@ -2339,7 +2339,7 @@ +@@ -2353,7 +2353,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 262144 VARIABLE_SCOPE SESSION @@ -530,7 +521,7 @@ VARIABLE_COMMENT Size of buffer to use when using MRR with range access NUMERIC_MIN_VALUE 8192 NUMERIC_MAX_VALUE 2147483647 -@@ -2353,10 +2353,10 @@ +@@ -2367,10 +2367,10 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 256 VARIABLE_SCOPE SESSION @@ -543,7 +534,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -2367,7 +2367,7 @@ +@@ -2381,7 +2381,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1024 VARIABLE_SCOPE GLOBAL @@ -552,7 +543,7 @@ VARIABLE_COMMENT Block size to be used for MyISAM index pages NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 16384 -@@ -2381,7 +2381,7 @@ +@@ -2395,7 +2395,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 6 VARIABLE_SCOPE GLOBAL @@ -561,7 +552,7 @@ VARIABLE_COMMENT Default pointer size to be used for MyISAM tables NUMERIC_MIN_VALUE 2 NUMERIC_MAX_VALUE 7 -@@ -2391,9 +2391,9 @@ +@@ -2405,9 +2405,9 @@ COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME MYISAM_MAX_SORT_FILE_SIZE SESSION_VALUE NULL @@ -573,7 +564,7 @@ VARIABLE_SCOPE GLOBAL VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT Don't use the fast sort index method to created index if the temporary file would get bigger than this -@@ -2405,14 +2405,14 @@ +@@ -2419,14 +2419,14 @@ COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME MYISAM_MMAP_SIZE SESSION_VALUE NULL @@ -591,7 +582,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY YES -@@ -2437,10 +2437,10 @@ +@@ -2451,10 +2451,10 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1 VARIABLE_SCOPE SESSION @@ -604,7 +595,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -2454,7 +2454,7 @@ +@@ -2468,7 +2468,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT The buffer that is allocated when sorting the index when doing a REPAIR or when creating indexes with CREATE INDEX or ALTER TABLE NUMERIC_MIN_VALUE 4096 @@ -613,7 +604,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -2507,7 +2507,7 @@ +@@ -2521,7 +2521,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 16384 VARIABLE_SCOPE SESSION @@ -622,7 +613,7 @@ VARIABLE_COMMENT Buffer length for TCP/IP and socket communication NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 1048576 -@@ -2521,7 +2521,7 @@ +@@ -2535,7 +2535,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 30 VARIABLE_SCOPE SESSION @@ -631,7 +622,7 @@ VARIABLE_COMMENT Number of seconds to wait for more data from a connection before aborting the read NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 31536000 -@@ -2535,7 +2535,7 @@ +@@ -2549,7 +2549,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 10 VARIABLE_SCOPE SESSION @@ -640,7 +631,7 @@ VARIABLE_COMMENT If a read on a communication port is interrupted, retry this many times before giving up NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 4294967295 -@@ -2549,7 +2549,7 @@ +@@ -2563,7 +2563,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 60 VARIABLE_SCOPE SESSION @@ -649,7 +640,7 @@ VARIABLE_COMMENT Number of seconds to wait for a block to be written to a connection before aborting the write NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 31536000 -@@ -2619,7 +2619,7 @@ +@@ -2633,7 +2633,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1 VARIABLE_SCOPE SESSION @@ -658,7 +649,7 @@ VARIABLE_COMMENT Controls the heuristic(s) applied during query optimization to prune less-promising partial plans from the optimizer search space. Meaning: 0 - do not apply any heuristic, thus perform exhaustive search; 1 - prune plans based on number of retrieved rows NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 1 -@@ -2633,7 +2633,7 @@ +@@ -2647,7 +2647,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 62 VARIABLE_SCOPE SESSION @@ -667,7 +658,7 @@ VARIABLE_COMMENT Maximum depth of search performed by the query optimizer. Values larger than the number of relations in a query result in better query plans, but take longer to compile a query. Values smaller than the number of tables in a relation result in faster optimization, but may produce very bad query plans. If set to 0, the system will automatically pick a reasonable value; if set to 63, the optimizer will switch to the original find_best search. NOTE: The value 63 and its associated behaviour is deprecated. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 63 -@@ -2647,7 +2647,7 @@ +@@ -2661,7 +2661,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 100 VARIABLE_SCOPE SESSION @@ -676,7 +667,7 @@ VARIABLE_COMMENT Controls number of record samples to check condition selectivity NUMERIC_MIN_VALUE 10 NUMERIC_MAX_VALUE 4294967295 -@@ -2675,7 +2675,7 @@ +@@ -2689,7 +2689,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1 VARIABLE_SCOPE SESSION @@ -685,7 +676,7 @@ VARIABLE_COMMENT Controls selectivity of which conditions the optimizer takes into account to calculate cardinality of a partial join when it searches for the best execution plan Meaning: 1 - use selectivity of index backed range conditions to calculate the cardinality of a partial join if the last joined table is accessed by full table scan or an index scan, 2 - use selectivity of index backed range conditions to calculate the cardinality of a partial join in any case, 3 - additionally always use selectivity of range conditions that are not backed by any index to calculate the cardinality of a partial join, 4 - use histograms to calculate selectivity of range conditions that are not backed by any index to calculate the cardinality of a partial join.5 - additionally use selectivity of certain non-range predicates calculated on record samples NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 5 -@@ -2703,7 +2703,7 @@ +@@ -2717,7 +2717,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -694,7 +685,7 @@ VARIABLE_COMMENT Maximum number of instrumented user@host accounts. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2717,7 +2717,7 @@ +@@ -2731,7 +2731,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -703,7 +694,7 @@ VARIABLE_COMMENT Size of the statement digest. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 200 -@@ -2731,7 +2731,7 @@ +@@ -2745,7 +2745,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -712,7 +703,7 @@ VARIABLE_COMMENT Number of rows in EVENTS_STAGES_HISTORY_LONG. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2745,7 +2745,7 @@ +@@ -2759,7 +2759,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -721,7 +712,7 @@ VARIABLE_COMMENT Number of rows per thread in EVENTS_STAGES_HISTORY. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1024 -@@ -2759,7 +2759,7 @@ +@@ -2773,7 +2773,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -730,7 +721,7 @@ VARIABLE_COMMENT Number of rows in EVENTS_STATEMENTS_HISTORY_LONG. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2773,7 +2773,7 @@ +@@ -2787,7 +2787,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -739,7 +730,7 @@ VARIABLE_COMMENT Number of rows per thread in EVENTS_STATEMENTS_HISTORY. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1024 -@@ -2787,7 +2787,7 @@ +@@ -2801,7 +2801,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -748,7 +739,7 @@ VARIABLE_COMMENT Number of rows in EVENTS_WAITS_HISTORY_LONG. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2801,7 +2801,7 @@ +@@ -2815,7 +2815,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -757,7 +748,7 @@ VARIABLE_COMMENT Number of rows per thread in EVENTS_WAITS_HISTORY. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1024 -@@ -2815,7 +2815,7 @@ +@@ -2829,7 +2829,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -766,7 +757,7 @@ VARIABLE_COMMENT Maximum number of instrumented hosts. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2829,7 +2829,7 @@ +@@ -2843,7 +2843,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 80 VARIABLE_SCOPE GLOBAL @@ -775,7 +766,7 @@ VARIABLE_COMMENT Maximum number of condition instruments. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 256 -@@ -2843,7 +2843,7 @@ +@@ -2857,7 +2857,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -784,7 +775,7 @@ VARIABLE_COMMENT Maximum number of instrumented condition objects. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2857,7 +2857,7 @@ +@@ -2871,7 +2871,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1024 VARIABLE_SCOPE GLOBAL @@ -793,7 +784,7 @@ VARIABLE_COMMENT Maximum length considered for digest text, when stored in performance_schema tables. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 1048576 -@@ -2871,7 +2871,7 @@ +@@ -2885,7 +2885,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 50 VARIABLE_SCOPE GLOBAL @@ -802,7 +793,7 @@ VARIABLE_COMMENT Maximum number of file instruments. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 256 -@@ -2885,7 +2885,7 @@ +@@ -2899,7 +2899,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 32768 VARIABLE_SCOPE GLOBAL @@ -811,7 +802,7 @@ VARIABLE_COMMENT Maximum number of opened instrumented files. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 1048576 -@@ -2899,7 +2899,7 @@ +@@ -2913,7 +2913,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -820,7 +811,7 @@ VARIABLE_COMMENT Maximum number of instrumented files. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2913,7 +2913,7 @@ +@@ -2927,7 +2927,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 200 VARIABLE_SCOPE GLOBAL @@ -829,7 +820,7 @@ VARIABLE_COMMENT Maximum number of mutex instruments. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 256 -@@ -2927,7 +2927,7 @@ +@@ -2941,7 +2941,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -838,7 +829,7 @@ VARIABLE_COMMENT Maximum number of instrumented MUTEX objects. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 104857600 -@@ -2941,7 +2941,7 @@ +@@ -2955,7 +2955,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 40 VARIABLE_SCOPE GLOBAL @@ -847,7 +838,7 @@ VARIABLE_COMMENT Maximum number of rwlock instruments. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 256 -@@ -2955,7 +2955,7 @@ +@@ -2969,7 +2969,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -856,7 +847,7 @@ VARIABLE_COMMENT Maximum number of instrumented RWLOCK objects. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 104857600 -@@ -2969,7 +2969,7 @@ +@@ -2983,7 +2983,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 10 VARIABLE_SCOPE GLOBAL @@ -865,7 +856,7 @@ VARIABLE_COMMENT Maximum number of socket instruments. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 256 -@@ -2983,7 +2983,7 @@ +@@ -2997,7 +2997,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -874,7 +865,7 @@ VARIABLE_COMMENT Maximum number of opened instrumented sockets. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -2997,7 +2997,7 @@ +@@ -3011,7 +3011,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 150 VARIABLE_SCOPE GLOBAL @@ -883,7 +874,7 @@ VARIABLE_COMMENT Maximum number of stage instruments. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 256 -@@ -3011,7 +3011,7 @@ +@@ -3025,7 +3025,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 178 VARIABLE_SCOPE GLOBAL @@ -892,7 +883,7 @@ VARIABLE_COMMENT Maximum number of statement instruments. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 256 -@@ -3025,7 +3025,7 @@ +@@ -3039,7 +3039,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -901,7 +892,7 @@ VARIABLE_COMMENT Maximum number of opened instrumented tables. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -3039,7 +3039,7 @@ +@@ -3053,7 +3053,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -910,7 +901,7 @@ VARIABLE_COMMENT Maximum number of instrumented tables. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -3053,7 +3053,7 @@ +@@ -3067,7 +3067,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 50 VARIABLE_SCOPE GLOBAL @@ -919,7 +910,7 @@ VARIABLE_COMMENT Maximum number of thread instruments. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 256 -@@ -3067,7 +3067,7 @@ +@@ -3081,7 +3081,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -928,7 +919,7 @@ VARIABLE_COMMENT Maximum number of instrumented threads. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -3081,7 +3081,7 @@ +@@ -3095,7 +3095,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -937,7 +928,7 @@ VARIABLE_COMMENT Size of session attribute string buffer per thread. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -3095,7 +3095,7 @@ +@@ -3109,7 +3109,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 100 VARIABLE_SCOPE GLOBAL @@ -946,7 +937,7 @@ VARIABLE_COMMENT Maximum number of rows in SETUP_ACTORS. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 1024 -@@ -3109,7 +3109,7 @@ +@@ -3123,7 +3123,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 100 VARIABLE_SCOPE GLOBAL @@ -955,7 +946,7 @@ VARIABLE_COMMENT Maximum number of rows in SETUP_OBJECTS. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 1048576 -@@ -3123,7 +3123,7 @@ +@@ -3137,7 +3137,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE -1 VARIABLE_SCOPE GLOBAL @@ -964,7 +955,7 @@ VARIABLE_COMMENT Maximum number of instrumented users. Use 0 to disable, -1 for automated sizing. NUMERIC_MIN_VALUE -1 NUMERIC_MAX_VALUE 1048576 -@@ -3193,7 +3193,7 @@ +@@ -3207,7 +3207,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 32768 VARIABLE_SCOPE SESSION @@ -973,7 +964,7 @@ VARIABLE_COMMENT The size of the buffer that is allocated when preloading indexes NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 1073741824 -@@ -3221,7 +3221,7 @@ +@@ -3235,7 +3235,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 15 VARIABLE_SCOPE SESSION @@ -982,7 +973,7 @@ VARIABLE_COMMENT Number of statements about which profiling information is maintained. If set to 0, no profiles are stored. See SHOW PROFILES. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 100 -@@ -3235,7 +3235,7 @@ +@@ -3249,7 +3249,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 5 VARIABLE_SCOPE SESSION @@ -991,7 +982,7 @@ VARIABLE_COMMENT Seconds between sending progress reports to the client for time-consuming statements. Set to 0 to disable progress reporting. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 4294967295 -@@ -3291,10 +3291,10 @@ +@@ -3305,10 +3305,10 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 0 VARIABLE_SCOPE SESSION ONLY @@ -1004,7 +995,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -3305,7 +3305,7 @@ +@@ -3319,7 +3319,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 16384 VARIABLE_SCOPE SESSION @@ -1013,7 +1004,7 @@ VARIABLE_COMMENT Allocation block size for query parsing and execution NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 4294967295 -@@ -3319,7 +3319,7 @@ +@@ -3333,7 +3333,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1048576 VARIABLE_SCOPE GLOBAL @@ -1022,7 +1013,7 @@ VARIABLE_COMMENT Don't cache results that are bigger than this NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 4294967295 -@@ -3333,7 +3333,7 @@ +@@ -3347,7 +3347,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 4096 VARIABLE_SCOPE GLOBAL @@ -1031,7 +1022,7 @@ VARIABLE_COMMENT The minimum size for blocks allocated by the query cache NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 4294967295 -@@ -3350,7 +3350,7 @@ +@@ -3364,7 +3364,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT The memory allocated to store results from old queries NUMERIC_MIN_VALUE 0 @@ -1040,7 +1031,7 @@ NUMERIC_BLOCK_SIZE 1024 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -3403,7 +3403,7 @@ +@@ -3417,7 +3417,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 24576 VARIABLE_SCOPE SESSION @@ -1049,7 +1040,7 @@ VARIABLE_COMMENT Persistent buffer for query parsing and execution NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 4294967295 -@@ -3417,7 +3417,7 @@ +@@ -3431,7 +3431,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 4096 VARIABLE_SCOPE SESSION @@ -1058,7 +1049,7 @@ VARIABLE_COMMENT Allocation block size for storing ranges during optimization NUMERIC_MIN_VALUE 4096 NUMERIC_MAX_VALUE 4294967295 -@@ -3431,7 +3431,7 @@ +@@ -3445,7 +3445,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 131072 VARIABLE_SCOPE SESSION @@ -1067,7 +1058,7 @@ VARIABLE_COMMENT Each thread that does a sequential scan allocates a buffer of this size for each table it scans. If you do many sequential scans, you may want to increase this value NUMERIC_MIN_VALUE 8192 NUMERIC_MAX_VALUE 2147483647 -@@ -3459,7 +3459,7 @@ +@@ -3473,7 +3473,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 262144 VARIABLE_SCOPE SESSION @@ -1076,7 +1067,7 @@ VARIABLE_COMMENT When reading rows in sorted order after a sort, the rows are read through this buffer to avoid a disk seeks NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 2147483647 -@@ -3739,10 +3739,10 @@ +@@ -3753,10 +3753,10 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 8388608 VARIABLE_SCOPE SESSION @@ -1089,7 +1080,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -3781,7 +3781,7 @@ +@@ -3795,7 +3795,7 @@ GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE 0 VARIABLE_SCOPE SESSION @@ -1098,7 +1089,7 @@ VARIABLE_COMMENT Uniquely identifies the server instance in the community of replication partners NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 4294967295 -@@ -3907,7 +3907,7 @@ +@@ -3921,7 +3921,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 0 VARIABLE_SCOPE GLOBAL @@ -1107,7 +1098,7 @@ VARIABLE_COMMENT Maximum number of parallel threads to use on slave for events in a single replication domain. When using multiple domains, this can be used to limit a single domain from grabbing all threads and thus stalling other domains. The default of 0 means to allow a domain to grab as many threads as it wants, up to the value of slave_parallel_threads. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 16383 -@@ -3949,7 +3949,7 @@ +@@ -3963,7 +3963,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 1073741824 VARIABLE_SCOPE GLOBAL @@ -1116,7 +1107,7 @@ VARIABLE_COMMENT The maximum packet length to sent successfully from the master to slave. NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 1073741824 -@@ -3977,7 +3977,7 @@ +@@ -3991,7 +3991,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 131072 VARIABLE_SCOPE GLOBAL @@ -1125,7 +1116,7 @@ VARIABLE_COMMENT Limit on how much memory SQL threads should use per parallel replication thread when reading ahead in the relay log looking for opportunities for parallel replication. Only used when --slave-parallel-threads > 0. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 2147483647 -@@ -4005,7 +4005,7 @@ +@@ -4019,7 +4019,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 0 VARIABLE_SCOPE GLOBAL @@ -1134,7 +1125,7 @@ VARIABLE_COMMENT If non-zero, number of threads to spawn to apply in parallel events on the slave that were group-committed on the master or were logged with GTID in different replication domains. Note that these threads are in addition to the IO and SQL threads, which are always created by a replication slave NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 16383 -@@ -4061,7 +4061,7 @@ +@@ -4075,7 +4075,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 10 VARIABLE_SCOPE GLOBAL @@ -1143,7 +1134,7 @@ VARIABLE_COMMENT Number of times the slave SQL thread will retry a transaction in case it failed with a deadlock or elapsed lock wait timeout, before giving up and stopping NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 4294967295 -@@ -4089,7 +4089,7 @@ +@@ -4103,7 +4103,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 2 VARIABLE_SCOPE GLOBAL @@ -1152,7 +1143,7 @@ VARIABLE_COMMENT If creating the thread takes longer than this value (in seconds), the Slow_launch_threads counter will be incremented NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 31536000 -@@ -4148,7 +4148,7 @@ +@@ -4162,7 +4162,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT Each thread that needs to do a sort allocates a buffer of this size NUMERIC_MIN_VALUE 1024 @@ -1161,7 +1152,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -4439,7 +4439,7 @@ +@@ -4453,7 +4453,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 256 VARIABLE_SCOPE GLOBAL @@ -1170,7 +1161,7 @@ VARIABLE_COMMENT The soft upper limit for number of cached stored routines for one connection. NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 524288 -@@ -4537,7 +4537,7 @@ +@@ -4551,7 +4551,7 @@ GLOBAL_VALUE_ORIGIN AUTO DEFAULT_VALUE 400 VARIABLE_SCOPE GLOBAL @@ -1178,17 +1169,17 @@ +VARIABLE_TYPE INT UNSIGNED VARIABLE_COMMENT The number of cached table definitions NUMERIC_MIN_VALUE 400 - NUMERIC_MAX_VALUE 524288 -@@ -4551,7 +4551,7 @@ - GLOBAL_VALUE_ORIGIN COMPILE-TIME + NUMERIC_MAX_VALUE 2097152 +@@ -4565,7 +4565,7 @@ + GLOBAL_VALUE_ORIGIN CONFIG DEFAULT_VALUE 2000 VARIABLE_SCOPE GLOBAL -VARIABLE_TYPE BIGINT UNSIGNED +VARIABLE_TYPE INT UNSIGNED VARIABLE_COMMENT The number of cached open tables - NUMERIC_MIN_VALUE 1 + NUMERIC_MIN_VALUE 10 NUMERIC_MAX_VALUE 1048576 -@@ -4565,7 +4565,7 @@ +@@ -4579,7 +4579,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 0 VARIABLE_SCOPE GLOBAL @@ -1197,7 +1188,7 @@ VARIABLE_COMMENT How many threads we should keep in a cache for reuse NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 16384 -@@ -4579,7 +4579,7 @@ +@@ -4593,7 +4593,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 10 VARIABLE_SCOPE GLOBAL @@ -1206,7 +1197,7 @@ VARIABLE_COMMENT Permits the application to give the threads system a hint for the desired number of threads that should be run at the same time.This variable has no effect, and is deprecated. It will be removed in a future release. NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 512 -@@ -4764,7 +4764,7 @@ +@@ -4778,7 +4778,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT If an internal in-memory temporary table exceeds this size, MariaDB will automatically convert it to an on-disk MyISAM or Aria table. NUMERIC_MIN_VALUE 1024 @@ -1215,7 +1206,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -4775,7 +4775,7 @@ +@@ -4789,7 +4789,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 8192 VARIABLE_SCOPE SESSION @@ -1224,7 +1215,7 @@ VARIABLE_COMMENT Allocation block size for transactions to be stored in binary log NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 134217728 -@@ -4789,7 +4789,7 @@ +@@ -4803,7 +4803,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 4096 VARIABLE_SCOPE SESSION @@ -1233,7 +1224,7 @@ VARIABLE_COMMENT Persistent buffer for transactions to be stored in binary log NUMERIC_MIN_VALUE 1024 NUMERIC_MAX_VALUE 134217728 -@@ -4887,7 +4887,7 @@ +@@ -4901,7 +4901,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME DEFAULT_VALUE 28800 VARIABLE_SCOPE SESSION @@ -1242,7 +1233,7 @@ VARIABLE_COMMENT The number of seconds the server waits for activity on a connection before closing it NUMERIC_MIN_VALUE 1 NUMERIC_MAX_VALUE 31536000 -@@ -4991,7 +4991,7 @@ +@@ -5005,7 +5005,7 @@ COMMAND_LINE_ARGUMENT OPTIONAL VARIABLE_NAME OPEN_FILES_LIMIT VARIABLE_SCOPE GLOBAL @@ -1251,7 +1242,7 @@ VARIABLE_COMMENT If this is not 0, then mysqld will use this value to reserve file descriptors to use with setrlimit(). If this value is 0 then mysqld will reserve max_connections*5 or max_connections + table_cache*2 (whichever is larger) number of file descriptors NUMERIC_MIN_VALUE 0 NUMERIC_MAX_VALUE 4294967295 -@@ -5004,7 +5004,7 @@ +@@ -5018,7 +5018,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT Sets the internal state of the RAND() generator for replication purposes NUMERIC_MIN_VALUE 0 @@ -1260,7 +1251,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -5014,7 +5014,7 @@ +@@ -5028,7 +5028,7 @@ VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT Sets the internal state of the RAND() generator for replication purposes NUMERIC_MIN_VALUE 0 @@ -1269,7 +1260,7 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO -@@ -5099,7 +5099,7 @@ +@@ -5113,7 +5113,7 @@ VARIABLE_NAME LOG_TC_SIZE GLOBAL_VALUE_ORIGIN AUTO VARIABLE_SCOPE GLOBAL diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result index 8df07cdef..3e34bfce8 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result @@ -4554,7 +4554,7 @@ VARIABLE_SCOPE GLOBAL VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT The number of cached table definitions NUMERIC_MIN_VALUE 400 -NUMERIC_MAX_VALUE 524288 +NUMERIC_MAX_VALUE 2097152 NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO diff --git a/mysql-test/suite/sys_vars/r/sysvars_wsrep.result b/mysql-test/suite/sys_vars/r/sysvars_wsrep.result index db932ae82..e54afd2d6 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_wsrep.result +++ b/mysql-test/suite/sys_vars/r/sysvars_wsrep.result @@ -29,6 +29,20 @@ NUMERIC_BLOCK_SIZE NULL ENUM_VALUE_LIST OFF,ON READ_ONLY NO COMMAND_LINE_ARGUMENT OPTIONAL +VARIABLE_NAME WSREP_CERTIFICATION_RULES +SESSION_VALUE NULL +GLOBAL_VALUE strict +GLOBAL_VALUE_ORIGIN COMPILE-TIME +DEFAULT_VALUE strict +VARIABLE_SCOPE GLOBAL +VARIABLE_TYPE ENUM +VARIABLE_COMMENT Certification rules to use in the cluster. Possible values are: "strict": stricter rules that could result in more certification failures. "optimized": relaxed rules that allow more concurrency and cause less certification failures. +NUMERIC_MIN_VALUE NULL +NUMERIC_MAX_VALUE NULL +NUMERIC_BLOCK_SIZE NULL +ENUM_VALUE_LIST strict,optimized +READ_ONLY NO +COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME WSREP_CERTIFY_NONPK SESSION_VALUE NULL GLOBAL_VALUE ON diff --git a/mysql-test/suite/sys_vars/r/table_definition_cache_basic.result b/mysql-test/suite/sys_vars/r/table_definition_cache_basic.result index f6befe51b..f7ce3f53b 100644 --- a/mysql-test/suite/sys_vars/r/table_definition_cache_basic.result +++ b/mysql-test/suite/sys_vars/r/table_definition_cache_basic.result @@ -28,14 +28,14 @@ Warning 1292 Truncated incorrect table_definition_cache value: '2' SELECT @@global.table_definition_cache; @@global.table_definition_cache 400 -SET @@global.table_definition_cache = 524287; +SET @@global.table_definition_cache = 2097151; SELECT @@global.table_definition_cache; @@global.table_definition_cache -524287 -SET @@global.table_definition_cache = 524288; +2097151 +SET @@global.table_definition_cache = 2097152; SELECT @@global.table_definition_cache; @@global.table_definition_cache -524288 +2097152 '#--------------------FN_DYNVARS_019_04-------------------------#' SET @@global.table_definition_cache = 0; Warnings: @@ -49,18 +49,18 @@ Warning 1292 Truncated incorrect table_definition_cache value: '-1024' SELECT @@global.table_definition_cache; @@global.table_definition_cache 400 -SET @@global.table_definition_cache = 524289; +SET @@global.table_definition_cache = 2097153; Warnings: -Warning 1292 Truncated incorrect table_definition_cache value: '524289' +Warning 1292 Truncated incorrect table_definition_cache value: '2097153' SELECT @@global.table_definition_cache; @@global.table_definition_cache -524288 +2097152 SET @@global.table_definition_cache = 42949672950; Warnings: Warning 1292 Truncated incorrect table_definition_cache value: '42949672950' SELECT @@global.table_definition_cache; @@global.table_definition_cache -524288 +2097152 SET @@global.table_definition_cache = 21221204.10; ERROR 42000: Incorrect argument type to variable 'table_definition_cache' SET @@global.table_definition_cache = ON; diff --git a/mysql-test/suite/sys_vars/r/wsrep_sst_method_basic.result b/mysql-test/suite/sys_vars/r/wsrep_sst_method_basic.result index cbdac640c..51f167b8f 100644 --- a/mysql-test/suite/sys_vars/r/wsrep_sst_method_basic.result +++ b/mysql-test/suite/sys_vars/r/wsrep_sst_method_basic.result @@ -33,6 +33,10 @@ SET @@global.wsrep_sst_method="xtrabackup-v2"; SELECT @@global.wsrep_sst_method; @@global.wsrep_sst_method xtrabackup-v2 +SET @@global.wsrep_sst_method="mariabackup"; +SELECT @@global.wsrep_sst_method; +@@global.wsrep_sst_method +mariabackup SET @@global.wsrep_sst_method=default; SELECT @@global.wsrep_sst_method; @@global.wsrep_sst_method diff --git a/mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test b/mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test index 427f2730e..e83c48b67 100644 --- a/mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test +++ b/mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test @@ -61,7 +61,7 @@ INSERT INTO t1 VALUES('4','1','1'); INSERT INTO t1 VALUES('5','1','1'); INSERT INTO t1 VALUES('6','1','1'); -LOCK TABLE v1 WRITE; +LOCK TABLE v1 READ; --echo ** Connection con1 ** connection con1; @@ -110,9 +110,8 @@ delimiter ;| --echo ** Connection con0 ** connection con0; let $wait_condition= - SELECT variable_value > @@global.delayed_insert_limit - FROM information_schema.global_status - WHERE variable_name like 'Not_flushed_delayed_rows'; + SELECT COUNT(*) = 1 FROM information_schema.processlist + WHERE state = 'Waiting for table level lock' AND user='delayed'; --source include/wait_condition.inc let $my_select= SELECT COUNT(*) FROM t1; send; @@ -137,13 +136,6 @@ connection con0; --echo Asynchronous "reap" result --echo The next result suffers from --echo '# Bug#35386 insert delayed inserts 1 + limit rows instead of just limit rows' -# -# on UNLOCK TABLES both SELECT in the con0 and delayed insert thread in the -# con1 were awaken. There's no FIFO for TL_WRITE_DELAYED and TL_READ, -# so either the first delayed_insert_limit rows will be inserted -# before select (which will see 21 row) or select will go first (and see 6 rows) -# ---replace_result 6 21 reap; --echo ** Connection default ** @@ -173,7 +165,7 @@ INSERT INTO t1 VALUES('4'); INSERT INTO t1 VALUES('5'); INSERT INTO t1 VALUES('6'); -LOCK TABLE v1 WRITE; +LOCK TABLE v1 READ; --echo ** Connection con1 ** connection con1; @@ -204,8 +196,8 @@ delimiter ;| --echo ** Connection con0 ** connection con0; let $wait_condition= - SELECT variable_value > 0 FROM information_schema.global_status - WHERE variable_name like 'Not_flushed_delayed_rows'; + SELECT COUNT(*) = 1 FROM information_schema.processlist + WHERE state = 'Waiting for table level lock' AND user='delayed'; --source include/wait_condition.inc --echo Asynchronous execute # Due to performance and server behaveiour the test observes values between 6 and 22. diff --git a/mysql-test/suite/sys_vars/t/sql_low_priority_updates_func.test b/mysql-test/suite/sys_vars/t/sql_low_priority_updates_func.test index ba13558a1..5d7d6cbe7 100644 --- a/mysql-test/suite/sys_vars/t/sql_low_priority_updates_func.test +++ b/mysql-test/suite/sys_vars/t/sql_low_priority_updates_func.test @@ -70,7 +70,7 @@ INSERT INTO t1 VALUES('4'); INSERT INTO t1 VALUES('5'); INSERT INTO t1 VALUES('6'); -LOCK TABLE v1 WRITE; +LOCK TABLE v1 WRITE CONCURRENT; --echo ** Connection con1 ** connection con1; @@ -144,7 +144,7 @@ INSERT INTO t1 VALUES('4'); INSERT INTO t1 VALUES('5'); INSERT INTO t1 VALUES('6'); -LOCK TABLE v1 WRITE; +LOCK TABLE v1 READ; --echo ** Connection con1 ** connection con1; diff --git a/mysql-test/suite/sys_vars/t/table_definition_cache_basic.test b/mysql-test/suite/sys_vars/t/table_definition_cache_basic.test index 69f291086..183d1d031 100644 --- a/mysql-test/suite/sys_vars/t/table_definition_cache_basic.test +++ b/mysql-test/suite/sys_vars/t/table_definition_cache_basic.test @@ -64,9 +64,9 @@ SET @@global.table_definition_cache = 1; SELECT @@global.table_definition_cache; SET @@global.table_definition_cache = 2; SELECT @@global.table_definition_cache; -SET @@global.table_definition_cache = 524287; +SET @@global.table_definition_cache = 2097151; SELECT @@global.table_definition_cache; -SET @@global.table_definition_cache = 524288; +SET @@global.table_definition_cache = 2097152; SELECT @@global.table_definition_cache; @@ -79,7 +79,7 @@ SET @@global.table_definition_cache = 0; SELECT @@global.table_definition_cache; SET @@global.table_definition_cache = -1024; SELECT @@global.table_definition_cache; -SET @@global.table_definition_cache = 524289; +SET @@global.table_definition_cache = 2097153; SELECT @@global.table_definition_cache; SET @@global.table_definition_cache = 42949672950; SELECT @@global.table_definition_cache; diff --git a/mysql-test/suite/sys_vars/t/wsrep_sst_method_basic.test b/mysql-test/suite/sys_vars/t/wsrep_sst_method_basic.test index 3f40a3922..4eda96a77 100644 --- a/mysql-test/suite/sys_vars/t/wsrep_sst_method_basic.test +++ b/mysql-test/suite/sys_vars/t/wsrep_sst_method_basic.test @@ -23,10 +23,15 @@ SET @@global.wsrep_sst_method=rsync; SELECT @@global.wsrep_sst_method; SET @@global.wsrep_sst_method=mysqldump; SELECT @@global.wsrep_sst_method; +# The xtrabackup and xtrabackup-v2 methods are obsolete, +# but we can still select them (they will be automatically +# replaced to mariabackup in next versions of server): SET @@global.wsrep_sst_method=xtrabackup; SELECT @@global.wsrep_sst_method; SET @@global.wsrep_sst_method="xtrabackup-v2"; SELECT @@global.wsrep_sst_method; +SET @@global.wsrep_sst_method="mariabackup"; +SELECT @@global.wsrep_sst_method; SET @@global.wsrep_sst_method=default; SELECT @@global.wsrep_sst_method; diff --git a/mysql-test/t/auto_increment_ranges_innodb.test b/mysql-test/t/auto_increment_ranges_innodb.test index c2afee7ac..016ca16bd 100644 --- a/mysql-test/t/auto_increment_ranges_innodb.test +++ b/mysql-test/t/auto_increment_ranges_innodb.test @@ -5,3 +5,16 @@ --source include/have_innodb.inc set default_storage_engine=innodb; --source auto_increment_ranges.inc + +# +# MDEV-17377 invalid gap in auto-increment values after LOAD DATA +# +create table t1 (pk int auto_increment primary key, f varchar(20)); +insert t1 (f) values ('a'), ('b'), ('c'), ('d'); +select null, f into outfile 'load.data' from t1 limit 1; +load data infile 'load.data' into table t1; +insert t1 (f) values ('<==='); +select * from t1; +drop table t1; +--let $datadir=`select @@datadir` +--remove_file $datadir/test/load.data diff --git a/mysql-test/t/bigint.test b/mysql-test/t/bigint.test index fb18d60ed..71fef813a 100644 --- a/mysql-test/t/bigint.test +++ b/mysql-test/t/bigint.test @@ -414,3 +414,12 @@ DROP TABLE t1; --echo # MDEV-9372 select 100 between 1 and 9223372036854775808 returns false --echo # SELECT 100 BETWEEN 1 AND 9223372036854775808; + +--echo # +--echo # MDEV-17724 Wrong result for BETWEEN 0 AND 18446744073709551615 +--echo # + +CREATE TABLE t1 (c1 bigint(20) unsigned NOT NULL); +INSERT INTO t1 VALUES (0),(101),(255); +SELECT * FROM t1 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1; +DROP TABLE t1; diff --git a/mysql-test/t/connect.test b/mysql-test/t/connect.test index c2d44c08e..560f29e84 100644 --- a/mysql-test/t/connect.test +++ b/mysql-test/t/connect.test @@ -66,8 +66,13 @@ connect (fail_con,localhost,test,zorro,test2); connect (fail_con,localhost,test,zorro,); # check if old password version also works +select user,host,password,plugin,authentication_string from mysql.user where user='test'; update mysql.user set password=old_password("gambling2") where user=_binary"test"; flush privileges; +show grants for test@localhost; +update mysql.user set plugin='mysql_old_password' where user='test'; +flush privileges; +show grants for test@localhost; connect (con10,localhost,test,gambling2,); connect (con5,localhost,test,gambling2,mysql); @@ -253,11 +258,8 @@ let $wait_condition = --echo --echo # -- Waiting for connections to close... -let $wait_condition = - SELECT COUNT(*) = 1 - FROM information_schema.processlist - WHERE db = 'test'; ---source include/wait_condition.inc +let $count_sessions=1; +--source include/wait_until_count_sessions.inc --echo DROP USER mysqltest_u1@localhost; diff --git a/mysql-test/t/ctype_latin1.test b/mysql-test/t/ctype_latin1.test index 2d7f186f3..98cba6a3c 100644 --- a/mysql-test/t/ctype_latin1.test +++ b/mysql-test/t/ctype_latin1.test @@ -264,6 +264,18 @@ SET NAMES latin1; --source include/ctype_mdev13118.inc +--echo # +--echo # MDEV-17298 ASAN unknown-crash / READ of size 1 in my_strntoul_8bit upon INSERT .. SELECT +--echo # + +SET NAMES latin1; +CREATE TABLE t1 (a CHAR); +CREATE TABLE t2 (b ENUM('foo','bar')); +INSERT INTO t1 VALUES ('1'); +INSERT INTO t2 SELECT * FROM t1; +DROP TABLE t1, t2; + + --echo # --echo # End of 10.0 tests --echo # diff --git a/mysql-test/t/flush.test b/mysql-test/t/flush.test index 7736574b7..11a1ac2a8 100644 --- a/mysql-test/t/flush.test +++ b/mysql-test/t/flush.test @@ -724,7 +724,6 @@ FLUSH TABLES v1; UNLOCK TABLES; LOCK TABLES v1 WRITE; ---error ER_TABLE_NOT_LOCKED_FOR_WRITE FLUSH TABLES v1; UNLOCK TABLES; diff --git a/mysql-test/t/func_group_innodb.test b/mysql-test/t/func_group_innodb.test index c62d3d084..a65d2326d 100644 --- a/mysql-test/t/func_group_innodb.test +++ b/mysql-test/t/func_group_innodb.test @@ -192,4 +192,30 @@ EXPLAIN SELECT MIN(c) FROM t1 GROUP BY b; DROP TABLE t1; +--echo # +--echo # MDEV-17589: Stack-buffer-overflow with indexed varchar (utf8) field +--echo # + +set @save_innodb_file_format= @@innodb_file_format; +set @save_innodb_large_prefix= @@innodb_large_prefix; +set global innodb_file_format = BARRACUDA; +set global innodb_large_prefix = ON; + +CREATE TABLE t1 (v1 varchar(1020), v2 varchar(2), v3 varchar(2), + KEY k1 (v3,v2,v1)) ENGINE=InnoDB CHARACTER SET=utf8 ROW_FORMAT=DYNAMIC; +INSERT INTO t1 VALUES ('king', 'qu','qu'), ('bad','go','go'); +explain +SELECT MIN(t1.v1) FROM t1 where t1.v2='qu' and t1.v3='qu'; +SELECT MIN(t1.v1) FROM t1 where t1.v2='qu' and t1.v3='qu'; +drop table t1; + +CREATE TABLE t1 (v1 varchar(1024) CHARACTER SET utf8, KEY v1 (v1)) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +INSERT INTO t1 VALUES ('king'), ('bad'); +explain +SELECT MIN(x.v1) FROM (SELECT t1.* FROM t1 WHERE t1.v1 >= 'p') x; +SELECT MIN(x.v1) FROM (SELECT t1.* FROM t1 WHERE t1.v1 >= 'p') x; +drop table t1; +set global innodb_file_format = @save_innodb_file_format; +set global innodb_large_prefix = @save_innodb_large_prefix; + --echo End of 5.5 tests diff --git a/mysql-test/t/func_misc.test b/mysql-test/t/func_misc.test index 2509f55cc..a8da9068a 100644 --- a/mysql-test/t/func_misc.test +++ b/mysql-test/t/func_misc.test @@ -1145,3 +1145,12 @@ $$ DELIMITER ;$$ CALL p1(); DROP PROCEDURE p1; + + +--echo # +--echo # MDEV-18195 ASAN use-after-poison in my_strcasecmp_utf8 / Item::eq upon prepared statement with ORDER BY NAME_CONST +--echo # + +PREPARE stmt FROM "SELECT 'x' ORDER BY NAME_CONST( 'f', 'foo' )"; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; diff --git a/mysql-test/t/grant5.test b/mysql-test/t/grant5.test index 14f2fd650..649bba7d1 100644 --- a/mysql-test/t/grant5.test +++ b/mysql-test/t/grant5.test @@ -23,3 +23,13 @@ show grants for foo@'%'; # user drop user test, foo; drop role foo; +# +# MDEV-17975 Assertion `! is_set()' or `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed upon REVOKE under LOCK TABLE +# +CREATE TABLE t1 (a INT); +LOCK TABLE t1 WRITE; +--error ER_TABLE_NOT_LOCKED +REVOKE EXECUTE ON PROCEDURE sp FROM u; +--error ER_TABLE_NOT_LOCKED +REVOKE PROCESS ON *.* FROM u; +DROP TABLE t1; diff --git a/mysql-test/t/huge_frm-6224.test b/mysql-test/t/huge_frm-6224.test index 418722a7b..322abd017 100644 --- a/mysql-test/t/huge_frm-6224.test +++ b/mysql-test/t/huge_frm-6224.test @@ -4,17 +4,24 @@ # verify that huge frms are rejected during creation, not on opening # --source include/have_partition.inc +set global max_allowed_packet=1024*1024*10; +connect con1,localhost,root; -let $n=5646; +let $n=8164; let $a=create table t1 (a int) engine=myisam partition by hash(a) partitions $n (; dec $n; while ($n) { - let $a=$a partition p01234567890123456789012345678901234567890123456789012345678$n,; + let $a=$a partition p01234567890123456789012345678901234567890123456789012345678$n COMMENT 'partition p01234567890123456789012345678901234567890123456789012345678$n',; dec $n; } --disable_query_log --error ER_TABLE_DEFINITION_TOO_BIG eval $a partition foo); +--enable_query_log + +connection default; +disconnect con1; +set global max_allowed_packet=default; diff --git a/mysql-test/t/index_merge_myisam.test b/mysql-test/t/index_merge_myisam.test index d26500743..75beb9bd8 100644 --- a/mysql-test/t/index_merge_myisam.test +++ b/mysql-test/t/index_merge_myisam.test @@ -243,3 +243,38 @@ DROP TABLE t1; set optimizer_switch= @optimizer_switch_save; +--echo # +--echo # MDEV-16695: Estimate for rows of derived tables is very high when we are using index_merge union +--echo # + +create table t0 +( + key1 int not null, + INDEX i1(key1) +); + +insert into t0 values (1),(2),(3),(4),(5),(6),(7),(8); +let $1=7; +set @d=8; +while ($1) +{ + eval insert into t0 select key1+ @d from t0; + eval set @d=@d*2; + dec $1; +} +alter table t0 add key2 int not null, add index i2(key2); +alter table t0 add key3 int not null, add index i3(key3); +alter table t0 add key8 int not null, add index i8(key8); + +update t0 set key2=key1,key3=key1,key8=1024-key1; +analyze table t0; + +set @optimizer_switch_save=@@optimizer_switch; +set optimizer_switch='derived_merge=off,derived_with_keys=off'; +explain select * from (select * from t0 where key1 = 3 or key2 =3) as Z where Z.key8 > 5; +select * from (select * from t0 where key1 = 3 or key2 =3) as Z where Z.key8 > 5; +set optimizer_use_condition_selectivity=2; +explain select * from (select * from t0 where key1 = 3 or key2 =3) as Z where Z.key8 > 5; +select * from (select * from t0 where key1 = 3 or key2 =3) as Z where Z.key8 > 5; +set @@optimizer_switch= @optimizer_switch_save; +drop table t0; diff --git a/mysql-test/t/innodb_ext_key.test b/mysql-test/t/innodb_ext_key.test index c8acfc5db..bec4462df 100644 --- a/mysql-test/t/innodb_ext_key.test +++ b/mysql-test/t/innodb_ext_key.test @@ -725,6 +725,7 @@ if ($rows < 2) drop table t0,t1; +--echo # --echo # --echo # MDEV-10360: Extended keys: index properties depend on index order --echo # diff --git a/mysql-test/t/lock.test b/mysql-test/t/lock.test index 6cfaf9fc3..734fcd8e6 100644 --- a/mysql-test/t/lock.test +++ b/mysql-test/t/lock.test @@ -192,7 +192,7 @@ drop view v_bug5719; select * from t1; unlock tables; create or replace view v_bug5719 as select * from t1; -lock tables v_bug5719 write; +lock tables v_bug5719 read; select * from v_bug5719; --echo --echo Allowed to use an underlying table under LOCK TABLES @@ -370,7 +370,7 @@ create table t2 (j int); --echo # --echo # Try to perform DDL on table which is locked through view. create view v1 as select * from t2; -lock tables t1 write, v1 write; +lock tables t1 write, v1 read; --error ER_TABLE_NOT_LOCKED_FOR_WRITE flush table t2; --error ER_TABLE_NOT_LOCKED_FOR_WRITE diff --git a/mysql-test/t/lock_multi.test b/mysql-test/t/lock_multi.test index efd0fe5d6..ee73c2e35 100644 --- a/mysql-test/t/lock_multi.test +++ b/mysql-test/t/lock_multi.test @@ -771,17 +771,21 @@ DROP VIEW IF EXISTS v1; --echo # --echo # Test 1: LOCK TABLES v1 WRITE, t1 READ; --echo # ---echo # Thanks to the fact that we no longer allow DDL on tables ---echo # which are locked for write implicitly, the exact scenario ---echo # in which assert was failing is no longer repeatable. CREATE TABLE t1 ( f1 integer ); CREATE VIEW v1 AS SELECT f1 FROM t1 ; +--echo # Connection 2 +connect (con2,localhost,root); LOCK TABLES v1 WRITE, t1 READ; ---error ER_TABLE_NOT_LOCKED_FOR_WRITE FLUSH TABLE t1; -UNLOCK TABLES; +disconnect con2; +--source include/wait_until_disconnected.inc + +--echo # Connection 1 +connection default; +LOCK TABLES t1 WRITE; +FLUSH TABLE t1; # Assertion happened here # Cleanup DROP TABLE t1; diff --git a/mysql-test/t/lock_sync.test b/mysql-test/t/lock_sync.test index ef79cc2c0..0e0aa8f64 100644 --- a/mysql-test/t/lock_sync.test +++ b/mysql-test/t/lock_sync.test @@ -909,9 +909,6 @@ set @old_general_log = @@global.general_log; set @@global.general_log= OFF; create table t1 (i int) engine=InnoDB; ---echo # We have to use view in order to make LOCK TABLES avoid ---echo # acquiring SNRW metadata lock on table. -create view v1 as select * from t1; insert into t1 values (1); --echo # Prepare user lock which will be used for resuming execution of --echo # the first statement after it acquires TL_WRITE_ALLOW_WRITE lock. @@ -942,14 +939,14 @@ connection con_bug45143_3; --echo # acquiring lock for the the first instance of 't1'. set debug_sync= 'now WAIT_FOR parked'; --echo # Send LOCK TABLE statement which will try to get TL_WRITE lock on 't1': ---send lock table v1 write; +--send lock table t1 write concurrent; --echo # Switch to connection 'default'. connection default; --echo # Wait until this LOCK TABLES statement starts waiting for table lock. let $wait_condition= select count(*)= 1 from information_schema.processlist where state= 'Waiting for table level lock' and - info='lock table v1 write'; + info='lock table t1 write concurrent'; --source include/wait_condition.inc --echo # Allow SELECT ... FOR UPDATE to resume. --echo # Since it already has TL_WRITE_ALLOW_WRITE lock on the first instance @@ -993,7 +990,6 @@ disconnect con_bug45143_2; disconnect con_bug45143_3; set debug_sync= 'RESET'; set @@global.general_log= @old_general_log; -drop view v1; drop table t1; diff --git a/mysql-test/t/mysql.test b/mysql-test/t/mysql.test index e3219c215..7969a3359 100644 --- a/mysql-test/t/mysql.test +++ b/mysql-test/t/mysql.test @@ -680,3 +680,25 @@ show create table "a1\""b1"; select * from "a1\""b1"; drop table "a1\""b1"; set sql_mode=default; + +# +# mysql --local-infile +# +--let $ldli = load data local infile '$MYSQLTEST_VARDIR/tmp/bug.sql' into table test.t1; +create table t1 (a text); +--exec $MYSQL -e "$ldli" +select count(*) from t1; truncate table t1; +--exec $MYSQL --enable-local-infile -e "$ldli" +select count(*) from t1; truncate table t1; +--error 1 +--exec $MYSQL --disable-local-infile -e "$ldli" +select count(*) from t1; truncate table t1; +--error 1 +--exec $MYSQL -e "/*q*/$ldli" +select count(*) from t1; truncate table t1; +--exec $MYSQL --enable-local-infile -e "/*q*/$ldli" +select count(*) from t1; truncate table t1; +--error 1 +--exec $MYSQL --disable-local-infile -e "/*q*/$ldli" +select count(*) from t1; truncate table t1; +drop table t1; diff --git a/mysql-test/t/mysqlbinlog_row_minimal.test b/mysql-test/t/mysqlbinlog_row_minimal.test index 216cb43eb..39cae408d 100644 --- a/mysql-test/t/mysqlbinlog_row_minimal.test +++ b/mysql-test/t/mysqlbinlog_row_minimal.test @@ -26,8 +26,49 @@ DELETE FROM t2; --let $datadir = `SELECT @@datadir` FLUSH BINARY LOGS; + --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --replace_regex /\d{6} *\d*:\d\d:\d\d// /Start:.*at startup/Start: xxx/ /SET TIMESTAMP=\d*/SET TIMESTAMP=X/ /exec_time=\d*/exec_time=x/ --exec $MYSQL_BINLOG --verbose --verbose --base64-output=DECODE-ROWS $datadir/$binlog DROP TABLE t1,t2; + +# +# MDEV-14605 ON UPDATE CURRENT_TIMESTAMP fields by multi-table UPDATE are not logged with binlog_row_image=MINIMAL +# + +CREATE TABLE `t1` ( + + `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, + `is_deleted` BIT(1) DEFAULT b'0', + `last_updated` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `ref_id` BIGINT(20) UNSIGNED NOT NULL, + PRIMARY KEY (`id`), + KEY `last_updated_KEY` (`last_updated`) +); + +CREATE TABLE `t2` ( + `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, + `short_desc` VARCHAR(50) NOT NULL, + PRIMARY KEY (`id`) +); + + +INSERT INTO t2 (id, short_desc) VALUES (1, 'test'); +INSERT INTO t1 (id, is_deleted, ref_id) VALUES (1, b'0', 1); +FLUSH BINARY LOGS; +--let $binlog_pos= query_get_value(SHOW MASTER STATUS, Position, 1) + +UPDATE t1 t1 INNER JOIN t2 t2 ON t1.ref_id = t2.id + SET t1.is_deleted = TRUE + WHERE t1.id = 1; + +--let $binlog = query_get_value(SHOW MASTER STATUS, File, 1) + +FLUSH BINARY LOGS; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--replace_regex /\d{6} *\d*:\d\d:\d\d// /SET TIMESTAMP=\d*/SET TIMESTAMP=X/ /exec_time=\d*/exec_time=x/ /@3=\d*/@3=X/ /CRC32 0x[0-9a-f]+/CRC32 XXX/ +--exec $MYSQL_BINLOG --verbose --verbose --base64-output=DECODE-ROWS $datadir/$binlog --start-position=$binlog_pos + +DROP TABLE t1,t2; + diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test index aacb812c8..e8a0cc3f8 100644 --- a/mysql-test/t/mysqldump.test +++ b/mysql-test/t/mysqldump.test @@ -1807,7 +1807,7 @@ show create event ee1; ## prove three works (with spaces and tabs on the end) # start with one from the previous restore -create event ee2 on schedule at '2018-12-31 21:01:23' do set @a=5; +create event ee2 on schedule at '2030-12-31 21:01:22' do set @a=5; create event ee3 on schedule at '2030-12-31 22:01:23' do set @a=5; show events; --exec $MYSQL_DUMP --events second > $MYSQLTEST_VARDIR/tmp/bug16853-2.sql diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test index 35dfdead9..3b2445ad8 100644 --- a/mysql-test/t/partition.test +++ b/mysql-test/t/partition.test @@ -2897,6 +2897,68 @@ EXECUTE stmt; DEALLOCATE PREPARE stmt; DROP TABLE t1; +--echo # +--echo # MDEV-17032: Estimates are higher for partitions of a table with @@use_stat_tables= PREFERABLY +--echo # + +create table t0(a int); +insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); + +create table t1(a int); +insert into t1 select A.a + B.a* 10 + C.a * 100 from t0 A, t0 B, t0 C; + + +create table t2 ( + part_key int, + a int, + b int +) partition by list(part_key) ( + partition p0 values in (0), + partition p1 values in (1), + partition p2 values in (2), + partition p3 values in (3), + partition p4 values in (4) +); +insert into t2 +select mod(a,5), a/100, mod(a,5) from t1; + +set @save_use_stat_tables= @@use_stat_tables; +set @save_optimizer_use_condition_selectivity=@@optimizer_use_condition_selectivity; +--echo # +--echo # Tests using stats provided by the storage engine +--echo # +explain extended select * from t2 where part_key=1; +explain partitions select * from t2 where part_key=1; +explain extended select * from t2 where part_key in (1,2); +explain partitions select * from t2 where part_key in (1,2); +explain extended select * from t2 where b=5; +explain partitions select * from t2 where b=5; +explain extended select * from t2 partition(p0) where b=1; + + +set @save_histogram_size=@@histogram_size; +set @@histogram_size=100; +set @@use_stat_tables= PREFERABLY; +set @@optimizer_use_condition_selectivity=4; +analyze table t2; +--echo # +--echo # Tests using EITS +--echo # +--echo # filtered should be 100 +explain extended select * from t2 where part_key=1; +explain partitions select * from t2 where part_key=1; +--echo # filtered should be 100 +explain extended select * from t2 where part_key in (1,2); +explain partitions select * from t2 where part_key in (1,2); +explain extended select * from t2 where b=5; +explain partitions select * from t2 where b=5; +explain extended select * from t2 partition(p0) where b=1; + +set @@use_stat_tables= @save_use_stat_tables; +set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity; +set @@histogram_size= @save_histogram_size; +drop table t0,t1,t2; + --echo # --echo # End of 10.0 tests --echo # diff --git a/mysql-test/t/partition_innodb.test b/mysql-test/t/partition_innodb.test index 00af34f9d..54994bc5a 100644 --- a/mysql-test/t/partition_innodb.test +++ b/mysql-test/t/partition_innodb.test @@ -998,3 +998,33 @@ SELECT b FROM t1 WHERE b = 0; SELECT b FROM t1 WHERE b = 0; --disconnect con1 DROP TABLE t1; + +--echo # +--echo # MDEV-11167: InnoDB: Warning: using a partial-field key prefix +--echo # in search, results in assertion failure or "Can't find record" error +--echo # + +CREATE TABLE t1 (a INT) ENGINE=InnoDB; +CREATE TABLE t2 (b INT, c INT, KEY(b)) ENGINE=InnoDB PARTITION BY HASH(c) PARTITIONS 2; +CREATE ALGORITHM = MERGE VIEW v AS SELECT a, b FROM t1 STRAIGHT_JOIN t2 WHERE b = 'foo' WITH CHECK OPTION; + +INSERT INTO t1 VALUES (1),(2); +INSERT IGNORE INTO t2 VALUES (2,2),('three',3),(4,4); +UPDATE v SET a = NULL; + +DROP view v; +DROP TABLE t1, t2; + +SET @save_isp=@@innodb_stats_persistent; +SET GLOBAL innodb_stats_persistent= ON; + +CREATE TABLE t (f1 INT, f2 INT, KEY(f2)) ENGINE=InnoDB PARTITION BY HASH (f1) PARTITIONS 2; +INSERT IGNORE INTO t VALUES (NULL,0),(NULL,0),(0,21),(4,0),(1,8),(5,66); +CREATE ALGORITHM=MERGE VIEW v AS SELECT t1.* FROM t t1 JOIN t t2 WHERE t1.f1 < t2.f2 WITH LOCAL CHECK OPTION; +--error ER_VIEW_CHECK_FAILED +UPDATE v SET f2 = NULL; + +SET GLOBAL innodb_stats_persistent= @save_isp; +DROP view v; +DROP TABLE t; + diff --git a/mysql-test/t/range_innodb.test b/mysql-test/t/range_innodb.test index f76794814..a17ef3f11 100644 --- a/mysql-test/t/range_innodb.test +++ b/mysql-test/t/range_innodb.test @@ -3,6 +3,7 @@ --echo # --source include/have_innodb.inc +--source include/have_debug.inc --disable_warnings drop table if exists t0, t1, t2; @@ -45,3 +46,44 @@ explain select * from t0 left join t2 on t2.a ::intersect +--echo # +create table t1 (v1 varchar(1)) engine=myisam ; +create table t2 (v1 varchar(1)) engine=myisam ; + +explain +select 1 from t1 where exists + (select 1 from t1 where t1.v1 in (select t2.v1 from t2 having t2.v1 < 'j')) ; +select 1 from t1 where exists + (select 1 from t1 where t1.v1 in (select t2.v1 from t2 having t2.v1 < 'j')) ; +drop table t1,t2; + --echo # --echo # MDEV-9489: Assertion `0' failed in Protocol::end_statement() on --echo # UNION ALL diff --git a/mysql-test/t/union.test b/mysql-test/t/union.test index e1e95347d..4ff89428d 100644 --- a/mysql-test/t/union.test +++ b/mysql-test/t/union.test @@ -1470,6 +1470,41 @@ eval SET NAMES $old_charset; SET @advertAcctId = 1000003; select @advertAcctId as a from dual union all select 1.0 from dual; +--echo # +--echo # MDEV-13784: query causes seg fault +--echo # + +CREATE TABLE t1 (`bug_id` int NOT NULL PRIMARY KEY, `product_id` int NOT NULL); +INSERT INTO t1 VALUES (45199,1184); + +CREATE TABLE t2 (`product_id` int NOT NULL,`userid` int NOT NULL, PRIMARY KEY (`product_id`,`userid`)); +INSERT INTO t2 VALUES (1184,103),(1184,624),(1184,1577),(1184,1582); + +CREATE TABLE t3 (`id` int NOT NULL PRIMARY KEY,`name` varchar(64)); + + +CREATE TABLE t4 ( `userid` int NOT NULL PRIMARY KEY, `login_name` varchar(255)); +INSERT INTO t4 VALUES (103,'foo'),(624,'foo'),(1577,'foo'),(1582,'foo'); +CREATE TABLE t5 (`id` int NOT NULL PRIMARY KEY, `name` varchar(64)); + +explain select +( + select login_name from t4 where userId = ( + select userid from t2 where product_id = t1.product_id + union + select userid from t2 where product_id = ( + select id from t5 where name = (select name from t3 where id = t1.product_id)) limit 1 ) +) as x from t1 where (t1.bug_id=45199); +select +( + select login_name from t4 where userId = ( + select userid from t2 where product_id = t1.product_id + union + select userid from t2 where product_id = ( + select id from t5 where name = (select name from t3 where id = t1.product_id)) limit 1 ) +) as x from t1 where (t1.bug_id=45199); +drop table t1, t2, t3, t4, t5; + --echo End of 5.5 tests --echo # diff --git a/mysql-test/unstable-tests b/mysql-test/unstable-tests index d26ce1113..a5ff43c0c 100644 --- a/mysql-test/unstable-tests +++ b/mysql-test/unstable-tests @@ -23,15 +23,20 @@ # ############################################################################## -# Based on 10.1 a5cbdd63bc2ff25a52e2e10f84b6aaf59837dbae +# Based on 10.1 955c7b32226c816b24a2ed1750e12bc0256565ad main.alter_table : Modified in 10.1.37 main.alter_table_trans : MDEV-12084 - timeout main.analyze_stmt_slow_query_log : MDEV-12237 - Wrong result main.auth_named_pipe : MDEV-14724 - System error 2 +main.auto_increment_ranges_innodb : Modified in 10.1.38 +main.bigint : Modified in 10.1.38 +main.connect : Modified in 10.1.38 main.count_distinct2 : MDEV-11768 - timeout main.create_delayed : MDEV-10605 - failed with timeout +main.create_drop_event : MDEV-16271 - Wrong result main.create_or_replace : Modified in 10.1.37 +main.ctype_latin1 : Modified in 10.1.38 main.ctype_uca : Modified in 10.1.37 main.ctype_utf16 : MDEV-10675: timeout or extra warnings main.debug_sync : MDEV-10607 - internal error @@ -40,51 +45,61 @@ main.events_2 : MDEV-13277 - Server crash main.events_bugs : MDEV-12892 - Crash in fill_schema_processlist main.events_slowlog : MDEV-12821 - Wrong result main.events_restart : MDEV-12236 - Server shutdown problem -main.flush : Modified in 10.1.36 +main.flush : Modified in 10.1.38 main.func_concat : Modified in 10.1.37 -main.func_isnull : Modified in 10.1.36 +main.func_group_innodb : Modified in 10.1.38 +main.func_misc : Modified in 10.1.38 main.func_time : Modified in 10.1.37 -main.gis : MDEV-13411 - wrong result on P8; modified in 10.1.36 +main.gis : MDEV-13411 - wrong result on P8 main.grant : Modified in 10.1.37 -main.group_min_max : Modified in 10.1.36 +main.grant5 : Modified in 10.1.38 main.host_cache_size_functionality : MDEV-10606 - sporadic failure on shutdown +main.huge_frm-6224 : Modified in 10.1.38 main.index_intersect_innodb : MDEV-10643 - failed with timeout main.index_merge_innodb : MDEV-7142 - Wrong execution plan, timeout with valgrind +main.index_merge_myisam : Modified in 10.1.38 main.innodb_mysql_lock : MDEV-7861 - sporadic lock detection failure -main.join : Modified in 10.1.36 main.kill_processlist-6619 : MDEV-10793 - wrong result in processlist +main.lock : Modified in 10.1.38 +main.lock_multi : Modified in 10.1.38 +main.lock_sync : Modified in 10.1.38 main.log_tables-big : MDEV-13408 - wrong result main.lowercase_fs_off : Modified in 10.1.37 main.mdev-504 : MDEV-10607 - sporadic "can't connect" main.mdev375 : MDEV-10607 - sporadic "can't connect" main.merge : MDEV-10607 - sporadic "can't connect" -main.mysql : Modified in 10.1.36 -main.mysql_not_windows : Modified in 10.1.36 +main.mysql : Modified in 10.1.38 main.mysql_client_test_nonblock : MDEV-15096 - exec failed main.mysql_upgrade_noengine : MDEV-14355 - Plugin is busy +main.mysqlbinlog_row_minimal : Modified in 10.1.38 +main.mysqldump : Modified in 10.1.38 main.mysqlhotcopy_myisam : MDEV-10995 - test hangs on debug build main.mysqlslap : MDEV-11801 - timeout main.mysqltest : MDEV-9269 - fails on Alpha main.order_by_optimizer_innodb : MDEV-10683 - wrong execution plan main.order_by_zerolength-4285 : Modified in 10.1.37 +main.partition : Modified in 10.1.38 main.partition_debug_sync : MDEV-15669 - Deadlock found when trying to get lock main.partition_explicit_prune : Modified in 10.1.37 +main.partition_innodb : Modified in 10.1.38 main.partition_innodb_plugin : MDEV-12901 - Valgrind warnings main.ps : MDEV-11017 - sporadic wrong Prepared_stmt_count main.query_cache : MDEV-12895 - Wrong result main.query_cache_debug : MDEV-15281 - Resize or similar command in progress +main.range_innodb : Modified in 10.1.38 main.range_vs_index_merge_innodb : MDEV-15283 - Server has gone away -main.selectivity : Modified in 10.1.36 +main.read_only : Modified in 10.1.38 +main.row-checksum : Modified in 10.1.38 main.set_statement : MDEV-13183 - Wrong result main.show_explain : MDEV-10674 - sporadic failure -main.sp : Modified in 10.1.36 main.sp_notembedded : MDEV-10607 - internal error main.sp-security : MDEV-10607 - sporadic "can't connect"; modified in 10.1.37 -main.stat_tables : Modified in 10.1.37 +main.stat_tables : Modified in 10.1.38 main.stat_tables_par_innodb : MDEV-14155 - wrong rounding main.status : MDEV-8510 - sporadic wrong result -main.subselect_extra_no_semijoin : Modified in 10.1.36 main.subselect_innodb : MDEV-10614 - sporadic wrong results +main.subselect_mat : Modified in 10.1.38 +main.subselect2 : Modified in 10.1.38 main.tc_heuristic_recover : MDEV-15200 - wrong error on mysqld_stub_cmd main.type_blob : MDEV-15195 - Wrong result main.type_datetime : Modified in 10.1.37 @@ -92,6 +107,7 @@ main.type_datetime_hires : MDEV-10687 - timeout main.type_float : Modified in 10.1.37 main.type_newdecimal : Modified in 10.1.37 main.type_year : Modified in 10.1.37 +main.union : Modified in 10.1.38 main.xa : MDEV-11769 - lock wait timeout #---------------------------------------------------------------- @@ -109,15 +125,15 @@ auth_gssapi.basic : Modified in 10.1.37 #---------------------------------------------------------------- +binlog.binlog_base64_flag : Modified in 10.1.38 binlog.binlog_commit_wait : MDEV-10150 - Error: too much time elapsed binlog.binlog_flush_binlogs_delete_domain : Modified in 10.1.37 -binlog.binlog_incident : Modified in 10.1.36 binlog.binlog_killed : MDEV-12925 - Wrong result +binlog.binlog_mysqlbinlog_row_frag : Added in 10.1.38 binlog.binlog_xa_recover : MDEV-8517 - Extra checkpoint #---------------------------------------------------------------- -binlog_encryption.binlog_incident : Modified in 10.1.36 binlog_encryption.binlog_xa_recover : MDEV-12908 - Extra checkpoint binlog_encryption.encrypted_master : MDEV-12906 - Failed to sync binlog_encryption.rpl_parallel : MDEV-10653 - Timeout @@ -129,6 +145,7 @@ binlog.load_data_stm_view : MDEV-16948 - Wrong result #---------------------------------------------------------------- +connect.part_table : Modified in 10.1.38 connect.pivot : MDEV-14803 - failed to discover table connect.xml2 : Modified in 10.1.37 connect.zip : MDEV-13884 - Wrong result @@ -138,13 +155,15 @@ connect.zip : MDEV-13884 - Wrong result encryption.create_or_replace : MDEV-16115 - Trying to access tablespace encryption.debug_key_management : MDEV-13841 - Timeout on wait condition encryption.encrypt_and_grep : MDEV-13765 - Wrong result -encryption.innodb-checksum-algorithm : MDEV-16896 - Server crash +encryption.innodb-checksum-algorithm : Modified in 10.1.38 encryption.innodb-compressed-blob : MDEV-14728 - Unable to get certificate +encryption.innodb-encryption-alter : Modified in 10.1.38 encryption.innodb_encryption_discard_import : MDEV-16116 - Wrong result encryption.innodb_encryption-page-compression : MDEV-12630 - crash or assertion failure encryption.innodb_encryption_row_compressed : MDEV-16113 - Crash encryption.innodb_first_page : MDEV-10689 - Crash encryption.innodb-first-page-read : MDEV-14356 - Timeout on wait condition +encryption.innodb-force-corrupt : Modified in 10.1.38 encryption.innodb_lotoftables : MDEV-16111 - Wrong result encryption.innodb-page_encryption : MDEV-10641 - mutex problem encryption.innodb-read-only : MDEV-14728 - Unable to get certificate; MDEV-16563 - Crash on startup @@ -190,29 +209,35 @@ heap.heap_btree : Modified in 10.1.37 #---------------------------------------------------------------- +innodb.alter_candidate_key : Added in 10.1.38 innodb.alter_inplace_perfschema : Added in 10.1.37 innodb.binlog_consistent : MDEV-10618 - Server fails to start innodb.doublewrite : MDEV-12905 - Lost connection to MySQL server -innodb.foreign-keys : Modified in 10.1.36 -innodb.foreign_key : Modified in 10.1.37 +innodb.foreign_key : Modified in 10.1.38 innodb.group_commit_crash : MDEV-11770 - checksum mismatch innodb.group_commit_crash_no_optimize_thread : MDEV-11770 - checksum mismatch +innodb.innodb_28867993 : Added in 10.1.38 innodb.innodb-64k-crash : MDEV-13872 - Failure and crash on startup -innodb.innodb-alter-debug : MDEV-13182 - InnoDB: adjusting FSP_SPACE_FLAGS; modified in 10.1.37 +innodb.innodb-alter : Modified in 10.1.38 +innodb.innodb-alter-debug : MDEV-13182 - InnoDB: adjusting FSP_SPACE_FLAGS; modified in 10.1.38 innodb.innodb-alter-table : MDEV-10619 - Testcase timeout innodb.innodb-blob : MDEV-12053 - Client crash innodb.innodb_bug14147491 : MDEV-11808 - wrong error codes innodb.innodb_bug30423 : MDEV-7311 - Wrong number of rows in the plan innodb.innodb_bug48024 : MDEV-14352 - Assertion failure innodb.innodb-fk : MDEV-13832 - Assertion failure on shutdown -innodb.innodb-lock : Modified in 10.1.36 +innodb.innodb-index : Modified in 10.1.38 innodb.innodb_max_recordsize_64k : MDEV-15203 - wrong result innodb.innodb_monitor : MDEV-10939 - Testcase timeout innodb.innodb-page_compression_default : MDEV-14121 - Assertion failure innodb.innodb-page_compression_lzma : MDEV-14353 - wrong result on Fedora 25 innodb.innodb-page_compression_zip : MDEV-10641 - mutex problem +innodb.innodb_simulate_comp_failures : MDEV-18417 - ASAN failures innodb.innodb_stats : MDEV-10682 - wrong result innodb.innodb_sys_semaphore_waits : MDEV-10331 - wrong result +innodb.innodb-table-online : Modified in 10.1.38 +innodb.innodb-virtual-columns : Modified in 10.1.38 +innodb.innodb_zip_innochecksum : Modified in 10.1.38 innodb.innodb_zip_innochecksum2 : MDEV-13882 - Warning: difficult to find free blocks innodb.log_file_size : MDEV-15668 - Not found pattern innodb.recovery_shutdown : MDEV-15671 - Warning: database page corruption @@ -223,23 +248,24 @@ innodb.xa_recovery : MDEV-15279 - mysqld got exception #---------------------------------------------------------------- -innodb_fts.fts_kill_query : Modified in 10.0.37 innodb_fts.innodb-fts-fic : MDEV-14154 - Assertion failure innodb_fts.innodb_fts_misc_debug : MDEV-14156 - Unexpected warning #---------------------------------------------------------------- -maria.concurrent : Added in 10.1.36 -maria.create : Added in 10.1.36 maria.fulltext2 : Added in 10.1.37 maria.insert_select : MDEV-12757 - Timeout maria.insert_select-7314 : MDEV-16492 - Timeout -maria.maria : MDEV-14430 - Wrong result; modified in 10.1.36 +maria.maria : MDEV-14430 - Wrong result #---------------------------------------------------------------- +mariabackup.encrypted_page_compressed : Added in 10.1.38 +mariabackup.encrypted_page_corruption : Added in 10.1.38 +mariabackup.huge_lsn : Opt file modified in 10.1.38 mariabackup.incremental_encrypted : MDEV-15667 - Timeout mariabackup.mdev-14447 : MDEV-15201 - Timeout +mariabackup.unencrypted_page_compressed : Added in 10.1.38 mariabackup.xb_compressed_encrypted : MDEV-14812 - Segfault mariabackup.xb_partition : MDEV-17584 - Crash on shutdown @@ -277,11 +303,13 @@ parts.update_and_cache : Added in 10.1.37 #---------------------------------------------------------------- perfschema.connect_attrs : MDEV-17283 - Wrong result +perfschema.dml_setup_instruments : Modified in 10.1.38 perfschema.func_file_io : MDEV-5708 - fails for s390x perfschema.func_mutex : MDEV-5708 - fails for s390x perfschema.hostcache_ipv6_ssl : MDEV-10696 - crash on shutdown perfschema.privilege_table_io : MDEV-13184 - Extra lines perfschema.rpl_gtid_func : MDEV-16897 - Wrong result +perfschema.socket_connect : Modified in 10.1.38 perfschema.socket_summary_by_event_name_func : MDEV-10622 - Socket summary tables do not match perfschema.stage_mdl_global : MDEV-11803 - wrong result on slow builders perfschema.stage_mdl_procedure : MDEV-11545 - Wrong result @@ -299,6 +327,7 @@ plugins.thread_pool_server_audit : MDEV-9562 - crashes on sol10-sparc #---------------------------------------------------------------- roles.create_and_grant_role : MDEV-11772 - wrong result +roles.flush_roles-17898 : Added in 10.1.38 #---------------------------------------------------------------- @@ -313,7 +342,6 @@ rpl.rpl_ddl : MDEV-10417 - Fails on Mips rpl.rpl_domain_id_filter_io_crash : MDEV-14357 - Wrong result rpl.rpl_domain_id_filter_restart : MDEV-10684 - Wrong result rpl.rpl_drop_db_fail : MDEV-16898 - Slave fails to start -rpl.rpl_foreign_key_innodb : Modified in 10.1.36 rpl.rpl_gtid_basic : MDEV-10681 - server startup problem rpl.rpl_gtid_crash : MDEV-9501 - Warning: failed registering on master rpl.rpl_gtid_delete_domain : MDEV-14463 - Timeout in include @@ -321,6 +349,7 @@ rpl.rpl_gtid_mdev9033 : MDEV-10680 - warnings rpl.rpl_gtid_reconnect : MDEV-14497 - Timeout rpl.rpl_gtid_stop_start : MDEV-10629 - Crash on shutdown, MDEV-12629 - Valgrind warnings rpl.rpl_gtid_until : MDEV-10625 - warnings in error log +rpl.rpl_idempotency : Modified in 10.1.38 rpl.rpl_innodb_bug30888 : MDEV-10417 - Fails on Mips rpl.rpl_insert : MDEV-9329 - Fails on Ubuntu/s390x rpl.rpl_insert_delayed : MDEV-9329 - Fails on Ubuntu/s390x @@ -346,6 +375,7 @@ rpl.rpl_partition_innodb : MDEV-10417 - Fails on Mips rpl.rpl_password_boundaries : MDEV-11534 - Slave IO warnings rpl.rpl_row_basic_11bugs : MDEV-12171 - Server failed to start rpl.rpl_row_basic_2myisam : MDEV-13875 - command "diff_files" failed +rpl.rpl_row_big_table_id : Added in 10.1.38 rpl.rpl_row_drop_create_temp_table : MDEV-14487 - Wrong result rpl.rpl_row_img_blobs : MDEV-13875 - command "diff_files" failed rpl.rpl_row_img_eng_min : MDEV-13875 - command "diff_files" failed @@ -353,7 +383,6 @@ rpl.rpl_row_img_eng_noblob : MDEV-13875 - command "diff_files" failed rpl.rpl_row_index_choice : MDEV-15196 - Slave crash rpl.rpl_row_lcase_tblnames : Added in 10.1.37 rpl.rpl_row_sp001 : MDEV-9329 - Fails on Ubuntu/s390x -rpl.rpl_row_spatial : Added in 10.1.36 rpl.rpl_semi_sync : MDEV-11220 - Wrong result rpl.rpl_semi_sync_after_sync : MDEV-14366 - Wrong result rpl.rpl_semi_sync_after_sync_row : MDEV-14366 - Wrong result @@ -369,6 +398,7 @@ rpl.rpl_stm_mixing_engines : MDEV-14489 - Sync slave with master fail rpl.rpl_stm_relay_ign_space : MDEV-14360 - Test assertion rpl.rpl_sync : MDEV-10633 - Database page corruption rpl.rpl_temporary_error2 : MDEV-10634 - Wrong number of retries +rpl.rpl_trigger : MDEV-18055 - Wrong result rpl.sec_behind_master-5114 : MDEV-13878 - Wrong result rpl/extra/rpl_tests.* : MDEV-10994 - tests not maintained @@ -403,18 +433,20 @@ stress.ddl_innodb : MDEV-10635 - Testcase timeout #---------------------------------------------------------------- sys_vars.autocommit_func2 : MDEV-9329 - Fails on Ubuntu/s390x +sys_vars.delayed_insert_limit_func : MDEV-17683 - Wrong result; modified in 10.1.38 sys_vars.innodb_ft_result_cache_limit_32 : Added in 10.1.37 sys_vars.innodb_ft_result_cache_limit_64 : Added in 10.1.37 sys_vars.keep_files_on_create_basic : MDEV-10676 - timeout sys_vars.log_slow_admin_statements_func : MDEV-12235 - Server crash sys_vars.rpl_init_slave_func : MDEV-10149 - wrong results +sys_vars.sql_low_priority_updates_func : Modified in 10.1.38 +sys_vars.table_definition_cache_basic : Modified in 10.1.38 sys_vars.thread_cache_size_func : MDEV-11775 - Wrong result sys_vars.wait_timeout_func : MDEV-12896 - Wrong result +sys_vars.wsrep_sst_method_basic : Modified in 10.1.38 #---------------------------------------------------------------- -tokudb.* : suite.pm and multiple modifications in 10.1.36 - tokudb.change_column_all_1000_10 : MDEV-12640 - Crash tokudb.change_column_bin : MDEV-12640 - Crash tokudb.change_column_char : MDEV-12822 - Lost connection to MySQL server @@ -436,13 +468,12 @@ tokudb.type_datetime : MDEV-15193 - Wrong result tokudb_backup.* : MDEV-11001 - tests don't work -tokudb_bugs.alter_table_comment_rebuild_data : Added in 10.1.36 +tokudb_bugs.PS-4979 : Added in 10.1.38 tokudb_bugs.checkpoint_lock : MDEV-10637 - Wrong processlist output tokudb_bugs.checkpoint_lock_3 : MDEV-10637 - Wrong processlist output tokudb_bugs.frm_store : MDEV-12823 - Valgrind tokudb_bugs.frm_store2 : MDEV-12823 - Valgrind tokudb_bugs.frm_store3 : MDEV-12823 - Valgrind -tokudb_bugs.PS-3773 : Added in 10.1.36 tokudb_bugs.xa : MDEV-11804 - Lock wait timeout tokudb_rpl.* : MDEV-11001 - tests don't work @@ -452,10 +483,9 @@ rpl-tokudb.* : MDEV-14354 - Tests fail with tcmalloc #---------------------------------------------------------------- -unit.lf : MDEV-12897 - Signal 11 thrown +unit.lf : MDEV-18416 - object was probably modified after being freed unit.ma_test_loghandler : MDEV-10638 - record read not ok -unit.mf_iocache : MDEV-17586 - total matches eof, cache is read up to eof -unit.my_atomic : MDEV-15670 - Signal 11 thrown +unit.my_atomic : MDEV-18472 - Signal 11 thrown #---------------------------------------------------------------- diff --git a/mysys/mf_iocache.c b/mysys/mf_iocache.c index 79893d6f7..5072a3220 100644 --- a/mysys/mf_iocache.c +++ b/mysys/mf_iocache.c @@ -325,6 +325,10 @@ int init_io_cache(IO_CACHE *info, File file, size_t cachesize, } info->inited=info->aio_result.pending=0; #endif + if (type == READ_CACHE || type == WRITE_CACHE || type == SEQ_READ_APPEND) + info->myflags|= MY_FULL_IO; + else + info->myflags&= ~MY_FULL_IO; DBUG_RETURN(0); } /* init_io_cache */ diff --git a/mysys/mf_iocache2.c b/mysys/mf_iocache2.c index fa3b6e672..f38773316 100644 --- a/mysys/mf_iocache2.c +++ b/mysys/mf_iocache2.c @@ -23,51 +23,56 @@ #include #include -/* - Copy contents of an IO_CACHE to a file. - - SYNOPSIS - my_b_copy_to_file() - cache IO_CACHE to copy from - file File to copy to - - DESCRIPTION - Copy the contents of the cache to the file. The cache will be - re-inited to a read cache and will read from the beginning of the - cache. - - If a failure to write fully occurs, the cache is only copied - partially. +/** + Copy the cache to the file. Copying can be constrained to @c count + number of bytes when the parameter is less than SIZE_T_MAX. The + cache will be optionally re-inited to a read cache and will read + from the beginning of the cache. If a failure to write fully + occurs, the cache is only copied partially. TODO - Make this function solid by handling partial reads from the cache - in a correct manner: it should be atomic. - - RETURN VALUE - 0 All OK - 1 An error occurred + Make this function solid by handling partial reads from the cache + in a correct manner: it should be atomic. + + @param cache IO_CACHE to copy from + @param file File to copy to + @param count the copied size or the max of the type + when the whole cache is to be copied. + @return + 0 All OK + 1 An error occurred */ int -my_b_copy_to_file(IO_CACHE *cache, FILE *file) +my_b_copy_to_file(IO_CACHE *cache, FILE *file, + size_t count) { - size_t bytes_in_cache; + size_t curr_write, bytes_in_cache; DBUG_ENTER("my_b_copy_to_file"); - /* Reinit the cache to read from the beginning of the cache */ - if (reinit_io_cache(cache, READ_CACHE, 0L, FALSE, FALSE)) - DBUG_RETURN(1); bytes_in_cache= my_b_bytes_in_cache(cache); do { - if (my_fwrite(file, cache->read_pos, bytes_in_cache, + curr_write= MY_MIN(bytes_in_cache, count); + if (my_fwrite(file, cache->read_pos, curr_write, MYF(MY_WME | MY_NABP)) == (size_t) -1) DBUG_RETURN(1); - } while ((bytes_in_cache= my_b_fill(cache))); + + cache->read_pos += curr_write; + count -= curr_write; + } while (count && (bytes_in_cache= my_b_fill(cache))); if(cache->error == -1) DBUG_RETURN(1); DBUG_RETURN(0); } +int my_b_copy_all_to_file(IO_CACHE *cache, FILE *file) +{ + DBUG_ENTER("my_b_copy_all_to_file"); + /* Reinit the cache to read from the beginning of the cache */ + if (reinit_io_cache(cache, READ_CACHE, 0L, FALSE, FALSE)) + DBUG_RETURN(1); + DBUG_RETURN(my_b_copy_to_file(cache, file, SIZE_T_MAX)); +} my_off_t my_b_append_tell(IO_CACHE* info) { diff --git a/mysys/my_file.c b/mysys/my_file.c index a23ab487d..23226595b 100644 --- a/mysys/my_file.c +++ b/mysys/my_file.c @@ -52,10 +52,9 @@ static uint set_max_open_files(uint max_file_limit) DBUG_PRINT("info", ("rlim_cur: %u rlim_max: %u", (uint) rlimit.rlim_cur, (uint) rlimit.rlim_max)); - if ((ulonglong) rlimit.rlim_cur == (ulonglong) RLIM_INFINITY) - rlimit.rlim_cur = max_file_limit; - if (rlimit.rlim_cur >= max_file_limit) - DBUG_RETURN(rlimit.rlim_cur); /* purecov: inspected */ + if ((ulonglong) rlimit.rlim_cur == (ulonglong) RLIM_INFINITY || + rlimit.rlim_cur >= max_file_limit) + DBUG_RETURN(max_file_limit); rlimit.rlim_cur= rlimit.rlim_max= max_file_limit; if (setrlimit(RLIMIT_NOFILE, &rlimit)) max_file_limit= old_cur; /* Use original value */ diff --git a/mysys/my_malloc.c b/mysys/my_malloc.c index 719c13a04..99a15e6f4 100644 --- a/mysys/my_malloc.c +++ b/mysys/my_malloc.c @@ -117,6 +117,7 @@ void *my_malloc(size_t size, myf my_flags) MY_TEST(my_flags & MY_THREAD_SPECIFIC)); update_malloc_size(size + MALLOC_PREFIX_SIZE, MY_TEST(my_flags & MY_THREAD_SPECIFIC)); + TRASH_ALLOC(point, size); DBUG_EXECUTE_IF("simulate_out_of_memory", { /* my_free() handles memory accounting */ diff --git a/mysys/my_pread.c b/mysys/my_pread.c index d3524279e..2b3bfdc9e 100644 --- a/mysys/my_pread.c +++ b/mysys/my_pread.c @@ -47,8 +47,7 @@ size_t my_pread(File Filedes, uchar *Buffer, size_t Count, my_off_t offset, myf MyFlags) { - size_t readbytes; - int error= 0; + size_t readbytes, save_count= 0; DBUG_ENTER("my_pread"); @@ -66,11 +65,10 @@ size_t my_pread(File Filedes, uchar *Buffer, size_t Count, my_off_t offset, #else readbytes= pread(Filedes, Buffer, Count, offset); #endif - error = (readbytes != Count); - if (error) + if (readbytes != Count) { - my_errno= errno ? errno : -1; + my_errno= errno; if (errno == 0 || (readbytes != (size_t) -1 && (MyFlags & (MY_NABP | MY_FNABP)))) my_errno= HA_ERR_FILE_TOO_SHORT; @@ -82,6 +80,18 @@ size_t my_pread(File Filedes, uchar *Buffer, size_t Count, my_off_t offset, (int) readbytes)); continue; /* Interrupted */ } + + /* Do a read retry if we didn't get enough data on first read */ + if (readbytes != (size_t) -1 && readbytes != 0 && + (MyFlags & MY_FULL_IO)) + { + Buffer+= readbytes; + Count-= readbytes; + save_count+= readbytes; + offset+= readbytes; + continue; + } + if (MyFlags & (MY_WME | MY_FAE | MY_FNABP)) { if (readbytes == (size_t) -1) @@ -97,8 +107,10 @@ size_t my_pread(File Filedes, uchar *Buffer, size_t Count, my_off_t offset, DBUG_RETURN(MY_FILE_ERROR); /* Return with error */ } if (MyFlags & (MY_NABP | MY_FNABP)) - DBUG_RETURN(0); /* Read went ok; Return 0 */ - DBUG_RETURN(readbytes); /* purecov: inspected */ + readbytes= 0; /* Read went ok; Return 0 */ + else + readbytes+= save_count; + DBUG_RETURN(readbytes); } } /* my_pread */ diff --git a/mysys/my_read.c b/mysys/my_read.c index 922da5a7e..58ab9070c 100644 --- a/mysys/my_read.c +++ b/mysys/my_read.c @@ -35,17 +35,16 @@ size_t my_read(File Filedes, uchar *Buffer, size_t Count, myf MyFlags) { - size_t readbytes, save_count; + size_t readbytes, save_count= 0; DBUG_ENTER("my_read"); DBUG_PRINT("my",("fd: %d Buffer: %p Count: %lu MyFlags: %lu", Filedes, Buffer, (ulong) Count, MyFlags)); - save_count= Count; if (!(MyFlags & (MY_WME | MY_FAE | MY_FNABP))) MyFlags|= my_global_flags; for (;;) { - errno= 0; /* Linux, Windows don't reset this on EOF/success */ + errno= 0; /* Linux, Windows don't reset this on EOF/success */ #ifdef _WIN32 readbytes= my_win_read(Filedes, Buffer, Count); #else @@ -61,47 +60,52 @@ size_t my_read(File Filedes, uchar *Buffer, size_t Count, myf MyFlags) if (readbytes != Count) { - my_errno= errno; - if (errno == 0 || (readbytes != (size_t) -1 && - (MyFlags & (MY_NABP | MY_FNABP)))) - my_errno= HA_ERR_FILE_TOO_SHORT; + int got_errno= my_errno= errno; DBUG_PRINT("warning",("Read only %d bytes off %lu from %d, errno: %d", (int) readbytes, (ulong) Count, Filedes, - my_errno)); + got_errno)); + + if (got_errno == 0 || (readbytes != (size_t) -1 && + (MyFlags & (MY_NABP | MY_FNABP)))) + my_errno= HA_ERR_FILE_TOO_SHORT; - if ((readbytes == 0 || (int) readbytes == -1) && errno == EINTR) - { + if ((readbytes == 0 || (int) readbytes == -1) && got_errno == EINTR) + { DBUG_PRINT("debug", ("my_read() was interrupted and returned %ld", (long) readbytes)); continue; /* Interrupted */ } + /* Do a read retry if we didn't get enough data on first read */ + if (readbytes != (size_t) -1 && readbytes != 0 && + (MyFlags & MY_FULL_IO)) + { + Buffer+= readbytes; + Count-= readbytes; + save_count+= readbytes; + continue; + } + if (MyFlags & (MY_WME | MY_FAE | MY_FNABP)) { if (readbytes == (size_t) -1) my_error(EE_READ, MYF(ME_BELL | ME_WAITTANG | (MyFlags & (ME_JUST_INFO | ME_NOREFRESH))), - my_filename(Filedes),my_errno); + my_filename(Filedes), got_errno); else if (MyFlags & (MY_NABP | MY_FNABP)) my_error(EE_EOFERR, MYF(ME_BELL | ME_WAITTANG | (MyFlags & (ME_JUST_INFO | ME_NOREFRESH))), - my_filename(Filedes),my_errno); + my_filename(Filedes), got_errno); } if (readbytes == (size_t) -1 || ((MyFlags & (MY_FNABP | MY_NABP)) && !(MyFlags & MY_FULL_IO))) - DBUG_RETURN(MY_FILE_ERROR); /* Return with error */ - if (readbytes != (size_t) -1 && (MyFlags & MY_FULL_IO)) - { - Buffer+= readbytes; - Count-= readbytes; - continue; - } + DBUG_RETURN(MY_FILE_ERROR); /* Return with error */ } if (MyFlags & (MY_NABP | MY_FNABP)) - readbytes= 0; /* Ok on read */ - else if (MyFlags & MY_FULL_IO) - readbytes= save_count; + readbytes= 0; /* Ok on read */ + else + readbytes+= save_count; break; } DBUG_RETURN(readbytes); diff --git a/mysys/safemalloc.c b/mysys/safemalloc.c index 5d19647c9..08e43d0a8 100644 --- a/mysys/safemalloc.c +++ b/mysys/safemalloc.c @@ -282,8 +282,8 @@ static void warn(const char *format,...) va_list args; DBUG_PRINT("error", ("%s", format)); va_start(args,format); - fflush(stderr); vfprintf(stderr, format, args); + fflush(stderr); va_end(args); #ifdef HAVE_BACKTRACE diff --git a/plugin/wsrep_info/mysql-test/wsrep_info/suite.pm b/plugin/wsrep_info/mysql-test/wsrep_info/suite.pm index 9f684ae6b..cf4d124cb 100644 --- a/plugin/wsrep_info/mysql-test/wsrep_info/suite.pm +++ b/plugin/wsrep_info/mysql-test/wsrep_info/suite.pm @@ -30,10 +30,12 @@ push @::global_suppressions, qr(WSREP: Failed to send state UUID:.*), qr(WSREP: wsrep_sst_receive_address.*), qr(WSREP: Could not open saved state file for reading: .*), + qr(WSREP: Could not open state file for reading: .*), qr(WSREP: last inactive check more than .* skipping check), qr(WSREP: Gap in state sequence. Need state transfer.), qr(WSREP: Failed to prepare for incremental state transfer: .*), qr(WSREP: SYNC message from member .* in non-primary configuration. Ignored.), + qr|WSREP: access file\(.*gvwstate.dat\) failed\(No such file or directory\)|, ); diff --git a/scripts/mysql_install_db.sh b/scripts/mysql_install_db.sh index 0bbac8ba8..b89ea716a 100644 --- a/scripts/mysql_install_db.sh +++ b/scripts/mysql_install_db.sh @@ -39,6 +39,9 @@ install_params="" auth_root_authentication_method=normal auth_root_socket_user='root' +dirname0=`dirname $0 2>/dev/null` +dirname0=`dirname $dirname0 2>/dev/null` + usage() { cat < 4 ) + if ( $db_release > 4 ) { @recs = Hashes("show global status"); - } - else + } + else { @recs = Hashes("show status"); } @@ -978,7 +978,7 @@ sub GetData() # print("q_diff: $STATUS{Questions} - $OLD_STATUS{Questions} / $t_delta = $q_diff\n"); printf(" Sorts: %5.0f qps now: %4.0f Slow qps: %3.1f Threads: %4.0f (%4.0f/%4.0f) %02.0f/%02.0f/%02.0f/%02.0f\n", - ( $STATUS{Sort_rows} - $OLD_STATUS{Sort_rows} ) / $t_delta, + ( $STATUS{Sort_rows} - $OLD_STATUS{Sort_rows} ) / $t_delta, ( $STATUS{Questions} - $OLD_STATUS{Questions} ) / $t_delta, ( # slow now (qps) ($STATUS{Slow_queries} ) ? @@ -989,7 +989,7 @@ sub GetData() $STATUS{Threads_running}, $STATUS{Threads_cached}, - (100 * ($STATUS{Com_select} - $OLD_STATUS{Com_select} + + (100 * ($STATUS{Com_select} - $OLD_STATUS{Com_select} + ($STATUS{Qcache_hits}||0) - ($OLD_STATUS{Qcache_hits}||0) ) ) / ($q_diff ), (100 * ($STATUS{Com_insert} - $OLD_STATUS{Com_insert} + @@ -1075,7 +1075,7 @@ sub GetData() $t_delta, ($STATUS{Rows_tmp_read} - $OLD_STATUS{Rows_tmp_read}) / $t_delta, - ($STATUS{Handler_tmp_write} + ($STATUS{Handler_tmp_write} -$OLD_STATUS{Handler_tmp_write})/$t_delta, ($STATUS{Handler_tmp_update} - $OLD_STATUS{Handler_tmp_update})/$t_delta); @@ -1119,6 +1119,7 @@ sub GetData() } } print " Replication "; + print "Master:$data->{Master_Host} "; print "IO:$data->{Slave_IO_Running} "; print "SQL:$data->{Slave_SQL_Running} "; print RESET() if ($HAS_COLOR); @@ -1225,9 +1226,9 @@ sub GetData() $thread->{State} ||= ""; $thread->{Progress} ||= 0; - ## alter double hyphen comments so they don't break + ## alter double hyphen comments so they don't break ## the query when newlines are removed - http://freshmeat.net/users/jerjones - $thread->{Info} =~ s~\s--(.*)$~ /* $1 */ ~mg; + $thread->{Info} =~ s~\s--(.*)$~ /* $1 */ ~mg; ## Normalize spaces -- mostly disabled for now. This can ## break EXPLAIN if you try to explain a mangled query. It diff --git a/scripts/wsrep_sst_common.sh b/scripts/wsrep_sst_common.sh index e63ffdfa5..976f0e0cf 100644 --- a/scripts/wsrep_sst_common.sh +++ b/scripts/wsrep_sst_common.sh @@ -44,13 +44,15 @@ case "$1" in addr_no_bracket=${WSREP_SST_OPT_ADDR#\[} readonly WSREP_SST_OPT_HOST_UNESCAPED=${addr_no_bracket%%\]*} readonly WSREP_SST_OPT_HOST="[${WSREP_SST_OPT_HOST_UNESCAPED}]" + readonly WSREP_SST_OPT_HOST_ESCAPED="\\[${WSREP_SST_OPT_HOST_UNESCAPED}\\]" ;; *) readonly WSREP_SST_OPT_HOST=${WSREP_SST_OPT_ADDR%%[:/]*} readonly WSREP_SST_OPT_HOST_UNESCAPED=$WSREP_SST_OPT_HOST + readonly WSREP_SST_OPT_HOST_ESCAPED=$WSREP_SST_OPT_HOST ;; esac - remain=${WSREP_SST_OPT_ADDR#${WSREP_SST_OPT_HOST}} + remain=${WSREP_SST_OPT_ADDR#${WSREP_SST_OPT_HOST_ESCAPED}} remain=${remain#:} readonly WSREP_SST_OPT_ADDR_PORT=${remain%%/*} remain=${remain#*/} @@ -277,7 +279,7 @@ wsrep_check_programs() } # -# user can specify xtrabackup specific settings that will be used during sst +# user can specify mariabackup specific settings that will be used during sst # process like encryption, etc..... # parse such configuration option. (group for xb settings is [sst] in my.cnf # diff --git a/scripts/wsrep_sst_mariabackup.sh b/scripts/wsrep_sst_mariabackup.sh index d9fbae8c5..4891ade7c 100644 --- a/scripts/wsrep_sst_mariabackup.sh +++ b/scripts/wsrep_sst_mariabackup.sh @@ -90,6 +90,9 @@ DATA="${WSREP_SST_OPT_DATA}" INFO_FILE="xtrabackup_galera_info" IST_FILE="xtrabackup_ist" MAGIC_FILE="${DATA}/${INFO_FILE}" +INNOAPPLYLOG="${DATA}/mariabackup.prepare.log" +INNOMOVELOG="${DATA}/mariabackup.move.log" +INNOBACKUPLOG="${DATA}/mariabackup.backup.log" # Setting the path for ss and ip export PATH="/usr/sbin:/sbin:$PATH" @@ -356,6 +359,8 @@ read_cnf() ssyslog=$(parse_cnf sst sst-syslog 0) ssystag=$(parse_cnf mysqld_safe syslog-tag "${SST_SYSLOG_TAG:-}") ssystag+="-" + sstlogarchive=$(parse_cnf sst sst-log-archive 1) + sstlogarchivedir=$(parse_cnf sst sst-log-archive-dir "/tmp/sst_log_archive") if [[ $speciald -eq 0 ]];then wsrep_log_error "sst-special-dirs equal to 0 is not supported, falling back to 1" @@ -515,12 +520,24 @@ kill_xtrabackup() setup_ports() { if [[ "$WSREP_SST_OPT_ROLE" == "donor" ]];then - SST_PORT=$(echo $WSREP_SST_OPT_ADDR | awk -F '[:/]' '{ print $2 }') - REMOTEIP=$(echo $WSREP_SST_OPT_ADDR | awk -F ':' '{ print $1 }') - lsn=$(echo $WSREP_SST_OPT_ADDR | awk -F '[:/]' '{ print $4 }') - sst_ver=$(echo $WSREP_SST_OPT_ADDR | awk -F '[:/]' '{ print $5 }') + if [[ ${WSREP_SST_OPT_ADDR:0:1} == '[' ]];then + remain=$(echo $WSREP_SST_OPT_ADDR | awk -F '\\][:/]' '{ print $2 }') + REMOTEIP=$(echo $WSREP_SST_OPT_ADDR | awk -F '\\]:' '{ print $1 }')"]" + SST_PORT=$(echo $remain | awk -F '[:/]' '{ print $1 }') + lsn=$(echo $remain | awk -F '[:/]' '{ print $3 }') + sst_ver=$(echo $remain | awk -F '[:/]' '{ print $4 }') + else + SST_PORT=$(echo $WSREP_SST_OPT_ADDR | awk -F '[:/]' '{ print $2 }') + REMOTEIP=$(echo $WSREP_SST_OPT_ADDR | awk -F ':' '{ print $1 }') + lsn=$(echo $WSREP_SST_OPT_ADDR | awk -F '[:/]' '{ print $4 }') + sst_ver=$(echo $WSREP_SST_OPT_ADDR | awk -F '[:/]' '{ print $5 }') + fi else - SST_PORT=$(echo ${WSREP_SST_OPT_ADDR} | awk -F ':' '{ print $2 }') + if [[ ${WSREP_SST_OPT_ADDR:0:1} == '[' ]];then + SST_PORT=$(echo ${WSREP_SST_OPT_ADDR} | awk -F '\\]:' '{ print $2 }') + else + SST_PORT=$(echo ${WSREP_SST_OPT_ADDR} | awk -F ':' '{ print $2 }') + fi fi } @@ -712,10 +729,68 @@ if [[ $ssyslog -eq 1 ]];then INNOBACKUP="${INNOBACKUPEX_BIN} --innobackupex ${WSREP_SST_OPT_CONF} $disver $iopts \$tmpopts \$INNOEXTRA --galera-info --stream=\$sfmt \$itmpdir 2> >(logger -p daemon.err -t ${ssystag}innobackupex-backup)" fi -else - INNOAPPLY="${INNOBACKUPEX_BIN} --innobackupex $disver $iapts --apply-log \$rebuildcmd \${DATA} &>\${DATA}/innobackup.prepare.log" - INNOMOVE="${INNOBACKUPEX_BIN} --innobackupex ${WSREP_SST_OPT_CONF} $disver $impts --move-back --force-non-empty-directories \${DATA} &>\${DATA}/innobackup.move.log" - INNOBACKUP="${INNOBACKUPEX_BIN} --innobackupex ${WSREP_SST_OPT_CONF} $disver $iopts \$tmpopts \$INNOEXTRA --galera-info --stream=\$sfmt \$itmpdir 2>\${DATA}/innobackup.backup.log" +else + +if [[ "$sstlogarchive" -eq 1 ]] +then + ARCHIVETIMESTAMP=$(date "+%Y.%m.%d-%H.%M.%S") + newfile="" + + if [[ ! -z "$sstlogarchivedir" ]] + then + if [[ ! -d "$sstlogarchivedir" ]] + then + mkdir -p "$sstlogarchivedir" + fi + fi + + if [ -e "${INNOAPPLYLOG}" ] + then + if [[ ! -z "$sstlogarchivedir" ]] + then + newfile=$sstlogarchivedir/$(basename "${INNOAPPLYLOG}").${ARCHIVETIMESTAMP} + else + newfile=${INNOAPPLYLOG}.${ARCHIVETIMESTAMP} + fi + + wsrep_log_info "Moving ${INNOAPPLYLOG} to ${newfile}" + mv "${INNOAPPLYLOG}" "${newfile}" + gzip "${newfile}" + fi + + if [ -e "${INNOMOVELOG}" ] + then + if [[ ! -z "$sstlogarchivedir" ]] + then + newfile=$sstlogarchivedir/$(basename "${INNOMOVELOG}").${ARCHIVETIMESTAMP} + else + newfile=${INNOMOVELOG}.${ARCHIVETIMESTAMP} + fi + + wsrep_log_info "Moving ${INNOMOVELOG} to ${newfile}" + mv "${INNOMOVELOG}" "${newfile}" + gzip "${newfile}" + fi + + if [ -e "${INNOBACKUPLOG}" ] + then + if [[ ! -z "$sstlogarchivedir" ]] + then + newfile=$sstlogarchivedir/$(basename "${INNOBACKUPLOG}").${ARCHIVETIMESTAMP} + else + newfile=${INNOBACKUPLOG}.${ARCHIVETIMESTAMP} + fi + + wsrep_log_info "Moving ${INNOBACKUPLOG} to ${newfile}" + mv "${INNOBACKUPLOG}" "${newfile}" + gzip "${newfile}" + fi + +fi + + INNOAPPLY="${INNOBACKUPEX_BIN} --innobackupex $disver $iapts --apply-log \$rebuildcmd \${DATA} &> ${INNOAPPLYLOG}" + INNOMOVE="${INNOBACKUPEX_BIN} --innobackupex ${WSREP_SST_OPT_CONF} $disver $impts --move-back --force-non-empty-directories \${DATA} &> ${INNOMOVELOG}" + INNOBACKUP="${INNOBACKUPEX_BIN} --innobackupex ${WSREP_SST_OPT_CONF} $disver $iopts \$tmpopts \$INNOEXTRA --galera-info --stream=\$sfmt \$itmpdir 2> ${INNOBACKUPLOG}" fi get_stream @@ -812,7 +887,7 @@ then if [ ${RC[0]} -ne 0 ]; then wsrep_log_error "${INNOBACKUPEX_BIN} finished with error: ${RC[0]}. " \ - "Check ${DATA}/innobackup.backup.log" + "Check syslog or ${INNOBACKUPLOG} for details" exit 22 elif [[ ${RC[$(( ${#RC[@]}-1 ))]} -eq 1 ]];then wsrep_log_error "$tcmd finished with error: ${RC[1]}" @@ -877,7 +952,11 @@ then if [ -z "${SST_PORT}" ] then SST_PORT=4444 - ADDR="$(echo ${WSREP_SST_OPT_ADDR} | awk -F ':' '{ print $1 }'):${SST_PORT}" + if [[ ${ADDR:0:1} == '[' ]];then + ADDR="$(echo ${WSREP_SST_OPT_ADDR} | awk -F '\\]:' '{ print $1 }')]:${SST_PORT}" + else + ADDR="$(echo ${WSREP_SST_OPT_ADDR} | awk -F ':' '{ print $1 }'):${SST_PORT}" + fi fi wait_for_listen ${SST_PORT} ${ADDR} ${MODULE} & @@ -1033,13 +1112,12 @@ then if [ $? -ne 0 ]; then - wsrep_log_error "${INNOBACKUPEX_BIN} apply finished with errors. Check ${DATA}/innobackup.prepare.log" + wsrep_log_error "${INNOBACKUPEX_BIN} apply finished with errors. Check syslog or ${INNOAPPLYLOG} for details" exit 22 fi MAGIC_FILE="${TDATA}/${INFO_FILE}" set +e - rm $TDATA/innobackup.prepare.log $TDATA/innobackup.move.log set -e wsrep_log_info "Moving the backup to ${TDATA}" timeit "Xtrabackup move stage" "$INNOMOVE" @@ -1049,7 +1127,7 @@ then DATA=${TDATA} else wsrep_log_error "Move failed, keeping ${DATA} for further diagnosis" - wsrep_log_error "Check ${DATA}/innobackup.move.log for details" + wsrep_log_error "Check syslog or ${INNOMOVELOG} for details" exit 22 fi diff --git a/scripts/wsrep_sst_rsync.sh b/scripts/wsrep_sst_rsync.sh index 1b42903e0..1bded37a6 100644 --- a/scripts/wsrep_sst_rsync.sh +++ b/scripts/wsrep_sst_rsync.sh @@ -364,11 +364,17 @@ then rm -rf "$RSYNC_PID" ADDR=$WSREP_SST_OPT_ADDR - RSYNC_PORT=$(echo $ADDR | awk -F ':' '{ print $2 }') + if [[ ${ADDR:0:1} == '[' ]]; then + RSYNC_PORT=$(echo $ADDR | awk -F '\\]:' '{ print $2 }') + RSYNC_ADDR=$(echo $ADDR | awk -F '\\]:' '{ print $1 }')"]" + else + RSYNC_PORT=$(echo $ADDR | awk -F ':' '{ print $2 }') + RSYNC_ADDR=$(echo $ADDR | awk -F ':' '{ print $1 }') + fi if [ -z "$RSYNC_PORT" ] then RSYNC_PORT=4444 - ADDR="$(echo $ADDR | awk -F ':' '{ print $1 }'):$RSYNC_PORT" + ADDR="$RSYNC_ADDR:$RSYNC_PORT" fi trap "exit 32" HUP PIPE diff --git a/sql-common/client.c b/sql-common/client.c index cf2d328cb..4fa167a21 100644 --- a/sql-common/client.c +++ b/sql-common/client.c @@ -110,6 +110,12 @@ my_bool net_flush(NET *net); #include #include +typedef enum { + ALWAYS_ACCEPT, /* heuristics is disabled, use CLIENT_LOCAL_FILES */ + WAIT_FOR_QUERY, /* heuristics is enabled, not sending files */ + ACCEPT_FILE_REQUEST /* heuristics is enabled, ready to send a file */ +} auto_local_infile_state; + #define native_password_plugin_name "mysql_native_password" #define old_password_plugin_name "mysql_old_password" @@ -1633,8 +1639,10 @@ mysql_init(MYSQL *mysql) --enable-local-infile */ -#if defined(ENABLED_LOCAL_INFILE) && !defined(MYSQL_SERVER) +#if ENABLED_LOCAL_INFILE && !defined(MYSQL_SERVER) mysql->options.client_flag|= CLIENT_LOCAL_FILES; + mysql->auto_local_infile= ENABLED_LOCAL_INFILE == LOCAL_INFILE_MODE_AUTO + ? WAIT_FOR_QUERY : ALWAYS_ACCEPT; #endif #ifdef HAVE_SMEM @@ -4003,8 +4011,14 @@ static my_bool cli_read_query_result(MYSQL *mysql) ulong field_count; MYSQL_DATA *fields; ulong length; +#ifdef MYSQL_CLIENT + my_bool can_local_infile= mysql->auto_local_infile != WAIT_FOR_QUERY; +#endif DBUG_ENTER("cli_read_query_result"); + if (mysql->auto_local_infile == ACCEPT_FILE_REQUEST) + mysql->auto_local_infile= WAIT_FOR_QUERY; + if ((length = cli_safe_read(mysql)) == packet_error) DBUG_RETURN(1); free_old_query(mysql); /* Free old result */ @@ -4041,7 +4055,8 @@ static my_bool cli_read_query_result(MYSQL *mysql) { int error; - if (!(mysql->options.client_flag & CLIENT_LOCAL_FILES)) + if (!(mysql->options.client_flag & CLIENT_LOCAL_FILES) || + !can_local_infile) { set_mysql_error(mysql, CR_MALFORMED_PACKET, unknown_sqlstate); DBUG_RETURN(1); @@ -4079,6 +4094,13 @@ int STDCALL mysql_send_query(MYSQL* mysql, const char* query, ulong length) { DBUG_ENTER("mysql_send_query"); + if (mysql->options.client_flag & CLIENT_LOCAL_FILES && + mysql->auto_local_infile == WAIT_FOR_QUERY && + (*query == 'l' || *query == 'L')) + { + if (strncasecmp(query, STRING_WITH_LEN("load")) == 0) + mysql->auto_local_infile= ACCEPT_FILE_REQUEST; + } DBUG_RETURN(simple_command(mysql, COM_QUERY, (uchar*) query, length, 1)); } @@ -4292,10 +4314,12 @@ mysql_options(MYSQL *mysql,enum mysql_option option, const void *arg) mysql->options.protocol=MYSQL_PROTOCOL_PIPE; /* Force named pipe */ break; case MYSQL_OPT_LOCAL_INFILE: /* Allow LOAD DATA LOCAL ?*/ - if (!arg || MY_TEST(*(uint*) arg)) + if (!arg || *(uint*) arg) mysql->options.client_flag|= CLIENT_LOCAL_FILES; else mysql->options.client_flag&= ~CLIENT_LOCAL_FILES; + mysql->auto_local_infile= arg && *(uint*)arg == LOCAL_INFILE_MODE_AUTO + ? WAIT_FOR_QUERY : ALWAYS_ACCEPT; break; case MYSQL_INIT_COMMAND: add_init_command(&mysql->options,arg); diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index f22d7bfdc..fa69d5c30 100644 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -454,7 +454,7 @@ IF(WIN32) COMPONENT Server ) SET_TARGET_PROPERTIES(mysql_install_db PROPERTIES COMPILE_FLAGS -DINSTALL_PLUGINDIR=${INSTALL_PLUGINDIR}) - TARGET_LINK_LIBRARIES(mysql_install_db mysys) + TARGET_LINK_LIBRARIES(mysql_install_db mysys shlwapi) ADD_LIBRARY(winservice STATIC winservice.c) TARGET_LINK_LIBRARIES(winservice shell32) diff --git a/sql/handler.h b/sql/handler.h index 42429e9dc..792cce281 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -382,6 +382,12 @@ enum enum_alter_inplace_result { #define HA_KEY_NULL_LENGTH 1 #define HA_KEY_BLOB_LENGTH 2 +/* Maximum length of any index lookup key, in bytes */ + +#define MAX_KEY_LENGTH (MAX_DATA_LENGTH_FOR_KEY \ + +(MAX_REF_PARTS \ + *(HA_KEY_NULL_LENGTH + HA_KEY_BLOB_LENGTH))) + #define HA_LEX_CREATE_TMP_TABLE 1 #define HA_CREATE_TMP_ALTER 8 @@ -3371,14 +3377,14 @@ class handler :public Sql_alloc uint max_key_parts() const { return MY_MIN(MAX_REF_PARTS, max_supported_key_parts()); } uint max_key_length() const - { return MY_MIN(MAX_KEY_LENGTH, max_supported_key_length()); } + { return MY_MIN(MAX_DATA_LENGTH_FOR_KEY, max_supported_key_length()); } uint max_key_part_length() const - { return MY_MIN(MAX_KEY_LENGTH, max_supported_key_part_length()); } + { return MY_MIN(MAX_DATA_LENGTH_FOR_KEY, max_supported_key_part_length()); } virtual uint max_supported_record_length() const { return HA_MAX_REC_LENGTH; } virtual uint max_supported_keys() const { return 0; } virtual uint max_supported_key_parts() const { return MAX_REF_PARTS; } - virtual uint max_supported_key_length() const { return MAX_KEY_LENGTH; } + virtual uint max_supported_key_length() const { return MAX_DATA_LENGTH_FOR_KEY; } virtual uint max_supported_key_part_length() const { return 255; } virtual uint min_record_length(uint options) const { return 1; } diff --git a/sql/item.cc b/sql/item.cc index 1a2c4eba5..d8f27bdb3 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -1672,10 +1672,14 @@ bool Item_name_const::is_null() Item_name_const::Item_name_const(THD *thd, Item *name_arg, Item *val): Item(thd), value_item(val), name_item(name_arg) { + StringBuffer<128> name_buffer; + String *name_str; Item::maybe_null= TRUE; valid_args= true; - if (!name_item->basic_const_item()) + if (!name_item->basic_const_item() || + !(name_str= name_item->val_str(&name_buffer))) // Can't have a NULL name goto err; + set_name(name_str->ptr(), name_str->length(), name_str->charset()); if (value_item->basic_const_item()) return; // ok @@ -1737,24 +1741,14 @@ Item::Type Item_name_const::type() const bool Item_name_const::fix_fields(THD *thd, Item **ref) { - char buf[128]; - String *item_name; - String s(buf, sizeof(buf), &my_charset_bin); - s.length(0); - if (value_item->fix_fields(thd, &value_item) || name_item->fix_fields(thd, &name_item) || !value_item->const_item() || - !name_item->const_item() || - !(item_name= name_item->val_str(&s))) // Can't have a NULL name + !name_item->const_item()) { my_error(ER_RESERVED_SYNTAX, MYF(0), "NAME_CONST"); return TRUE; } - if (is_autogenerated_name) - { - set_name(item_name->ptr(), (uint) item_name->length(), system_charset_info); - } if (value_item->collation.derivation == DERIVATION_NUMERIC) collation.set_numeric(); else diff --git a/sql/item.h b/sql/item.h index 57f10740f..79cde0089 100644 --- a/sql/item.h +++ b/sql/item.h @@ -857,6 +857,10 @@ class Item: public Value_source, If value is not null null_value flag will be reset to FALSE. */ virtual longlong val_int()=0; + Longlong_hybrid to_longlong_hybrid() + { + return Longlong_hybrid(val_int(), unsigned_flag); + } /* This is just a shortcut to avoid the cast. You should still use unsigned_flag to check the sign of the item. diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index de886ba8e..2c1320f82 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -118,7 +118,10 @@ static int cmp_row_type(Item* item1, Item* item2) 0 otherwise */ -static int agg_cmp_type(Item_result *type, Item **items, uint nitems) +static int agg_cmp_type(Item_result *type, + Item **items, + uint nitems, + bool int_uint_as_dec) { uint unsigned_count= items[0]->unsigned_flag; type[0]= items[0]->cmp_type(); @@ -140,7 +143,9 @@ static int agg_cmp_type(Item_result *type, Item **items, uint nitems) If all arguments are of INT type but have different unsigned_flag values, switch to DECIMAL_RESULT. */ - if (type[0] == INT_RESULT && unsigned_count != nitems && unsigned_count != 0) + if (int_uint_as_dec && + type[0] == INT_RESULT && + unsigned_count != nitems && unsigned_count != 0) type[0]= DECIMAL_RESULT; return 0; } @@ -2131,7 +2136,7 @@ void Item_func_between::fix_length_and_dec() */ if (!args[0] || !args[1] || !args[2]) return; - if (agg_cmp_type(&m_compare_type, args, 3)) + if (agg_cmp_type(&m_compare_type, args, 3, false)) return; if (m_compare_type == STRING_RESULT && @@ -2166,6 +2171,97 @@ void Item_func_between::fix_length_and_dec() } +longlong Item_func_between::val_int_cmp_string() +{ + String *value,*a,*b; + value=args[0]->val_str(&value0); + if ((null_value=args[0]->null_value)) + return 0; + a= args[1]->val_str(&value1); + b= args[2]->val_str(&value2); + if (!args[1]->null_value && !args[2]->null_value) + return (longlong) ((sortcmp(value,a,cmp_collation.collation) >= 0 && + sortcmp(value,b,cmp_collation.collation) <= 0) != + negated); + if (args[1]->null_value && args[2]->null_value) + null_value= true; + else if (args[1]->null_value) + { + // Set to not null if false range. + null_value= sortcmp(value,b,cmp_collation.collation) <= 0; + } + else + { + // Set to not null if false range. + null_value= sortcmp(value,a,cmp_collation.collation) >= 0; + } + return (longlong) (!null_value && negated); +} + + +longlong Item_func_between::val_int_cmp_int() +{ + Longlong_hybrid value= args[0]->to_longlong_hybrid(); + if ((null_value= args[0]->null_value)) + return 0; /* purecov: inspected */ + Longlong_hybrid a= args[1]->to_longlong_hybrid(); + Longlong_hybrid b= args[2]->to_longlong_hybrid(); + if (!args[1]->null_value && !args[2]->null_value) + return (longlong) ((value.cmp(a) >= 0 && value.cmp(b) <= 0) != negated); + if (args[1]->null_value && args[2]->null_value) + null_value= true; + else if (args[1]->null_value) + null_value= value.cmp(b) <= 0; // not null if false range. + else + null_value= value.cmp(a) >= 0; + return (longlong) (!null_value && negated); +} + + +longlong Item_func_between::val_int_cmp_decimal() +{ + my_decimal dec_buf, *dec= args[0]->val_decimal(&dec_buf), + a_buf, *a_dec, b_buf, *b_dec; + if ((null_value=args[0]->null_value)) + return 0; /* purecov: inspected */ + a_dec= args[1]->val_decimal(&a_buf); + b_dec= args[2]->val_decimal(&b_buf); + if (!args[1]->null_value && !args[2]->null_value) + return (longlong) ((my_decimal_cmp(dec, a_dec) >= 0 && + my_decimal_cmp(dec, b_dec) <= 0) != negated); + if (args[1]->null_value && args[2]->null_value) + null_value= true; + else if (args[1]->null_value) + null_value= (my_decimal_cmp(dec, b_dec) <= 0); + else + null_value= (my_decimal_cmp(dec, a_dec) >= 0); + return (longlong) (!null_value && negated); +} + + +longlong Item_func_between::val_int_cmp_real() +{ + double value= args[0]->val_real(),a,b; + if ((null_value=args[0]->null_value)) + return 0; /* purecov: inspected */ + a= args[1]->val_real(); + b= args[2]->val_real(); + if (!args[1]->null_value && !args[2]->null_value) + return (longlong) ((value >= a && value <= b) != negated); + if (args[1]->null_value && args[2]->null_value) + null_value= true; + else if (args[1]->null_value) + { + null_value= value <= b; // not null if false range. + } + else + { + null_value= value >= a; + } + return (longlong) (!null_value && negated); +} + + longlong Item_func_between::val_int() { DBUG_ASSERT(fixed == 1); @@ -2207,94 +2303,14 @@ longlong Item_func_between::val_int() null_value= value >= a; break; } - case STRING_RESULT: - { - String *value,*a,*b; - value=args[0]->val_str(&value0); - if ((null_value=args[0]->null_value)) - return 0; - a=args[1]->val_str(&value1); - b=args[2]->val_str(&value2); - if (!args[1]->null_value && !args[2]->null_value) - return (longlong) ((sortcmp(value,a,cmp_collation.collation) >= 0 && - sortcmp(value,b,cmp_collation.collation) <= 0) != - negated); - if (args[1]->null_value && args[2]->null_value) - null_value=1; - else if (args[1]->null_value) - { - // Set to not null if false range. - null_value= sortcmp(value,b,cmp_collation.collation) <= 0; - } - else - { - // Set to not null if false range. - null_value= sortcmp(value,a,cmp_collation.collation) >= 0; - } - break; - } + return val_int_cmp_string(); case INT_RESULT: - { - longlong value=args[0]->val_int(), a, b; - if ((null_value=args[0]->null_value)) - return 0; /* purecov: inspected */ - a=args[1]->val_int(); - b=args[2]->val_int(); - if (!args[1]->null_value && !args[2]->null_value) - return (longlong) ((value >= a && value <= b) != negated); - if (args[1]->null_value && args[2]->null_value) - null_value=1; - else if (args[1]->null_value) - { - null_value= value <= b; // not null if false range. - } - else - { - null_value= value >= a; - } - break; - } + return val_int_cmp_int(); case DECIMAL_RESULT: - { - my_decimal dec_buf, *dec= args[0]->val_decimal(&dec_buf), - a_buf, *a_dec, b_buf, *b_dec; - if ((null_value=args[0]->null_value)) - return 0; /* purecov: inspected */ - a_dec= args[1]->val_decimal(&a_buf); - b_dec= args[2]->val_decimal(&b_buf); - if (!args[1]->null_value && !args[2]->null_value) - return (longlong) ((my_decimal_cmp(dec, a_dec) >= 0 && - my_decimal_cmp(dec, b_dec) <= 0) != negated); - if (args[1]->null_value && args[2]->null_value) - null_value=1; - else if (args[1]->null_value) - null_value= (my_decimal_cmp(dec, b_dec) <= 0); - else - null_value= (my_decimal_cmp(dec, a_dec) >= 0); - break; - } + return val_int_cmp_decimal(); case REAL_RESULT: - { - double value= args[0]->val_real(),a,b; - if ((null_value=args[0]->null_value)) - return 0; /* purecov: inspected */ - a= args[1]->val_real(); - b= args[2]->val_real(); - if (!args[1]->null_value && !args[2]->null_value) - return (longlong) ((value >= a && value <= b) != negated); - if (args[1]->null_value && args[2]->null_value) - null_value=1; - else if (args[1]->null_value) - { - null_value= value <= b; // not null if false range. - } - else - { - null_value= value >= a; - } - break; - } + return val_int_cmp_real(); case ROW_RESULT: DBUG_ASSERT(0); null_value= 1; diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index 8d85bc8af..eb1da504e 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -846,6 +846,11 @@ class Item_func_between :public Item_func_opt_neg cond); return this; } + + longlong val_int_cmp_string(); + longlong val_int_cmp_int(); + longlong val_int_cmp_real(); + longlong val_int_cmp_decimal(); }; diff --git a/sql/item_func.cc b/sql/item_func.cc index 8b1c7b3bc..169eb76d8 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -4828,7 +4828,7 @@ bool Item_func_set_user_var::register_field_in_bitmap(uchar *arg) true failure */ -static bool +bool update_hash(user_var_entry *entry, bool set_null, void *ptr, uint length, Item_result type, CHARSET_INFO *cs, bool unsigned_arg) diff --git a/sql/item_func.h b/sql/item_func.h index 2c0e3a62f..e3eab02f2 100644 --- a/sql/item_func.h +++ b/sql/item_func.h @@ -2283,4 +2283,8 @@ bool eval_const_cond(COND *cond); extern bool volatile mqh_used; +bool update_hash(user_var_entry *entry, bool set_null, void *ptr, uint length, + Item_result type, CHARSET_INFO *cs, + bool unsigned_arg); + #endif /* ITEM_FUNC_INCLUDED */ diff --git a/sql/log.cc b/sql/log.cc index 767070799..a1e7e5b21 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -1,5 +1,5 @@ -/* Copyright (c) 2000, 2016, Oracle and/or its affiliates. - Copyright (c) 2009, 2017, MariaDB +/* Copyright (c) 2000, 2018, Oracle and/or its affiliates. + Copyright (c) 2009, 2019, MariaDB Corporation 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 @@ -3924,7 +3924,7 @@ int MYSQL_BIN_LOG::find_log_pos(LOG_INFO *linfo, const char *log_name, // if the log entry matches, null string matching anything if (!log_name || (log_name_len == fname_len && - !memcmp(full_fname, full_log_name, log_name_len))) + !strncmp(full_fname, full_log_name, log_name_len))) { DBUG_PRINT("info", ("Found log file entry")); linfo->index_file_start_offset= offset; diff --git a/sql/log_event.cc b/sql/log_event.cc index 883f1863a..1b372778b 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -2783,9 +2783,23 @@ void free_table_map_log_event(Table_map_log_event *event) delete event; } +/** + Encode the event, optionally per 'do_print_encoded' arg store the + result into the argument cache; optionally per event_info's + 'verbose' print into the cache a verbose representation of the event. + Note, no extra wrapping is done to the being io-cached data, like + to producing a BINLOG query. It's left for a routine that extracts from + the cache. + + @param file pointer to IO_CACHE + @param print_event_info pointer to print_event_info specializing + what out of and how to print the event + @param do_print_encoded whether to store base64-encoded event + into @file. +*/ void Log_event::print_base64(IO_CACHE* file, PRINT_EVENT_INFO* print_event_info, - bool more) + bool do_print_encoded) { const uchar *ptr= (const uchar *)temp_buf; uint32 size= uint4korr(ptr + EVENT_LEN_OFFSET); @@ -2804,17 +2818,9 @@ void Log_event::print_base64(IO_CACHE* file, DBUG_ASSERT(0); } - if (print_event_info->base64_output_mode != BASE64_OUTPUT_DECODE_ROWS) - { - if (my_b_tell(file) == 0) - my_b_write_string(file, "\nBINLOG '\n"); - + if (do_print_encoded) my_b_printf(file, "%s\n", tmp_str); - if (!more) - my_b_printf(file, "'%s\n", print_event_info->delimiter); - } - if (print_event_info->verbose) { Rows_log_event *ev= NULL; @@ -4433,6 +4439,22 @@ int Query_log_event::do_apply_event(rpl_group_info *rgi, else thd->variables.collation_database= thd->db_charset; + { + const CHARSET_INFO *cs= thd->charset(); + /* + We cannot ask for parsing a statement using a character set + without state_maps (parser internal data). + */ + if (!cs->state_map) + { + rli->report(ERROR_LEVEL, ER_SLAVE_FATAL_ERROR, + ER_THD(thd, ER_SLAVE_FATAL_ERROR), + "character_set cannot be parsed"); + thd->is_slave_error= true; + goto end; + } + } + /* Record any GTID in the same transaction, so slave state is transactionally consistent. @@ -4851,9 +4873,17 @@ void Start_log_event_v3::print(FILE* file, PRINT_EVENT_INFO* print_event_info) print_event_info->base64_output_mode != BASE64_OUTPUT_NEVER && !print_event_info->short_form) { - if (print_event_info->base64_output_mode != BASE64_OUTPUT_DECODE_ROWS) + /* BINLOG is matched with the delimiter below on the same level */ + bool do_print_encoded= + print_event_info->base64_output_mode != BASE64_OUTPUT_DECODE_ROWS; + if (do_print_encoded) my_b_printf(&cache, "BINLOG '\n"); - print_base64(&cache, print_event_info, FALSE); + + print_base64(&cache, print_event_info, do_print_encoded); + + if (do_print_encoded) + my_b_printf(&cache, "'%s\n", print_event_info->delimiter); + print_event_info->printed_fd_event= TRUE; } DBUG_VOID_RETURN; @@ -7911,12 +7941,7 @@ User_var_log_event(const char* buf, uint event_len, val_len= uint4korr(buf + UV_VAL_IS_NULL + UV_VAL_TYPE_SIZE + UV_CHARSET_NUMBER_SIZE); - if (val + val_len > buf_end) - { - error= true; - goto err; - } - + /** We need to check if this is from an old server that did not pack information for flags. @@ -10491,12 +10516,128 @@ void Rows_log_event::pack_info(Protocol *protocol) #endif #ifdef MYSQL_CLIENT +/** + Print an event "body" cache to @c file possibly in two fragments. + Each fragement is optionally per @c do_wrap to produce an SQL statement. + + @param file a file to print to + @param body the "body" IO_CACHE of event + @param do_wrap whether to wrap base64-encoded strings with + SQL cover. + @param delimiter delimiter string + + The function signals on any error through setting @c body->error to -1. +*/ +void copy_cache_to_file_wrapped(FILE *file, + IO_CACHE *body, + bool do_wrap, + const char *delimiter) +{ + const char str_binlog[]= "\nBINLOG '\n"; + const char fmt_delim[]= "'%s\n"; + const char fmt_n_delim[]= "\n'%s"; + const my_off_t cache_size= my_b_tell(body); + + if (reinit_io_cache(body, READ_CACHE, 0L, FALSE, FALSE)) + { + body->error= -1; + goto end; + } + + if (!do_wrap) + { + my_b_copy_to_file(body, file, SIZE_T_MAX); + } + else if (4 + sizeof(str_binlog) + cache_size + sizeof(fmt_delim) > + opt_binlog_rows_event_max_encoded_size) + { + /* + 2 fragments can always represent near 1GB row-based + base64-encoded event as two strings each of size less than + max(max_allowed_packet). Greater number of fragments does not + save from potential need to tweak (increase) @@max_allowed_packet + before to process the fragments. So 2 is safe and enough. + + Split the big query when its packet size's estimation exceeds a + limit. The estimate includes the maximum packet header + contribution of non-compressed packet. + */ + const char fmt_frag[]= "\nSET @binlog_fragment_%d ='\n"; + + my_fprintf(file, fmt_frag, 0); + if (my_b_copy_to_file(body, file, cache_size/2 + 1)) + { + body->error= -1; + goto end; + } + my_fprintf(file, fmt_n_delim, delimiter); + + my_fprintf(file, fmt_frag, 1); + if (my_b_copy_to_file(body, file, SIZE_T_MAX)) + { + body->error= -1; + goto end; + } + my_fprintf(file, fmt_delim, delimiter); + + my_fprintf(file, "BINLOG @binlog_fragment_0, @binlog_fragment_1%s\n", + delimiter); + } + else + { + my_fprintf(file, str_binlog); + if (my_b_copy_to_file(body, file, SIZE_T_MAX)) + { + body->error= -1; + goto end; + } + my_fprintf(file, fmt_delim, delimiter); + } + reinit_io_cache(body, WRITE_CACHE, 0, FALSE, TRUE); + +end: + return; +} + +/** + The function invokes base64 encoder to run on the current + event string and store the result into two caches. + When the event ends the current statement the caches are is copied into + the argument file. + Copying is also concerned how to wrap the event, specifically to produce + a valid SQL syntax. + When the encoded data size is within max(MAX_ALLOWED_PACKET) + a regular BINLOG query is composed. Otherwise it is build as fragmented + + SET @binlog_fragment_0='...'; + SET @binlog_fragment_1='...'; + BINLOG @binlog_fragment_0, @binlog_fragment_1; + + where fragments are represented by a pair of indexed user + "one shot" variables. + + @note + If any changes made don't forget to duplicate them to + Old_rows_log_event as long as it's supported. + + @param file pointer to IO_CACHE + @param print_event_info pointer to print_event_info specializing + what out of and how to print the event + @param name the name of a table that the event operates on + + The function signals on any error of cache access through setting + that cache's @c error to -1. +*/ void Rows_log_event::print_helper(FILE *file, PRINT_EVENT_INFO *print_event_info, char const *const name) { IO_CACHE *const head= &print_event_info->head_cache; IO_CACHE *const body= &print_event_info->body_cache; + bool do_print_encoded= + print_event_info->base64_output_mode != BASE64_OUTPUT_DECODE_ROWS && + !print_event_info->short_form; + if (!print_event_info->short_form) { bool const last_stmt_event= get_flags(STMT_END_F); @@ -10504,13 +10645,18 @@ void Rows_log_event::print_helper(FILE *file, my_b_printf(head, "\t%s: table id %lu%s\n", name, m_table_id, last_stmt_event ? " flags: STMT_END_F" : ""); - print_base64(body, print_event_info, !last_stmt_event); + print_base64(body, print_event_info, do_print_encoded); } if (get_flags(STMT_END_F)) { - copy_event_cache_to_file_and_reinit(head, file); - copy_event_cache_to_file_and_reinit(body, file); + if (copy_event_cache_to_file_and_reinit(head, file)) + { + head->error= -1; + return; + } + copy_cache_to_file_wrapped(file, body, do_print_encoded, + print_event_info->delimiter); } } #endif @@ -11197,8 +11343,8 @@ int Table_map_log_event::do_apply_event(rpl_group_info *rgi) table_list->updating= 1; table_list->required_type= FRMTYPE_TABLE; - DBUG_PRINT("debug", ("table: %s is mapped to %u", table_list->table_name, - table_list->table_id)); + DBUG_PRINT("debug", ("table: %s is mapped to %llu", table_list->table_name, + table_list->table_id)); table_list->master_had_triggers= ((m_flags & TM_BIT_HAS_TRIGGERS_F) ? 1 : 0); DBUG_PRINT("debug", ("table->master_had_triggers=%d", (int)table_list->master_had_triggers)); @@ -11379,7 +11525,9 @@ void Table_map_log_event::print(FILE *file, PRINT_EVENT_INFO *print_event_info) m_dbnam, m_tblnam, m_table_id, ((m_flags & TM_BIT_HAS_TRIGGERS_F) ? " (has triggers)" : "")); - print_base64(&print_event_info->body_cache, print_event_info, TRUE); + print_base64(&print_event_info->body_cache, print_event_info, + print_event_info->base64_output_mode != + BASE64_OUTPUT_DECODE_ROWS); copy_event_cache_to_file_and_reinit(&print_event_info->head_cache, file); } } diff --git a/sql/log_event.h b/sql/log_event.h index 90900f635..446bd8cb8 100644 --- a/sql/log_event.h +++ b/sql/log_event.h @@ -1157,7 +1157,7 @@ class Log_event void print_header(IO_CACHE* file, PRINT_EVENT_INFO* print_event_info, bool is_more); void print_base64(IO_CACHE* file, PRINT_EVENT_INFO* print_event_info, - bool is_more); + bool do_print_encoded); #endif /* read_log_event() functions read an event from a binlog or relay @@ -4891,15 +4891,22 @@ class Ignorable_log_event : public Log_event { virtual int get_data_size() { return IGNORABLE_HEADER_LEN; } }; +#ifdef MYSQL_CLIENT +void copy_cache_to_file_wrapped(FILE *file, + PRINT_EVENT_INFO *print_event_info, + IO_CACHE *body, + bool do_wrap); +#endif static inline bool copy_event_cache_to_file_and_reinit(IO_CACHE *cache, FILE *file) { - return - my_b_copy_to_file(cache, file) || + return + my_b_copy_all_to_file(cache, file) || reinit_io_cache(cache, WRITE_CACHE, 0, FALSE, TRUE); } + #ifdef MYSQL_SERVER /***************************************************************************** diff --git a/sql/log_event_old.cc b/sql/log_event_old.cc index d2b4470bb..a6f2ed3f4 100644 --- a/sql/log_event_old.cc +++ b/sql/log_event_old.cc @@ -1850,12 +1850,17 @@ void Old_rows_log_event::pack_info(Protocol *protocol) #ifdef MYSQL_CLIENT +/* Method duplicates Rows_log_event's one */ void Old_rows_log_event::print_helper(FILE *file, PRINT_EVENT_INFO *print_event_info, char const *const name) { IO_CACHE *const head= &print_event_info->head_cache; IO_CACHE *const body= &print_event_info->body_cache; + bool do_print_encoded= + print_event_info->base64_output_mode != BASE64_OUTPUT_DECODE_ROWS && + !print_event_info->short_form; + if (!print_event_info->short_form) { bool const last_stmt_event= get_flags(STMT_END_F); @@ -1863,13 +1868,18 @@ void Old_rows_log_event::print_helper(FILE *file, my_b_printf(head, "\t%s: table id %lu%s\n", name, m_table_id, last_stmt_event ? " flags: STMT_END_F" : ""); - print_base64(body, print_event_info, !last_stmt_event); + print_base64(body, print_event_info, do_print_encoded); } if (get_flags(STMT_END_F)) { - copy_event_cache_to_file_and_reinit(head, file); - copy_event_cache_to_file_and_reinit(body, file); + if (copy_event_cache_to_file_and_reinit(head, file)) + { + head->error= -1; + return; + } + copy_cache_to_file_wrapped(file, body, do_print_encoded, + print_event_info->delimiter); } } #endif diff --git a/sql/mysql_install_db.cc b/sql/mysql_install_db.cc index e0f6ed4da..01d00855a 100644 --- a/sql/mysql_install_db.cc +++ b/sql/mysql_install_db.cc @@ -27,6 +27,8 @@ #include #include #include +struct IUnknown; +#include #define USAGETEXT \ "mysql_install_db.exe Ver 1.00 for Windows\n" \ @@ -549,20 +551,78 @@ static int create_db_instance() DWORD cwd_len= MAX_PATH; char cmdline[3*MAX_PATH]; FILE *in; + bool cleanup_datadir= true; + DWORD last_error; verbose("Running bootstrap"); GetCurrentDirectory(cwd_len, cwd); - CreateDirectory(opt_datadir, NULL); /*ignore error, it might already exist */ + + /* Create datadir and datadir/mysql, if they do not already exist. */ + + if (!CreateDirectory(opt_datadir, NULL) && (GetLastError() != ERROR_ALREADY_EXISTS)) + { + last_error = GetLastError(); + switch(last_error) + { + case ERROR_ACCESS_DENIED: + die("Can't create data directory '%s' (access denied)\n", + opt_datadir); + break; + case ERROR_PATH_NOT_FOUND: + die("Can't create data directory '%s' " + "(one or more intermediate directories do not exist)\n", + opt_datadir); + break; + default: + die("Can't create data directory '%s', last error %u\n", + opt_datadir, last_error); + break; + } + } if (!SetCurrentDirectory(opt_datadir)) { - die("Cannot set current directory to '%s'\n",opt_datadir); - return -1; + last_error = GetLastError(); + switch (last_error) + { + case ERROR_DIRECTORY: + die("Can't set current directory to '%s', the path is not a valid directory \n", + opt_datadir); + break; + default: + die("Can' set current directory to '%s', last error %u\n", + opt_datadir, last_error); + break; + } + } + + if (PathIsDirectoryEmpty(opt_datadir)) + { + cleanup_datadir= false; } - CreateDirectory("mysql",NULL); - CreateDirectory("test", NULL); + if (!CreateDirectory("mysql",NULL)) + { + last_error = GetLastError(); + DWORD attributes; + switch(last_error) + { + case ERROR_ACCESS_DENIED: + die("Can't create subdirectory 'mysql' in '%s' (access denied)\n",opt_datadir); + break; + case ERROR_ALREADY_EXISTS: + attributes = GetFileAttributes("mysql"); + + if (attributes == INVALID_FILE_ATTRIBUTES) + die("GetFileAttributes() failed for existing file '%s\\mysql', last error %u", + opt_datadir, GetLastError()); + else if (!(attributes & FILE_ATTRIBUTE_DIRECTORY)) + die("File '%s\\mysql' exists, but it is not a directory", opt_datadir); + + break; + } + } /* Set data directory permissions for both current user and @@ -675,7 +735,7 @@ static int create_db_instance() } end: - if (ret) + if (ret && cleanup_datadir) { SetCurrentDirectory(cwd); clean_directory(opt_datadir); diff --git a/sql/opt_range.cc b/sql/opt_range.cc index d8ecf8077..46b10b559 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -1569,6 +1569,7 @@ int QUICK_RANGE_SELECT::init_ror_merged_scan(bool reuse_handler, head->column_bitmaps_set(save_read_set, save_write_set); delete file; file= save_file; + free_file= false; DBUG_RETURN(1); } @@ -2738,10 +2739,9 @@ bool create_key_parts_for_pseudo_indexes(RANGE_OPT_PARAM *param, for (field_ptr= table->field; *field_ptr; field_ptr++) { - Column_statistics* col_stats= (*field_ptr)->read_stats; - if (bitmap_is_set(used_fields, (*field_ptr)->field_index) - && col_stats && !col_stats->no_stat_values_provided() - && !((*field_ptr)->type() == MYSQL_TYPE_GEOMETRY)) + Field *field= *field_ptr; + if (bitmap_is_set(used_fields, field->field_index) && + is_eits_usable(field)) parts++; } @@ -2759,10 +2759,10 @@ bool create_key_parts_for_pseudo_indexes(RANGE_OPT_PARAM *param, uint max_key_len= 0; for (field_ptr= table->field; *field_ptr; field_ptr++) { - if (bitmap_is_set(used_fields, (*field_ptr)->field_index)) + Field *field= *field_ptr; + if (bitmap_is_set(used_fields, field->field_index)) { - Field *field= *field_ptr; - if (field->type() == MYSQL_TYPE_GEOMETRY) + if (!is_eits_usable(field)) continue; uint16 store_length; @@ -3139,6 +3139,12 @@ bool calculate_cond_selectivity_for_table(THD *thd, TABLE *table, Item **cond) } + if (quick && (quick->get_type() == QUICK_SELECT_I::QS_TYPE_ROR_UNION || + quick->get_type() == QUICK_SELECT_I::QS_TYPE_INDEX_MERGE)) + { + table->cond_selectivity*= (quick->records/table_records); + } + bitmap_union(used_fields, &handled_columns); /* Check if we can improve selectivity estimates by using sampling */ @@ -6552,6 +6558,8 @@ TRP_ROR_INTERSECT *get_best_ror_intersect(const PARAM *param, SEL_TREE *tree, if (ror_intersect_add(intersect, cpk_scan, TRUE) && (intersect->total_cost < min_cost)) intersect_best= intersect; //just set pointer here + else + cpk_scan= 0; // Don't use cpk_scan } else cpk_scan= 0; // Don't use cpk_scan diff --git a/sql/partition_info.cc b/sql/partition_info.cc index df0a733f1..c633ea708 100644 --- a/sql/partition_info.cc +++ b/sql/partition_info.cc @@ -1987,12 +1987,12 @@ bool partition_info::check_partition_field_length() for (i= 0; i < num_part_fields; i++) store_length+= get_partition_field_store_length(part_field_array[i]); - if (store_length > MAX_KEY_LENGTH) + if (store_length > MAX_DATA_LENGTH_FOR_KEY) DBUG_RETURN(TRUE); store_length= 0; for (i= 0; i < num_subpart_fields; i++) store_length+= get_partition_field_store_length(subpart_field_array[i]); - if (store_length > MAX_KEY_LENGTH) + if (store_length > MAX_DATA_LENGTH_FOR_KEY) DBUG_RETURN(TRUE); DBUG_RETURN(FALSE); } @@ -3143,6 +3143,23 @@ void partition_info::print_debug(const char *str, uint *value) DBUG_PRINT("info", ("parser: %s", str)); DBUG_VOID_RETURN; } + +bool partition_info::field_in_partition_expr(Field *field) const +{ + uint i; + for (i= 0; i < num_part_fields; i++) + { + if (field->eq(part_field_array[i])) + return TRUE; + } + for (i= 0; i < num_subpart_fields; i++) + { + if (field->eq(subpart_field_array[i])) + return TRUE; + } + return FALSE; +} + #else /* WITH_PARTITION_STORAGE_ENGINE */ /* For builds without partitioning we need to define these functions diff --git a/sql/partition_info.h b/sql/partition_info.h index b271ff08e..0f38c87dd 100644 --- a/sql/partition_info.h +++ b/sql/partition_info.h @@ -384,6 +384,7 @@ class partition_info : public Sql_alloc bool is_full_part_expr_in_fields(List &fields); public: bool has_unique_name(partition_element *element); + bool field_in_partition_expr(Field *field) const; }; uint32 get_next_partition_id_range(struct st_partition_iter* part_iter); diff --git a/sql/rpl_tblmap.cc b/sql/rpl_tblmap.cc index 4c521cf0c..80114f50d 100644 --- a/sql/rpl_tblmap.cc +++ b/sql/rpl_tblmap.cc @@ -43,7 +43,7 @@ table_mapping::table_mapping() constructor is called at startup only. */ (void) my_hash_init(&m_table_ids,&my_charset_bin,TABLE_ID_HASH_SIZE, - offsetof(entry,table_id),sizeof(ulong), + offsetof(entry,table_id),sizeof(ulonglong), 0,0,0); /* We don't preallocate any block, this is consistent with m_free=0 above */ init_alloc_root(&m_mem_root, TABLE_ID_HASH_SIZE*sizeof(entry), 0, MYF(0)); @@ -59,20 +59,20 @@ table_mapping::~table_mapping() free_root(&m_mem_root, MYF(0)); } -TABLE* table_mapping::get_table(ulong table_id) +TABLE* table_mapping::get_table(ulonglong table_id) { DBUG_ENTER("table_mapping::get_table(ulong)"); - DBUG_PRINT("enter", ("table_id: %lu", table_id)); + DBUG_PRINT("enter", ("table_id: %llu", table_id)); entry *e= find_entry(table_id); if (e) { - DBUG_PRINT("info", ("tid %lu -> table 0x%lx (%s)", + DBUG_PRINT("info", ("tid %llu -> table 0x%lx (%s)", table_id, (long) e->table, MAYBE_TABLE_NAME(e->table))); DBUG_RETURN(e->table); } - DBUG_PRINT("info", ("tid %lu is not mapped!", table_id)); + DBUG_PRINT("info", ("tid %llu is not mapped!", table_id)); DBUG_RETURN(NULL); } @@ -102,10 +102,10 @@ int table_mapping::expand() return 0; } -int table_mapping::set_table(ulong table_id, TABLE* table) +int table_mapping::set_table(ulonglong table_id, TABLE* table) { DBUG_ENTER("table_mapping::set_table(ulong,TABLE*)"); - DBUG_PRINT("enter", ("table_id: %lu table: 0x%lx (%s)", + DBUG_PRINT("enter", ("table_id: %llu table: 0x%lx (%s)", table_id, (long) table, MAYBE_TABLE_NAME(table))); entry *e= find_entry(table_id); @@ -133,13 +133,13 @@ int table_mapping::set_table(ulong table_id, TABLE* table) DBUG_RETURN(ERR_MEMORY_ALLOCATION); } - DBUG_PRINT("info", ("tid %lu -> table 0x%lx (%s)", + DBUG_PRINT("info", ("tid %llu -> table 0x%lx (%s)", table_id, (long) e->table, MAYBE_TABLE_NAME(e->table))); DBUG_RETURN(0); // All OK } -int table_mapping::remove_table(ulong table_id) +int table_mapping::remove_table(ulonglong table_id) { entry *e= find_entry(table_id); if (e) diff --git a/sql/rpl_tblmap.h b/sql/rpl_tblmap.h index 9fb1c4afb..05b298e60 100644 --- a/sql/rpl_tblmap.h +++ b/sql/rpl_tblmap.h @@ -70,10 +70,10 @@ class table_mapping { table_mapping(); ~table_mapping(); - TABLE* get_table(ulong table_id); + TABLE* get_table(ulonglong table_id); - int set_table(ulong table_id, TABLE* table); - int remove_table(ulong table_id); + int set_table(ulonglong table_id, TABLE* table); + int remove_table(ulonglong table_id); void clear_tables(); ulong count() const { return m_table_ids.records; } @@ -83,14 +83,14 @@ class table_mapping { it, which only works for PODs) */ struct entry { - ulong table_id; + ulonglong table_id; union { TABLE *table; entry *next; }; }; - entry *find_entry(ulong table_id) + entry *find_entry(ulonglong table_id) { return (entry *) my_hash_search(&m_table_ids, (uchar*)&table_id, diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 886ff90f3..9d6e6c51f 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -714,7 +714,9 @@ bool ROLE_GRANT_PAIR::init(MEM_ROOT *mem, char *username, /* Flag to mark that on_node was already called for this role */ #define ROLE_OPENED (1L << 3) -static DYNAMIC_ARRAY acl_hosts, acl_users, acl_dbs, acl_proxy_users; +static DYNAMIC_ARRAY acl_hosts, acl_users, acl_proxy_users; +static Dynamic_array acl_dbs(0U,50U); +typedef Dynamic_array::CMP_FUNC acl_dbs_cmp; static HASH acl_roles; /* An hash containing mappings user <--> role @@ -784,8 +786,7 @@ static const int Table_procs_priv= 1 << PROCS_PRIV_TABLE; static const int Table_proxies_priv= 1 << PROXIES_PRIV_TABLE; static const int Table_roles_mapping= 1 << ROLES_MAPPING_TABLE; -static int open_grant_tables(THD *thd, TABLE_LIST *tables, - enum thr_lock_type lock_type, int tables_to_open); +static int open_grant_tables(THD *, TABLE_LIST *, enum thr_lock_type, int); const LEX_STRING acl_table_names[]= // matches enum_acl_tables { @@ -985,8 +986,7 @@ static bool fix_user_plugin_ptr(ACL_USER *user) else return true; - if (user->auth_string.length) - set_user_salt(user, user->auth_string.str, user->auth_string.length); + set_user_salt(user, user->auth_string.str, user->auth_string.length); return false; } @@ -1456,6 +1456,11 @@ static bool acl_load(THD *thd, TABLE_LIST *tables) safe_str(user.user.str), safe_str(user.host.hostname)); } + else if (password_len) + { + user.auth_string.str= password; + user.auth_string.length= password_len; + } fix_user_plugin_ptr(&user); } @@ -1582,12 +1587,11 @@ static bool acl_load(THD *thd, TABLE_LIST *tables) db.access|=REFERENCES_ACL | INDEX_ACL | ALTER_ACL; } #endif - (void) push_dynamic(&acl_dbs,(uchar*) &db); + acl_dbs.push(db); } - my_qsort((uchar*) dynamic_element(&acl_dbs,0,ACL_DB*),acl_dbs.elements, - sizeof(ACL_DB),(qsort_cmp) acl_compare); end_read_record(&read_record_info); - freeze_size(&acl_dbs); + acl_dbs.sort((acl_dbs_cmp)acl_compare); + acl_dbs.freeze(); if ((table= tables[PROXIES_PRIV_TABLE].table)) { @@ -1675,7 +1679,7 @@ void acl_free(bool end) free_root(&acl_memroot,MYF(0)); delete_dynamic(&acl_hosts); delete_dynamic_with_callback(&acl_users, (FREE_FUNC) free_acl_user); - delete_dynamic(&acl_dbs); + acl_dbs.free_memory(); delete_dynamic(&acl_wild_hosts); delete_dynamic(&acl_proxy_users); my_hash_free(&acl_check_hosts); @@ -1714,7 +1718,8 @@ void acl_free(bool end) bool acl_reload(THD *thd) { TABLE_LIST tables[TABLES_MAX]; - DYNAMIC_ARRAY old_acl_hosts, old_acl_users, old_acl_dbs, old_acl_proxy_users; + DYNAMIC_ARRAY old_acl_hosts, old_acl_users, old_acl_proxy_users; + Dynamic_array old_acl_dbs(0U,0U); HASH old_acl_roles, old_acl_roles_mappings; MEM_ROOT old_mem; int result; @@ -1749,7 +1754,7 @@ bool acl_reload(THD *thd) old_acl_dbs= acl_dbs; my_init_dynamic_array(&acl_hosts, sizeof(ACL_HOST), 20, 50, MYF(0)); my_init_dynamic_array(&acl_users, sizeof(ACL_USER), 50, 100, MYF(0)); - my_init_dynamic_array(&acl_dbs, sizeof(ACL_DB), 50, 100, MYF(0)); + acl_dbs.init(50, 100); my_init_dynamic_array(&acl_proxy_users, sizeof(ACL_PROXY_USER), 50, 100, MYF(0)); my_hash_init2(&acl_roles,50, &my_charset_utf8_bin, 0, 0, 0, (my_hash_get_key) acl_role_get_key, 0, @@ -1770,6 +1775,7 @@ bool acl_reload(THD *thd) acl_roles_mappings= old_acl_roles_mappings; acl_proxy_users= old_acl_proxy_users; acl_dbs= old_acl_dbs; + old_acl_dbs.init(0,0); acl_memroot= old_mem; init_check_host(); } @@ -1780,7 +1786,6 @@ bool acl_reload(THD *thd) delete_dynamic(&old_acl_hosts); delete_dynamic_with_callback(&old_acl_users, (FREE_FUNC) free_acl_user); delete_dynamic(&old_acl_proxy_users); - delete_dynamic(&old_acl_dbs); my_hash_free(&old_acl_roles_mappings); } mysql_mutex_unlock(&acl_cache->lock); @@ -1963,9 +1968,9 @@ bool acl_getroot(Security_context *sctx, char *user, char *host, if (acl_user) { res= 0; - for (i=0 ; i < acl_dbs.elements ; i++) + for (i=0 ; i < acl_dbs.elements() ; i++) { - ACL_DB *acl_db= dynamic_element(&acl_dbs, i, ACL_DB*); + ACL_DB *acl_db= &acl_dbs.at(i); if (!acl_db->user || (user && user[0] && !strcmp(user, acl_db->user))) { @@ -1994,9 +1999,9 @@ bool acl_getroot(Security_context *sctx, char *user, char *host, if (acl_role) { res= 0; - for (i=0 ; i < acl_dbs.elements ; i++) + for (i=0 ; i < acl_dbs.elements() ; i++) { - ACL_DB *acl_db= dynamic_element(&acl_dbs, i, ACL_DB*); + ACL_DB *acl_db= &acl_dbs.at(i); if (!acl_db->user || (user && user[0] && !strcmp(user, acl_db->user))) { @@ -2289,9 +2294,9 @@ static bool acl_update_db(const char *user, const char *host, const char *db, bool updated= false; - for (uint i=0 ; i < acl_dbs.elements ; i++) + for (uint i=0 ; i < acl_dbs.elements() ; i++) { - ACL_DB *acl_db=dynamic_element(&acl_dbs,i,ACL_DB*); + ACL_DB *acl_db= &acl_dbs.at(i); if ((!acl_db->user && !user[0]) || (acl_db->user && !strcmp(user,acl_db->user))) @@ -2310,7 +2315,7 @@ static bool acl_update_db(const char *user, const char *host, const char *db, acl_db->initial_access= acl_db->access; } else - delete_dynamic_element(&acl_dbs,i); + acl_dbs.del(i); updated= true; } } @@ -2345,9 +2350,8 @@ static void acl_insert_db(const char *user, const char *host, const char *db, acl_db.db=strdup_root(&acl_memroot,db); acl_db.initial_access= acl_db.access= privileges; acl_db.sort=get_sort(3,acl_db.host.hostname,acl_db.db,acl_db.user); - (void) push_dynamic(&acl_dbs,(uchar*) &acl_db); - my_qsort((uchar*) dynamic_element(&acl_dbs,0,ACL_DB*),acl_dbs.elements, - sizeof(ACL_DB),(qsort_cmp) acl_compare); + acl_dbs.push(acl_db); + acl_dbs.sort((acl_dbs_cmp)acl_compare); } @@ -2393,9 +2397,9 @@ ulong acl_get(const char *host, const char *ip, /* Check if there are some access rights for database and user */ - for (i=0 ; i < acl_dbs.elements ; i++) + for (i=0 ; i < acl_dbs.elements() ; i++) { - ACL_DB *acl_db=dynamic_element(&acl_dbs,i,ACL_DB*); + ACL_DB *acl_db= &acl_dbs.at(i); if (!acl_db->user || !strcmp(user,acl_db->user)) { if (compare_hostname(&acl_db->host,host,ip)) @@ -5195,9 +5199,9 @@ static bool merge_role_global_privileges(ACL_ROLE *grantee) return old != grantee->access; } -static int db_name_sort(ACL_DB * const *db1, ACL_DB * const *db2) +static int db_name_sort(const int *db1, const int *db2) { - return strcmp((*db1)->db, (*db2)->db); + return strcmp(acl_dbs.at(*db1).db, acl_dbs.at(*db2).db); } /** @@ -5213,14 +5217,14 @@ static int db_name_sort(ACL_DB * const *db1, ACL_DB * const *db2) 2 - ACL_DB was added 4 - ACL_DB was deleted */ -static int update_role_db(ACL_DB *merged, ACL_DB **first, ulong access, char *role) +static int update_role_db(int merged, int first, ulong access, char *role) { - if (!first) + if (first < 0) return 0; DBUG_EXECUTE_IF("role_merge_stats", role_db_merges++;); - if (merged == NULL) + if (merged < 0) { /* there's no ACL_DB for this role (all db grants come from granted roles) @@ -5235,11 +5239,11 @@ static int update_role_db(ACL_DB *merged, ACL_DB **first, ulong access, char *ro acl_db.user= role; acl_db.host.hostname= const_cast(""); acl_db.host.ip= acl_db.host.ip_mask= 0; - acl_db.db= first[0]->db; + acl_db.db= acl_dbs.at(first).db; acl_db.access= access; acl_db.initial_access= 0; acl_db.sort=get_sort(3, "", acl_db.db, role); - push_dynamic(&acl_dbs,(uchar*) &acl_db); + acl_dbs.push(acl_db); return 2; } else if (access == 0) @@ -5255,13 +5259,13 @@ static int update_role_db(ACL_DB *merged, ACL_DB **first, ulong access, char *ro 2. it's O(N) operation, and we may need many of them so we only mark elements deleted and will delete later. */ - merged->sort= 0; // lower than any valid ACL_DB sort value, will be sorted last + acl_dbs.at(merged).sort= 0; // lower than any valid ACL_DB sort value, will be sorted last return 4; } - else if (merged->access != access) + else if (acl_dbs.at(merged).access != access) { /* this is easy */ - merged->access= access; + acl_dbs.at(merged).access= access; return 1; } return 0; @@ -5276,7 +5280,7 @@ static int update_role_db(ACL_DB *merged, ACL_DB **first, ulong access, char *ro static bool merge_role_db_privileges(ACL_ROLE *grantee, const char *dbname, role_hash_t *rhash) { - Dynamic_array dbs; + Dynamic_array dbs; /* Supposedly acl_dbs can be huge, but only a handful of db grants @@ -5284,9 +5288,9 @@ static bool merge_role_db_privileges(ACL_ROLE *grantee, const char *dbname, Collect these applicable db grants. */ - for (uint i=0 ; i < acl_dbs.elements ; i++) + for (uint i=0 ; i < acl_dbs.elements() ; i++) { - ACL_DB *db= dynamic_element(&acl_dbs,i,ACL_DB*); + ACL_DB *db= &acl_dbs.at(i); if (db->host.hostname[0]) continue; if (dbname && strcmp(db->db, dbname)) @@ -5294,7 +5298,7 @@ static bool merge_role_db_privileges(ACL_ROLE *grantee, const char *dbname, ACL_ROLE *r= rhash->find(db->user, strlen(db->user)); if (!r) continue; - dbs.append(db); + dbs.append(i); } dbs.sort(db_name_sort); @@ -5303,21 +5307,21 @@ static bool merge_role_db_privileges(ACL_ROLE *grantee, const char *dbname, (that should be merged) are sorted together. The grantee's ACL_DB element is not necessarily the first and may be not present at all. */ - ACL_DB **first= NULL, *UNINIT_VAR(merged); + int first= -1, merged= -1; ulong UNINIT_VAR(access), update_flags= 0; - for (ACL_DB **cur= dbs.front(); cur <= dbs.back(); cur++) + for (int *p= dbs.front(); p <= dbs.back(); p++) { - if (!first || (!dbname && strcmp(cur[0]->db, cur[-1]->db))) + if (first<0 || (!dbname && strcmp(acl_dbs.at(*p).db, acl_dbs.at(*p-1).db))) { // new db name series update_flags|= update_role_db(merged, first, access, grantee->user.str); - merged= NULL; + merged= -1; access= 0; - first= cur; + first= *p; } - if (strcmp(cur[0]->user, grantee->user.str) == 0) - access|= (merged= cur[0])->initial_access; + if (strcmp(acl_dbs.at(*p).user, grantee->user.str) == 0) + access|= acl_dbs.at(merged= *p).initial_access; else - access|= cur[0]->access; + access|= acl_dbs.at(*p).access; } update_flags|= update_role_db(merged, first, access, grantee->user.str); @@ -5330,14 +5334,12 @@ static bool merge_role_db_privileges(ACL_ROLE *grantee, const char *dbname, */ if (update_flags & (2|4)) { // inserted or deleted, need to sort - my_qsort((uchar*) dynamic_element(&acl_dbs,0,ACL_DB*),acl_dbs.elements, - sizeof(ACL_DB),(qsort_cmp) acl_compare); + acl_dbs.sort((acl_dbs_cmp)acl_compare); } if (update_flags & 4) { // deleted, trim the end - while (acl_dbs.elements && - dynamic_element(&acl_dbs, acl_dbs.elements-1, ACL_DB*)->sort == 0) - acl_dbs.elements--; + while (acl_dbs.elements() && acl_dbs.back()->sort == 0) + acl_dbs.pop(); } return update_flags; } @@ -6031,7 +6033,8 @@ bool mysql_routine_grant(THD *thd, TABLE_LIST *table_list, bool is_proc, List_iterator str_list (user_list); LEX_USER *Str, *tmp_Str; TABLE_LIST tables[TABLES_MAX]; - bool create_new_users= 0, result; + bool create_new_users= 0; + int result; char *db_name, *table_name; DBUG_ENTER("mysql_routine_grant"); @@ -6466,7 +6469,8 @@ bool mysql_grant(THD *thd, const char *db, List &list, List_iterator str_list (list); LEX_USER *Str, *tmp_Str, *proxied_user= NULL; char tmp_db[SAFE_NAME_LEN+1]; - bool create_new_users=0, result; + bool create_new_users=0; + int result; TABLE_LIST tables[TABLES_MAX]; DBUG_ENTER("mysql_grant"); @@ -8130,16 +8134,14 @@ static bool show_database_privileges(THD *thd, const char *username, const char *hostname, char *buff, size_t buffsize) { - ACL_DB *acl_db; ulong want_access; - uint counter; Protocol *protocol= thd->protocol; - for (counter=0 ; counter < acl_dbs.elements ; counter++) + for (uint i=0 ; i < acl_dbs.elements() ; i++) { const char *user, *host; - acl_db=dynamic_element(&acl_dbs,counter,ACL_DB*); + ACL_DB *acl_db= &acl_dbs.at(i); user= safe_str(acl_db->user); host=acl_db->host.hostname; @@ -8958,7 +8960,7 @@ static int handle_grant_struct(enum enum_acl_lists struct_no, bool drop, elements= acl_users.elements; break; case DB_ACL: - elements= acl_dbs.elements; + elements= acl_dbs.elements(); break; case COLUMN_PRIVILEGES_HASH: grant_name_hash= &column_priv_hash; @@ -9002,7 +9004,7 @@ static int handle_grant_struct(enum enum_acl_lists struct_no, bool drop, break; case DB_ACL: - acl_db= dynamic_element(&acl_dbs, idx, ACL_DB*); + acl_db= &acl_dbs.at(idx); user= acl_db->user; host= acl_db->host.hostname; break; @@ -9086,7 +9088,7 @@ static int handle_grant_struct(enum enum_acl_lists struct_no, bool drop, break; case DB_ACL: - delete_dynamic_element(&acl_dbs, idx); + acl_dbs.del(idx); break; case COLUMN_PRIVILEGES_HASH: @@ -9850,11 +9852,11 @@ bool mysql_revoke_all(THD *thd, List &list) */ do { - for (counter= 0, revoked= 0 ; counter < acl_dbs.elements ; ) + for (counter= 0, revoked= 0 ; counter < acl_dbs.elements() ; ) { const char *user,*host; - acl_db=dynamic_element(&acl_dbs,counter,ACL_DB*); + acl_db=&acl_dbs.at(counter); user= safe_str(acl_db->user); host= safe_str(acl_db->host.hostname); @@ -10467,6 +10469,14 @@ static int show_column_grants(THD *thd, SHOW_VAR *var, char *buff, return 0; } +static int show_database_grants(THD *thd, SHOW_VAR *var, char *buff, + enum enum_var_type scope) +{ + var->type= SHOW_UINT; + var->value= buff; + *(uint *)buff= acl_dbs.elements(); + return 0; +} #else bool check_grant(THD *, ulong, TABLE_LIST *, bool, uint, bool) @@ -10478,7 +10488,7 @@ bool check_grant(THD *, ulong, TABLE_LIST *, bool, uint, bool) SHOW_VAR acl_statistics[] = { #ifndef NO_EMBEDDED_ACCESS_CHECKS {"column_grants", (char*)show_column_grants, SHOW_SIMPLE_FUNC}, - {"database_grants", (char*)&acl_dbs.elements, SHOW_UINT}, + {"database_grants", (char*)show_database_grants, SHOW_SIMPLE_FUNC}, {"function_grants", (char*)&func_priv_hash.records, SHOW_ULONG}, {"procedure_grants", (char*)&proc_priv_hash.records, SHOW_ULONG}, {"proxy_users", (char*)&acl_proxy_users.elements, SHOW_UINT}, @@ -10749,11 +10759,11 @@ int fill_schema_schema_privileges(THD *thd, TABLE_LIST *tables, COND *cond) DBUG_RETURN(0); mysql_mutex_lock(&acl_cache->lock); - for (counter=0 ; counter < acl_dbs.elements ; counter++) + for (counter=0 ; counter < acl_dbs.elements() ; counter++) { const char *user, *host, *is_grantable="YES"; - acl_db=dynamic_element(&acl_dbs,counter,ACL_DB*); + acl_db=&acl_dbs.at(counter); user= safe_str(acl_db->user); host= safe_str(acl_db->host.hostname); diff --git a/sql/sql_array.h b/sql/sql_array.h index 159951e26..3e75a9ea5 100644 --- a/sql/sql_array.h +++ b/sql/sql_array.h @@ -114,8 +114,7 @@ template class Dynamic_array void init(uint prealloc=16, uint increment=16) { - my_init_dynamic_array(&array, sizeof(Elem), prealloc, increment, - MYF(0)); + init_dynamic_array2(&array, sizeof(Elem), 0, prealloc, increment, MYF(0)); } /** @@ -208,6 +207,11 @@ template class Dynamic_array set_dynamic(&array, &el, idx); } + void freeze() + { + freeze_size(&array); + } + bool resize(size_t new_size, Elem default_val) { size_t old_size= elements(); @@ -230,6 +234,11 @@ template class Dynamic_array delete_dynamic(&array); } + void free_memory() + { + delete_dynamic(&array); + } + typedef int (*CMP_FUNC)(const Elem *el1, const Elem *el2); void sort(CMP_FUNC cmp_func) @@ -237,7 +246,7 @@ template class Dynamic_array my_qsort(array.buffer, array.elements, sizeof(Elem), (qsort_cmp)cmp_func); } - typedef int (*CMP_FUNC2)(const Elem *el1, const Elem *el2, void *); + typedef int (*CMP_FUNC2)(void *, const Elem *el1, const Elem *el2); void sort(CMP_FUNC2 cmp_func, void *data) { my_qsort2(array.buffer, array.elements, sizeof(Elem), (qsort2_cmp)cmp_func, data); diff --git a/sql/sql_binlog.cc b/sql/sql_binlog.cc index 91cf03890..2e861d00f 100644 --- a/sql/sql_binlog.cc +++ b/sql/sql_binlog.cc @@ -28,6 +28,65 @@ // START_EVENT_V3, // Log_event_type, // Log_event + +/** + Copy fragments into the standard placeholder thd->lex->comment.str. + + Compute the size of the (still) encoded total, + allocate and then copy fragments one after another. + The size can exceed max(max_allowed_packet) which is not a + problem as no String instance is created off this char array. + + @param thd THD handle + @return + 0 at success, + -1 otherwise. +*/ +int binlog_defragment(THD *thd) +{ + user_var_entry *entry[2]; + LEX_STRING name[2]= { thd->lex->comment, thd->lex->ident }; + + /* compute the total size */ + thd->lex->comment.str= NULL; + thd->lex->comment.length= 0; + for (uint k= 0; k < 2; k++) + { + entry[k]= + (user_var_entry*) my_hash_search(&thd->user_vars, (uchar*) name[k].str, + name[k].length); + if (!entry[k] || entry[k]->type != STRING_RESULT) + { + my_error(ER_WRONG_TYPE_FOR_VAR, MYF(0), name[k].str); + return -1; + } + thd->lex->comment.length += entry[k]->length; + } + + thd->lex->comment.str= // to be freed by the caller + (char *) my_malloc(thd->lex->comment.length, MYF(MY_WME)); + if (!thd->lex->comment.str) + { + my_error(ER_OUTOFMEMORY, MYF(ME_FATALERROR), 1); + return -1; + } + + /* fragments are merged into allocated buf while the user var:s get reset */ + size_t gathered_length= 0; + for (uint k=0; k < 2; k++) + { + memcpy(thd->lex->comment.str + gathered_length, entry[k]->value, + entry[k]->length); + gathered_length += entry[k]->length; + update_hash(entry[k], true, NULL, 0, STRING_RESULT, &my_charset_bin, 0); + } + + DBUG_ASSERT(gathered_length == thd->lex->comment.length); + + return 0; +} + + /** Execute a BINLOG statement. @@ -53,14 +112,6 @@ void mysql_client_binlog_statement(THD* thd) if (check_global_access(thd, SUPER_ACL)) DBUG_VOID_RETURN; - size_t coded_len= thd->lex->comment.length; - if (!coded_len) - { - my_error(ER_SYNTAX_ERROR, MYF(0)); - DBUG_VOID_RETURN; - } - size_t decoded_len= base64_needed_decoded_length(coded_len); - /* option_bits will be changed when applying the event. But we don't expect it be changed permanently after BINLOG statement, so backup it first. @@ -81,6 +132,8 @@ void mysql_client_binlog_statement(THD* thd) int err; Relay_log_info *rli; rpl_group_info *rgi; + char *buf= NULL; + size_t coded_len= 0, decoded_len= 0; rli= thd->rli_fake; if (!rli) @@ -102,15 +155,13 @@ void mysql_client_binlog_statement(THD* thd) rgi->thd= thd; const char *error= 0; - char *buf= (char *) my_malloc(decoded_len, MYF(MY_WME)); Log_event *ev = 0; + my_bool is_fragmented= FALSE; /* Out of memory check */ - if (!(rli && - rli->relay_log.description_event_for_exec && - buf)) + if (!(rli && rli->relay_log.description_event_for_exec)) { my_error(ER_OUTOFMEMORY, MYF(ME_FATALERROR), 1); /* needed 1 bytes */ goto end; @@ -119,6 +170,23 @@ void mysql_client_binlog_statement(THD* thd) rli->sql_driver_thd= thd; rli->no_storage= TRUE; + if (unlikely(is_fragmented= thd->lex->comment.str && thd->lex->ident.str)) + if (binlog_defragment(thd)) + goto end; + + if (!(coded_len= thd->lex->comment.length)) + { + my_error(ER_SYNTAX_ERROR, MYF(0)); + goto end; + } + + decoded_len= base64_needed_decoded_length(coded_len); + if (!(buf= (char *) my_malloc(decoded_len, MYF(MY_WME)))) + { + my_error(ER_OUTOFMEMORY, MYF(ME_FATALERROR), 1); + goto end; + } + for (char const *strptr= thd->lex->comment.str ; strptr < thd->lex->comment.str + thd->lex->comment.length ; ) { @@ -272,6 +340,8 @@ void mysql_client_binlog_statement(THD* thd) my_ok(thd); end: + if (unlikely(is_fragmented)) + my_free(thd->lex->comment.str); thd->variables.option_bits= thd_options; rgi->slave_close_thread_tables(thd); my_free(buf); diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 2a42de1a1..0971d4fda 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -1518,6 +1518,7 @@ void THD::cleanup(void) sp_cache_clear(&sp_func_cache); mysql_ull_cleanup(this); + stmt_map.reset(); /* All metadata locks must have been released by now. */ DBUG_ASSERT(!mdl_context.has_locks()); @@ -3777,11 +3778,13 @@ void Statement_map::erase(Statement *statement) void Statement_map::reset() { /* Must be first, hash_free will reset st_hash.records */ - mysql_mutex_lock(&LOCK_prepared_stmt_count); - DBUG_ASSERT(prepared_stmt_count >= st_hash.records); - prepared_stmt_count-= st_hash.records; - mysql_mutex_unlock(&LOCK_prepared_stmt_count); - + if (st_hash.records) + { + mysql_mutex_lock(&LOCK_prepared_stmt_count); + DBUG_ASSERT(prepared_stmt_count >= st_hash.records); + prepared_stmt_count-= st_hash.records; + mysql_mutex_unlock(&LOCK_prepared_stmt_count); + } my_hash_reset(&names_hash); my_hash_reset(&st_hash); last_found_statement= 0; @@ -3790,12 +3793,8 @@ void Statement_map::reset() Statement_map::~Statement_map() { - /* Must go first, hash_free will reset st_hash.records */ - mysql_mutex_lock(&LOCK_prepared_stmt_count); - DBUG_ASSERT(prepared_stmt_count >= st_hash.records); - prepared_stmt_count-= st_hash.records; - mysql_mutex_unlock(&LOCK_prepared_stmt_count); - + /* Statement_map::reset() should be called prior to destructor. */ + DBUG_ASSERT(!st_hash.records); my_hash_free(&names_hash); my_hash_free(&st_hash); } @@ -6391,6 +6390,22 @@ int THD::binlog_update_row(TABLE* table, bool is_trans, DBUG_ASSERT(is_current_stmt_binlog_format_row() && ((WSREP(this) && wsrep_emulate_bin_log) || mysql_bin_log.is_open())); + /** + Save a reference to the original read bitmaps + We will need this to restore the bitmaps at the end as + binlog_prepare_row_images() may change table->read_set. + table->read_set is used by pack_row and deep in + binlog_prepare_pending_events(). + */ + MY_BITMAP *old_read_set= table->read_set; + + /** + This will remove spurious fields required during execution but + not needed for binlogging. This is done according to the: + binlog-row-image option. + */ + binlog_prepare_row_images(table); + size_t const before_maxlen = max_row_length(table, before_record); size_t const after_maxlen = max_row_length(table, after_record); @@ -6402,9 +6417,9 @@ int THD::binlog_update_row(TABLE* table, bool is_trans, uchar *after_row= row_data.slot(1); size_t const before_size= pack_row(table, table->read_set, before_row, - before_record); + before_record); size_t const after_size= pack_row(table, table->rpl_write_set, after_row, - after_record); + after_record); /* Ensure that all events in a GTID group are in the same cache */ if (variables.option_bits & OPTION_GTID_BEGIN) @@ -6432,6 +6447,9 @@ int THD::binlog_update_row(TABLE* table, bool is_trans, int error= ev->add_row_data(before_row, before_size) || ev->add_row_data(after_row, after_size); + /* restore read set for the rest of execution */ + table->column_bitmaps_set_no_signal(old_read_set, + table->write_set); return error; } diff --git a/sql/sql_const.h b/sql/sql_const.h index 0cd214d8b..1d6549f77 100644 --- a/sql/sql_const.h +++ b/sql/sql_const.h @@ -33,7 +33,17 @@ #define MAX_SYS_VAR_LENGTH 32 #define MAX_KEY MAX_INDEXES /* Max used keys */ #define MAX_REF_PARTS 32 /* Max parts used as ref */ -#define MAX_KEY_LENGTH 3072 /* max possible key */ + +/* + Maximum length of the data part of an index lookup key. + + The "data part" is defined as the value itself, not including the + NULL-indicator bytes or varchar length bytes ("the Extras"). We need this + value because there was a bug where length of the Extras were not counted. + + You probably need MAX_KEY_LENGTH, not this constant. +*/ +#define MAX_DATA_LENGTH_FOR_KEY 3072 #if SIZEOF_OFF_T > 4 #define MAX_REFLENGTH 8 /* Max length for record ref */ #else diff --git a/sql/sql_db.cc b/sql/sql_db.cc index f626b4e61..d7ed82a2e 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -771,8 +771,7 @@ mysql_alter_db_internal(THD *thd, const char *db, } -int mysql_create_db(THD *thd, char *db, - const DDL_options_st &options, +int mysql_create_db(THD *thd, char *db, DDL_options_st options, const Schema_specification_st *create_info) { /* @@ -780,6 +779,9 @@ int mysql_create_db(THD *thd, char *db, to it, we need to use a copy to make execution prepared statement- safe. */ Schema_specification_st tmp(*create_info); + if (thd->slave_thread && + slave_ddl_exec_mode_options == SLAVE_EXEC_MODE_IDEMPOTENT) + options.add(DDL_options::OPT_IF_NOT_EXISTS); return mysql_create_db_internal(thd, db, options, &tmp, false); } @@ -1059,6 +1061,9 @@ mysql_rm_db_internal(THD *thd,char *db, bool if_exists, bool silent) bool mysql_rm_db(THD *thd,char *db, bool if_exists) { + if (thd->slave_thread && + slave_ddl_exec_mode_options == SLAVE_EXEC_MODE_IDEMPOTENT) + if_exists= true; return mysql_rm_db_internal(thd, db, if_exists, false); } diff --git a/sql/sql_db.h b/sql/sql_db.h index b0d99cc1b..ed8417a77 100644 --- a/sql/sql_db.h +++ b/sql/sql_db.h @@ -20,8 +20,7 @@ class THD; -int mysql_create_db(THD *thd, char *db, - const DDL_options_st &options, +int mysql_create_db(THD *thd, char *db, DDL_options_st options, const Schema_specification_st *create); bool mysql_alter_db(THD *thd, const char *db, const Schema_specification_st *create); diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index 1e6abf74a..09f8eb650 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -3793,6 +3793,8 @@ bool st_select_lex::optimize_unflattened_subqueries(bool const_only) inner_join->select_options|= SELECT_DESCRIBE; } res= inner_join->optimize(); + if (!inner_join->cleaned) + sl->update_used_tables(); sl->update_correlated_cache(); is_correlated_unit|= sl->is_correlated; inner_join->select_options= save_options; diff --git a/sql/sql_lex.h b/sql/sql_lex.h index f1edc8095..edc647522 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -2459,6 +2459,10 @@ struct LEX: public Query_tables_list String *wild; /* Wildcard in SHOW {something} LIKE 'wild'*/ sql_exchange *exchange; select_result *result; + /** + @c the two may also hold BINLOG arguments: either comment holds a + base64-char string or both represent the BINLOG fragment user variables. + */ LEX_STRING comment, ident; LEX_USER *grant_user; XID *xid; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index a76d9f0bb..3f6ce8356 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1198,6 +1198,7 @@ static bool deny_updates_if_read_only_option(THD *thd, TABLE_LIST *all_tables) DBUG_RETURN(FALSE); if (lex->sql_command == SQLCOM_CREATE_DB || + lex->sql_command == SQLCOM_ALTER_DB || lex->sql_command == SQLCOM_DROP_DB) DBUG_RETURN(TRUE); @@ -1940,7 +1941,8 @@ bool dispatch_command(enum enum_server_command command, THD *thd, /* wsrep BF abort in query exec phase */ mysql_mutex_lock(&thd->LOCK_thd_data); do_end_of_statement= thd->wsrep_conflict_state != REPLAYING && - thd->wsrep_conflict_state != RETRY_AUTOCOMMIT; + thd->wsrep_conflict_state != RETRY_AUTOCOMMIT && + !thd->killed; mysql_mutex_unlock(&thd->LOCK_thd_data); } else diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index db608de51..f1a1ca6fd 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -1,5 +1,5 @@ -/* Copyright (c) 2000, 2017, Oracle and/or its affiliates. - Copyright (c) 2008, 2017, MariaDB Corporation +/* Copyright (c) 2000, 2018, Oracle and/or its affiliates. + Copyright (c) 2008, 2019, MariaDB Corporation 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 @@ -542,7 +542,7 @@ bool log_in_use(const char* log_name) if ((linfo = tmp->current_linfo)) { mysql_mutex_lock(&linfo->lock); - result = !memcmp(log_name, linfo->log_file_name, log_name_len); + result = !strncmp(log_name, linfo->log_file_name, log_name_len); mysql_mutex_unlock(&linfo->lock); if (result) break; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 62f40eeb9..155e261ac 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -19361,6 +19361,10 @@ test_if_quick_select(JOIN_TAB *tab) delete tab->select->quick; tab->select->quick=0; + + if (tab->table->file->inited != handler::NONE) + tab->table->file->ha_index_or_rnd_end(); + int res= tab->select->test_quick_select(tab->join->thd, tab->keys, (table_map) 0, HA_POS_ERROR, 0, FALSE, /*remove where parts*/FALSE); diff --git a/sql/sql_statistics.cc b/sql/sql_statistics.cc index 739930f46..f4dcafdb7 100644 --- a/sql/sql_statistics.cc +++ b/sql/sql_statistics.cc @@ -30,6 +30,7 @@ #include "opt_range.h" #include "my_atomic.h" #include "sql_show.h" +#include "sql_partition.h" /* The system variable 'use_stat_tables' can take one of the @@ -3722,6 +3723,22 @@ void set_statistics_for_table(THD *thd, TABLE *table) (use_stat_table_mode <= COMPLEMENTARY || !table->stats_is_read || read_stats->cardinality_is_null) ? table->file->stats.records : read_stats->cardinality; + + /* + For partitioned table, EITS statistics is based on data from all partitions. + + On the other hand, Partition Pruning figures which partitions will be + accessed and then computes the estimate of rows in used_partitions. + + Use the estimate from Partition Pruning as it is typically more precise. + Ideally, EITS should provide per-partition statistics but this is not + implemented currently. + */ +#ifdef WITH_PARTITION_STORAGE_ENGINE + if (table->part_info) + table->used_stat_records= table->file->stats.records; +#endif + KEY *key_info, *key_info_end; for (key_info= table->key_info, key_info_end= key_info+table->s->keys; key_info < key_info_end; key_info++) @@ -4037,3 +4054,29 @@ bool is_stat_table(const char *db, const char *table) } return false; } + +/* + Check wheter we can use EITS statistics for a field or not + + TRUE : Use EITS for the columns + FALSE: Otherwise +*/ + +bool is_eits_usable(Field *field) +{ + /* + (1): checks if we have EITS statistics for a particular column + (2): Don't use EITS for GEOMETRY columns + (3): Disabling reading EITS statistics for columns involved in the + partition list of a table. We assume the selecticivity for + such columns would be handled during partition pruning. + */ + Column_statistics* col_stats= field->read_stats; + return col_stats && !col_stats->no_stat_values_provided() && //(1) + field->type() != MYSQL_TYPE_GEOMETRY && //(2) +#ifdef WITH_PARTITION_STORAGE_ENGINE + (!field->table->part_info || + !field->table->part_info->field_in_partition_expr(field)) && //(3) +#endif + true; +} diff --git a/sql/sql_statistics.h b/sql/sql_statistics.h index d30691c32..6530c2d6c 100644 --- a/sql/sql_statistics.h +++ b/sql/sql_statistics.h @@ -112,6 +112,7 @@ double get_column_range_cardinality(Field *field, key_range *max_endp, uint range_flag); bool is_stat_table(const char *db, const char *table); +bool is_eits_usable(Field* field); class Histogram { diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 3db7dc760..55b77c8b9 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -5717,7 +5717,8 @@ static bool is_candidate_key(KEY *key) KEY_PART_INFO *key_part; KEY_PART_INFO *key_part_end= key->key_part + key->user_defined_key_parts; - if (!(key->flags & HA_NOSAME) || (key->flags & HA_NULL_PART_KEY)) + if (!(key->flags & HA_NOSAME) || (key->flags & HA_NULL_PART_KEY) || + (key->flags & HA_KEY_HAS_PART_KEY_SEG)) return false; for (key_part= key->key_part; key_part < key_part_end; key_part++) @@ -6203,9 +6204,7 @@ static int compare_uint(const uint *s, const uint *t) @retval false success */ -static bool fill_alter_inplace_info(THD *thd, - TABLE *table, - bool varchar, +static bool fill_alter_inplace_info(THD *thd, TABLE *table, bool varchar, Alter_inplace_info *ha_alter_info) { Field **f_ptr, *field; @@ -6213,7 +6212,6 @@ static bool fill_alter_inplace_info(THD *thd, Create_field *new_field; KEY_PART_INFO *key_part, *new_part; KEY_PART_INFO *end; - uint candidate_key_count= 0; Alter_info *alter_info= ha_alter_info->alter_info; DBUG_ENTER("fill_alter_inplace_info"); @@ -6485,6 +6483,17 @@ static bool fill_alter_inplace_info(THD *thd, KEY *new_key; KEY *new_key_end= ha_alter_info->key_info_buffer + ha_alter_info->key_count; + /* + Primary key index for the new table + */ + const KEY* const new_pk= (ha_alter_info->key_count > 0 && + (!my_strcasecmp(system_charset_info, + ha_alter_info->key_info_buffer->name, + primary_key_name) || + is_candidate_key(ha_alter_info->key_info_buffer))) ? + ha_alter_info->key_info_buffer : NULL; + const KEY *const old_pk= table->s->primary_key == MAX_KEY ? NULL : + table->key_info + table->s->primary_key; DBUG_PRINT("info", ("index count old: %d new: %d", table->s->keys, ha_alter_info->key_count)); @@ -6560,6 +6569,15 @@ static bool fill_alter_inplace_info(THD *thd, goto index_changed; } + /* + Rebuild the index if following condition get satisfied: + + (i) Old table doesn't have primary key, new table has it and vice-versa + (ii) Primary key changed to another existing index + */ + if ((new_key == new_pk) != (table_key == old_pk)) + goto index_changed; + /* Check that key comment is not changed. */ if (table_key->comment.length != new_key->comment.length || (table_key->comment.length && @@ -6618,22 +6636,6 @@ static bool fill_alter_inplace_info(THD *thd, /* Now let us calculate flags for storage engine API. */ - /* Count all existing candidate keys. */ - for (table_key= table->key_info; table_key < table_key_end; table_key++) - { - /* - Check if key is a candidate key, This key is either already primary key - or could be promoted to primary key if the original primary key is - dropped. - In MySQL one is allowed to create primary key with partial fields (i.e. - primary key which is not considered candidate). For simplicity we count - such key as a candidate key here. - */ - if (((uint) (table_key - table->key_info) == table->s->primary_key) || - is_candidate_key(table_key)) - candidate_key_count++; - } - /* Figure out what kind of indexes we are dropping. */ KEY **dropped_key; KEY **dropped_key_end= ha_alter_info->index_drop_buffer + @@ -6646,21 +6648,10 @@ static bool fill_alter_inplace_info(THD *thd, if (table_key->flags & HA_NOSAME) { - /* - Unique key. Check for PRIMARY KEY. Also see comment about primary - and candidate keys above. - */ - if ((uint) (table_key - table->key_info) == table->s->primary_key) - { + if (table_key == old_pk) ha_alter_info->handler_flags|= Alter_inplace_info::DROP_PK_INDEX; - candidate_key_count--; - } else - { ha_alter_info->handler_flags|= Alter_inplace_info::DROP_UNIQUE_INDEX; - if (is_candidate_key(table_key)) - candidate_key_count--; - } } else ha_alter_info->handler_flags|= Alter_inplace_info::DROP_INDEX; @@ -6673,23 +6664,10 @@ static bool fill_alter_inplace_info(THD *thd, if (new_key->flags & HA_NOSAME) { - bool is_pk= !my_strcasecmp(system_charset_info, new_key->name, primary_key_name); - - if ((!(new_key->flags & HA_KEY_HAS_PART_KEY_SEG) && - !(new_key->flags & HA_NULL_PART_KEY)) || - is_pk) - { - /* Candidate key or primary key! */ - if (candidate_key_count == 0 || is_pk) - ha_alter_info->handler_flags|= Alter_inplace_info::ADD_PK_INDEX; - else - ha_alter_info->handler_flags|= Alter_inplace_info::ADD_UNIQUE_INDEX; - candidate_key_count++; - } + if (new_key == new_pk) + ha_alter_info->handler_flags|= Alter_inplace_info::ADD_PK_INDEX; else - { ha_alter_info->handler_flags|= Alter_inplace_info::ADD_UNIQUE_INDEX; - } } else ha_alter_info->handler_flags|= Alter_inplace_info::ADD_INDEX; @@ -9968,7 +9946,10 @@ bool mysql_checksum_table(THD *thd, TABLE_LIST *tables, { /* calculating table's checksum */ ha_checksum crc= 0; - uchar null_mask=256 - (1 << t->s->last_null_bit_pos); + DBUG_ASSERT(t->s->last_null_bit_pos < 8); + uchar null_mask= (t->s->last_null_bit_pos ? + (256 - (1 << t->s->last_null_bit_pos)): + 0); t->use_all_columns(); diff --git a/sql/sql_type_int.h b/sql/sql_type_int.h index 1eda5651d..7433bd524 100644 --- a/sql/sql_type_int.h +++ b/sql/sql_type_int.h @@ -24,12 +24,25 @@ class Longlong_hybrid protected: longlong m_value; bool m_unsigned; + int cmp_signed(const Longlong_hybrid& other) const + { + return m_value < other.m_value ? -1 : m_value == other.m_value ? 0 : 1; + } + int cmp_unsigned(const Longlong_hybrid& other) const + { + return (ulonglong) m_value < (ulonglong) other.m_value ? -1 : + m_value == other.m_value ? 0 : 1; + } public: Longlong_hybrid(longlong nr, bool unsigned_flag) :m_value(nr), m_unsigned(unsigned_flag) { } longlong value() const { return m_value; } bool is_unsigned() const { return m_unsigned; } + bool is_unsigned_outside_of_signed_range() const + { + return m_unsigned && ((ulonglong) m_value) > (ulonglong) LONGLONG_MAX; + } bool neg() const { return m_value < 0 && !m_unsigned; } ulonglong abs() const { @@ -39,6 +52,21 @@ class Longlong_hybrid return ((ulonglong) LONGLONG_MAX) + 1; return m_value < 0 ? -m_value : m_value; } + int cmp(const Longlong_hybrid& other) const + { + if (m_unsigned == other.m_unsigned) + return m_unsigned ? cmp_unsigned(other) : cmp_signed(other); + if (is_unsigned_outside_of_signed_range()) + return 1; + if (other.is_unsigned_outside_of_signed_range()) + return -1; + /* + The unsigned argument is in the range 0..LONGLONG_MAX. + The signed argument is in the range LONGLONG_MIN..LONGLONG_MAX. + Safe to compare as signed. + */ + return cmp_signed(other); + } }; #endif // SQL_TYPE_INT_INCLUDED diff --git a/sql/sql_update.cc b/sql/sql_update.cc index b50c91426..960b5cbcc 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -2347,7 +2347,7 @@ int multi_update::do_updates() check_opt_it.rewind(); while(TABLE *tbl= check_opt_it++) { - if ((local_error= tbl->file->ha_rnd_init(1))) + if ((local_error= tbl->file->ha_rnd_init(0))) { err_table= tbl; goto err; diff --git a/sql/sql_view.cc b/sql/sql_view.cc index b7ff4513a..9a9309a13 100644 --- a/sql/sql_view.cc +++ b/sql/sql_view.cc @@ -1534,8 +1534,7 @@ bool mysql_make_view(THD *thd, TABLE_SHARE *share, TABLE_LIST *table, for (tbl= view_main_select_tables; tbl; tbl= tbl->next_local) { tbl->lock_type= table->lock_type; - tbl->mdl_request.set_type((tbl->lock_type >= TL_WRITE_ALLOW_WRITE) ? - MDL_SHARED_WRITE : MDL_SHARED_READ); + tbl->mdl_request.set_type(table->mdl_request.type); } /* If the view is mergeable, we might want to diff --git a/sql/sql_yacc.cc b/sql/sql_yacc.cc index 6e2ca8587..c41e87be6 100644 --- a/sql/sql_yacc.cc +++ b/sql/sql_yacc.cc @@ -2650,18 +2650,18 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 635 +#define YYFINAL 636 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 66418 +#define YYLAST 66945 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 667 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 1031 /* YYNRULES -- Number of rules. */ -#define YYNRULES 2860 +#define YYNRULES 2861 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 4901 +#define YYNSTATES 4906 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -2883,181 +2883,181 @@ static const yytype_uint16 yyrline[] = 7798, 7797, 7818, 7819, 7823, 7824, 7828, 7829, 7830, 7834, 7835, 7840, 7839, 7860, 7861, 7865, 7870, 7871, 7878, 7880, 7884, 7886, 7885, 7897, 7899, 7898, 7911, 7912, 7917, 7926, - 7927, 7928, 7932, 7939, 7949, 7957, 7958, 7958, 7962, 7961, - 7984, 7985, 7989, 7990, 7994, 7995, 7996, 7997, 7998, 7999, - 8003, 8004, 8009, 8008, 8029, 8030, 8031, 8036, 8035, 8041, - 8048, 8054, 8063, 8064, 8068, 8082, 8081, 8094, 8095, 8099, - 8100, 8104, 8114, 8124, 8125, 8130, 8129, 8140, 8141, 8145, - 8146, 8150, 8160, 8171, 8170, 8178, 8178, 8187, 8188, 8193, - 8194, 8203, 8212, 8213, 8217, 8217, 8229, 8234, 8234, 8243, - 8248, 8247, 8262, 8266, 8267, 8288, 8288, 8302, 8313, 8316, - 8318, 8322, 8328, 8335, 8337, 8345, 8346, 8350, 8351, 8368, - 8387, 8389, 8396, 8407, 8408, 8409, 8423, 8428, 8450, 8456, - 8462, 8468, 8469, 8470, 8471, 8472, 8476, 8477, 8478, 8482, - 8483, 8484, 8488, 8489, 8494, 8545, 8552, 8595, 8601, 8607, - 8613, 8619, 8625, 8631, 8637, 8641, 8647, 8653, 8659, 8665, - 8671, 8675, 8681, 8690, 8696, 8704, 8710, 8720, 8726, 8735, - 8745, 8752, 8762, 8768, 8777, 8781, 8787, 8793, 8799, 8805, - 8811, 8817, 8823, 8829, 8835, 8841, 8847, 8853, 8859, 8865, - 8869, 8870, 8874, 8875, 8879, 8880, 8884, 8885, 8889, 8890, - 8891, 8892, 8893, 8894, 8898, 8899, 8904, 8910, 8914, 8921, - 8928, 8935, 8942, 8949, 8955, 8954, 8962, 8969, 8976, 8984, - 8995, 9017, 9024, 9032, 9033, 9034, 9035, 9036, 9037, 9048, - 9049, 9050, 9051, 9052, 9058, 9062, 9068, 9074, 9080, 9086, - 9088, 9095, 9102, 9108, 9132, 9142, 9149, 9157, 9163, 9170, - 9176, 9186, 9193, 9209, 9215, 9221, 9230, 9239, 9245, 9251, - 9257, 9263, 9277, 9288, 9294, 9300, 9306, 9312, 9318, 9325, - 9332, 9338, 9344, 9350, 9356, 9362, 9368, 9374, 9380, 9386, - 9394, 9415, 9422, 9428, 9435, 9442, 9449, 9456, 9462, 9468, - 9475, 9481, 9488, 9494, 9500, 9506, 9512, 9518, 9536, 9542, - 9548, 9555, 9562, 9570, 9577, 9584, 9591, 9598, 9615, 9621, - 9627, 9633, 9639, 9646, 9652, 9658, 9664, 9670, 9676, 9682, - 9689, 9697, 9703, 9709, 9715, 9721, 9729, 9735, 9749, 9755, - 9761, 9769, 9781, 9788, 9803, 9809, 9816, 9823, 9830, 9837, - 9844, 9848, 9868, 9867, 9939, 9977, 9979, 9984, 9985, 9989, - 9990, 9994, 9995, 9999, 10006, 10014, 10041, 10047, 10053, 10059, - 10065, 10071, 10080, 10087, 10089, 10086, 10096, 10107, 10113, 10119, - 10125, 10131, 10137, 10143, 10149, 10155, 10162, 10161, 10181, 10180, - 10192, 10202, 10210, 10226, 10227, 10232, 10237, 10240, 10243, 10242, - 10258, 10260, 10266, 10265, 10282, 10285, 10284, 10288, 10290, 10292, - 10294, 10296, 10298, 10300, 10302, 10308, 10314, 10317, 10316, 10322, - 10323, 10327, 10334, 10342, 10343, 10347, 10354, 10362, 10363, 10367, - 10368, 10372, 10380, 10391, 10392, 10404, 10415, 10416, 10422, 10423, - 10443, 10447, 10445, 10463, 10461, 10472, 10482, 10480, 10498, 10497, - 10507, 10518, 10516, 10535, 10534, 10545, 10557, 10558, 10559, 10563, - 10564, 10572, 10573, 10577, 10592, 10592, 10607, 10643, 10728, 10739, - 10736, 10761, 10774, 10774, 10790, 10789, 10810, 10827, 10810, 10834, - 10838, 10861, 10862, 10867, 10870, 10871, 10872, 10876, 10877, 10882, - 10881, 10887, 10886, 10894, 10895, 10898, 10900, 10900, 10904, 10904, - 10909, 10910, 10914, 10916, 10921, 10922, 10926, 10937, 10950, 10951, - 10952, 10953, 10954, 10955, 10956, 10957, 10958, 10959, 10960, 10961, - 10965, 10966, 10967, 10968, 10969, 10970, 10971, 10972, 10973, 10977, - 10978, 10979, 10980, 10983, 10985, 10986, 10990, 10991, 10999, 11001, - 11005, 11007, 11006, 11020, 11023, 11022, 11037, 11043, 11057, 11059, - 11063, 11065, 11070, 11071, 11088, 11110, 11114, 11115, 11119, 11131, - 11133, 11138, 11137, 11187, 11189, 11194, 11195, 11196, 11200, 11201, - 11205, 11218, 11225, 11230, 11237, 11244, 11251, 11261, 11288, 11292, - 11298, 11304, 11313, 11321, 11325, 11332, 11333, 11337, 11338, 11339, - 11343, 11344, 11345, 11346, 11347, 11348, 11352, 11353, 11354, 11355, - 11356, 11360, 11361, 11362, 11363, 11364, 11368, 11369, 11370, 11371, - 11372, 11376, 11381, 11382, 11386, 11387, 11391, 11393, 11392, 11430, - 11431, 11435, 11436, 11440, 11450, 11450, 11461, 11462, 11465, 11485, - 11489, 11503, 11504, 11509, 11508, 11518, 11528, 11517, 11530, 11543, - 11555, 11554, 11572, 11571, 11580, 11580, 11597, 11603, 11618, 11634, - 11642, 11646, 11651, 11650, 11659, 11664, 11670, 11675, 11680, 11688, - 11689, 11693, 11704, 11717, 11718, 11722, 11734, 11738, 11747, 11750, - 11757, 11758, 11766, 11774, 11765, 11784, 11791, 11783, 11801, 11809, - 11810, 11818, 11822, 11823, 11834, 11835, 11839, 11848, 11849, 11850, - 11852, 11851, 11862, 11864, 11868, 11869, 11871, 11870, 11874, 11873, - 11879, 11880, 11884, 11885, 11889, 11899, 11900, 11904, 11905, 11910, - 11909, 11923, 11924, 11928, 11933, 11941, 11942, 11950, 11952, 11952, - 11960, 11968, 11959, 11990, 11991, 11995, 12003, 12004, 12008, 12018, - 12019, 12026, 12025, 12041, 12052, 12040, 12055, 12054, 12066, 12065, - 12078, 12080, 12084, 12085, 12089, 12102, 12118, 12119, 12123, 12124, - 12128, 12129, 12130, 12135, 12134, 12155, 12157, 12160, 12162, 12165, - 12166, 12169, 12173, 12177, 12181, 12185, 12189, 12193, 12197, 12201, - 12209, 12212, 12222, 12221, 12237, 12244, 12252, 12260, 12268, 12276, - 12284, 12291, 12298, 12304, 12306, 12308, 12317, 12321, 12326, 12325, - 12332, 12331, 12336, 12345, 12352, 12357, 12362, 12367, 12369, 12371, - 12373, 12375, 12377, 12384, 12392, 12394, 12402, 12409, 12416, 12423, - 12429, 12434, 12442, 12450, 12454, 12459, 12466, 12471, 12478, 12485, - 12491, 12498, 12505, 12510, 12515, 12520, 12527, 12549, 12551, 12553, - 12558, 12559, 12562, 12564, 12568, 12569, 12573, 12574, 12578, 12579, - 12583, 12584, 12588, 12589, 12593, 12594, 12602, 12614, 12613, 12629, - 12628, 12638, 12639, 12640, 12641, 12642, 12646, 12647, 12651, 12658, - 12659, 12660, 12664, 12665, 12677, 12678, 12679, 12694, 12693, 12706, - 12705, 12717, 12721, 12722, 12735, 12738, 12737, 12749, 12750, 12755, - 12757, 12759, 12761, 12763, 12765, 12773, 12775, 12777, 12779, 12784, - 12786, 12794, 12796, 12798, 12800, 12816, 12817, 12821, 12822, 12825, - 12827, 12828, 12832, 12848, 12849, 12853, 12852, 12862, 12863, 12867, - 12867, 12871, 12870, 12876, 12880, 12881, 12885, 12886, 12894, 12893, - 12904, 12908, 12912, 12925, 12924, 12939, 12940, 12941, 12944, 12945, - 12946, 12947, 12955, 12959, 12968, 12974, 12986, 12997, 13007, 13017, - 12985, 13025, 13026, 13030, 13031, 13035, 13036, 13044, 13048, 13049, - 13050, 13053, 13055, 13059, 13060, 13064, 13069, 13076, 13081, 13088, - 13090, 13094, 13095, 13099, 13104, 13112, 13113, 13116, 13118, 13126, - 13127, 13131, 13132, 13133, 13137, 13139, 13144, 13145, 13154, 13155, - 13159, 13160, 13164, 13177, 13201, 13213, 13220, 13239, 13247, 13252, - 13265, 13274, 13290, 13307, 13308, 13309, 13317, 13318, 13319, 13320, - 13334, 13340, 13346, 13352, 13358, 13364, 13382, 13392, 13402, 13408, - 13417, 13429, 13435, 13441, 13457, 13458, 13462, 13471, 13486, 13490, - 13533, 13537, 13554, 13558, 13630, 13654, 13684, 13685, 13695, 13702, - 13706, 13712, 13718, 13728, 13734, 13743, 13753, 13754, 13782, 13796, - 13810, 13825, 13826, 13836, 13837, 13847, 13848, 13849, 13853, 13866, - 13896, 13906, 13906, 13908, 13918, 13919, 13920, 13921, 13922, 13923, - 13924, 13925, 13926, 13927, 13928, 13929, 13930, 13931, 13932, 13933, - 13934, 13935, 13936, 13937, 13938, 13939, 13940, 13941, 13942, 13943, - 13944, 13945, 13946, 13947, 13948, 13949, 13950, 13951, 13952, 13953, - 13954, 13955, 13956, 13957, 13958, 13959, 13960, 13961, 13962, 13963, - 13964, 13965, 13966, 13967, 13968, 13969, 13970, 13971, 13972, 13973, - 13974, 13975, 13976, 13977, 13978, 13988, 13989, 13990, 13991, 13992, - 13993, 13994, 13995, 13996, 13997, 13998, 13999, 14000, 14001, 14002, - 14003, 14004, 14005, 14006, 14007, 14008, 14009, 14010, 14011, 14012, - 14013, 14014, 14015, 14016, 14017, 14018, 14019, 14020, 14021, 14022, - 14023, 14024, 14025, 14026, 14027, 14028, 14029, 14030, 14031, 14032, - 14033, 14034, 14035, 14036, 14037, 14042, 14043, 14044, 14045, 14046, - 14047, 14048, 14049, 14050, 14051, 14052, 14053, 14054, 14055, 14056, - 14057, 14058, 14059, 14060, 14061, 14062, 14063, 14064, 14065, 14066, - 14067, 14068, 14069, 14070, 14071, 14072, 14073, 14074, 14075, 14076, - 14077, 14078, 14079, 14080, 14081, 14082, 14083, 14084, 14085, 14086, - 14087, 14088, 14089, 14090, 14091, 14092, 14093, 14094, 14095, 14096, - 14097, 14098, 14099, 14100, 14101, 14102, 14103, 14104, 14105, 14106, - 14107, 14108, 14109, 14110, 14111, 14112, 14113, 14114, 14115, 14116, - 14117, 14118, 14119, 14120, 14121, 14122, 14123, 14124, 14125, 14126, - 14127, 14128, 14129, 14130, 14131, 14132, 14133, 14134, 14135, 14136, - 14137, 14138, 14139, 14140, 14141, 14142, 14143, 14144, 14145, 14146, - 14147, 14148, 14149, 14150, 14151, 14152, 14153, 14154, 14155, 14156, - 14157, 14158, 14159, 14160, 14161, 14162, 14163, 14164, 14165, 14166, - 14167, 14168, 14169, 14170, 14171, 14172, 14173, 14174, 14175, 14176, - 14177, 14178, 14179, 14180, 14181, 14182, 14183, 14184, 14185, 14186, - 14187, 14188, 14189, 14190, 14191, 14192, 14193, 14194, 14195, 14196, - 14197, 14198, 14199, 14200, 14201, 14202, 14203, 14204, 14205, 14206, - 14207, 14208, 14209, 14210, 14211, 14212, 14213, 14214, 14215, 14216, - 14217, 14218, 14219, 14220, 14221, 14222, 14223, 14224, 14225, 14226, - 14227, 14228, 14229, 14230, 14231, 14232, 14233, 14234, 14235, 14236, - 14237, 14238, 14239, 14240, 14241, 14242, 14243, 14244, 14245, 14246, - 14247, 14248, 14249, 14250, 14251, 14252, 14253, 14254, 14255, 14256, - 14257, 14258, 14259, 14260, 14261, 14262, 14263, 14264, 14265, 14266, - 14267, 14268, 14269, 14270, 14271, 14272, 14273, 14274, 14275, 14276, - 14277, 14278, 14279, 14280, 14281, 14282, 14283, 14284, 14285, 14286, - 14287, 14288, 14289, 14290, 14291, 14292, 14293, 14294, 14295, 14296, - 14297, 14298, 14299, 14300, 14312, 14311, 14324, 14332, 14323, 14349, - 14350, 14355, 14354, 14361, 14360, 14370, 14369, 14380, 14379, 14385, - 14393, 14395, 14400, 14400, 14409, 14408, 14422, 14421, 14426, 14430, - 14431, 14432, 14436, 14437, 14438, 14439, 14443, 14444, 14445, 14446, - 14451, 14475, 14501, 14512, 14529, 14543, 14558, 14577, 14594, 14606, - 14614, 14630, 14656, 14693, 14707, 14708, 14709, 14710, 14714, 14732, - 14750, 14751, 14755, 14756, 14757, 14758, 14762, 14776, 14780, 14781, - 14782, 14792, 14793, 14794, 14800, 14806, 14818, 14817, 14830, 14831, - 14835, 14836, 14840, 14855, 14856, 14857, 14862, 14863, 14868, 14867, - 14884, 14893, 14903, 14902, 14933, 14934, 14938, 14939, 14943, 14944, - 14945, 14946, 14948, 14947, 14960, 14961, 14962, 14963, 14964, 14970, - 14975, 14981, 14992, 15003, 15007, 15014, 15023, 15025, 15030, 15035, - 15042, 15054, 15066, 15073, 15085, 15086, 15089, 15090, 15093, 15098, - 15106, 15116, 15135, 15138, 15140, 15144, 15145, 15152, 15154, 15158, - 15159, 15164, 15163, 15167, 15166, 15170, 15169, 15173, 15172, 15175, - 15176, 15177, 15178, 15179, 15180, 15181, 15182, 15183, 15184, 15185, - 15186, 15187, 15188, 15189, 15190, 15191, 15192, 15193, 15194, 15195, - 15196, 15197, 15198, 15199, 15200, 15204, 15205, 15209, 15210, 15214, - 15221, 15228, 15238, 15249, 15258, 15267, 15279, 15284, 15292, 15297, - 15305, 15310, 15317, 15317, 15318, 15318, 15321, 15328, 15333, 15339, - 15345, 15351, 15355, 15359, 15360, 15364, 15392, 15394, 15398, 15402, - 15406, 15413, 15414, 15418, 15419, 15423, 15424, 15428, 15429, 15435, - 15441, 15447, 15453, 15463, 15462, 15472, 15481, 15482, 15486, 15487, - 15492, 15493, 15494, 15499, 15500, 15501, 15505, 15506, 15510, 15522, - 15531, 15541, 15550, 15564, 15565, 15570, 15569, 15585, 15586, 15590, - 15591, 15595, 15595, 15616, 15617, 15621, 15622, 15623, 15627, 15632, - 15640, 15643, 15641, 15656, 15663, 15684, 15708, 15710, 15714, 15715, - 15719, 15720, 15728, 15729, 15730, 15731, 15737, 15743, 15753, 15755, - 15757, 15762, 15763, 15764, 15765, 15766, 15770, 15771, 15772, 15773, - 15774, 15775, 15785, 15786, 15791, 15804, 15820, 15822, 15824, 15830, - 15831, 15833, 15839, 15838, 15857, 15858, 15862, 15868, 15877, 15877, - 15901, 15902, 15907, 15908, 15910, 15912, 15926, 15935, 15941, 15946, - 15923, 15996, 15997, 16001, 16021, 16042, 16046, 16052, 16058, 16017, - 16117, 16129, 16138, 16142, 16116, 16159, 16163, 16167, 16171, 16175, - 16179, 16186, 16193, 16200, 16210, 16211, 16215, 16216, 16217, 16221, - 16222, 16227, 16229, 16228, 16234, 16235, 16239, 16246, 16256, 16262, - 16273 + 7927, 7928, 7932, 7939, 7949, 7957, 7966, 7967, 7967, 7971, + 7970, 7993, 7994, 7998, 7999, 8003, 8004, 8005, 8006, 8007, + 8008, 8012, 8013, 8018, 8017, 8038, 8039, 8040, 8045, 8044, + 8050, 8057, 8063, 8072, 8073, 8077, 8091, 8090, 8103, 8104, + 8108, 8109, 8113, 8123, 8133, 8134, 8139, 8138, 8149, 8150, + 8154, 8155, 8159, 8169, 8180, 8179, 8187, 8187, 8196, 8197, + 8202, 8203, 8212, 8221, 8222, 8226, 8226, 8238, 8243, 8243, + 8252, 8257, 8256, 8271, 8275, 8276, 8297, 8297, 8311, 8322, + 8325, 8327, 8331, 8337, 8344, 8346, 8354, 8355, 8359, 8360, + 8377, 8396, 8398, 8405, 8416, 8417, 8418, 8432, 8437, 8459, + 8465, 8471, 8477, 8478, 8479, 8480, 8481, 8485, 8486, 8487, + 8491, 8492, 8493, 8497, 8498, 8503, 8554, 8561, 8604, 8610, + 8616, 8622, 8628, 8634, 8640, 8646, 8650, 8656, 8662, 8668, + 8674, 8680, 8684, 8690, 8699, 8705, 8713, 8719, 8729, 8735, + 8744, 8754, 8761, 8771, 8777, 8786, 8790, 8796, 8802, 8808, + 8814, 8820, 8826, 8832, 8838, 8844, 8850, 8856, 8862, 8868, + 8874, 8878, 8879, 8883, 8884, 8888, 8889, 8893, 8894, 8898, + 8899, 8900, 8901, 8902, 8903, 8907, 8908, 8913, 8919, 8923, + 8930, 8937, 8944, 8951, 8958, 8964, 8963, 8971, 8978, 8985, + 8993, 9004, 9026, 9033, 9041, 9042, 9043, 9044, 9045, 9046, + 9057, 9058, 9059, 9060, 9061, 9067, 9071, 9077, 9083, 9089, + 9095, 9097, 9104, 9111, 9117, 9141, 9151, 9158, 9166, 9172, + 9179, 9185, 9195, 9202, 9218, 9224, 9230, 9239, 9248, 9254, + 9260, 9266, 9272, 9286, 9297, 9303, 9309, 9315, 9321, 9327, + 9334, 9341, 9347, 9353, 9359, 9365, 9371, 9377, 9383, 9389, + 9395, 9403, 9424, 9431, 9437, 9444, 9451, 9458, 9465, 9471, + 9477, 9484, 9490, 9497, 9503, 9509, 9515, 9521, 9527, 9545, + 9551, 9557, 9564, 9571, 9579, 9586, 9593, 9600, 9607, 9624, + 9630, 9636, 9642, 9648, 9655, 9661, 9667, 9673, 9679, 9685, + 9691, 9698, 9706, 9712, 9718, 9724, 9730, 9738, 9744, 9758, + 9764, 9770, 9778, 9790, 9797, 9812, 9818, 9825, 9832, 9839, + 9846, 9853, 9857, 9877, 9876, 9948, 9986, 9988, 9993, 9994, + 9998, 9999, 10003, 10004, 10008, 10015, 10023, 10050, 10056, 10062, + 10068, 10074, 10080, 10089, 10096, 10098, 10095, 10105, 10116, 10122, + 10128, 10134, 10140, 10146, 10152, 10158, 10164, 10171, 10170, 10190, + 10189, 10201, 10211, 10219, 10235, 10236, 10241, 10246, 10249, 10252, + 10251, 10267, 10269, 10275, 10274, 10291, 10294, 10293, 10297, 10299, + 10301, 10303, 10305, 10307, 10309, 10311, 10317, 10323, 10326, 10325, + 10331, 10332, 10336, 10343, 10351, 10352, 10356, 10363, 10371, 10372, + 10376, 10377, 10381, 10389, 10400, 10401, 10413, 10424, 10425, 10431, + 10432, 10452, 10456, 10454, 10472, 10470, 10481, 10491, 10489, 10507, + 10506, 10516, 10527, 10525, 10544, 10543, 10554, 10566, 10567, 10568, + 10572, 10573, 10581, 10582, 10586, 10601, 10601, 10616, 10652, 10737, + 10748, 10745, 10770, 10783, 10783, 10799, 10798, 10819, 10836, 10819, + 10843, 10847, 10870, 10871, 10876, 10879, 10880, 10881, 10885, 10886, + 10891, 10890, 10896, 10895, 10903, 10904, 10907, 10909, 10909, 10913, + 10913, 10918, 10919, 10923, 10925, 10930, 10931, 10935, 10946, 10959, + 10960, 10961, 10962, 10963, 10964, 10965, 10966, 10967, 10968, 10969, + 10970, 10974, 10975, 10976, 10977, 10978, 10979, 10980, 10981, 10982, + 10986, 10987, 10988, 10989, 10992, 10994, 10995, 10999, 11000, 11008, + 11010, 11014, 11016, 11015, 11029, 11032, 11031, 11046, 11052, 11066, + 11068, 11072, 11074, 11079, 11080, 11097, 11119, 11123, 11124, 11128, + 11140, 11142, 11147, 11146, 11196, 11198, 11203, 11204, 11205, 11209, + 11210, 11214, 11227, 11234, 11239, 11246, 11253, 11260, 11270, 11297, + 11301, 11307, 11313, 11322, 11330, 11334, 11341, 11342, 11346, 11347, + 11348, 11352, 11353, 11354, 11355, 11356, 11357, 11361, 11362, 11363, + 11364, 11365, 11369, 11370, 11371, 11372, 11373, 11377, 11378, 11379, + 11380, 11381, 11385, 11390, 11391, 11395, 11396, 11400, 11402, 11401, + 11439, 11440, 11444, 11445, 11449, 11459, 11459, 11470, 11471, 11474, + 11494, 11498, 11512, 11513, 11518, 11517, 11527, 11537, 11526, 11539, + 11552, 11564, 11563, 11581, 11580, 11589, 11589, 11606, 11612, 11627, + 11643, 11651, 11655, 11660, 11659, 11668, 11673, 11679, 11684, 11689, + 11697, 11698, 11702, 11713, 11726, 11727, 11731, 11743, 11747, 11756, + 11759, 11766, 11767, 11775, 11783, 11774, 11793, 11800, 11792, 11810, + 11818, 11819, 11827, 11831, 11832, 11843, 11844, 11848, 11857, 11858, + 11859, 11861, 11860, 11871, 11873, 11877, 11878, 11880, 11879, 11883, + 11882, 11888, 11889, 11893, 11894, 11898, 11908, 11909, 11913, 11914, + 11919, 11918, 11932, 11933, 11937, 11942, 11950, 11951, 11959, 11961, + 11961, 11969, 11977, 11968, 11999, 12000, 12004, 12012, 12013, 12017, + 12027, 12028, 12035, 12034, 12050, 12061, 12049, 12064, 12063, 12075, + 12074, 12087, 12089, 12093, 12094, 12098, 12111, 12127, 12128, 12132, + 12133, 12137, 12138, 12139, 12144, 12143, 12164, 12166, 12169, 12171, + 12174, 12175, 12178, 12182, 12186, 12190, 12194, 12198, 12202, 12206, + 12210, 12218, 12221, 12231, 12230, 12246, 12253, 12261, 12269, 12277, + 12285, 12293, 12300, 12307, 12313, 12315, 12317, 12326, 12330, 12335, + 12334, 12341, 12340, 12345, 12354, 12361, 12366, 12371, 12376, 12378, + 12380, 12382, 12384, 12386, 12393, 12401, 12403, 12411, 12418, 12425, + 12432, 12438, 12443, 12451, 12459, 12463, 12468, 12475, 12480, 12487, + 12494, 12500, 12507, 12514, 12519, 12524, 12529, 12536, 12558, 12560, + 12562, 12567, 12568, 12571, 12573, 12577, 12578, 12582, 12583, 12587, + 12588, 12592, 12593, 12597, 12598, 12602, 12603, 12611, 12623, 12622, + 12638, 12637, 12647, 12648, 12649, 12650, 12651, 12655, 12656, 12660, + 12667, 12668, 12669, 12673, 12674, 12686, 12687, 12688, 12703, 12702, + 12715, 12714, 12726, 12730, 12731, 12744, 12747, 12746, 12758, 12759, + 12764, 12766, 12768, 12770, 12772, 12774, 12782, 12784, 12786, 12788, + 12793, 12795, 12803, 12805, 12807, 12809, 12825, 12826, 12830, 12831, + 12834, 12836, 12837, 12841, 12857, 12858, 12862, 12861, 12871, 12872, + 12876, 12876, 12880, 12879, 12885, 12889, 12890, 12894, 12895, 12903, + 12902, 12913, 12917, 12921, 12934, 12933, 12948, 12949, 12950, 12953, + 12954, 12955, 12956, 12964, 12968, 12977, 12983, 12995, 13006, 13016, + 13027, 12994, 13035, 13036, 13040, 13041, 13045, 13046, 13054, 13058, + 13059, 13060, 13063, 13065, 13069, 13070, 13074, 13079, 13086, 13091, + 13098, 13100, 13104, 13105, 13109, 13114, 13122, 13123, 13126, 13128, + 13136, 13137, 13141, 13142, 13143, 13147, 13149, 13154, 13155, 13164, + 13165, 13169, 13170, 13174, 13187, 13211, 13223, 13230, 13249, 13257, + 13262, 13275, 13284, 13300, 13317, 13318, 13319, 13327, 13328, 13329, + 13330, 13344, 13350, 13356, 13362, 13368, 13374, 13392, 13402, 13412, + 13418, 13427, 13439, 13445, 13451, 13467, 13468, 13472, 13481, 13496, + 13500, 13543, 13547, 13564, 13568, 13640, 13664, 13694, 13695, 13705, + 13712, 13716, 13722, 13728, 13738, 13744, 13753, 13763, 13764, 13792, + 13806, 13820, 13835, 13836, 13846, 13847, 13857, 13858, 13859, 13863, + 13876, 13906, 13916, 13916, 13918, 13928, 13929, 13930, 13931, 13932, + 13933, 13934, 13935, 13936, 13937, 13938, 13939, 13940, 13941, 13942, + 13943, 13944, 13945, 13946, 13947, 13948, 13949, 13950, 13951, 13952, + 13953, 13954, 13955, 13956, 13957, 13958, 13959, 13960, 13961, 13962, + 13963, 13964, 13965, 13966, 13967, 13968, 13969, 13970, 13971, 13972, + 13973, 13974, 13975, 13976, 13977, 13978, 13979, 13980, 13981, 13982, + 13983, 13984, 13985, 13986, 13987, 13988, 13998, 13999, 14000, 14001, + 14002, 14003, 14004, 14005, 14006, 14007, 14008, 14009, 14010, 14011, + 14012, 14013, 14014, 14015, 14016, 14017, 14018, 14019, 14020, 14021, + 14022, 14023, 14024, 14025, 14026, 14027, 14028, 14029, 14030, 14031, + 14032, 14033, 14034, 14035, 14036, 14037, 14038, 14039, 14040, 14041, + 14042, 14043, 14044, 14045, 14046, 14047, 14052, 14053, 14054, 14055, + 14056, 14057, 14058, 14059, 14060, 14061, 14062, 14063, 14064, 14065, + 14066, 14067, 14068, 14069, 14070, 14071, 14072, 14073, 14074, 14075, + 14076, 14077, 14078, 14079, 14080, 14081, 14082, 14083, 14084, 14085, + 14086, 14087, 14088, 14089, 14090, 14091, 14092, 14093, 14094, 14095, + 14096, 14097, 14098, 14099, 14100, 14101, 14102, 14103, 14104, 14105, + 14106, 14107, 14108, 14109, 14110, 14111, 14112, 14113, 14114, 14115, + 14116, 14117, 14118, 14119, 14120, 14121, 14122, 14123, 14124, 14125, + 14126, 14127, 14128, 14129, 14130, 14131, 14132, 14133, 14134, 14135, + 14136, 14137, 14138, 14139, 14140, 14141, 14142, 14143, 14144, 14145, + 14146, 14147, 14148, 14149, 14150, 14151, 14152, 14153, 14154, 14155, + 14156, 14157, 14158, 14159, 14160, 14161, 14162, 14163, 14164, 14165, + 14166, 14167, 14168, 14169, 14170, 14171, 14172, 14173, 14174, 14175, + 14176, 14177, 14178, 14179, 14180, 14181, 14182, 14183, 14184, 14185, + 14186, 14187, 14188, 14189, 14190, 14191, 14192, 14193, 14194, 14195, + 14196, 14197, 14198, 14199, 14200, 14201, 14202, 14203, 14204, 14205, + 14206, 14207, 14208, 14209, 14210, 14211, 14212, 14213, 14214, 14215, + 14216, 14217, 14218, 14219, 14220, 14221, 14222, 14223, 14224, 14225, + 14226, 14227, 14228, 14229, 14230, 14231, 14232, 14233, 14234, 14235, + 14236, 14237, 14238, 14239, 14240, 14241, 14242, 14243, 14244, 14245, + 14246, 14247, 14248, 14249, 14250, 14251, 14252, 14253, 14254, 14255, + 14256, 14257, 14258, 14259, 14260, 14261, 14262, 14263, 14264, 14265, + 14266, 14267, 14268, 14269, 14270, 14271, 14272, 14273, 14274, 14275, + 14276, 14277, 14278, 14279, 14280, 14281, 14282, 14283, 14284, 14285, + 14286, 14287, 14288, 14289, 14290, 14291, 14292, 14293, 14294, 14295, + 14296, 14297, 14298, 14299, 14300, 14301, 14302, 14303, 14304, 14305, + 14306, 14307, 14308, 14309, 14310, 14322, 14321, 14334, 14342, 14333, + 14359, 14360, 14365, 14364, 14371, 14370, 14380, 14379, 14390, 14389, + 14395, 14403, 14405, 14410, 14410, 14419, 14418, 14432, 14431, 14436, + 14440, 14441, 14442, 14446, 14447, 14448, 14449, 14453, 14454, 14455, + 14456, 14461, 14485, 14511, 14522, 14539, 14553, 14568, 14587, 14604, + 14616, 14624, 14640, 14666, 14703, 14717, 14718, 14719, 14720, 14724, + 14742, 14760, 14761, 14765, 14766, 14767, 14768, 14772, 14786, 14790, + 14791, 14792, 14802, 14803, 14804, 14810, 14816, 14828, 14827, 14840, + 14841, 14845, 14846, 14850, 14865, 14866, 14867, 14872, 14873, 14878, + 14877, 14894, 14903, 14913, 14912, 14943, 14944, 14948, 14949, 14953, + 14954, 14955, 14956, 14958, 14957, 14970, 14971, 14972, 14973, 14974, + 14980, 14985, 14991, 15002, 15013, 15017, 15024, 15033, 15035, 15040, + 15045, 15052, 15064, 15076, 15083, 15095, 15096, 15099, 15100, 15103, + 15108, 15116, 15126, 15145, 15148, 15150, 15154, 15155, 15162, 15164, + 15168, 15169, 15174, 15173, 15177, 15176, 15180, 15179, 15183, 15182, + 15185, 15186, 15187, 15188, 15189, 15190, 15191, 15192, 15193, 15194, + 15195, 15196, 15197, 15198, 15199, 15200, 15201, 15202, 15203, 15204, + 15205, 15206, 15207, 15208, 15209, 15210, 15214, 15215, 15219, 15220, + 15224, 15231, 15238, 15248, 15259, 15268, 15277, 15289, 15294, 15302, + 15307, 15315, 15320, 15327, 15327, 15328, 15328, 15331, 15338, 15343, + 15349, 15355, 15361, 15365, 15369, 15370, 15374, 15402, 15404, 15408, + 15412, 15416, 15423, 15424, 15428, 15429, 15433, 15434, 15438, 15439, + 15445, 15451, 15457, 15463, 15473, 15472, 15482, 15491, 15492, 15496, + 15497, 15502, 15503, 15504, 15509, 15510, 15511, 15515, 15516, 15520, + 15532, 15541, 15551, 15560, 15574, 15575, 15580, 15579, 15595, 15596, + 15600, 15601, 15605, 15605, 15626, 15627, 15631, 15632, 15633, 15637, + 15642, 15650, 15653, 15651, 15666, 15673, 15694, 15720, 15722, 15726, + 15727, 15731, 15732, 15740, 15741, 15742, 15743, 15749, 15755, 15765, + 15767, 15769, 15774, 15775, 15776, 15777, 15778, 15782, 15783, 15784, + 15785, 15786, 15787, 15797, 15798, 15803, 15816, 15832, 15834, 15836, + 15842, 15843, 15845, 15851, 15850, 15869, 15870, 15874, 15880, 15889, + 15889, 15913, 15914, 15919, 15920, 15922, 15924, 15938, 15947, 15953, + 15958, 15935, 16008, 16009, 16013, 16033, 16054, 16058, 16064, 16070, + 16029, 16129, 16141, 16150, 16154, 16128, 16171, 16175, 16179, 16183, + 16187, 16191, 16198, 16205, 16212, 16222, 16223, 16227, 16228, 16229, + 16233, 16234, 16239, 16241, 16240, 16246, 16247, 16251, 16258, 16268, + 16274, 16285 }; #endif @@ -3550,12 +3550,12 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -4321 +#define YYPACT_NINF -4035 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-4321))) + (!!((Yystate) == (-4035))) -#define YYTABLE_NINF -2800 +#define YYTABLE_NINF -2801 #define yytable_value_is_error(Yytable_value) \ 0 @@ -3564,497 +3564,497 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const int yypact[] = { - 7119, 2500, 1335, 64, -151, 210, 58144, -4321, 163, 1403, - -4321, 469, 788, -4321, -4321, -4321, -4321, -4321, 3246, -4321, - 58144, 98, 871, -4321, 26282, -4321, -4321, -4321, -32, -4321, - 148, 1403, -4321, 98, 451, -4321, 58144, -4321, 692, -143, - 98, -4321, -4321, -4321, 51148, -4321, 469, 58144, -4321, 716, - -4321, -4321, 51148, 195, 295, 742, 1217, -4321, -4321, 58144, - -4321, 1848, -4321, 665, 1336, 1206, -4321, -4321, 1069, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, 3895, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, 26924, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, 743, 58144, 892, 58144, 1398, 58144, - 49240, 58144, -4321, 1400, -4321, -4321, 1443, 981, -4321, -4321, - 1403, 1136, -4321, -4321, 1675, 469, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, 1103, -4321, -4321, 1188, -151, -4321, -4321, -4321, - 1491, -4321, 1792, 1686, 1480, 58144, 112, 12575, 1755, 1755, - 1755, 1761, 1785, 1755, 1755, 1755, 58144, -4321, 1755, 1755, - 1755, 1403, -4321, -4321, -4321, 1867, 37792, 58144, 1647, 247, - -95, 49240, -4321, 1483, 58144, -151, 114, -4321, 1784, -4321, - -4321, -4321, 64504, 1403, -4321, 1987, 1897, 268, 58144, -4321, - -4321, -4321, 64504, 1089, 977, 1435, -4321, -4321, 1618, -4321, - 38428, 208, -4321, -4321, -4321, 1019, 2437, -4321, 28850, 5845, - 1618, 1631, -151, -97, 1636, -151, -4321, -4321, 58144, -151, - 1403, 1859, -4321, 12575, -4321, 179, 179, 179, -4321, 179, - -4321, 179, 665, 1506, 1703, -4321, -4321, 1524, 58144, 1961, - -4321, 1961, -4321, -4321, 1961, 339, 1708, 1963, 1965, 1969, - 1660, 2096, 981, 2117, -4321, -4321, -4321, 1556, 666, -4321, - 1622, 41608, -4321, 58144, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, 3336, -4321, 1672, 123, 1720, 2075, -4321, 49240, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, 26282, - 1594, 58144, -4321, 2098, 12575, 1188, -4321, 1689, -4321, -4321, - 26282, -4321, -4321, 26282, 898, 1408, 58144, -4321, -4321, 2261, - -4321, -4321, -4321, 51784, 112, 1620, 1626, 1628, 17863, -4321, - 1637, 1640, 1645, 12575, 1650, 1652, 1668, 1670, 1673, 1679, - 1684, 1692, 1695, 1704, 1712, 1718, 1722, 1724, 1724, 1724, - 1726, 1753, 1756, 1764, -187, 1767, -4321, 1788, 1794, 1817, - -4321, -4321, 1821, 1831, 1843, 1846, -4321, -4321, 1853, 1869, - 1888, 13236, 1891, 1898, 1903, -4321, 23060, 1908, 1917, 1931, - 1952, 1954, 1966, 1970, 1973, 1979, -4321, -4321, 12575, 1726, - -4321, -4321, 1983, -4321, 1996, 2000, 2005, 2016, 2035, 2046, - 2049, 2055, 2059, 2062, 2066, 2072, 2079, 2083, 2085, 2103, - 2106, 1726, -4321, -182, 2115, 2127, 614, 2132, -4321, 2136, - -4321, 251, 2146, 1724, 1726, 1726, 2158, 2168, 2170, 2172, - 2193, 2197, 17863, 17863, 17863, 12575, -4321, 58144, -4321, 58144, - 1027, 2738, -4321, 3232, 17863, 873, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, 1699, 1780, -4321, -4321, -4321, -4321, -4321, - -4321, 2227, 1737, 2187, 58144, 58144, 58144, 2239, 58144, 58144, - 58144, -4321, 49240, 1918, 58144, -4321, -4321, 1755, 1832, 4705, - 32055, 2031, 2009, -108, 1724, -4321, -4321, -117, -79, -64, - 2077, -4321, -4321, 1949, 785, 2267, -4321, 810, 199, -4321, - 108, 815, 821, -4321, -4321, -4321, -4321, -4321, -4321, 2121, - 2278, 1857, -4321, -4321, 170, -4321, -4321, 58144, -4321, 2588, - 12575, -4321, -4321, -4321, 2518, 2274, -4321, -4321, -4321, 191, - 2766, 261, 26282, 64, 58144, 144, 65776, 65776, 58144, -4321, - 61324, 2224, -4321, -4321, 8188, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, 2167, -4321, -4321, 2232, - 12575, 1451, -4321, -155, -4321, -4321, 2603, -4321, -4321, 46060, - 26282, 1659, 65140, -4321, -4321, -4321, 23704, -4321, -4321, 2843, - -4321, 2249, -4321, -4321, 1780, 3890, -4321, 2515, 2031, 2537, - -4321, 2721, -4321, 2548, 2455, 1408, 2340, -4321, 2897, 2672, - -4321, 2751, 1525, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, 2304, 2437, -4321, -4321, 52420, 1208, 2481, - -129, 1274, 1275, 37153, 63, 49240, 1289, 88, 29491, 42244, - 2300, -4321, -4321, -4321, 672, 2473, -4321, 2812, -4321, 403, - -4321, 2331, 2862, 403, 46696, 2672, 1543, -4321, 192, -4321, - 2793, -4321, -4321, -4321, -4321, 2457, 2443, 2490, -4321, 365, - 2078, -4321, -151, -4321, 52, -4321, 2467, 2672, 403, 1543, - -4321, 2719, 2853, 561, 2827, -4321, 1293, -4321, -4321, -4321, - -65, 2935, -4321, 2372, -4321, -4321, -4321, 26282, -4321, -4321, - -4321, 2518, -4321, 270, -4321, -4321, -4321, -4321, 2391, -4321, - -4321, 2656, 2516, -4321, -4321, 100, 2418, 61, -4321, 2914, - -4321, 64, 58144, -4321, -4321, -4321, 1709, 1701, 1443, 1961, - -4321, 1961, 1961, 1961, 1961, 1136, 42880, -4321, -4321, -4321, - 2955, 2977, 1724, 2439, -4321, -4321, -4321, -4321, -4321, 3092, - -4321, -4321, 2725, 2995, 2995, 2995, 3112, -4321, -4321, -4321, - 26282, -4321, -4321, -4321, 123, -4321, 2638, 2503, -4321, 58144, - 1720, -4321, 26282, -4321, 2873, 2476, -4321, -4321, 2731, 12575, - -4321, -4321, 12575, 64504, 2979, 1027, -4321, -4321, 278, -4321, - -4321, 26282, 334, -4321, 3080, 2700, -4321, -4321, -4321, 3092, - 2995, 26282, -4321, 2494, -4321, 2484, -4321, 12575, 12575, 1169, - 3091, 3161, 3161, 3161, 1027, 2553, 12575, 12575, 12575, 12575, - 12575, 12575, 12575, 12575, 12575, 12575, 12575, 12575, 1244, 2525, - -4321, -4321, -4321, 2164, -4321, 2528, 12575, 12575, -4321, 12575, - 12575, 27566, -4321, 4185, 12575, 12575, 1039, 3040, 12575, 12575, - 12575, 12575, 3415, 12575, 12575, 12575, 27566, 3178, 2530, -4321, - 2533, 1454, 12575, 12575, 1477, 12575, 12575, 12575, 12575, 12575, - -4321, -4321, 12575, 12575, 12575, 12575, 17863, 12575, 12575, 12575, - 12575, 12575, 12575, 2532, 12575, 3161, 3161, 12575, 12575, 1530, - -4321, -4321, 12575, 2498, 2498, -4321, 12575, 9270, 12575, -4321, - -4321, 2542, -4321, -4321, -4321, 27566, 3161, 3161, 12575, 12575, - 12575, 3091, 3091, 3091, 187, 2554, -127, 12575, 30132, 2546, - -4321, -4321, -4321, -4321, 12575, 12575, 12575, 17863, -4321, 3400, - -4321, -4321, -4321, -4321, -4321, 13897, 17863, 17863, 2545, 17863, - 17863, 17863, 17863, 17863, 2936, 17863, 17863, 18524, 19185, 17863, - 17863, 17863, 17863, 1225, 3091, 49240, 17863, 12575, -4321, -4321, - 58144, -4321, -4321, -4321, 2549, -4321, 2842, 1918, -4321, 47332, - -4321, 590, 3054, -4321, 46060, 26282, -4321, 2558, -4321, 2946, - -4321, 2948, 2951, 2952, -4321, -4321, -4321, -4321, 3172, 2953, - -4321, -151, 2959, -4321, -4321, 2584, -4321, -4321, -4321, 19846, - 49240, -4321, 2593, -4321, 2608, -4321, -4321, -4321, -4321, -4321, - -4321, 2698, -4321, -4321, -4321, -4321, 2599, -4321, 46060, 2599, - -4321, -4321, 2599, -4321, -4321, 2599, 41608, 76, 3960, -4321, - -4321, 58144, -4321, 58780, -4321, 3025, 370, -4321, 23704, -151, - -4321, 3035, 14558, -4321, -4321, -4321, 2986, 269, 2613, -4321, - -4321, -4321, -4321, 3072, 58144, -4321, -4321, -4321, 12575, 2982, - 2614, -4321, -4321, -4321, 350, 26282, -4321, 1027, -4321, 136, - 136, 2878, 1523, 49240, -4321, -4321, 190, 2626, -4321, 2711, - 2629, -4321, 2714, -4321, -4321, 26282, 2627, -4321, 26282, -4321, - -4321, -4321, 2891, 2718, -4321, -151, 977, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - 2640, 2655, 3107, 2647, 46060, 41608, 125, -4321, 58144, -4321, - 1535, -4321, -4321, 905, -4321, -4321, 1028, 43516, -4321, 791, - 2680, 2709, 3059, -4321, -4321, 2663, -4321, 12575, -4321, 2649, - 2664, -4321, 672, -4321, 47332, 58144, -4321, -4321, -4321, -4321, - -4321, 3253, 12575, -4321, 46060, -4321, 1092, -4321, 846, 95, - 672, -4321, -4321, -4321, -4321, -4321, 58144, 53056, 2668, 9931, - 2795, 3081, -4321, -4321, -4321, 2678, 1961, 58144, 58144, 58144, - 26282, 58144, 26282, -4321, 995, 995, -4321, -4321, -4321, -4321, - 403, 58144, 58144, 403, 41608, -4321, 1543, 33, 58144, 403, - -4321, 3086, 2798, -4321, -4321, -4321, 3155, -4321, -4321, 3158, - 2694, -4321, 3185, -4321, -4321, 2823, 1543, -4321, -4321, 26282, - -4321, -4321, 1543, -4321, 1543, 1543, 12575, 403, 403, 403, - -4321, 1198, -4321, -4321, -4321, 2860, -97, -4321, -4321, -4321, - 766, -4321, -4321, 179, 2969, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, 1097, -4321, -4321, -4321, - 3198, -4321, 47332, 41608, 3183, 1961, 1961, -4321, -4321, 3208, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, 1961, -4321, -4321, - -4321, -4321, -4321, -4321, 1720, 49240, 58144, 58144, 58144, 26282, - -4321, -4321, -4321, -4321, -4321, 105, -4321, -4321, -4321, 2007, - 3247, -4321, 49240, 2940, 619, 1351, 2940, 2732, -151, 428, - -4321, 428, -4321, -4321, -4321, 1318, 1961, -4321, -4321, 2733, - -4321, 2988, -4321, -4321, 53692, 26282, -4321, -4321, -4321, 1510, - 2736, 2740, 1027, 1027, 61960, 3344, 2773, 4594, -4321, -4321, - 26282, -4321, 325, -4321, -4321, -4321, 2799, -4321, -4321, -4321, - -4321, 3296, -4321, -4321, 2356, 2796, 2746, -4321, 2891, -4321, - -203, 58144, 3210, 34609, -4321, 303, 922, -4321, 3161, 2754, - -4321, 2757, 2760, 2761, 12575, 83, 610, 974, -201, 1434, - 1359, 422, 1363, 448, -4321, 1456, 479, 483, 636, 217, - -4321, 2764, 2775, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, 2765, -4321, -4321, -4321, 902, 946, 1372, 1393, 2776, - 2778, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, 3228, -4321, 970, 1566, -4321, -4321, -4321, -4321, 2781, - -4321, -4321, 1425, 1033, 1043, 277, 2794, 1582, 1049, 1616, - 1629, 2787, 27566, 58144, 3161, 2790, 1490, 1492, 3161, 2791, - 1077, 1497, 1655, 1736, 1742, 1507, 1509, 1084, 1769, 2806, - 1633, 1114, 1131, 1638, 1178, 1229, -4321, 1688, 2805, 2809, - 1245, 330, 3161, 2813, 283, 2811, 2815, 1693, 10592, 11253, - 11914, 234, 1249, -4321, 2814, -4321, 2533, 2817, 2835, 336, - 202, 1698, -4321, 12575, -4321, -4321, 2824, -4321, 2855, 189, - 95, -4321, 2958, 58144, 2413, 198, -4321, -4321, -4321, -4321, - -4321, -4321, 862, -4321, 2838, -4321, 2840, 2319, 2844, 12575, - 1066, 2844, 3341, 1151, 1151, 17863, 2696, 2712, 13236, 1464, - 13236, 1464, 2844, 2844, 2844, -4321, 17863, 2845, 17863, 17863, - -4321, 3091, 1027, 2847, 1303, 58144, 26282, 590, 2848, -4321, - -4321, -4321, -4321, -4321, 672, -4321, 2849, 139, 26282, 49240, - 2851, -4321, 3374, -4321, -4321, -4321, -4321, -151, -4321, -4321, - 3925, -4321, 26282, 2949, 2950, 2956, -4321, 32696, -4321, -4321, - -4321, -4321, 32696, 1191, -4321, 58144, -4321, 2937, -4321, -4321, - -4321, 3284, -4321, 3285, -209, -4321, 24346, 24346, -4321, 24346, - -4321, -4321, -4321, -4321, -4321, 199, -4321, -4321, -4321, -4321, - 808, 836, 3557, 2680, -4321, -4321, -4321, -4321, -4321, -4321, - 33973, 1027, -4321, 26282, -4321, 3280, 886, 26282, -4321, -4321, - 3273, 1027, -4321, -4321, -4321, -4321, -4321, -4321, 2867, -4321, - 2870, -4321, -4321, -4321, -4321, -4321, 2771, 2983, -4321, 3521, - -4321, 12575, -151, -4321, 46060, 46060, 26282, 26282, 26282, 485, - 12575, -4321, 2199, 2888, -4321, -4321, 3362, -4321, 3522, -4321, - 3890, 19846, 47332, 3323, 3345, -4321, 2894, 24346, 24346, 24346, - -4321, -4321, -4321, -4321, 2991, 2991, -4321, 30773, -4321, 12575, - -4321, -4321, -4321, 3381, -4321, 3084, -76, -4321, -4321, -4321, - -4321, -4321, 58144, -4321, 2846, -4321, -4321, 2905, -4321, -4321, - 26282, -4321, -4321, 3351, -4321, 3071, -4321, 1027, -4321, 2904, - 52420, 3372, 9931, 3373, -4321, 47968, -4321, 1027, 672, 2917, - 2922, -4321, -4321, 3305, -27, -4321, 2923, 2926, -4321, 2928, - 2929, 2938, 52420, 12575, -4321, 846, -4321, -4321, -4321, -4321, - -4321, 17863, 1788, -4321, 1027, -4321, -4321, -151, 3387, -151, - 12575, 2933, 58144, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, 403, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, 3174, 2672, 2078, - 3081, -4321, 403, 1543, 26282, 403, 403, 1027, -4321, -4321, - -4321, -4321, -4321, -4321, 2947, -4321, 3005, -4321, -4321, 3114, - 64504, 2960, -4321, 3413, 2672, -4321, -4321, -4321, 233, -206, - 2964, 1961, -4321, 58144, 58144, 1961, 1961, 58144, -4321, -4321, - -168, 3238, 3250, -4321, -4321, 672, 672, 3276, -4321, -151, - 3104, 3108, 3110, 3122, 3124, 3168, -4321, -4321, -151, -151, - -4321, -4321, 672, -4321, 418, -4321, -4321, -4321, -4321, 2522, - -4321, 672, 672, -4321, 161, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, 256, -4321, 5035, -4321, -4321, 26282, 3263, 26282, - 3457, -4321, 3525, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, 3002, -4321, -4321, 12575, 3093, -4321, -4321, 2773, - -4321, 3017, 3024, 3029, 3031, 3034, 3037, 3038, 3041, 3042, - 3043, 3044, 3046, 3049, 3051, 3060, 3061, 3063, 3064, 3066, - 3067, 3068, 3070, 3075, 3045, -4321, -4321, -4321, 3095, -4321, - -4321, -4321, 672, 672, 672, 672, -4321, 2662, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, 3433, 1129, 58144, 3117, - -4321, 34609, -4321, -4321, 766, -4321, 3062, 15219, -4321, 3073, - -4321, 12575, -4321, -4321, -4321, 818, 12575, 12575, 3570, 2879, - -4321, 48604, -4321, -4321, -4321, 12575, -4321, 12575, -4321, 12575, - 12575, 12575, 12575, 48604, 2879, 12575, -4321, 3079, -4321, 3484, - 3489, -4321, -4321, -4321, -4321, 12575, 12575, -4321, 12575, 12575, - -4321, 12575, 12575, 12575, 12575, -4321, 12575, -4321, -4321, 17863, - -4321, 3077, 3083, -4321, -4321, -4321, 3085, -4321, 12575, -4321, - -4321, -4321, -4321, -4321, -4321, 12575, -4321, 12575, -4321, 12575, - 12575, -4321, 12575, 12575, -4321, -4321, -4321, 15880, 12575, 12575, - 3088, -4321, -4321, 12575, 12575, 12575, -4321, 12575, 307, 12575, - 1184, 12575, 1974, 12575, -4321, 12575, -4321, -4321, -4321, -4321, - 12575, 1752, 2771, 3362, 3089, -4321, 1799, 2751, -4321, 2129, - 2824, 3096, 3269, 1535, -4321, -4321, 49240, 12575, -4321, -4321, - -4321, -4321, -4321, -4321, 17863, 345, 3098, 17863, -4321, 3341, - 3415, 3415, 2577, 12575, 1066, 3341, 12575, 3100, 3102, -4321, - 12575, 58144, -4321, -4321, -4321, 47332, -4321, 49240, 46060, -4321, - -4321, -4321, 139, -4321, 2558, 3118, -4321, -4321, -4321, 2867, - 79, 3121, 3113, -4321, -4321, -4321, -4321, -4321, -4321, 1840, - -4321, 41608, 252, 3752, 41608, -4321, 3106, -4321, 3115, 3197, - 3202, 3203, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, 2672, 64504, 2199, -4321, -4321, 3123, -4321, - -4321, 2731, 2991, 3145, 3499, 3695, -4321, -4321, -4321, -4321, - 64504, 64504, 12575, 58144, 17863, -4321, 3735, 3130, 3131, 3144, - 3134, 1027, -4321, 3217, -4321, -4321, -4321, 241, -4321, -4321, - -4321, -4321, -4321, 74, 1802, -4321, -4321, 3137, 3137, 21774, - -4321, -4321, -4321, 58144, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, 3151, -4321, -4321, 3414, 46060, 41608, 3601, - 3604, 3608, -119, -4321, -4321, -4321, 49240, 3152, -4321, -4321, - -4321, 1027, 3156, 351, 44152, 3633, 44152, 44152, -4321, 707, - 3556, 3559, -4321, 3431, 2175, 3431, -4321, -4321, 707, 766, - 2891, -4321, 12575, 3772, 3603, 3487, -4321, 49876, -4321, 35245, - -4321, 7679, -4321, 46060, -4321, -4321, -4321, -4321, -4321, 3264, - 3265, 1644, -4321, -4321, 3575, 3402, -4321, -4321, -4321, 672, - 1027, -4321, 2668, 3177, 31414, -4321, 1409, -4321, -4321, 1027, - 324, -4321, -4321, -4321, 3466, -4321, -4321, 3387, -4321, 2680, - 1543, -4321, -4321, 1198, 2802, -4321, 27566, 62596, 3362, 3507, - -4321, -4321, -4321, 236, 3836, -4321, 58144, 3187, 617, -4321, - -4321, 58144, 3649, 967, 967, 3472, 26282, 26282, 3935, 47968, - 44788, -4321, -4321, -4321, -4321, 3732, -4321, 3733, 1427, -4321, - -4321, 3076, 1351, -4321, -151, -151, -151, -151, 3362, -151, - -151, 1849, -4321, 3076, 3076, 428, -4321, 201, -4321, -4321, - -4321, -4321, 2954, 672, 3774, 3455, 672, 672, 3774, 672, - 3456, 3458, 672, 672, 3282, 3719, 672, 3602, 3306, 2290, - 3605, 672, 3464, -4321, 3309, 3726, 672, 672, 672, 672, - 672, 3774, 3469, 3821, 672, 672, -4321, 672, 3471, 3470, - 174, 3474, 3476, 672, 672, 672, 672, 952, 58144, 672, - 672, 3477, 672, -4321, -4321, 5677, -4321, -4321, -4321, -4321, - -4321, -4321, 669, 24994, -4321, -4321, -4321, -4321, 672, -4321, - 467, -4321, 3438, -4321, 377, 50512, 63232, 3226, 3235, 54328, - 1027, 64504, 12575, -4321, 3236, 3237, 3239, 3362, -151, -151, - 1409, -151, 3362, -151, -151, -151, -151, -151, -151, -151, - 3362, 3362, -151, 927, 1654, -151, 3362, 4594, -4321, -151, - 2771, 3076, 3076, 2356, -4321, 3680, 672, -4321, 1882, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, 3240, - 766, 2680, 1266, 2680, 3245, -4321, 13236, 1710, -4321, 1027, - 12575, 1027, 1513, -4321, 3244, 3244, 3244, -4321, 3249, -4321, - -4321, 3244, 3657, 3244, 3658, 3254, 3255, 1855, 2219, -4321, - 1861, 2283, 1714, 3256, 3266, 1699, -4321, 12575, 12575, 1738, - 368, 1745, 565, 1263, 1286, 375, -4321, 1749, 3424, -4321, - -4321, 1777, 1804, 1823, 1828, 1292, 1844, 1894, 13236, 1900, - 406, 381, -4321, 1906, 1308, 1323, 1919, 12575, 1935, 12575, - 1940, 12575, 1988, 1998, 2026, 3272, 3272, 178, -4321, 3267, - -4321, -4321, -4321, 3274, -4321, -4321, -4321, -4321, 2680, 2304, - 2129, -4321, 3277, 1182, -4321, -4321, 3271, 1027, 3279, -4321, - -4321, 12575, -4321, 873, -4321, -4321, 17863, 414, 3283, -4321, - 1027, -4321, -4321, 3288, 1699, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, 3275, -4321, 3502, -4321, -4321, 3718, 32696, - -4321, 58144, 1141, 632, -4321, -4321, 49240, 3554, -4321, 3295, - 35881, 41608, 41608, 41608, 3292, -4321, 59416, 3563, 26282, -4321, - 3714, -4321, -4321, -4321, -4321, 58144, 65776, 65776, 65776, 65776, - 3294, 3298, -4321, -4321, -4321, 3341, 3675, 3558, -4321, -4321, - 2771, 58144, 46060, 3611, -4321, -4321, 3501, 2437, 27566, -4321, - 3307, -4321, 3307, 1734, 3311, 1904, -4321, -4321, -4321, 3299, - 2340, 1920, -4321, 19846, 3766, 2849, -4321, 41608, 41608, 41608, - -4321, 2544, -4321, 30773, 12575, -4321, -4321, -4321, -4321, -4321, - 44152, -4321, -4321, -180, 1182, -4321, 1955, -4321, -4321, -4321, - 3709, 3431, 3431, 707, 3710, 676, -4321, 2666, -4321, 2437, - 1027, 12575, -4321, 3588, -4321, 54964, -4321, -4321, -4321, -4321, - 1369, -4321, -4321, 3318, 3321, 149, 3545, -4321, -4321, -4321, - -4321, 9931, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, 2672, -4321, -4321, -4321, -4321, -4321, 403, - -4321, 3342, -4321, 3322, 3346, -4321, 672, 3352, -4321, -4321, - 41608, 3535, -4321, 1087, 3347, 58144, -4321, 3884, -4321, -4321, - -4321, -4321, -4321, 26282, -4321, -4321, 26282, 20490, -4321, -4321, - 3606, -4321, 3584, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, 2522, -4321, -4321, -4321, - 256, -4321, -4321, 28208, 1961, -4321, 134, -4321, 1961, 1510, - 1510, 3771, 55600, 28208, 98, 1409, 3362, 1761, 3362, 56236, - 98, -151, -151, 2544, 672, 3362, -4321, -4321, 3745, 1755, - 3747, 1761, 1761, -4321, 49240, 58144, -4321, 672, 152, 3362, - 56872, 1409, 1409, 1761, 98, 27566, 1946, 2308, -4321, -151, - 98, -4321, -4321, -4321, -4321, 26282, 98, 98, 2699, 2708, - 3186, 3204, -4321, -4321, -4321, 3362, 2308, 56236, -4321, -4321, - 6219, -4321, -4321, -4321, 21132, 58144, 355, 227, -4321, 3349, - 39700, 3355, 64, 1111, 3440, 276, -4321, 168, -4321, -4321, - -4321, 3800, 3360, 1281, -4321, 3357, -4321, 56236, -4321, 3363, - -4321, 3364, -4321, 60052, 1027, 3362, 3362, 3362, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, 58144, 3076, 1129, -4321, - 34609, 2680, 3588, -4321, -4321, 3415, -4321, 1027, 12575, 962, - -4321, -4321, -4321, -4321, 1107, -4321, -4321, -4321, 3365, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, 3343, -4321, -4321, 2879, - -4321, -4321, -4321, 3367, 3415, 3415, -4321, -4321, 12575, -4321, - 3978, 3541, 12575, 12575, -4321, 12575, -4321, 235, 3375, 3399, - -4321, -4321, -4321, -4321, 12575, -4321, -4321, 3415, -4321, 12575, - -4321, -4321, 12575, -4321, 12575, 12575, -4321, 2040, -4321, 2093, - -4321, 2104, -4321, -4321, -4321, 2771, 3376, 3756, -4321, -4321, - -4321, 2771, 3567, -4321, -4321, 2771, 3362, 3351, 2663, -4321, - -4321, -4321, 2751, -127, 58144, -4321, -4321, 1976, -4321, -4321, - 12575, -4321, 49876, -4321, -4321, 1409, 3855, 3753, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, 3829, -4321, 3479, -4321, 172, -4321, - -4321, -4321, 643, 643, 643, 16541, 2506, 3891, -4321, -4321, - -4321, 3714, 3776, -4321, 104, 3386, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, 58144, 3390, 1572, -4321, 2030, -4321, - -4321, 3392, -4321, -4321, -4321, 2304, 3393, -4321, 672, 16541, - 3137, 3568, -4321, -4321, 1734, 27566, 35245, -4321, -4321, 58144, - -4321, 41608, 2894, 2894, 2894, 44788, -4321, -4321, 351, -4321, - 1535, 2517, -4321, 766, -4321, 707, 3797, 3798, -4321, 707, - -4321, -4321, -4321, 2304, 1282, 351, 12575, 2672, -4321, -4321, - 36517, -4321, -4321, -4321, -4321, -4321, -4321, 31414, 52420, -4321, - 2672, -4321, -151, 2789, 27566, 2680, 16541, -4321, -4321, 58144, - -4321, -4321, -4321, -4321, 3549, -4321, 1185, 3685, 3428, -4321, - 3409, 3411, -4321, 26282, 3422, 3423, 3425, -4321, -4321, -4321, - 342, -4321, 4318, -4321, -4321, -4321, -4321, -4321, 98, 3426, - 3818, 3822, 1510, -4321, 1961, 28208, -4321, 1961, 1961, 64, - -4321, -4321, -4321, 120, 56236, -4321, -4321, 28208, -4321, -4321, - -4321, 3429, -4321, -4321, 2771, -4321, -4321, 44788, -151, -4321, - 1761, 58144, -4321, 28208, 28208, -4321, 3454, -151, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, 28208, 56236, 3430, - -4321, 351, -4321, -4321, -4321, -4321, -4321, 1987, -4321, 56236, - -4321, -4321, 56236, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - 3435, 2179, 1826, -4321, 3432, -4321, 58144, -4321, -4321, 26282, - -4321, -4321, -4321, 5253, 58144, -4321, -4321, -4321, -4321, 58144, - 4073, -4321, 3682, 12575, 12575, 3722, 58144, 3723, -4321, 4012, - -4321, -4321, 3862, 3905, 58144, 5253, 3906, 3907, -4321, 3449, - -4321, 54328, 3538, 2063, -4321, -4321, 2068, -4321, -4321, 2076, - -4321, -4321, -4321, -4321, -4321, 3062, -4321, 3830, -225, 1027, - 3451, 3452, 3459, 3463, 275, 2080, 3742, -4321, -4321, -4321, - 3244, -4321, 3249, -4321, -4321, -4321, 4051, -4321, -4321, 3244, - 3863, -4321, -4321, -4321, 3465, -4321, 3468, 3481, 2139, -4321, - 179, 3482, 2143, 1361, 2090, 3775, 3856, -4321, 3700, -4321, - 2180, 1328, 2184, 2205, 2230, 2240, -4321, -4321, -4321, -4321, - -4321, 3485, -4321, -4321, 1014, -4321, 3473, 3603, -4321, -4321, - -4321, -4321, 2100, -4321, -4321, 2122, -4321, -4321, 4110, 3746, - -4321, -4321, -4321, -151, 229, 3504, 3504, 3504, 1788, 1027, - 2141, -4321, 64504, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - 3886, 58144, -4321, -4321, 3488, 3521, 58144, -4321, 3558, -4321, - 2663, 27566, 16541, 3490, 3493, -4321, 61, -4321, -4321, 3491, - -4321, -4321, 2894, -4321, 4071, -4321, -4321, -4321, 2905, 3058, - 3544, 707, 707, 3337, 3546, 12575, 3497, -4321, 67, 2663, - -4321, -4321, 12575, -4321, -4321, 1027, 3728, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, 3588, -4321, 3500, 3505, -4321, -4321, - -151, 1010, -4321, -4321, 244, 3679, 49240, 3508, 58144, 58144, - 3503, -4321, -4321, 21132, -4321, 4146, -4321, -4321, 12575, 1961, - -4321, -4321, 28208, 3562, 771, 28208, 28208, 3989, 4040, 4042, - -4321, 28208, 3296, 58144, -4321, 3253, -4321, 28208, 3429, -4321, - 185, 3616, -4321, 355, -4321, 27566, -4321, -4321, -4321, 58144, - -4321, 26282, -4321, -4321, 3520, -4321, 3244, 3244, 3244, -4321, - -4321, 3244, -4321, 3249, 3767, 3527, 3249, 3249, -4321, -4321, - -4321, -4321, -4321, 275, 490, -4321, -4321, 275, -4321, -4321, - -4321, 158, 1357, 3249, -4321, -4321, -4321, -4321, -4321, 3528, - -4321, 3244, 3244, 3244, -4321, -4321, 275, 3244, -4321, 3244, - -4321, 3249, 222, 175, 3244, 3244, 3244, 3365, 3523, -4321, - 2147, -4321, -4321, 1027, 3415, 4099, -4321, -4321, 3686, -151, - 4038, 58144, 173, -4321, -4321, 3253, 4059, 2912, -4321, -4321, - -4321, 64504, -4321, 3362, -4321, 3362, -4321, 3362, 45424, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, 293, -4321, -4321, 48604, - 4155, -4321, 3824, 3534, -4321, -4321, -4321, -4321, -4321, 275, - -4321, -4321, -4321, -4321, 12575, -4321, -4321, -4321, 12575, -4321, - -4321, 3858, 4016, -4321, -4321, -4321, -4321, -4321, -4321, 3547, - -4321, 3362, 3588, -4321, -4321, 1409, 4062, -4321, -4321, -4321, - 3643, 3644, -4321, -4321, 3645, -4321, -4321, 159, 2152, -4321, - -4321, -4321, -4321, 16541, 63868, -4321, 3949, 3659, -4321, -4321, - -4321, 3560, 3607, -4321, -4321, 2751, -4321, -4321, -4321, -4321, - 1045, 3936, -127, -4321, 3610, -4321, -4321, -4321, 3613, 1027, - 58144, -4321, 69, 2751, 351, 58144, 3973, 3830, -4321, 58144, - 5253, -4321, -4321, -4321, -4321, 3569, 3566, -4321, 58144, -4321, - -4321, -4321, 3849, 1111, 3845, 58144, 2176, 351, 3573, 2188, - -4321, 61, 5677, -4321, -4321, 751, -83, 2253, 28208, 3562, - 1148, 967, -4321, 967, -4321, -4321, -4321, -4321, 3668, 355, - -4321, -4321, -4321, -4321, -4321, 26282, -4321, 98, -4321, -4321, - 3429, 74, 3574, 58144, 3917, -4321, -4321, -4321, -4321, -132, - -4321, 179, -132, -132, -4321, 2481, -4321, 3617, 275, -4321, - -4321, 3620, -4321, -4321, -4321, -132, 179, 275, -4321, -4321, - -4321, -4321, -132, 3358, 3707, -4321, 275, -4321, -4321, 4155, - -4321, 275, 4155, -132, -132, 58144, -4321, 58144, -4321, 758, - -4321, -4321, -4321, -4321, -4321, 2190, -4321, -4321, -4321, -4321, - 39064, -4321, 12575, -4321, -4321, -4321, -4321, -4321, -119, 60688, - -4321, -4321, -4321, 4065, 3770, 3781, -4321, -4321, -4321, 3591, - -4321, 3593, 351, 2262, -4321, -4321, -4321, 3592, 2672, -4321, - 4189, -4321, -4321, -4321, -4321, 378, 3870, 3362, 3362, 3362, - 1654, -53, 2152, -4321, -4321, 3654, 26282, 17863, 3711, 58144, - 1610, 3319, -4321, 4210, 4211, 4102, 4214, 1045, -4321, 655, - -4321, -4321, 12575, 3609, 12575, 3612, 2194, -4321, -4321, 1510, - 1510, -4321, 69, -4321, -4321, -4321, 1028, -4321, -4321, 3799, - -4321, -4321, -4321, 1394, -4321, -4321, 3722, 3614, 2208, 171, - 58144, -4321, 3896, 1411, -4321, 3606, 3568, -4321, 2771, 3558, - -4321, -4321, -4321, -4321, 967, -4321, 3618, -4321, 3619, 3621, - 2949, 2950, 2956, 1654, 1654, -4321, -4321, -4321, -4321, -4321, - 4017, -4321, -4321, 2254, -4321, 839, 3893, -4321, -4321, -4321, - -4321, -132, -4321, 2270, -4321, -4321, -4321, -4321, -4321, -4321, - 2273, -4321, -4321, -4321, 49240, -151, 2826, 4258, -4321, 3674, - -4321, 4148, 4018, -4321, 4263, -4321, 2444, -4321, 4020, 3915, - 672, 3641, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, 665, 3660, 3757, -4321, 64504, -4321, 58144, 57508, - -4321, -4321, 33337, -4321, -4321, -4321, 4089, -4321, 1027, -4321, - -4321, 4115, 2304, -4321, -4321, 12575, -4321, -4321, -4321, 3728, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, 1489, -4321, - -4321, 27566, 2891, -4321, 2771, -4321, 2282, -4321, -4321, -4321, - 3729, 672, 672, 4156, 4157, 672, 672, 672, 672, 3646, - 3319, -4321, 4132, 179, 179, 4251, 179, -4321, 4254, 4255, - 655, -4321, 1027, 58144, 1027, 58144, -4321, 4108, 4108, -4321, - 3650, -4321, -4321, -4321, -4321, -4321, 276, -4321, 2522, 1223, - -151, 672, 3916, 1025, 171, -4321, -4321, 672, 351, 3655, - 1025, 1411, -4321, -4321, 342, 3662, 2340, -4321, 2287, 3664, - 3665, -4321, 58144, 3666, 58144, 58144, -4321, -4321, -4321, 3667, - -4321, 58144, -4321, -4321, -4321, 109, -4321, -4321, 275, 179, - 275, -4321, -4321, 3669, -4321, -4321, -4321, 3950, 3701, -4321, - 3670, -4321, -4321, -4321, 40336, 3946, -4321, 3672, 1438, -4321, - 12575, 4162, -4321, -4321, -4321, 2325, -4321, -4321, 39064, -4321, - -4321, -4321, 2663, 351, 1028, -4321, -4321, 3673, -4321, 672, - -4321, 3677, -4321, -4321, 58144, 3671, -4321, -151, -151, 672, - 672, 3448, 3448, 2771, 49240, 3788, -4321, -4321, 672, -4321, - -4321, 179, -4321, 179, 179, -4321, 2338, 2396, 1044, -4321, - -4321, 3683, 5253, 3930, 26282, 4012, 2403, 967, 967, 1025, - 1223, -4321, -4321, -4321, -4321, 3362, 1186, -4321, 4053, 4326, - -4321, 40972, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - 58144, 58144, 3687, 2406, 58144, 2422, 2424, 3558, -4321, 920, - 920, -4321, -4321, -4321, 2375, -4321, 3669, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, 61, 4276, 3961, 4283, 1027, 12575, - -4321, -4321, 57508, -4321, -4321, -4321, 27566, 16541, 2544, -4321, - 3711, -4321, 3693, -4321, -4321, -47, -4321, -4321, -151, -151, - -4321, -4321, -4321, -4321, -4321, 2434, -4321, 49240, -4321, -4321, - -4321, -4321, -4321, 4301, -4321, 4303, 3697, 3698, 12575, 3699, - 3702, -4321, -4321, -4321, -4321, 4215, 64504, 4161, 4212, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, 61, 2452, 2462, 58144, 1223, 2471, 171, 1411, - 2485, -4321, 4357, -4321, 177, 3988, 3991, -4321, 3712, -4321, - 3713, -4321, 3985, -4321, 3990, 1027, -4321, -4321, -4321, -4321, - -4321, -4321, 2497, -4321, 17202, -4321, -4321, -4321, -4321, -4321, - 49240, -4321, 3788, -4321, -4321, -4321, 54328, 54328, 1027, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, 3933, 1223, 2507, - -4321, 1223, -4321, -4321, -4321, -4321, -4321, -4321, 3773, 4239, - -4321, -61, -4321, -4321, 3902, -4321, 3693, -4321, 3720, -4321, - 3341, 3319, -4321, -4321, 3724, 2510, -4321, -4321, 3930, -4321, - -4321, -4321, -4321, 1223, -4321, 920, 920, -4321, -4321, 167, - 4151, 4071, -4321, 17202, 3731, -4321, -4321, -4321, 64504, 4224, - -4321, -4321, -4321, -151, 4122, -4321, 167, -4321, 4340, 3936, - -4321, -4321, -4321, 3914, -4321, -4321, -4321, 179, 4158, -4321, - -4321, 4021, 3736, 64504, 53, 22416, 3900, -4321, -4321, -4321, - -4321, -4321, 49240, 2514, -4321, -4321, 27566, -4321, -4321, -4321, - 25638, 3737, -4321, 672, -4321, 27566, -4321, -4321, 16541, -4321, - -4321 + 6410, 2635, 940, 1761, 982, 942, 58671, -4035, 133, -108, + -4035, -151, 19, -4035, -4035, -4035, -4035, -4035, 3251, -4035, + 58671, 117, 1228, -4035, 26809, -4035, -4035, -4035, -16, -4035, + 148, -108, -4035, 117, 684, -4035, 58671, -4035, 929, 1598, + 117, -4035, -4035, -4035, 51675, -4035, -151, 58671, -4035, 954, + -4035, -4035, 51675, 206, 259, 944, -12, -4035, -4035, 58671, + -4035, 2241, -4035, 862, 1642, 1514, -4035, -4035, 1244, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, 3126, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, 27451, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, 1035, 58671, 1053, 58671, 1500, 58671, + 49767, 58671, -4035, 1593, -4035, -4035, 1586, 1138, -4035, -4035, + -108, 810, -4035, -4035, 1778, -151, -4035, 49767, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, 1171, -4035, -4035, 1237, 1306, -4035, -4035, + -4035, -116, -4035, 1866, 1691, 1456, 58671, 1342, 13102, 1697, + 1697, 1697, 1729, 1790, 1697, 1697, 1697, 58671, -4035, 1697, + 1697, 1697, -108, -4035, -4035, -4035, 1819, 38319, 58671, 1635, + 649, -67, 49767, -4035, 1412, 58671, 1306, 137, -4035, 1771, + -4035, -4035, -4035, 65031, -108, -4035, 2029, 1882, 258, 58671, + -4035, -4035, -4035, 65031, 990, 1298, 1501, -4035, -4035, 1643, + -4035, 38955, 207, -4035, -4035, -4035, 130, 1956, -4035, 29377, + 5183, 1643, 1634, 1306, 638, 1681, 1306, -4035, -4035, 58671, + 1306, -108, 1852, -4035, 13102, -4035, 232, 232, 232, -4035, + 232, -4035, 232, 862, 1507, 1715, -4035, -4035, 1553, 58671, + 1995, -4035, 1995, -4035, -4035, 1995, 362, 1748, 2004, 2012, + 2014, 1719, 1807, 1138, 2066, -4035, -4035, -4035, 1616, 772, + -4035, 1711, 42135, -4035, 58671, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, 1881, -4035, 1737, 125, 1796, 2151, -4035, + 49767, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + 1670, 26809, 1674, 58671, -4035, 2178, 13102, 1237, -4035, 1772, + -4035, -4035, 26809, -4035, -4035, 26809, 256, 1207, 58671, -4035, + -4035, 2339, -4035, -4035, -4035, 52311, 1342, 1713, 1727, 1730, + 18390, -4035, 1733, 1745, 1749, 13102, 1784, 1805, 1810, 1826, + 1828, 1830, 1884, 1886, 1897, 1907, 1916, 1926, 1929, 1937, + 1937, 1937, 1944, 1947, 1967, 1984, -170, 1987, -4035, 2001, + 2006, 2019, -4035, -4035, 2021, 2024, 2026, 2033, -4035, -4035, + 2057, 2070, 2074, 13763, 2077, 2081, 2094, -4035, 23587, 2097, + 2099, 2102, 2107, 2128, 2138, 2141, 2149, 2153, -4035, -4035, + 13102, 1944, -4035, -4035, 2169, -4035, 2173, 2175, 2177, 2180, + 2183, 2185, 2188, 2196, 2198, 2205, 2207, 2210, 2212, 2218, + 2220, 2232, 2247, 1944, -4035, -167, 2256, 2259, 1165, 2267, + -4035, 2285, -4035, 251, 2295, 1937, 1944, 1944, 2300, 2316, + 2318, 2327, 2334, 2336, 18390, 18390, 18390, 13102, -4035, 58671, + -4035, 58671, 2230, 2824, -4035, 2702, 18390, 229, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, 1723, 1880, -4035, -4035, -4035, + -4035, -4035, -4035, 2340, 1782, 2234, 58671, 58671, 58671, 2333, + 58671, 58671, 58671, -4035, 49767, 2025, 58671, -4035, -4035, 1697, + 2040, 4108, 32582, 2152, 2197, 2155, 1937, -4035, -4035, 671, + 708, 719, 2303, -4035, -4035, 1969, 760, 2326, -4035, 815, + 188, -4035, 106, 822, 911, -4035, -4035, -4035, -4035, -4035, + -4035, 2132, 2352, 2082, -4035, -4035, 161, -4035, -4035, 58671, + -4035, 2628, 13102, -4035, -4035, -4035, 2576, 2432, -4035, -4035, + -4035, 1001, 2952, 250, 26809, 1761, 58671, 151, 66303, 66303, + 58671, -4035, 61851, 2346, -4035, -4035, 7682, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, 2351, -4035, + -4035, 2356, 13102, 1404, -4035, 1196, -4035, -4035, 2749, -4035, + -4035, 46587, 26809, 1469, 65667, -4035, -4035, -4035, 24231, -4035, + -4035, 2992, -4035, 2386, -4035, -4035, 1880, 3985, -4035, 2663, + 2152, 2671, -4035, 2848, -4035, 2678, 2585, 1207, 2471, -4035, + 3019, 2792, -4035, 2874, 1703, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, 2427, 1956, -4035, -4035, 52947, + 784, 2590, -143, 1155, 1384, 37680, 789, 49767, 1462, 76, + 30018, 42771, 2420, -4035, -4035, -4035, 868, 2591, -4035, 2917, + -4035, -3, -4035, 2438, 2743, -3, 47223, 2792, 209, -4035, + 375, -4035, 2899, -4035, -4035, -4035, -4035, 2562, 2546, 2593, + -4035, 412, 1679, -4035, 1306, -4035, 888, -4035, 2566, 2792, + -3, 209, -4035, 2817, 2946, 817, 2912, -4035, 1088, -4035, + -4035, -4035, 654, 3025, -4035, 2453, -4035, -4035, -4035, 26809, + -4035, -4035, -4035, 2576, -4035, 326, -4035, -4035, -4035, -4035, + 2460, -4035, -4035, 2742, 2569, -4035, -4035, 74, 2464, 25, + -4035, 2960, -4035, 1761, 58671, -4035, -4035, -4035, 731, 879, + 1586, 1995, -4035, 1995, 1995, 1995, 1995, 810, 43407, -4035, + -4035, -4035, 2993, 3021, 1937, 2473, -4035, -4035, -4035, -4035, + -4035, 3138, -4035, -4035, 2762, 3029, 3029, 3029, 3147, -4035, + -4035, -4035, 26809, -4035, -4035, -4035, 125, -4035, 2670, 2536, + -4035, 58671, 1796, -4035, 26809, -4035, 2501, 2914, 2511, -4035, + -4035, 2770, 13102, -4035, -4035, 13102, 65031, 3012, 2230, -4035, + -4035, 285, -4035, -4035, 26809, 295, -4035, 3114, 2733, -4035, + -4035, -4035, 3138, 3029, 26809, -4035, 2522, -4035, 2519, -4035, + 13102, 13102, 363, 3116, 3185, 3185, 3185, 2230, 2573, 13102, + 13102, 13102, 13102, 13102, 13102, 13102, 13102, 13102, 13102, 13102, + 13102, 1290, 2545, -4035, -4035, -4035, 1163, -4035, 2547, 13102, + 13102, -4035, 13102, 13102, 28093, -4035, 3763, 13102, 13102, 1021, + 3062, 13102, 13102, 13102, 13102, 3070, 13102, 13102, 13102, 28093, + 3206, 2555, -4035, 2552, 1631, 13102, 13102, 1766, 13102, 13102, + 13102, 13102, 13102, -4035, -4035, 13102, 13102, 13102, 13102, 18390, + 13102, 13102, 13102, 13102, 13102, 13102, 2561, 13102, 3185, 3185, + 13102, 13102, 1768, -4035, -4035, 13102, 2466, 2466, -4035, 13102, + 9797, 13102, -4035, -4035, 2567, -4035, -4035, -4035, 28093, 3185, + 3185, 13102, 13102, 13102, 3116, 3116, 3116, 221, 2571, 634, + 13102, 30659, 2559, -4035, -4035, -4035, -4035, 13102, 13102, 13102, + 18390, -4035, 1257, -4035, -4035, -4035, -4035, -4035, 14424, 18390, + 18390, 2570, 18390, 18390, 18390, 18390, 18390, 2953, 18390, 18390, + 19051, 19712, 18390, 18390, 18390, 18390, 247, 3116, 49767, 18390, + 13102, -4035, -4035, 58671, -4035, -4035, -4035, 2574, -4035, 2854, + 2025, -4035, 47859, -4035, 11, 3069, -4035, 46587, 26809, -4035, + 2572, -4035, 2956, -4035, 2958, 2959, 2962, -4035, -4035, -4035, + -4035, 3200, 2964, -4035, 1306, 2971, -4035, -4035, 2606, -4035, + -4035, -4035, 20373, 49767, -4035, 2611, -4035, 2626, -4035, -4035, + -4035, -4035, -4035, -4035, 2717, -4035, -4035, -4035, -4035, 2617, + -4035, 46587, 2617, -4035, -4035, 2617, -4035, -4035, 2617, 42135, + 90, 3670, -4035, -4035, 58671, -4035, 59307, -4035, 3040, 1077, + -4035, 24231, 1306, -4035, 3047, 15085, -4035, -4035, -4035, 2995, + 212, 2621, -4035, -4035, -4035, -4035, 3081, 58671, -4035, -4035, + -4035, 13102, 2991, 2623, -4035, -4035, -4035, 253, 26809, -4035, + 2230, -4035, 136, 136, 2888, 1193, 49767, -4035, -4035, 201, + 2632, -4035, 2719, 2633, -4035, 2720, -4035, -4035, 26809, 2627, + -4035, 26809, -4035, -4035, -4035, 2900, 2728, -4035, 1306, 1298, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, 2646, 2662, 3110, 2650, 46587, 42135, 821, + -4035, 58671, -4035, 1854, -4035, -4035, 864, -4035, -4035, 1825, + 44043, -4035, 421, 2681, 2708, 3059, -4035, -4035, 2655, -4035, + 13102, -4035, 2653, 2656, -4035, 868, -4035, 47859, 58671, -4035, + -4035, -4035, -4035, -4035, 3246, 13102, -4035, 46587, -4035, -7, + -4035, 835, 101, 868, -4035, -4035, -4035, -4035, -4035, 58671, + 53583, 2661, 10458, 2784, 3078, -4035, -4035, -4035, 2682, 1995, + 58671, 58671, 58671, 26809, 58671, 26809, -4035, 1008, 1008, -4035, + -4035, -4035, -4035, -3, 58671, 58671, -3, 42135, -4035, 209, + 735, 58671, -3, -4035, 3080, 2779, -4035, -4035, -4035, 3149, + -4035, -4035, 3142, 2684, -4035, 3171, -4035, -4035, 2809, 209, + -4035, -4035, 26809, -4035, -4035, 209, -4035, 209, 209, 13102, + -3, -3, -3, -4035, -35, -4035, -4035, -4035, 2838, 638, + -4035, -4035, -4035, 999, -4035, -4035, 232, 2942, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, 104, + -4035, -4035, -4035, 3179, -4035, 47859, 42135, 3166, 1995, 1995, + -4035, -4035, 3202, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + 1995, -4035, -4035, -4035, -4035, -4035, -4035, 1796, 49767, 58671, + 58671, 58671, 26809, -4035, -4035, -4035, -4035, -4035, 81, -4035, + -4035, -4035, 379, 3230, -4035, 49767, 3384, -44, 1126, 3384, + 2718, 1306, 214, -4035, 214, -4035, -4035, -4035, 261, 1995, + -4035, -4035, 2715, -4035, 2972, -4035, -4035, 49767, 54219, 26809, + -4035, -4035, -4035, 1407, 2721, 2722, 2230, 2230, 62487, 3324, + 2757, 4600, -4035, -4035, 26809, -4035, 333, -4035, -4035, -4035, + 2786, -4035, -4035, -4035, -4035, 2359, -4035, -4035, 1941, 2781, + 2734, -4035, 2900, -4035, 1477, 58671, 3194, 35136, -4035, 245, + 884, -4035, 3185, 2738, -4035, 2739, 2740, 2741, 13102, 248, + 1855, 1003, 1261, 1470, 1134, 266, 1234, 271, -4035, 1536, + 281, 343, 386, 219, -4035, 2744, 2748, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, 2752, -4035, -4035, -4035, 498, + 619, 1263, 1284, 2754, 2755, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, 3213, -4035, 624, 1560, -4035, + -4035, -4035, -4035, 2758, -4035, -4035, 1296, 743, 777, 241, + 2768, 1584, 795, 1647, 1659, 2763, 28093, 58671, 3185, 2769, + 1304, 1337, 3185, 2772, 800, 1369, 1661, 1675, 1683, 1373, + 1415, 877, 1696, 3589, 1430, 979, 1032, 1452, 1037, 1041, + -4035, 1465, 2773, 2776, 1072, 167, 3185, 2782, 275, 2778, + 2780, 1480, 11119, 11780, 12441, 174, 1116, -4035, 2783, -4035, + 2552, 2787, 2788, 305, 213, 1494, -4035, 13102, -4035, -4035, + 2793, -4035, 2831, 160, 101, -4035, 2934, 58671, 2341, 235, + -4035, -4035, -4035, -4035, -4035, -4035, 1005, -4035, 2803, -4035, + 2808, 2286, 2802, 13102, 205, 2802, 3314, 2408, 2408, 18390, + 2479, 2709, 13763, 963, 13763, 963, 2802, 2802, 2802, -4035, + 18390, 2819, 18390, 18390, -4035, 3116, 2230, 2821, -207, 58671, + 26809, 11, 2807, -4035, -4035, -4035, -4035, -4035, 868, -4035, + 2818, 139, 26809, 49767, 2823, -4035, 3305, -4035, -4035, -4035, + -4035, 1306, -4035, -4035, 4346, -4035, 26809, 2915, 2918, 2919, + -4035, 33223, -4035, -4035, -4035, -4035, 33223, 826, -4035, 58671, + -4035, 2909, -4035, -4035, -4035, 3253, -4035, 3255, 1114, -4035, + 24873, 24873, -4035, 24873, -4035, -4035, -4035, -4035, -4035, 188, + -4035, -4035, -4035, -4035, 388, 440, 3136, 2681, -4035, -4035, + -4035, -4035, -4035, -4035, 34500, 2230, -4035, 26809, -4035, 3247, + 709, 26809, -4035, -4035, 3243, 2230, -4035, -4035, -4035, -4035, + -4035, -4035, 2840, -4035, 2833, -4035, -4035, -4035, -4035, -4035, + 2887, 2957, -4035, 3492, -4035, 13102, 1306, -4035, 46587, 46587, + 26809, 26809, 26809, 523, 13102, -4035, 2399, 2849, -4035, -4035, + 2945, -4035, 3495, -4035, 3985, 20373, 47859, 3297, 3311, -4035, + 2857, 24873, 24873, 24873, -4035, -4035, -4035, -4035, 2954, 2954, + -4035, 31300, -4035, 13102, -4035, -4035, -4035, 3341, -4035, 3051, + -48, -4035, -4035, -4035, -4035, -4035, 58671, -4035, 3527, -4035, + -4035, 2870, -4035, -4035, 26809, -4035, -4035, 3317, -4035, 3041, + -4035, 2230, -4035, 2871, 52947, 3340, 10458, 3342, -4035, 48495, + -4035, 2230, 868, 2884, 2885, -4035, -4035, 3268, 765, -4035, + 2891, 2892, -4035, 2890, 2896, 2898, 52947, 13102, -4035, 835, + -4035, -4035, -4035, -4035, -4035, 18390, 2001, -4035, 2230, -4035, + -4035, 1306, 3363, 1306, 13102, 2907, 58671, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -3, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, 3148, 2792, 1679, 3078, -4035, -3, 209, 26809, -3, + -3, 2230, -4035, -4035, -4035, -4035, -4035, -4035, 2920, -4035, + 2975, -4035, -4035, 3086, 65031, 2923, -4035, 3386, 2792, -4035, + -4035, -4035, 91, 1537, 2926, 1995, -4035, 58671, 58671, 1995, + 1995, 58671, -4035, -4035, 1143, 3209, 3210, -4035, -4035, 868, + 868, 3235, -4035, 1306, 3064, 3065, 3067, 3072, 3074, 3111, + -4035, -4035, 1306, 1306, -4035, -4035, 868, -4035, 1173, -4035, + -4035, -4035, -4035, 1857, -4035, 868, 868, -4035, 1073, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, 1179, -4035, 5099, -4035, + -4035, 26809, 3224, 26809, 3404, -4035, 3474, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, 2949, -4035, -4035, + 13102, 3044, -4035, -4035, 2757, -4035, 2968, 2970, 2974, 2980, + 2982, 2983, 2985, 2986, 2989, 3000, 3001, 3003, 3004, 3006, + 3008, 3009, 3014, 3016, 3017, 3024, 3030, 3031, 3033, 2950, + -4035, -4035, -4035, 3013, -4035, -4035, -4035, 868, 868, 868, + 868, -4035, 2785, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, 3328, 1798, 58671, 3028, -4035, 35136, -4035, -4035, 999, + -4035, 2955, 15746, -4035, 3022, -4035, 13102, -4035, -4035, -4035, + 1868, 13102, 13102, 3502, 2716, -4035, 49131, -4035, -4035, -4035, + 13102, -4035, 13102, -4035, 13102, 13102, 13102, 13102, 49131, 2716, + 13102, -4035, 3023, -4035, 3416, 3429, -4035, -4035, -4035, -4035, + 13102, 13102, -4035, 13102, 13102, -4035, 13102, 13102, 13102, 13102, + -4035, 13102, -4035, -4035, 18390, -4035, 3018, 3032, -4035, -4035, + -4035, 3034, -4035, 13102, -4035, -4035, -4035, -4035, -4035, -4035, + 13102, -4035, 13102, -4035, 13102, 13102, -4035, 13102, 13102, -4035, + -4035, -4035, 16407, 13102, 13102, 3035, -4035, -4035, 13102, 13102, + 13102, -4035, 13102, 2022, 13102, 2100, 13102, 2146, 13102, -4035, + 13102, -4035, -4035, -4035, -4035, 13102, 398, 2887, 2945, 3043, + -4035, 1717, 2874, -4035, 1292, 2793, 3049, 3205, 1854, -4035, + -4035, 49767, 13102, -4035, -4035, -4035, -4035, -4035, -4035, 18390, + 319, 3055, 18390, -4035, 3314, 3070, 3070, 2310, 13102, 205, + 3314, 13102, 3056, 3027, -4035, 13102, 58671, -4035, -4035, -4035, + 47859, -4035, 49767, 46587, -4035, -4035, -4035, 139, -4035, 2572, + 3042, -4035, -4035, -4035, 2840, 357, 3057, 3046, -4035, -4035, + -4035, -4035, -4035, -4035, 1722, -4035, 42135, 317, 3702, 42135, + -4035, 3052, -4035, 3053, 3140, 3143, 3144, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, 2792, 65031, + 2399, -4035, -4035, 3066, -4035, -4035, 2770, 2954, 3085, 3443, + 3639, -4035, -4035, -4035, -4035, 65031, 65031, 13102, 58671, 18390, + -4035, 3679, 3076, 3077, 3090, 3079, 2230, -4035, 3155, -4035, + -4035, -4035, 39, -4035, -4035, -4035, -4035, -4035, 61, 2191, + -4035, -4035, 3082, 3082, 22301, -4035, -4035, -4035, 58671, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, 3097, -4035, + -4035, 3360, 46587, 42135, 3544, 3545, 3546, 701, -4035, -4035, + -4035, 49767, 3089, -4035, -4035, -4035, 2230, 3091, 400, 44679, + 3575, 44679, 44679, -4035, 831, 3493, 3494, -4035, 3368, 1961, + 3368, -4035, -4035, 831, 999, 2900, -4035, 13102, 3706, 3539, + 3419, -4035, 50403, -4035, 35772, -4035, 7155, -4035, 46587, -4035, + -4035, -4035, -4035, -4035, 3198, 3203, -14, -4035, -4035, 3506, + 3333, -4035, -4035, -4035, 868, 2230, -4035, 2661, 3113, 31941, + -4035, 1317, -4035, -4035, 2230, 366, -4035, -4035, -4035, 3398, + -4035, -4035, 3363, -4035, 2681, 209, -4035, -4035, -35, 2463, + -4035, 28093, 63123, 2945, 3440, -4035, -4035, -4035, 116, 3770, + -4035, 58671, 3121, 660, -4035, -4035, 58671, 3583, 1007, 1007, + 3408, 26809, 26809, 4240, 48495, 45315, -4035, -4035, -4035, -4035, + 3672, -4035, 3673, 1046, -4035, -4035, 1506, 1126, -4035, 1306, + 1306, 1306, 1306, 2945, 1306, 1306, 1759, -4035, 1506, 1506, + 214, -4035, 181, -4035, -4035, -4035, -4035, 2579, 868, 3713, + 3394, 868, 868, 3713, 868, 3395, 3396, 868, 868, 3222, + 3658, 868, 3548, 3250, 3436, 3554, 868, 3417, -4035, 3260, + 3676, 868, 868, 868, 868, 868, 3713, 3420, 3773, 868, + 868, -4035, 868, 3423, 3425, 175, 3430, 3432, 868, 868, + 868, 868, 1147, 58671, 868, 868, 3433, 868, -4035, -4035, + 6367, -4035, -4035, -4035, -4035, -4035, -4035, 707, 25521, -4035, + -4035, -4035, -4035, 868, -4035, 525, -4035, 3376, -4035, 396, + 51039, 63759, 3167, 3178, 54855, 2230, 65031, 13102, -4035, 3181, + 3182, 3184, 2945, 1306, 1306, 1317, 1306, 2945, 1306, 1306, + 1306, 1306, 1306, 1306, 1306, 2945, 2945, 1306, 156, 1518, + 1306, 2945, 4600, -4035, 1306, 2887, 1506, 1506, 1941, -4035, + 3621, 868, -4035, 2371, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, 3177, 999, 2681, 1601, 2681, 3195, + -4035, 13763, 1509, -4035, 2230, 13102, 2230, 1949, -4035, 3189, + 3189, 3189, -4035, 3192, -4035, -4035, 3189, 3602, 3189, 3603, + 3207, 3208, 1780, 2209, -4035, 1785, 2219, 1511, 3211, 3212, + 1723, -4035, 13102, 13102, 1559, 331, 1692, -75, 1129, 1178, + 336, -4035, 1725, 3791, -4035, -4035, 1746, 1754, 1767, 1769, + 1203, 1788, 1794, 13763, 1811, 402, 382, -4035, 1835, 1205, + 1217, 1890, 13102, 1900, 13102, 1905, 13102, 1909, 1911, 1913, + 3214, 3214, 179, -4035, 3197, -4035, -4035, -4035, 3215, -4035, + -4035, -4035, -4035, 2681, 2427, 1292, -4035, 3217, 110, -4035, + -4035, 3196, 2230, 3219, -4035, -4035, 13102, -4035, 229, -4035, + -4035, 18390, 413, 3221, -4035, 2230, -4035, -4035, 3223, 1723, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, 3227, -4035, + 3427, -4035, -4035, 3846, 33223, -4035, 58671, 1547, -54, -4035, + -4035, 49767, 3478, -4035, 3216, 36408, 42135, 42135, 42135, 3228, + -4035, 59943, 3486, 26809, -4035, 3627, -4035, -4035, -4035, -4035, + 58671, 66303, 66303, 66303, 66303, 3233, 3236, -4035, -4035, -4035, + 3314, 3588, 3471, -4035, -4035, 2887, 58671, 46587, 3530, -4035, + -4035, 3439, 1956, 28093, -4035, 3237, -4035, 3237, -115, 3240, + 1801, -4035, -4035, -4035, 3229, 2471, 1813, -4035, 20373, 3699, + 2818, -4035, 42135, 42135, 42135, -4035, 2429, -4035, 31300, 13102, + -4035, -4035, -4035, -4035, -4035, 44679, -4035, -4035, -182, 110, + -4035, 1991, -4035, -4035, -4035, 3640, 3368, 3368, 831, 3641, + 855, -4035, 3542, -4035, 1956, 2230, 13102, -4035, 3516, -4035, + 55491, -4035, -4035, -4035, -4035, 1231, -4035, -4035, 3248, 3257, + 273, 3477, -4035, -4035, -4035, -4035, 10458, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, 2792, -4035, + -4035, -4035, -4035, -4035, -3, -4035, 3273, -4035, 3254, 3261, + -4035, 868, 3293, -4035, -4035, 42135, 3460, -4035, 120, 3270, + 58671, -4035, 3816, -4035, -4035, -4035, -4035, -4035, 26809, -4035, + -4035, 26809, 21017, -4035, -4035, 3536, -4035, 4030, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, 1857, -4035, -4035, -4035, 1179, -4035, -4035, 28735, 1995, + -4035, 169, -4035, 1995, 1407, 1407, 3703, 56127, 28735, 117, + 1317, 2945, 1729, 2945, 56763, 117, 1306, 1306, 2429, 868, + 2945, -4035, -4035, 3681, 1697, 3682, 1729, 1729, -4035, 49767, + 58671, -4035, 868, 1441, 2945, 57399, 1317, 1317, 1729, 117, + 28093, 2527, 2603, -4035, 1306, 117, -4035, -4035, -4035, -4035, + 26809, 117, 117, 3366, 3020, 3199, 3239, -4035, -4035, -4035, + 2945, 2603, 56763, -4035, -4035, 5477, -4035, -4035, -4035, 21659, + 58671, 329, 180, -4035, 3278, 40227, 3292, 1761, 1078, 3375, + 293, -4035, 162, -4035, -4035, -4035, 3735, 3294, 355, -4035, + 3291, -4035, 56763, -4035, 3300, -4035, 3296, -4035, 60579, 2230, + 2945, 2945, 2945, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, 58671, 1506, 1798, -4035, 35136, 2681, 3516, -4035, -4035, + 3070, -4035, 2230, 13102, 1259, -4035, -4035, -4035, -4035, 1484, + -4035, -4035, -4035, 3303, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, 2800, -4035, -4035, 2716, -4035, -4035, -4035, 3312, 3070, + 3070, -4035, -4035, 13102, -4035, 3921, 3484, 13102, 13102, -4035, + 13102, -4035, 254, 3319, 3344, -4035, -4035, -4035, -4035, 13102, + -4035, -4035, 3070, -4035, 13102, -4035, -4035, 13102, -4035, 13102, + 13102, -4035, 1921, -4035, 1938, -4035, 1963, -4035, -4035, -4035, + 2887, 3320, 3708, -4035, -4035, -4035, 2887, 3513, -4035, -4035, + 2887, 2945, 3317, 2655, -4035, -4035, -4035, 2874, 634, 58671, + -4035, -4035, 1841, -4035, -4035, 13102, -4035, 50403, -4035, -4035, + 1317, 3802, 3700, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, 3782, + -4035, 3431, -4035, 177, -4035, -4035, -4035, -87, -87, -87, + 17068, 2343, 3843, -4035, -4035, -4035, 3627, 3733, -4035, 786, + 3346, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, 58671, + 3348, 1773, -4035, 1846, -4035, -4035, 3351, -4035, -4035, -4035, + 2427, 3352, -4035, 868, 17068, 3082, 3528, -4035, -4035, -115, + 28093, 35772, -4035, -4035, 58671, -4035, 42135, 2857, 2857, 2857, + 45315, -4035, -4035, 400, -4035, 1854, 2324, -4035, 999, -4035, + 831, 3752, 3754, -4035, 831, -4035, -4035, -4035, 2427, 1489, + 400, 13102, 2792, -4035, -4035, 37044, -4035, -4035, -4035, -4035, + -4035, -4035, 31941, 52947, -4035, 2792, -4035, 1306, 1970, 28093, + 2681, 17068, -4035, -4035, 58671, -4035, -4035, -4035, -4035, 3509, + -4035, 1756, 3647, 3391, -4035, 3370, 3371, -4035, 26809, 3372, + 3373, 3374, -4035, -4035, -4035, 227, -4035, 5700, -4035, -4035, + -4035, -4035, -4035, 117, 3377, 3765, 3771, 1407, -4035, 1995, + 28735, -4035, 1995, 1995, 1761, -4035, -4035, -4035, 95, 56763, + -4035, -4035, 28735, -4035, -4035, -4035, 3379, -4035, -4035, 2887, + -4035, -4035, 45315, 1306, -4035, 1729, 58671, -4035, 28735, 28735, + -4035, 3409, 1306, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, 28735, 56763, 3380, -4035, 400, -4035, -4035, -4035, + -4035, -4035, 2029, -4035, 56763, -4035, -4035, 56763, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, 3385, 3005, 2133, -4035, 3383, + -4035, 58671, -4035, -4035, 26809, -4035, -4035, -4035, 6951, 58671, + -4035, -4035, -4035, -4035, 58671, 4024, -4035, 3631, 13102, 13102, + 3674, 58671, 3675, -4035, 3964, -4035, -4035, 3809, 3852, 58671, + 6951, 3857, 3858, -4035, 3399, -4035, 54855, 3491, 1848, -4035, + -4035, 1851, -4035, -4035, 1860, -4035, -4035, -4035, -4035, -4035, + 2955, -4035, 3783, 793, 2230, 3405, 3406, 3407, 3410, 296, + 1923, 3691, -4035, -4035, -4035, 3189, -4035, 3192, -4035, -4035, + -4035, 4003, -4035, -4035, 3189, 3818, -4035, -4035, -4035, 3413, + -4035, 3414, 3415, 1980, -4035, 232, 3418, 1982, 1219, 1932, + 3734, 3808, -4035, 3650, -4035, 2003, 1534, 2030, 2035, 2044, + 2046, -4035, -4035, -4035, -4035, -4035, 3424, -4035, -4035, 459, + -4035, 3426, 3539, -4035, -4035, -4035, -4035, 1951, -4035, -4035, + 1973, -4035, -4035, 4060, 3704, -4035, -4035, -4035, 1306, 960, + 3452, 3452, 3452, 2001, 2230, 1976, -4035, 65031, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, 3845, 58671, -4035, -4035, 3437, + 3492, 58671, -4035, 3471, -4035, 2655, 28093, 17068, 3444, 3445, + -4035, 25, -4035, -4035, 3441, -4035, -4035, 2857, -4035, 4032, + -4035, -4035, -4035, 2870, 3234, 3496, 831, 831, 3283, 3500, + 13102, 3454, -4035, 73, 2655, -4035, -4035, 13102, -4035, -4035, + 2230, 3693, -4035, -4035, -4035, -4035, -4035, -4035, -4035, 3516, + -4035, 3456, 3458, -4035, -4035, 1306, 1295, -4035, -4035, 349, + 3634, 49767, 3462, 58671, 58671, 3464, -4035, -4035, 21659, -4035, + 4100, -4035, -4035, 13102, 1995, -4035, -4035, 28735, 3514, 1158, + 28735, 28735, 3945, 3993, 3995, -4035, 28735, 2359, 58671, -4035, + 3246, -4035, 28735, 3379, -4035, 216, 3569, -4035, 329, -4035, + 28093, -4035, -4035, -4035, 58671, -4035, 26809, -4035, -4035, 3473, + -4035, 3189, 3189, 3189, -4035, -4035, 3189, -4035, 3192, 3718, + 3475, 3192, 3192, -4035, -4035, -4035, -4035, -4035, 296, 365, + -4035, -4035, 296, -4035, -4035, -4035, 157, 1274, 3192, -4035, + -4035, -4035, -4035, -4035, 3476, -4035, 3189, 3189, 3189, -4035, + -4035, 296, 3189, -4035, 3189, -4035, 3192, 279, 187, 3189, + 3189, 3189, 3303, 3472, -4035, 1992, -4035, -4035, 2230, 3070, + 4049, -4035, -4035, 3636, 1306, 3990, 58671, 170, -4035, -4035, + 3246, 4010, 2693, -4035, -4035, -4035, 65031, -4035, 2945, -4035, + 2945, -4035, 2945, 45951, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, 242, -4035, -4035, 49131, 4106, -4035, 3775, 3485, -4035, + -4035, -4035, -4035, -4035, 296, -4035, -4035, -4035, -4035, 13102, + -4035, -4035, -4035, 13102, -4035, -4035, 3811, 3968, -4035, -4035, + -4035, -4035, -4035, -4035, 3497, -4035, 2945, 3516, -4035, -4035, + 1317, 4009, -4035, -4035, -4035, 3593, 3594, -4035, -4035, 3595, + -4035, -4035, 145, 2038, -4035, -4035, -4035, -4035, 17068, 64395, + -4035, 3897, 3604, -4035, -4035, -4035, 3507, 3553, -4035, -4035, + 2874, -4035, -4035, -4035, -4035, 904, 3888, 634, -4035, 3563, + -4035, -4035, -4035, 3565, 2230, 58671, -4035, 428, 2874, 400, + 58671, 3925, 3783, -4035, 58671, 6951, -4035, -4035, -4035, -4035, + 3519, 3521, -4035, 58671, -4035, -4035, -4035, 3801, 1078, 3798, + 58671, 2009, 400, 3525, 2039, -4035, 25, 6367, -4035, -4035, + 833, -39, 2051, 28735, 3514, 1365, 1007, -4035, 1007, -4035, + -4035, -4035, -4035, 3201, 329, -4035, -4035, -4035, -4035, -4035, + 26809, -4035, 117, -4035, -4035, 3379, 61, 3532, 58671, 3868, + -4035, -4035, -4035, -4035, 1309, -4035, 232, 1309, 1309, -4035, + 2590, -4035, 3567, 296, -4035, -4035, 3572, -4035, -4035, -4035, + 1309, 232, 296, -4035, -4035, -4035, -4035, 1309, 2771, 3660, + -4035, 296, -4035, -4035, 4106, -4035, 296, 4106, 1309, 1309, + 58671, -4035, 58671, -4035, 1076, -4035, -4035, -4035, -4035, -4035, + 2041, -4035, -4035, -4035, -4035, 39591, -4035, 13102, -4035, -4035, + -4035, -4035, -4035, 701, 61215, -4035, -4035, -4035, 4016, 3719, + 3730, -4035, -4035, -4035, 3540, -4035, 3543, 400, 2084, -4035, + -4035, -4035, 3549, 2792, -4035, 4139, -4035, -4035, -4035, -4035, + 284, 3822, 2945, 2945, 2945, 1518, -65, 2038, -4035, -4035, + 3605, 26809, 18390, 3662, 58671, 843, 3335, -4035, 4160, 4161, + 4051, 4163, 904, -4035, -105, -4035, -4035, 13102, 3557, 13102, + 3558, 2067, -4035, -4035, 1407, 1407, -4035, 428, -4035, -4035, + -4035, 1825, -4035, -4035, 3751, -4035, -4035, -4035, 1545, -4035, + -4035, 3674, 3561, 2086, 173, 58671, -4035, 3849, 2048, -4035, + 3536, 3528, -4035, 2887, 3471, -4035, -4035, -4035, -4035, 1007, + -4035, 3566, -4035, 3568, 3570, 2915, 2918, 2919, 1518, 1518, + -4035, -4035, -4035, -4035, -4035, 3971, -4035, -4035, 2088, -4035, + 908, 3847, -4035, -4035, -4035, -4035, 1309, -4035, 2122, -4035, + -4035, -4035, -4035, -4035, -4035, 2130, -4035, -4035, -4035, 49767, + 1306, 2535, 4213, -4035, 3626, -4035, 4098, 3967, -4035, 4212, + -4035, 3204, -4035, 3981, 3865, 868, 3607, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, 862, 3619, 3723, + -4035, 65031, -4035, 58671, 58035, -4035, -4035, 33864, -4035, -4035, + -4035, 4057, -4035, 2230, -4035, -4035, 4082, 2427, -4035, -4035, + 13102, -4035, -4035, -4035, 3693, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, 1726, -4035, -4035, 28093, 2900, -4035, 2887, + -4035, 2134, -4035, -4035, -4035, 3694, 868, 868, 4117, 4120, + 868, 868, 868, 868, 3608, 3335, -4035, 4101, 232, 232, + 4216, 232, -4035, 4219, 4222, -105, -4035, 2230, 58671, 2230, + 58671, -4035, 4078, 4078, -4035, 3622, -4035, -4035, -4035, -4035, + -4035, 293, -4035, 1857, 307, 1306, 868, 3882, 372, 173, + -4035, -4035, 868, 400, 3623, 372, 2048, -4035, -4035, 227, + 3624, 2471, -4035, 2143, 3628, 3630, -4035, 58671, 3633, 58671, + 58671, -4035, -4035, -4035, 3637, -4035, 58671, -4035, -4035, -4035, + 302, -4035, -4035, 296, 232, 296, -4035, -4035, 3642, -4035, + -4035, -4035, 3917, 3677, -4035, 3643, -4035, -4035, -4035, 40863, + 3913, -4035, 3638, 1276, -4035, 13102, 4134, -4035, -4035, -4035, + 2156, -4035, -4035, 39591, -4035, -4035, -4035, 2655, 400, 1825, + -4035, -4035, 3645, -4035, 868, -4035, 3649, -4035, -4035, 58671, + 3644, -4035, 1306, 1306, 868, 868, 3011, 3011, 2887, 49767, + 3760, -4035, -4035, 868, -4035, -4035, 232, -4035, 232, 232, + -4035, 2193, 2202, 1461, -4035, -4035, 3651, 6951, 3891, 26809, + 3964, 2213, 1007, 1007, 372, 307, -4035, -4035, -4035, -4035, + 2945, 1092, -4035, 4025, 4299, -4035, 41499, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, 58671, 58671, 3659, 2238, 58671, + 2252, 2269, 3471, -4035, 920, 920, -4035, -4035, -4035, 1878, + -4035, 3642, -4035, -4035, -4035, -4035, -4035, -4035, -4035, 25, + 4249, 3933, 4253, 2230, 13102, -4035, -4035, 58035, -4035, -4035, + -4035, 28093, 17068, 2429, -4035, 3662, -4035, 3663, -4035, -4035, + -66, -4035, -4035, 1306, 1306, -4035, -4035, -4035, -4035, -4035, + 2273, -4035, 49767, -4035, -4035, -4035, -4035, -4035, 4272, -4035, + 4274, 3668, 3669, 13102, 3671, 3678, -4035, -4035, -4035, -4035, + 4186, 65031, 4132, 4181, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, 25, 2287, 2308, + 58671, 307, 2313, 173, 2048, 2331, -4035, 4328, -4035, 194, + 3958, 3966, -4035, 3686, -4035, 3687, -4035, 3962, -4035, 3963, + 2230, -4035, -4035, -4035, -4035, -4035, -4035, 2348, -4035, 17729, + -4035, -4035, -4035, -4035, -4035, 49767, -4035, 3760, -4035, -4035, + -4035, 54855, 54855, 2230, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, 3908, 307, 2365, -4035, 307, -4035, -4035, -4035, + -4035, -4035, -4035, 3746, 4217, -4035, -73, -4035, -4035, 3877, + -4035, 3663, -4035, 3695, -4035, 3314, 3335, -4035, -4035, 3697, + 2367, -4035, -4035, 3891, -4035, -4035, -4035, -4035, 307, -4035, + 920, 920, -4035, -4035, 143, 4123, 4032, -4035, 17729, 3701, + -4035, -4035, -4035, 65031, 4200, -4035, -4035, -4035, 1306, 4096, + -4035, 143, -4035, 4311, 3888, -4035, -4035, -4035, 3885, -4035, + -4035, -4035, 232, 4127, -4035, -4035, 3994, 3709, 65031, 84, + 22943, 3873, -4035, -4035, -4035, -4035, -4035, 49767, 2373, -4035, + -4035, 28093, -4035, -4035, -4035, 26165, 3711, -4035, 868, -4035, + 28093, -4035, -4035, 17068, -4035, -4035 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -4062,714 +4062,714 @@ static const int yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 933, 1942, 2723, 0, 0, 0, 343, 0, 0, - 1128, 2728, 590, 68, 1811, 1936, 1937, 1720, 1750, 2, - 0, 1144, 272, 176, 0, 80, 319, 1752, 0, 2003, - 0, 0, 384, 1144, 0, 495, 0, 1998, 0, 0, - 1144, 388, 1755, 1985, 249, 176, 2728, 0, 1195, 2504, - 1852, 2014, 0, 0, 0, 1835, 0, 2588, 1800, 0, - 386, 0, 2860, 1184, 0, 3, 8, 21, 0, 43, - 26, 31, 16, 20, 15, 56, 50, 28, 2725, 315, + 0, 933, 1943, 2724, 0, 0, 0, 343, 0, 0, + 1129, 2729, 590, 68, 1812, 1937, 1938, 1721, 1751, 2, + 0, 1145, 272, 176, 0, 80, 319, 1753, 0, 2004, + 0, 0, 384, 1145, 0, 495, 0, 1999, 0, 0, + 1145, 388, 1756, 1986, 249, 176, 2729, 0, 1196, 2505, + 1853, 2015, 0, 0, 0, 1836, 0, 2589, 1801, 0, + 386, 0, 2861, 1185, 0, 3, 8, 21, 0, 43, + 26, 31, 16, 20, 15, 56, 50, 28, 2726, 315, 316, 317, 318, 41, 137, 40, 11, 59, 60, 18, - 47, 12, 14, 17, 39, 46, 35, 42, 54, 1181, - 24, 25, 32, 48, 64, 22, 61, 57, 23, 1942, + 47, 12, 14, 17, 39, 46, 35, 42, 54, 1182, + 24, 25, 32, 48, 64, 22, 61, 57, 23, 1943, 13, 27, 49, 44, 36, 58, 65, 37, 55, 38, 63, 30, 51, 29, 9, 10, 19, 52, 53, 45, 66, 33, 62, 34, 0, 963, 0, 0, 0, 0, - 0, 0, 1038, 945, 2792, 2793, 2794, 0, 1146, 1145, - 0, 0, 1285, 1284, 0, 2728, 2118, 1124, 1155, 2195, - 2197, 2196, 2198, 2199, 2200, 2201, 2202, 2203, 2135, 2204, - 2205, 2206, 2208, 2207, 2209, 2210, 2211, 2136, 2137, 2212, - 2213, 2214, 2216, 2215, 2217, 2138, 2139, 2218, 2219, 2220, - 2221, 2140, 2142, 2141, 2222, 2224, 2223, 2143, 2225, 2226, - 2227, 2229, 2144, 2145, 2146, 2147, 2148, 2228, 2149, 2230, - 2150, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2239, 2238, - 2151, 2240, 2241, 2243, 2244, 2245, 2242, 2246, 2248, 2247, - 2249, 2250, 2251, 2152, 2252, 2253, 2254, 2255, 2256, 2257, - 2258, 2259, 2153, 2260, 2261, 2262, 2281, 2154, 2263, 2266, - 2265, 2264, 2267, 2268, 2269, 2271, 2270, 2272, 2273, 2155, - 2156, 2274, 2275, 2276, 2277, 2279, 2278, 2283, 2284, 2285, - 2157, 2158, 2280, 2282, 2482, 2286, 2287, 2289, 2288, 2290, - 2159, 2292, 2291, 2160, 2294, 2293, 2161, 2162, 2295, 2296, - 2297, 2116, 2298, 2117, 2299, 2301, 2302, 2303, 2308, 2163, - 2300, 2304, 2305, 2306, 2307, 2309, 2164, 2311, 2310, 2312, - 2313, 2314, 2315, 2316, 2317, 2318, 2319, 2320, 2333, 2324, - 2325, 2327, 2328, 2331, 2326, 2332, 2336, 2335, 2337, 2338, - 2339, 2340, 2341, 2334, 2322, 2329, 2330, 2323, 2342, 2343, - 2321, 2344, 2346, 2345, 2347, 2348, 2349, 2350, 2351, 2352, - 2353, 2354, 2355, 2357, 2356, 2358, 2359, 2360, 2361, 2362, - 2363, 2364, 2366, 2365, 2367, 2368, 2370, 2369, 2372, 2373, - 2165, 2371, 2374, 2375, 2376, 2377, 2378, 2380, 2379, 2166, - 2168, 2167, 2169, 2381, 2382, 2170, 2383, 2385, 2384, 2386, - 2387, 2388, 2390, 2389, 2391, 2392, 2171, 2172, 2393, 2394, + 0, 0, 1038, 945, 2793, 2794, 2795, 0, 1147, 1146, + 0, 0, 1286, 1285, 0, 2729, 2119, 0, 1124, 1156, + 2196, 2198, 2197, 2199, 2200, 2201, 2202, 2203, 2204, 2136, + 2205, 2206, 2207, 2209, 2208, 2210, 2211, 2212, 2137, 2138, + 2213, 2214, 2215, 2217, 2216, 2218, 2139, 2140, 2219, 2220, + 2221, 2222, 2141, 2143, 2142, 2223, 2225, 2224, 2144, 2226, + 2227, 2228, 2230, 2145, 2146, 2147, 2148, 2149, 2229, 2150, + 2231, 2151, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2240, + 2239, 2152, 2241, 2242, 2244, 2245, 2246, 2243, 2247, 2249, + 2248, 2250, 2251, 2252, 2153, 2253, 2254, 2255, 2256, 2257, + 2258, 2259, 2260, 2154, 2261, 2262, 2263, 2282, 2155, 2264, + 2267, 2266, 2265, 2268, 2269, 2270, 2272, 2271, 2273, 2274, + 2156, 2157, 2275, 2276, 2277, 2278, 2280, 2279, 2284, 2285, + 2286, 2158, 2159, 2281, 2283, 2483, 2287, 2288, 2290, 2289, + 2291, 2160, 2293, 2292, 2161, 2295, 2294, 2162, 2163, 2296, + 2297, 2298, 2117, 2299, 2118, 2300, 2302, 2303, 2304, 2309, + 2164, 2301, 2305, 2306, 2307, 2308, 2310, 2165, 2312, 2311, + 2313, 2314, 2315, 2316, 2317, 2318, 2319, 2320, 2321, 2334, + 2325, 2326, 2328, 2329, 2332, 2327, 2333, 2337, 2336, 2338, + 2339, 2340, 2341, 2342, 2335, 2323, 2330, 2331, 2324, 2343, + 2344, 2322, 2345, 2347, 2346, 2348, 2349, 2350, 2351, 2352, + 2353, 2354, 2355, 2356, 2358, 2357, 2359, 2360, 2361, 2362, + 2363, 2364, 2365, 2367, 2366, 2368, 2369, 2371, 2370, 2373, + 2374, 2166, 2372, 2375, 2376, 2377, 2378, 2379, 2381, 2380, + 2167, 2169, 2168, 2170, 2382, 2383, 2171, 2384, 2386, 2385, + 2387, 2388, 2389, 2391, 2390, 2392, 2393, 2172, 2173, 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, - 2405, 2406, 2408, 2407, 2409, 2410, 2411, 2412, 2413, 2414, - 2415, 2173, 2416, 2174, 2417, 2418, 2175, 2419, 2176, 2420, - 2421, 2422, 2423, 2424, 2177, 2425, 2426, 2427, 2429, 2430, - 2428, 2431, 2178, 2432, 2433, 2434, 2179, 2436, 2435, 2437, - 2180, 2439, 2181, 2182, 2438, 2184, 2185, 2440, 2441, 2442, - 2183, 2443, 2186, 2444, 2445, 2447, 2446, 2448, 2449, 2450, - 2187, 2451, 2452, 2188, 2453, 2454, 2455, 2456, 2457, 2459, - 2458, 2460, 2461, 2462, 2463, 2465, 2467, 2466, 2464, 2468, - 2469, 2470, 2471, 2475, 2476, 2477, 2478, 2472, 2473, 2474, - 2189, 2479, 2480, 2481, 2483, 2484, 2486, 2485, 2190, 2191, - 2487, 2488, 2194, 2489, 2490, 2494, 2491, 2503, 2492, 2493, - 2496, 2495, 2497, 2498, 2499, 2192, 2500, 2193, 2501, 2502, - 194, 2121, 178, 2122, 2134, 345, 124, 2579, 2578, 1082, - 0, 2729, 2730, 0, 0, 0, 1828, 0, 1748, 1748, - 1748, 1746, 0, 1748, 1748, 1748, 0, 1751, 1748, 1748, - 1748, 0, 73, 1947, 273, 0, 0, 0, 0, 0, - 2115, 0, 336, 1758, 0, 0, 2005, 2021, 0, 2022, - 2016, 2576, 321, 0, 1219, 0, 0, 0, 0, 176, - 1147, 1090, 321, 1809, 0, 239, 248, 250, 251, 247, - 0, 2730, 2741, 1182, 1190, 1639, 1203, 2506, 0, 1916, - 251, 0, 124, 1063, 0, 124, 1836, 1833, 0, 0, - 0, 1809, 2015, 0, 2844, 0, 0, 0, 2840, 0, - 2845, 0, 1184, 0, 0, 1, 5, 0, 0, 588, - 888, 588, 889, 887, 588, 2794, 0, 0, 0, 0, - 0, 2276, 2158, 2385, 1929, 1941, 1927, 2110, 0, 936, - 964, 0, 941, 0, 939, 2127, 2126, 2125, 953, 952, - 951, 949, 0, 456, 0, 1040, 2799, 0, 943, 0, - 1101, 1931, 1932, 1933, 1934, 1935, 1938, 367, 2724, 0, - 196, 0, 356, 359, 0, 348, 351, 0, 125, 126, - 0, 1126, 1129, 0, 0, 2733, 0, 591, 142, 0, - 1832, 1831, 1830, 0, 1828, 2196, 2135, 2211, 0, 2084, - 0, 0, 0, 1507, 0, 2140, 0, 2225, 2227, 2144, - 2145, 2146, 2147, 2148, 2151, 0, 0, 1232, 1232, 1232, - 1229, 0, 0, 0, 2250, 2251, 2089, 0, 0, 0, - 2080, 2090, 2158, 2289, 2290, 0, 2082, 2083, 2296, 0, - 0, 0, 2310, 0, 2315, 2087, 0, 0, 2352, 2354, - 0, 0, 2358, 2359, 2360, 2361, 2064, 1287, 0, 1229, - 2079, 2086, 2377, 2072, 2386, 2391, 2392, 0, 2401, 0, - 0, 2423, 0, 2430, 2428, 2434, 0, 0, 2456, 0, - 0, 1229, 2063, 2475, 2476, 2477, 2478, 0, 2081, 2189, - 2088, 0, 2489, 1232, 1229, 1229, 0, 0, 0, 2497, - 2498, 2502, 0, 0, 0, 2764, 1286, 0, 1468, 0, - 1501, 1244, 1250, 1264, 0, 1279, 1314, 1315, 1317, 1423, - 1316, 1322, 1321, 1721, 2076, 1320, 1319, 2077, 2078, 1313, - 2100, 2121, 2099, 0, 0, 0, 0, 0, 0, 0, - 0, 176, 0, 1912, 0, 176, 1732, 1748, 75, 0, - 0, 2637, 2652, 2653, 1232, 2649, 2654, 2270, 2156, 2283, - 0, 2651, 2643, 0, 2396, 2400, 2647, 2415, 2418, 2641, - 0, 2181, 2460, 2673, 2645, 2650, 2631, 2618, 2632, 0, - 0, 2635, 2639, 2112, 1613, 2591, 2592, 0, 81, 0, - 0, 1760, 1761, 1759, 1036, 0, 2857, 2006, 2007, 2008, - 0, 2025, 0, 365, 0, 331, 0, 0, 0, 323, - 321, 0, 314, 304, 0, 305, 309, 310, 311, 312, - 313, 306, 307, 377, 308, 2123, 0, 2124, 1142, 0, - 0, 505, 496, 0, 1911, 1910, 0, 1999, 2742, 0, - 0, 0, 321, 377, 1763, 1810, 0, 1762, 1991, 0, - 1989, 1986, 1988, 240, 0, 0, 270, 2197, 2637, 2400, - 2609, 0, 2617, 0, 2736, 2733, 2743, 1713, 0, 1648, - 1640, 0, 1210, 2777, 2772, 2771, 2774, 2775, 1209, 2776, - 1208, 2773, 2770, 1219, 1204, 1206, 1207, 0, 810, 0, - 0, 2529, 2530, 2366, 2386, 2424, 2531, 2472, 0, 0, - 2551, 2505, 2515, 2511, 0, 0, 1874, 0, 810, 1924, - 1875, 0, 0, 1924, 0, 1648, 1914, 1917, 0, 2533, - 1888, 885, 884, 883, 2534, 1910, 0, 1860, 1876, 0, - 1837, 1881, 124, 2535, 0, 1913, 0, 1648, 1924, 0, - 1853, 0, 0, 0, 0, 1218, 0, 246, 1070, 1070, - 0, 0, 1062, 1064, 1065, 1070, 1070, 0, 2858, 2859, - 2589, 1036, 377, 0, 2071, 2069, 2070, 2119, 2841, 2068, - 2067, 2849, 2851, 2837, 2839, 2846, 0, 2749, 1195, 6, - 67, 0, 0, 176, 176, 138, 1219, 1219, 2794, 588, - 144, 588, 588, 588, 588, 0, 1944, 2797, 2798, 2796, - 826, 0, 1232, 2128, 2131, 2795, 2132, 179, 950, 0, - 457, 179, 0, 0, 0, 0, 0, 458, 459, 395, - 0, 1044, 1045, 1039, 1041, 1043, 0, 0, 946, 0, - 2799, 1943, 0, 369, 0, 1157, 1159, 1158, 1175, 198, - 195, 177, 0, 321, 0, 346, 352, 82, 1084, 1739, - 1741, 0, 1130, 2732, 0, 0, 2734, 2738, 141, 0, - 0, 0, 1812, 1816, 1822, 1826, 1829, 0, 0, 1618, - 1335, 1618, 1618, 1618, 1508, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1618, 0, - 1373, 1345, 1346, 0, 1374, 0, 0, 0, 2091, 0, - 0, 0, 2764, 0, 0, 0, 0, 1473, 0, 0, - 0, 2764, 0, 0, 0, 0, 0, 0, 1503, 1505, - 2099, 1618, 0, 0, 1618, 0, 0, 0, 0, 0, - 1237, 1379, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1618, 1618, 0, 0, 1618, - 1387, 2093, 0, 0, 0, 2092, 0, 0, 0, 2065, - 2085, 0, 1390, 1392, 1391, 0, 1618, 1618, 0, 0, - 0, 1325, 1324, 1326, 0, 0, 0, 0, 0, 0, - 1283, 1282, 1281, 1280, 0, 0, 0, 0, 1289, 0, - 1291, 1293, 1288, 1290, 1292, 0, 0, 0, 0, 0, + 2405, 2406, 2407, 2409, 2408, 2410, 2411, 2412, 2413, 2414, + 2415, 2416, 2174, 2417, 2175, 2418, 2419, 2176, 2420, 2177, + 2421, 2422, 2423, 2424, 2425, 2178, 2426, 2427, 2428, 2430, + 2431, 2429, 2432, 2179, 2433, 2434, 2435, 2180, 2437, 2436, + 2438, 2181, 2440, 2182, 2183, 2439, 2185, 2186, 2441, 2442, + 2443, 2184, 2444, 2187, 2445, 2446, 2448, 2447, 2449, 2450, + 2451, 2188, 2452, 2453, 2189, 2454, 2455, 2456, 2457, 2458, + 2460, 2459, 2461, 2462, 2463, 2464, 2466, 2468, 2467, 2465, + 2469, 2470, 2471, 2472, 2476, 2477, 2478, 2479, 2473, 2474, + 2475, 2190, 2480, 2481, 2482, 2484, 2485, 2487, 2486, 2191, + 2192, 2488, 2489, 2195, 2490, 2491, 2495, 2492, 2504, 2493, + 2494, 2497, 2496, 2498, 2499, 2500, 2193, 2501, 2194, 2502, + 2503, 194, 2122, 178, 2123, 2135, 345, 124, 2580, 2579, + 1082, 0, 2730, 2731, 0, 0, 0, 1829, 0, 1749, + 1749, 1749, 1747, 0, 1749, 1749, 1749, 0, 1752, 1749, + 1749, 1749, 0, 73, 1948, 273, 0, 0, 0, 0, + 0, 2116, 0, 336, 1759, 0, 0, 2006, 2022, 0, + 2023, 2017, 2577, 321, 0, 1220, 0, 0, 0, 0, + 176, 1148, 1090, 321, 1810, 0, 239, 248, 250, 251, + 247, 0, 2731, 2742, 1183, 1191, 1640, 1204, 2507, 0, + 1917, 251, 0, 124, 1063, 0, 124, 1837, 1834, 0, + 0, 0, 1810, 2016, 0, 2845, 0, 0, 0, 2841, + 0, 2846, 0, 1185, 0, 0, 1, 5, 0, 0, + 588, 888, 588, 889, 887, 588, 2795, 0, 0, 0, + 0, 0, 2277, 2159, 2386, 1930, 1942, 1928, 2111, 0, + 936, 964, 0, 941, 0, 939, 2128, 2127, 2126, 953, + 952, 951, 949, 0, 456, 0, 1040, 2800, 0, 943, + 0, 1101, 1932, 1933, 1934, 1935, 1936, 1939, 367, 2725, + 0, 0, 196, 0, 356, 359, 0, 348, 351, 0, + 125, 126, 0, 1127, 1130, 0, 0, 2734, 0, 591, + 142, 0, 1833, 1832, 1831, 0, 1829, 2197, 2136, 2212, + 0, 2085, 0, 0, 0, 1508, 0, 2141, 0, 2226, + 2228, 2145, 2146, 2147, 2148, 2149, 2152, 0, 0, 1233, + 1233, 1233, 1230, 0, 0, 0, 2251, 2252, 2090, 0, + 0, 0, 2081, 2091, 2159, 2290, 2291, 0, 2083, 2084, + 2297, 0, 0, 0, 2311, 0, 2316, 2088, 0, 0, + 2353, 2355, 0, 0, 2359, 2360, 2361, 2362, 2065, 1288, + 0, 1230, 2080, 2087, 2378, 2073, 2387, 2392, 2393, 0, + 2402, 0, 0, 2424, 0, 2431, 2429, 2435, 0, 0, + 2457, 0, 0, 1230, 2064, 2476, 2477, 2478, 2479, 0, + 2082, 2190, 2089, 0, 2490, 1233, 1230, 1230, 0, 0, + 0, 2498, 2499, 2503, 0, 0, 0, 2765, 1287, 0, + 1469, 0, 1502, 1245, 1251, 1265, 0, 1280, 1315, 1316, + 1318, 1424, 1317, 1323, 1322, 1722, 2077, 1321, 1320, 2078, + 2079, 1314, 2101, 2122, 2100, 0, 0, 0, 0, 0, + 0, 0, 0, 176, 0, 1913, 0, 176, 1733, 1749, + 75, 0, 0, 2638, 2653, 2654, 1233, 2650, 2655, 2271, + 2157, 2284, 0, 2652, 2644, 0, 2397, 2401, 2648, 2416, + 2419, 2642, 0, 2182, 2461, 2674, 2646, 2651, 2632, 2619, + 2633, 0, 0, 2636, 2640, 2113, 1614, 2592, 2593, 0, + 81, 0, 0, 1761, 1762, 1760, 1036, 0, 2858, 2007, + 2008, 2009, 0, 2026, 0, 365, 0, 331, 0, 0, + 0, 323, 321, 0, 314, 304, 0, 305, 309, 310, + 311, 312, 313, 306, 307, 377, 308, 2124, 0, 2125, + 1143, 0, 0, 505, 496, 0, 1912, 1911, 0, 2000, + 2743, 0, 0, 0, 321, 377, 1764, 1811, 0, 1763, + 1992, 0, 1990, 1987, 1989, 240, 0, 0, 270, 2198, + 2638, 2401, 2610, 0, 2618, 0, 2737, 2734, 2744, 1714, + 0, 1649, 1641, 0, 1211, 2778, 2773, 2772, 2775, 2776, + 1210, 2777, 1209, 2774, 2771, 1220, 1205, 1207, 1208, 0, + 810, 0, 0, 2530, 2531, 2367, 2387, 2425, 2532, 2473, + 0, 0, 2552, 2506, 2516, 2512, 0, 0, 1875, 0, + 810, 1925, 1876, 0, 0, 1925, 0, 1649, 1915, 1918, + 0, 2534, 1889, 885, 884, 883, 2535, 1911, 0, 1861, + 1877, 0, 1838, 1882, 124, 2536, 0, 1914, 0, 1649, + 1925, 0, 1854, 0, 0, 0, 0, 1219, 0, 246, + 1070, 1070, 0, 0, 1062, 1064, 1065, 1070, 1070, 0, + 2859, 2860, 2590, 1036, 377, 0, 2072, 2070, 2071, 2120, + 2842, 2069, 2068, 2850, 2852, 2838, 2840, 2847, 0, 2750, + 1196, 6, 67, 0, 0, 176, 176, 138, 1220, 1220, + 2795, 588, 144, 588, 588, 588, 588, 0, 1945, 2798, + 2799, 2797, 826, 0, 1233, 2129, 2132, 2796, 2133, 179, + 950, 0, 457, 179, 0, 0, 0, 0, 0, 458, + 459, 395, 0, 1044, 1045, 1039, 1041, 1043, 0, 0, + 946, 0, 2800, 1944, 0, 369, 0, 0, 1158, 1160, + 1159, 1176, 198, 195, 177, 0, 321, 0, 346, 352, + 82, 1084, 1740, 1742, 0, 1131, 2733, 0, 0, 2735, + 2739, 141, 0, 0, 0, 1813, 1817, 1823, 1827, 1830, + 0, 0, 1619, 1336, 1619, 1619, 1619, 1509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1327, 0, 0, 0, 2066, 1432, - 0, 1749, 1726, 1734, 1728, 1747, 0, 1912, 1729, 0, - 1738, 470, 0, 1735, 0, 0, 1722, 0, 74, 0, - 1972, 0, 0, 0, 1966, 1968, 1971, 1967, 0, 0, - 1973, 124, 0, 1969, 1948, 1951, 1958, 1218, 1949, 0, - 0, 271, 274, 276, 0, 279, 2638, 2636, 2670, 2669, - 2674, 0, 2671, 2667, 2630, 2660, 2701, 2664, 0, 2701, - 2666, 2665, 2701, 2661, 2668, 2701, 0, 2633, 0, 1614, - 1615, 0, 2590, 0, 2111, 0, 0, 1037, 0, 0, - 2009, 2010, 0, 1165, 2026, 2027, 2023, 1613, 2577, 2580, - 369, 330, 333, 0, 0, 326, 325, 327, 0, 0, - 0, 219, 322, 385, 0, 0, 699, 1220, 506, 0, - 0, 517, 0, 0, 70, 71, 0, 1149, 2133, 0, - 1148, 1152, 0, 1088, 1091, 0, 374, 389, 0, 1766, - 1756, 1765, 1541, 1996, 1993, 124, 0, 238, 263, 258, - 266, 260, 262, 261, 267, 268, 269, 264, 259, 265, - 252, 0, 0, 2636, 0, 0, 2633, 2737, 0, 2739, - 2755, 1191, 2744, 1704, 1641, 1650, 1210, 0, 1649, 1544, - 1620, 0, 0, 1193, 1215, 1196, 1214, 0, 1205, 0, - 2507, 2509, 0, 809, 0, 0, 812, 814, 1786, 1785, - 813, 822, 0, 811, 0, 2566, 0, 2549, 0, 2536, - 0, 818, 820, 819, 2544, 817, 0, 0, 2520, 0, - 0, 1920, 1218, 1218, 1887, 0, 588, 0, 0, 0, - 0, 0, 0, 1854, 0, 0, 639, 1880, 1918, 1919, - 1924, 0, 0, 1924, 0, 1893, 1914, 1924, 0, 1924, - 1849, 0, 0, 1841, 1846, 1842, 0, 1848, 1847, 1850, - 1838, 1839, 0, 1867, 1895, 0, 1914, 1879, 1886, 0, - 1866, 1873, 0, 1884, 1914, 1914, 0, 1924, 1924, 1924, - 1058, 1074, 1056, 1068, 1069, 0, 0, 1061, 1060, 1834, - 1544, 387, 372, 0, 0, 2838, 2852, 2836, 2847, 2848, - 2835, 1186, 2748, 1183, 2747, 2750, 0, 1185, 7, 4, - 0, 135, 0, 0, 0, 588, 588, 1219, 2791, 0, - 2779, 2786, 2787, 2790, 2822, 2789, 2788, 588, 2785, 2778, - 2781, 2782, 2784, 2783, 2799, 0, 0, 0, 0, 0, - 1930, 1928, 1945, 1946, 827, 826, 582, 585, 584, 0, - 0, 2130, 0, 942, 0, 1912, 940, 0, 0, 1912, - 406, 1912, 460, 934, 1042, 0, 588, 947, 944, 1102, - 1103, 1106, 368, 221, 0, 0, 494, 1175, 1161, 1177, - 0, 199, 201, 357, 321, 0, 0, 0, 1086, 1085, - 0, 1083, 1140, 1138, 1137, 1135, 0, 1136, 1134, 1125, - 1131, 1132, 2731, 2735, 1912, 398, 1818, 1743, 1541, 1745, - 2110, 0, 0, 0, 1824, 0, 0, 1619, 1618, 0, - 1482, 0, 0, 0, 0, 1509, 0, 0, 0, 0, - 0, 0, 0, 0, 1311, 0, 0, 0, 0, 0, - 1453, 0, 1482, 1233, 1692, 1693, 1677, 1678, 1676, 1679, - 1230, 0, 1680, 1691, 1402, 0, 0, 0, 0, 0, - 0, 1589, 1590, 1591, 1592, 1600, 1593, 1594, 1595, 1602, - 1607, 1596, 1597, 1603, 1604, 1605, 1598, 1606, 1601, 1599, - 1608, 0, 1588, 0, 0, 1611, 1609, 1612, 1610, 0, - 1474, 1466, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1618, 0, 0, 0, 1618, 0, + 0, 1619, 0, 1374, 1346, 1347, 0, 1375, 0, 0, + 0, 2092, 0, 0, 0, 2765, 0, 0, 0, 0, + 1474, 0, 0, 0, 2765, 0, 0, 0, 0, 0, + 0, 1504, 1506, 2100, 1619, 0, 0, 1619, 0, 0, + 0, 0, 0, 1238, 1380, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1619, 1619, + 0, 0, 1619, 1388, 2094, 0, 0, 0, 2093, 0, + 0, 0, 2066, 2086, 0, 1391, 1393, 1392, 0, 1619, + 1619, 0, 0, 0, 1326, 1325, 1327, 0, 0, 0, + 0, 0, 0, 1284, 1283, 1282, 1281, 0, 0, 0, + 0, 1290, 0, 1292, 1294, 1289, 1291, 1293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1415, 0, 0, 0, - 0, 0, 1618, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1369, 0, 2102, 2101, 0, 0, 0, - 854, 0, 1329, 0, 1328, 1552, 1187, 2760, 2765, 0, - 2536, 1469, 1471, 0, 1235, 1234, 1236, 1247, 1240, 1245, - 1238, 1242, 0, 1294, 2203, 1248, 0, 0, 1276, 2764, - 1627, 1277, 1262, 1267, 1268, 0, 1265, 1266, 0, 1270, - 0, 1269, 1273, 1274, 1275, 1278, 0, 0, 0, 0, - 1318, 1323, 1502, 1219, 2103, 0, 0, 470, 1731, 2628, - 473, 472, 1736, 471, 1787, 2686, 1730, 1046, 0, 0, - 76, 78, 1977, 1960, 1959, 1961, 1965, 124, 1970, 1962, - 0, 1974, 1975, 2250, 2475, 2478, 283, 0, 256, 255, - 257, 280, 0, 0, 2663, 0, 2644, 0, 2648, 2642, - 2646, 2131, 2700, 0, 2626, 2688, 0, 0, 2634, 0, - 2672, 2655, 2659, 2658, 2656, 0, 2657, 2662, 2640, 1617, - 2284, 2369, 0, 1620, 2594, 320, 337, 1753, 2856, 2011, - 2489, 2012, 2004, 0, 2024, 0, 0, 0, 366, 332, - 0, 324, 371, 220, 363, 378, 382, 380, 1143, 700, - 0, 1219, 504, 503, 502, 501, 0, 519, 499, 507, - 72, 0, 0, 2000, 0, 0, 0, 0, 0, 1092, - 0, 1764, 0, 0, 1742, 1542, 0, 1992, 1994, 1987, - 0, 0, 0, 0, 0, 2690, 2615, 0, 0, 0, - 2740, 2757, 2756, 2745, 0, 0, 1719, 0, 1714, 0, - 1192, 1660, 1661, 2427, 1659, 1651, 1654, 1658, 1657, 1202, - 1560, 1559, 0, 1198, 1516, 1201, 1518, 1515, 1514, 1513, - 0, 1559, 1621, 1628, 1211, 0, 1219, 1220, 1220, 2099, - 0, 0, 0, 2547, 2553, 0, 2546, 2545, 0, 0, - 0, 2568, 2550, 0, 0, 2514, 2554, 2555, 2558, 0, - 0, 0, 0, 0, 2552, 2472, 2516, 2517, 2522, 2512, - 2574, 2575, 2572, 2573, 2571, 2541, 1894, 0, 1922, 0, - 0, 0, 0, 1904, 1898, 1897, 1891, 1899, 1892, 1909, - 1908, 1907, 1864, 1863, 1857, 1915, 1903, 1901, 176, 1924, - 1862, 1861, 1902, 1900, 1843, 1844, 1845, 0, 1648, 0, - 1920, 1896, 1924, 1914, 0, 1924, 1924, 1905, 1906, 1883, - 1885, 1059, 1076, 1075, 1071, 1072, 1077, 1067, 1066, 0, - 321, 2842, 2850, 2854, 1648, 2754, 2752, 589, 826, 2624, - 139, 588, 2821, 0, 0, 588, 588, 0, 2780, 145, - 904, 0, 0, 127, 583, 1787, 1787, 0, 2129, 0, - 0, 0, 0, 0, 0, 0, 180, 189, 0, 0, - 404, 405, 1787, 403, 446, 447, 450, 451, 452, 0, - 453, 1787, 1787, 400, 426, 427, 430, 431, 432, 433, - 434, 396, 0, 401, 826, 2800, 2801, 0, 955, 0, - 0, 1105, 217, 1164, 1156, 1163, 1160, 1175, 1173, 1162, - 880, 879, 0, 1176, 197, 0, 0, 344, 353, 347, - 349, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1328, 0, 0, + 0, 2067, 1433, 0, 1750, 1727, 1735, 1729, 1748, 0, + 1913, 1730, 0, 1739, 470, 0, 1736, 0, 0, 1723, + 0, 74, 0, 1973, 0, 0, 0, 1967, 1969, 1972, + 1968, 0, 0, 1974, 124, 0, 1970, 1949, 1952, 1959, + 1219, 1950, 0, 0, 271, 274, 276, 0, 279, 2639, + 2637, 2671, 2670, 2675, 0, 2672, 2668, 2631, 2661, 2702, + 2665, 0, 2702, 2667, 2666, 2702, 2662, 2669, 2702, 0, + 2634, 0, 1615, 1616, 0, 2591, 0, 2112, 0, 0, + 1037, 0, 0, 2010, 2011, 0, 1166, 2027, 2028, 2024, + 1614, 2578, 2581, 369, 330, 333, 0, 0, 326, 325, + 327, 0, 0, 0, 219, 322, 385, 0, 0, 699, + 1221, 506, 0, 0, 517, 0, 0, 70, 71, 0, + 1150, 2134, 0, 1149, 1153, 0, 1088, 1091, 0, 374, + 389, 0, 1767, 1757, 1766, 1542, 1997, 1994, 124, 0, + 238, 263, 258, 266, 260, 262, 261, 267, 268, 269, + 264, 259, 265, 252, 0, 0, 2637, 0, 0, 2634, + 2738, 0, 2740, 2756, 1192, 2745, 1705, 1642, 1651, 1211, + 0, 1650, 1545, 1621, 0, 0, 1194, 1216, 1197, 1215, + 0, 1206, 0, 2508, 2510, 0, 809, 0, 0, 812, + 814, 1787, 1786, 813, 822, 0, 811, 0, 2567, 0, + 2550, 0, 2537, 0, 818, 820, 819, 2545, 817, 0, + 0, 2521, 0, 0, 1921, 1219, 1219, 1888, 0, 588, + 0, 0, 0, 0, 0, 0, 1855, 0, 0, 639, + 1881, 1919, 1920, 1925, 0, 0, 1925, 0, 1894, 1915, + 1925, 0, 1925, 1850, 0, 0, 1842, 1847, 1843, 0, + 1849, 1848, 1851, 1839, 1840, 0, 1868, 1896, 0, 1915, + 1880, 1887, 0, 1867, 1874, 0, 1885, 1915, 1915, 0, + 1925, 1925, 1925, 1058, 1074, 1056, 1068, 1069, 0, 0, + 1061, 1060, 1835, 1545, 387, 372, 0, 0, 2839, 2853, + 2837, 2848, 2849, 2836, 1187, 2749, 1184, 2748, 2751, 0, + 1186, 7, 4, 0, 135, 0, 0, 0, 588, 588, + 1220, 2792, 0, 2780, 2787, 2788, 2791, 2823, 2790, 2789, + 588, 2786, 2779, 2782, 2783, 2785, 2784, 2800, 0, 0, + 0, 0, 0, 1931, 1929, 1946, 1947, 827, 826, 582, + 585, 584, 0, 0, 2131, 0, 942, 0, 1913, 940, + 0, 0, 1913, 406, 1913, 460, 934, 1042, 0, 588, + 947, 944, 1102, 1103, 1106, 368, 221, 0, 0, 0, + 494, 1176, 1162, 1178, 0, 199, 201, 357, 321, 0, + 0, 0, 1086, 1085, 0, 1083, 1141, 1139, 1138, 1136, + 0, 1137, 1135, 1126, 1132, 1133, 2732, 2736, 1913, 398, + 1819, 1744, 1542, 1746, 2111, 0, 0, 0, 1825, 0, + 0, 1620, 1619, 0, 1483, 0, 0, 0, 0, 1510, + 0, 0, 0, 0, 0, 0, 0, 0, 1312, 0, + 0, 0, 0, 0, 1454, 0, 1483, 1234, 1693, 1694, + 1678, 1679, 1677, 1680, 1231, 0, 1681, 1692, 1403, 0, + 0, 0, 0, 0, 0, 1590, 1591, 1592, 1593, 1601, + 1594, 1595, 1596, 1603, 1608, 1597, 1598, 1604, 1605, 1606, + 1599, 1607, 1602, 1600, 1609, 0, 1589, 0, 0, 1612, + 1610, 1613, 1611, 0, 1475, 1467, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1619, 0, + 0, 0, 1619, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 84, 104, 1740, 0, 1127, - 1139, 1133, 1787, 1787, 1787, 1787, 402, 435, 436, 439, - 440, 441, 442, 445, 443, 444, 0, 1912, 0, 0, - 1813, 0, 2113, 1823, 1544, 1827, 1826, 0, 1398, 0, - 1446, 0, 1448, 1449, 1450, 0, 0, 0, 0, 0, - 1399, 0, 1343, 1400, 1401, 0, 1395, 0, 1396, 0, - 0, 0, 0, 0, 0, 0, 1452, 0, 1231, 0, - 0, 1347, 1348, 1340, 1332, 0, 0, 1425, 0, 0, - 1349, 0, 0, 0, 0, 1406, 0, 1426, 1504, 0, - 1506, 2103, 0, 1458, 1407, 1354, 0, 1456, 0, 1355, - 1427, 1428, 1429, 1409, 1410, 0, 1431, 0, 1411, 0, - 0, 1414, 0, 0, 1357, 1462, 1460, 0, 0, 0, - 0, 1464, 1359, 0, 0, 0, 1358, 0, 0, 0, - 0, 0, 0, 0, 1361, 0, 1341, 1461, 1463, 1417, - 0, 0, 0, 0, 0, 1370, 0, 1199, 1551, 2766, - 1187, 0, 0, 2755, 2763, 1333, 0, 0, 2104, 1241, - 1246, 1239, 1243, 2764, 0, 0, 0, 0, 1260, 1259, - 0, 0, 0, 2764, 1627, 1263, 0, 0, 1442, 1443, - 1499, 0, 1727, 1724, 1737, 0, 1788, 0, 0, 1048, - 1047, 1733, 1046, 79, 0, 0, 1963, 1964, 1957, 1976, - 1952, 0, 275, 284, 277, 281, 282, 278, 2705, 0, - 2704, 0, 0, 0, 0, 2623, 2682, 2685, 2110, 0, - 0, 0, 2598, 2605, 2601, 2606, 2599, 2600, 2604, 2607, - 2608, 2595, 2602, 1648, 321, 0, 2013, 1166, 1168, 1169, - 1167, 1175, 0, 0, 2583, 2584, 2582, 2581, 328, 369, - 321, 321, 0, 509, 0, 518, 0, 530, 0, 0, - 0, 2002, 2001, 0, 1150, 1153, 1154, 1099, 1097, 1096, - 1098, 1087, 1093, 1094, 0, 575, 1770, 0, 0, 0, - 1776, 1757, 1767, 0, 1674, 1675, 1671, 1672, 1670, 1673, - 1997, 1995, 1990, 0, 253, 2616, 0, 0, 0, 0, - 0, 0, 0, 2120, 1718, 1715, 0, 1705, 1707, 1708, - 1710, 2098, 1642, 1645, 0, 0, 0, 0, 1559, 1544, - 0, 0, 1536, 1561, 0, 1561, 1538, 1539, 1544, 1544, - 1541, 1556, 0, 0, 1623, 0, 1213, 1221, 1216, 0, - 2510, 0, 2540, 0, 825, 824, 823, 821, 2567, 0, - 0, 0, 2560, 2561, 0, 0, 2537, 2538, 2539, 0, - 2542, 2519, 2520, 2521, 0, 1921, 0, 1868, 1925, 1926, - 0, 1890, 1889, 1859, 0, 1882, 1840, 1922, 1858, 1620, - 1914, 1855, 1856, 1074, 0, 1057, 0, 321, 0, 0, - 2853, 2753, 136, 826, 0, 140, 0, 0, 178, 2830, - 2816, 0, 0, 0, 0, 0, 0, 0, 592, 0, - 0, 938, 183, 186, 184, 0, 185, 0, 0, 455, - 454, 0, 1912, 448, 0, 0, 0, 0, 0, 0, - 0, 0, 147, 0, 0, 1912, 428, 407, 408, 411, - 412, 413, 1034, 1787, 1034, 0, 1787, 1787, 1034, 1787, - 0, 0, 1787, 1787, 0, 0, 1787, 0, 0, 1034, - 0, 1787, 0, 1021, 0, 0, 1787, 1787, 1787, 1787, - 1787, 1034, 0, 0, 1787, 1787, 494, 1787, 0, 0, - 1052, 0, 0, 1787, 1787, 1787, 1787, 0, 0, 1787, - 1787, 0, 1787, 971, 1020, 594, 621, 622, 935, 970, - 972, 984, 490, 0, 1002, 1023, 1024, 1022, 0, 2802, - 0, 957, 959, 1104, 0, 0, 321, 0, 0, 1580, - 200, 321, 0, 350, 0, 0, 0, 0, 0, 0, + 1416, 0, 0, 0, 0, 0, 1619, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1370, 0, 2103, + 2102, 0, 0, 0, 854, 0, 1330, 0, 1329, 1553, + 1188, 2761, 2766, 0, 2537, 1470, 1472, 0, 1236, 1235, + 1237, 1248, 1241, 1246, 1239, 1243, 0, 1295, 2204, 1249, + 0, 0, 1277, 2765, 1628, 1278, 1263, 1268, 1269, 0, + 1266, 1267, 0, 1271, 0, 1270, 1274, 1275, 1276, 1279, + 0, 0, 0, 0, 1319, 1324, 1503, 1220, 2104, 0, + 0, 470, 1732, 2629, 473, 472, 1737, 471, 1788, 2687, + 1731, 1046, 0, 0, 76, 78, 1978, 1961, 1960, 1962, + 1966, 124, 1971, 1963, 0, 1975, 1976, 2251, 2476, 2479, + 283, 0, 256, 255, 257, 280, 0, 0, 2664, 0, + 2645, 0, 2649, 2643, 2647, 2132, 2701, 0, 2627, 2689, + 0, 0, 2635, 0, 2673, 2656, 2660, 2659, 2657, 0, + 2658, 2663, 2641, 1618, 2285, 2370, 0, 1621, 2595, 320, + 337, 1754, 2857, 2012, 2490, 2013, 2005, 0, 2025, 0, + 0, 0, 366, 332, 0, 324, 371, 220, 363, 378, + 382, 380, 1144, 700, 0, 1220, 504, 503, 502, 501, + 0, 519, 499, 507, 72, 0, 0, 2001, 0, 0, + 0, 0, 0, 1092, 0, 1765, 0, 0, 1743, 1543, + 0, 1993, 1995, 1988, 0, 0, 0, 0, 0, 2691, + 2616, 0, 0, 0, 2741, 2758, 2757, 2746, 0, 0, + 1720, 0, 1715, 0, 1193, 1661, 1662, 2428, 1660, 1652, + 1655, 1659, 1658, 1203, 1561, 1560, 0, 1199, 1517, 1202, + 1519, 1516, 1515, 1514, 0, 1560, 1622, 1629, 1212, 0, + 1220, 1221, 1221, 2100, 0, 0, 0, 2548, 2554, 0, + 2547, 2546, 0, 0, 0, 2569, 2551, 0, 0, 2515, + 2555, 2556, 2559, 0, 0, 0, 0, 0, 2553, 2473, + 2517, 2518, 2523, 2513, 2575, 2576, 2573, 2574, 2572, 2542, + 1895, 0, 1923, 0, 0, 0, 0, 1905, 1899, 1898, + 1892, 1900, 1893, 1910, 1909, 1908, 1865, 1864, 1858, 1916, + 1904, 1902, 176, 1925, 1863, 1862, 1903, 1901, 1844, 1845, + 1846, 0, 1649, 0, 1921, 1897, 1925, 1915, 0, 1925, + 1925, 1906, 1907, 1884, 1886, 1059, 1076, 1075, 1071, 1072, + 1077, 1067, 1066, 0, 321, 2843, 2851, 2855, 1649, 2755, + 2753, 589, 826, 2625, 139, 588, 2822, 0, 0, 588, + 588, 0, 2781, 145, 904, 0, 0, 127, 583, 1788, + 1788, 0, 2130, 0, 0, 0, 0, 0, 0, 0, + 180, 189, 0, 0, 404, 405, 1788, 403, 446, 447, + 450, 451, 452, 0, 453, 1788, 1788, 400, 426, 427, + 430, 431, 432, 433, 434, 396, 0, 401, 826, 2801, + 2802, 0, 955, 0, 0, 1105, 217, 1125, 1165, 1157, + 1164, 1161, 1176, 1174, 1163, 880, 879, 0, 1177, 197, + 0, 0, 344, 353, 347, 349, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1141, 0, - 0, 0, 0, 1912, 437, 0, 1787, 397, 414, 415, - 418, 419, 420, 421, 422, 425, 423, 424, 1744, 1826, - 1544, 1620, 2111, 1620, 0, 1825, 0, 0, 1447, 1483, - 0, 1510, 0, 1337, 783, 783, 783, 1493, 768, 1497, - 1488, 783, 1489, 783, 1491, 0, 0, 0, 1296, 1312, - 0, 0, 0, 0, 0, 1454, 1451, 0, 0, 0, - 0, 0, 1477, 0, 0, 0, 1342, 0, 1437, 1459, - 1457, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1465, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 843, 849, 852, - 853, 855, 847, 0, 1419, 1330, 2758, 1200, 1620, 1219, - 2767, 2769, 0, 2749, 1552, 2761, 929, 1470, 0, 1257, - 1253, 0, 1251, 1626, 1272, 1271, 0, 0, 0, 1261, - 1220, 1433, 1219, 0, 1500, 2105, 1725, 2629, 469, 638, - 2687, 1723, 77, 0, 1955, 0, 1950, 1953, 0, 0, - 2702, 0, 2713, 0, 2692, 2693, 0, 0, 2689, 0, - 0, 0, 0, 0, 0, 2593, 321, 1797, 0, 1175, - 1179, 2017, 2586, 2587, 2585, 0, 361, 361, 361, 361, - 0, 510, 511, 513, 1220, 527, 505, 0, 497, 500, - 0, 509, 0, 0, 1089, 1095, 0, 1203, 0, 1789, - 1774, 1781, 1775, 0, 0, 0, 1773, 2095, 2094, 2101, - 2743, 0, 1586, 0, 0, 2614, 2691, 0, 0, 0, - 2746, 815, 1709, 0, 0, 1646, 1647, 1644, 1662, 1653, - 0, 1656, 1655, 0, 2749, 1554, 0, 1540, 1537, 1562, - 0, 1561, 1561, 1544, 0, 1520, 1519, 1613, 1546, 1203, - 1622, 0, 1624, 1639, 1212, 0, 1217, 1225, 1224, 2096, - 2103, 2508, 2548, 0, 0, 0, 0, 2565, 2559, 2556, - 2557, 0, 2518, 2524, 2523, 2526, 2528, 1684, 1685, 1683, - 1681, 1682, 1923, 1648, 1878, 1877, 1851, 1870, 1872, 1924, - 1073, 0, 1080, 1078, 1801, 1804, 0, 0, 2843, 2855, - 0, 0, 2824, 0, 0, 0, 156, 0, 920, 922, - 921, 906, 905, 0, 131, 133, 0, 679, 128, 481, - 490, 593, 596, 637, 636, 188, 187, 192, 193, 1688, - 1689, 1686, 1687, 461, 474, 1690, 475, 449, 151, 150, - 152, 153, 155, 154, 149, 954, 0, 462, 463, 429, - 0, 409, 1035, 927, 588, 1006, 0, 680, 588, 881, - 881, 586, 0, 0, 1144, 0, 0, 1746, 0, 0, - 1144, 0, 0, 0, 1787, 0, 1014, 966, 0, 1748, - 0, 1746, 1746, 1015, 0, 0, 967, 1787, 0, 0, - 0, 0, 0, 1746, 1144, 0, 0, 0, 492, 0, - 1144, 986, 1055, 1053, 1054, 0, 1144, 1144, 0, 0, - 0, 0, 627, 628, 626, 0, 0, 0, 619, 595, - 826, 968, 491, 969, 679, 0, 1049, 676, 682, 2106, - 0, 2804, 2726, 0, 0, 161, 1108, 0, 1107, 232, - 231, 0, 223, 300, 370, 0, 222, 0, 1583, 0, - 1584, 1581, 1582, 321, 354, 109, 113, 105, 90, 86, - 117, 118, 88, 89, 93, 92, 94, 95, 98, 99, - 96, 91, 97, 87, 121, 123, 122, 100, 119, 120, - 85, 468, 467, 466, 465, 438, 0, 0, 1912, 416, - 0, 1620, 1639, 2114, 1817, 0, 1371, 1511, 0, 0, - 784, 1484, 1485, 1495, 0, 1496, 770, 769, 785, 1487, - 1490, 1494, 1492, 1336, 1344, 1393, 0, 1310, 1394, 0, - 1424, 1339, 1338, 0, 0, 0, 1377, 1404, 0, 1378, - 0, 1475, 0, 0, 1351, 0, 1353, 0, 0, 1439, - 1408, 1430, 1380, 1412, 0, 1356, 1331, 0, 1381, 0, - 1386, 1384, 0, 1360, 0, 0, 1367, 0, 1365, 0, - 1366, 0, 1368, 1416, 1418, 0, 0, 854, 840, 841, - 842, 0, 844, 846, 848, 0, 0, 1628, 1553, 2768, - 1189, 2759, 1199, 0, 0, 1472, 1249, 0, 1258, 1255, - 0, 1252, 1221, 1444, 1434, 1979, 0, 0, 292, 287, - 295, 289, 291, 290, 296, 297, 298, 299, 293, 288, - 294, 286, 285, 2703, 0, 2622, 0, 2696, 2698, 2627, - 2684, 2683, 2706, 2706, 2706, 0, 340, 0, 1754, 1170, - 1175, 1179, 0, 1171, 2028, 329, 334, 364, 362, 376, - 379, 383, 381, 514, 0, 0, 0, 534, 0, 532, - 508, 0, 1151, 1100, 375, 1219, 1771, 1783, 0, 1791, - 0, 0, 1768, 1778, 0, 0, 0, 1777, 494, 0, - 254, 0, 2611, 2612, 2610, 0, 1716, 1706, 1645, 1652, - 2755, 1613, 1548, 1544, 1517, 1544, 0, 0, 1525, 1544, - 1521, 1523, 1578, 1219, 1632, 1645, 0, 1648, 1223, 1222, - 0, 2570, 2569, 2563, 2562, 2564, 2543, 0, 0, 1869, - 1648, 1865, 0, 0, 0, 1620, 0, 373, 2625, 202, - 652, 653, 651, 650, 0, 2831, 0, 0, 0, 129, - 0, 0, 482, 0, 0, 0, 654, 655, 657, 658, - 2028, 489, 826, 597, 148, 410, 681, 928, 1144, 0, - 0, 0, 881, 675, 588, 927, 882, 588, 588, 0, - 1004, 1030, 1031, 0, 0, 605, 602, 0, 614, 987, - 978, 988, 999, 1001, 0, 604, 629, 0, 0, 617, - 1746, 0, 1012, 0, 0, 599, 0, 0, 648, 649, - 647, 623, 630, 1032, 1033, 600, 601, 0, 0, 1635, - 1637, 1645, 607, 606, 1695, 1694, 616, 0, 603, 0, - 1018, 994, 0, 645, 643, 640, 642, 641, 646, 644, - 618, 609, 608, 611, 610, 613, 612, 615, 631, 983, - 0, 1034, 1034, 1003, 0, 2109, 0, 1051, 1005, 0, - 659, 677, 660, 0, 0, 635, 634, 632, 633, 0, - 0, 2727, 0, 0, 0, 956, 0, 164, 162, 172, - 1110, 1111, 0, 0, 0, 0, 0, 0, 218, 0, - 1178, 0, 0, 0, 110, 112, 0, 114, 116, 0, - 106, 108, 399, 464, 417, 1826, 1819, 1663, 0, 1512, - 0, 0, 0, 0, 831, 0, 0, 786, 1498, 748, - 783, 1307, 768, 1300, 1302, 1298, 0, 749, 1301, 783, - 0, 1304, 1306, 1297, 0, 1455, 0, 0, 0, 1478, - 0, 0, 0, 0, 0, 0, 0, 1334, 0, 1435, - 0, 0, 0, 0, 0, 0, 1364, 1362, 1363, 838, - 1421, 0, 851, 845, 843, 850, 0, 1623, 1188, 2762, - 930, 1254, 0, 1445, 1982, 0, 1980, 1956, 1983, 0, - 2697, 2695, 2694, 0, 0, 2711, 2711, 2711, 1796, 1795, - 0, 1794, 321, 336, 339, 1798, 1172, 1180, 2030, 2029, - 0, 0, 512, 515, 0, 507, 0, 531, 0, 498, - 576, 0, 0, 0, 1792, 1780, 2749, 1769, 1772, 2103, - 1543, 1587, 2613, 816, 2031, 1643, 1549, 1547, 1555, 0, - 1513, 1544, 1544, 0, 1513, 0, 0, 1545, 1575, 1557, - 1633, 1634, 0, 1629, 1631, 1625, 1696, 2097, 2525, 2527, - 1871, 1079, 1081, 1803, 1639, 1805, 0, 203, 205, 206, - 0, 213, 391, 390, 0, 0, 0, 0, 0, 0, - 0, 479, 476, 679, 478, 578, 598, 989, 0, 588, - 877, 878, 927, 902, 2106, 927, 927, 0, 0, 0, - 977, 0, 1130, 0, 982, 822, 624, 0, 973, 1013, - 1046, 0, 625, 1049, 975, 0, 1638, 493, 974, 996, - 980, 1975, 1007, 1050, 859, 762, 713, 704, 783, 707, - 706, 783, 718, 768, 764, 0, 768, 768, 741, 740, - 758, 744, 726, 831, 831, 725, 761, 831, 745, 743, - 747, 0, 749, 768, 754, 742, 746, 763, 739, 0, - 760, 783, 783, 783, 722, 759, 831, 0, 752, 783, - 683, 768, 831, 836, 0, 0, 783, 785, 2108, 2806, - 0, 2808, 171, 160, 0, 0, 958, 960, 0, 0, - 961, 1116, 0, 226, 301, 822, 302, 0, 229, 1174, - 1585, 321, 102, 0, 103, 0, 101, 0, 0, 1814, - 1372, 781, 779, 782, 780, 829, 834, 832, 830, 0, - 836, 1486, 0, 0, 1309, 1303, 750, 1308, 1299, 831, - 1397, 1375, 1376, 1405, 0, 1476, 1467, 1403, 0, 1352, - 1436, 0, 0, 1413, 1382, 1385, 1383, 1388, 1389, 0, - 1420, 0, 1639, 1256, 1978, 0, 0, 1954, 2714, 2699, - 0, 0, 2710, 2708, 0, 2709, 2707, 2675, 0, 2620, - 2621, 2619, 2603, 0, 321, 341, 0, 0, 335, 1219, - 520, 0, 537, 536, 533, 1199, 1782, 1784, 1790, 1779, - 0, 2039, 0, 1526, 0, 1530, 1535, 1531, 0, 1522, - 0, 1579, 0, 1199, 1645, 0, 1711, 1663, 2825, 0, - 0, 2823, 216, 214, 215, 0, 209, 211, 0, 394, - 392, 393, 0, 0, 0, 0, 0, 1645, 925, 0, - 483, 2749, 592, 656, 579, 0, 991, 0, 927, 902, - 2106, 0, 661, 0, 665, 667, 587, 1017, 0, 1049, - 979, 1000, 1019, 1011, 1010, 0, 1009, 1144, 1636, 995, - 997, 1092, 0, 0, 863, 712, 705, 723, 721, 772, - 765, 0, 772, 772, 732, 748, 727, 0, 831, 738, - 731, 750, 753, 755, 757, 772, 0, 831, 720, 719, - 729, 716, 772, 787, 766, 751, 831, 709, 837, 836, - 711, 831, 836, 772, 772, 0, 2805, 0, 2803, 0, - 158, 163, 173, 174, 948, 0, 1117, 1113, 1114, 1109, - 0, 806, 0, 224, 225, 237, 236, 228, 0, 321, - 111, 115, 107, 2427, 1664, 1820, 835, 828, 833, 0, - 1305, 1479, 1645, 0, 1438, 1440, 839, 0, 1648, 1981, - 0, 2681, 2680, 2679, 2676, 0, 0, 0, 0, 0, - 0, 0, 2712, 2716, 1793, 0, 0, 0, 528, 0, - 0, 562, 577, 0, 0, 0, 0, 2032, 2034, 0, - 1717, 1550, 0, 0, 0, 0, 0, 1567, 1568, 0, - 0, 1573, 1577, 1558, 1630, 1697, 1210, 1712, 1802, 0, - 204, 207, 2832, 213, 212, 1219, 169, 0, 0, 892, - 0, 924, 0, 894, 480, 490, 0, 485, 0, 0, - 990, 678, 673, 669, 0, 903, 0, 663, 0, 0, - 0, 0, 0, 0, 0, 1016, 2073, 1008, 494, 976, - 0, 981, 620, 0, 862, 0, 867, 776, 777, 778, - 733, 773, 775, 0, 931, 735, 703, 728, 756, 734, - 0, 730, 717, 795, 0, 0, 0, 0, 791, 0, - 857, 0, 798, 684, 0, 685, 788, 790, 0, 0, - 0, 0, 724, 708, 710, 714, 715, 701, 702, 2107, - 2807, 1195, 1184, 2812, 165, 962, 321, 1112, 0, 1119, - 245, 243, 321, 233, 241, 235, 0, 242, 303, 230, - 1665, 0, 1219, 1815, 771, 0, 1481, 1350, 1422, 1696, - 1984, 2677, 2717, 2720, 2718, 2719, 2722, 1667, 0, 2721, - 2715, 0, 1541, 1220, 0, 521, 0, 524, 526, 540, - 0, 1787, 1787, 0, 0, 1787, 1787, 1787, 1787, 555, - 563, 565, 0, 0, 0, 0, 0, 2033, 0, 0, - 2040, 2042, 1527, 0, 1532, 0, 1524, 1563, 1563, 1574, - 0, 1194, 2826, 181, 210, 2817, 161, 170, 0, 890, - 0, 1787, 0, 1025, 893, 918, 900, 0, 1645, 0, - 1025, 895, 917, 898, 2028, 0, 2743, 993, 0, 0, - 0, 671, 0, 0, 0, 0, 2075, 2074, 985, 0, - 860, 0, 864, 865, 866, 0, 858, 774, 831, 0, - 831, 801, 800, 1226, 793, 808, 688, 0, 0, 799, - 0, 789, 797, 792, 0, 0, 2810, 0, 0, 2809, - 0, 167, 175, 1118, 1123, 0, 1120, 1122, 0, 227, - 244, 1666, 1821, 1645, 1210, 1669, 1668, 1799, 1807, 0, - 2018, 0, 529, 522, 0, 0, 538, 0, 0, 1787, - 1787, 0, 0, 0, 0, 0, 535, 564, 1787, 2037, - 2038, 0, 2035, 0, 0, 2041, 0, 0, 0, 1571, - 1569, 1219, 0, 2833, 0, 172, 0, 0, 0, 1025, - 891, 916, 915, 896, 910, 0, 0, 132, 1027, 1026, - 901, 0, 923, 926, 134, 899, 477, 487, 486, 992, - 0, 0, 0, 0, 0, 0, 0, 0, 861, 0, - 0, 736, 932, 737, 0, 807, 1226, 796, 1219, 805, - 804, 802, 803, 767, 2749, 0, 0, 0, 166, 0, - 159, 1115, 0, 234, 1480, 1197, 0, 0, 815, 516, - 528, 525, 548, 541, 544, 0, 574, 568, 0, 0, - 570, 571, 569, 566, 559, 0, 557, 0, 2036, 2044, - 2043, 1529, 1534, 0, 1564, 0, 0, 0, 0, 0, - 1700, 1702, 2827, 190, 182, 0, 321, 0, 0, 146, - 908, 907, 130, 897, 909, 919, 1029, 1028, 914, 913, - 911, 912, 2749, 0, 0, 0, 890, 0, 892, 894, - 0, 873, 0, 872, 0, 869, 868, 1227, 0, 794, - 0, 2811, 0, 2813, 0, 168, 1121, 1806, 1808, 2019, - 523, 548, 0, 546, 0, 542, 539, 543, 572, 573, - 0, 556, 0, 567, 1566, 1565, 1580, 0, 1220, 1698, - 1219, 181, 191, 2834, 1219, 174, 488, 0, 890, 0, - 662, 890, 666, 668, 998, 875, 876, 874, 0, 0, - 1228, 689, 2814, 2815, 2045, 545, 0, 553, 549, 551, - 554, 562, 561, 558, 0, 0, 1703, 1701, 2828, 2818, - 157, 674, 670, 890, 664, 0, 0, 691, 690, 692, - 0, 2031, 547, 0, 0, 560, 1572, 1570, 321, 0, - 672, 871, 870, 0, 696, 686, 693, 695, 0, 2039, - 552, 550, 2829, 0, 698, 697, 694, 0, 2047, 2819, - 2046, 0, 2051, 321, 0, 0, 2058, 2820, 2049, 2050, - 2048, 2053, 0, 0, 2055, 2056, 0, 2020, 2057, 2052, - 0, 2059, 2061, 0, 2054, 0, 1219, 2060, 0, 1220, - 2062 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, + 84, 104, 1741, 0, 1128, 1140, 1134, 1788, 1788, 1788, + 1788, 402, 435, 436, 439, 440, 441, 442, 445, 443, + 444, 0, 1913, 0, 0, 1814, 0, 2114, 1824, 1545, + 1828, 1827, 0, 1399, 0, 1447, 0, 1449, 1450, 1451, + 0, 0, 0, 0, 0, 1400, 0, 1344, 1401, 1402, + 0, 1396, 0, 1397, 0, 0, 0, 0, 0, 0, + 0, 1453, 0, 1232, 0, 0, 1348, 1349, 1341, 1333, + 0, 0, 1426, 0, 0, 1350, 0, 0, 0, 0, + 1407, 0, 1427, 1505, 0, 1507, 2104, 0, 1459, 1408, + 1355, 0, 1457, 0, 1356, 1428, 1429, 1430, 1410, 1411, + 0, 1432, 0, 1412, 0, 0, 1415, 0, 0, 1358, + 1463, 1461, 0, 0, 0, 0, 1465, 1360, 0, 0, + 0, 1359, 0, 0, 0, 0, 0, 0, 0, 1362, + 0, 1342, 1462, 1464, 1418, 0, 0, 0, 0, 0, + 1371, 0, 1200, 1552, 2767, 1188, 0, 0, 2756, 2764, + 1334, 0, 0, 2105, 1242, 1247, 1240, 1244, 2765, 0, + 0, 0, 0, 1261, 1260, 0, 0, 0, 2765, 1628, + 1264, 0, 0, 1443, 1444, 1500, 0, 1728, 1725, 1738, + 0, 1789, 0, 0, 1048, 1047, 1734, 1046, 79, 0, + 0, 1964, 1965, 1958, 1977, 1953, 0, 275, 284, 277, + 281, 282, 278, 2706, 0, 2705, 0, 0, 0, 0, + 2624, 2683, 2686, 2111, 0, 0, 0, 2599, 2606, 2602, + 2607, 2600, 2601, 2605, 2608, 2609, 2596, 2603, 1649, 321, + 0, 2014, 1167, 1169, 1170, 1168, 1176, 0, 0, 2584, + 2585, 2583, 2582, 328, 369, 321, 321, 0, 509, 0, + 518, 0, 530, 0, 0, 0, 2003, 2002, 0, 1151, + 1154, 1155, 1099, 1097, 1096, 1098, 1087, 1093, 1094, 0, + 575, 1771, 0, 0, 0, 1777, 1758, 1768, 0, 1675, + 1676, 1672, 1673, 1671, 1674, 1998, 1996, 1991, 0, 253, + 2617, 0, 0, 0, 0, 0, 0, 0, 2121, 1719, + 1716, 0, 1706, 1708, 1709, 1711, 2099, 1643, 1646, 0, + 0, 0, 0, 1560, 1545, 0, 0, 1537, 1562, 0, + 1562, 1539, 1540, 1545, 1545, 1542, 1557, 0, 0, 1624, + 0, 1214, 1222, 1217, 0, 2511, 0, 2541, 0, 825, + 824, 823, 821, 2568, 0, 0, 0, 2561, 2562, 0, + 0, 2538, 2539, 2540, 0, 2543, 2520, 2521, 2522, 0, + 1922, 0, 1869, 1926, 1927, 0, 1891, 1890, 1860, 0, + 1883, 1841, 1923, 1859, 1621, 1915, 1856, 1857, 1074, 0, + 1057, 0, 321, 0, 0, 2854, 2754, 136, 826, 0, + 140, 0, 0, 178, 2831, 2817, 0, 0, 0, 0, + 0, 0, 0, 592, 0, 0, 938, 183, 186, 184, + 0, 185, 0, 0, 455, 454, 0, 1913, 448, 0, + 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, + 1913, 428, 407, 408, 411, 412, 413, 1034, 1788, 1034, + 0, 1788, 1788, 1034, 1788, 0, 0, 1788, 1788, 0, + 0, 1788, 0, 0, 1034, 0, 1788, 0, 1021, 0, + 0, 1788, 1788, 1788, 1788, 1788, 1034, 0, 0, 1788, + 1788, 494, 1788, 0, 0, 1052, 0, 0, 1788, 1788, + 1788, 1788, 0, 0, 1788, 1788, 0, 1788, 971, 1020, + 594, 621, 622, 935, 970, 972, 984, 490, 0, 1002, + 1023, 1024, 1022, 0, 2803, 0, 957, 959, 1104, 0, + 0, 321, 0, 0, 1581, 200, 321, 0, 350, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1142, 0, 0, 0, 0, 1913, 437, + 0, 1788, 397, 414, 415, 418, 419, 420, 421, 422, + 425, 423, 424, 1745, 1827, 1545, 1621, 2112, 1621, 0, + 1826, 0, 0, 1448, 1484, 0, 1511, 0, 1338, 783, + 783, 783, 1494, 768, 1498, 1489, 783, 1490, 783, 1492, + 0, 0, 0, 1297, 1313, 0, 0, 0, 0, 0, + 1455, 1452, 0, 0, 0, 0, 0, 1478, 0, 0, + 0, 1343, 0, 1438, 1460, 1458, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1466, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 843, 849, 852, 853, 855, 847, 0, 1420, + 1331, 2759, 1201, 1621, 1220, 2768, 2770, 0, 2750, 1553, + 2762, 929, 1471, 0, 1258, 1254, 0, 1252, 1627, 1273, + 1272, 0, 0, 0, 1262, 1221, 1434, 1220, 0, 1501, + 2106, 1726, 2630, 469, 638, 2688, 1724, 77, 0, 1956, + 0, 1951, 1954, 0, 0, 2703, 0, 2714, 0, 2693, + 2694, 0, 0, 2690, 0, 0, 0, 0, 0, 0, + 2594, 321, 1798, 0, 1176, 1180, 2018, 2587, 2588, 2586, + 0, 361, 361, 361, 361, 0, 510, 511, 513, 1221, + 527, 505, 0, 497, 500, 0, 509, 0, 0, 1089, + 1095, 0, 1204, 0, 1790, 1775, 1782, 1776, 0, 0, + 0, 1774, 2096, 2095, 2102, 2744, 0, 1587, 0, 0, + 2615, 2692, 0, 0, 0, 2747, 815, 1710, 0, 0, + 1647, 1648, 1645, 1663, 1654, 0, 1657, 1656, 0, 2750, + 1555, 0, 1541, 1538, 1563, 0, 1562, 1562, 1545, 0, + 1521, 1520, 1614, 1547, 1204, 1623, 0, 1625, 1640, 1213, + 0, 1218, 1226, 1225, 2097, 2104, 2509, 2549, 0, 0, + 0, 0, 2566, 2560, 2557, 2558, 0, 2519, 2525, 2524, + 2527, 2529, 1685, 1686, 1684, 1682, 1683, 1924, 1649, 1879, + 1878, 1852, 1871, 1873, 1925, 1073, 0, 1080, 1078, 1802, + 1805, 0, 0, 2844, 2856, 0, 0, 2825, 0, 0, + 0, 156, 0, 920, 922, 921, 906, 905, 0, 131, + 133, 0, 679, 128, 481, 490, 593, 596, 637, 636, + 188, 187, 192, 193, 1689, 1690, 1687, 1688, 461, 474, + 1691, 475, 449, 151, 150, 152, 153, 155, 154, 149, + 954, 0, 462, 463, 429, 0, 409, 1035, 927, 588, + 1006, 0, 680, 588, 881, 881, 586, 0, 0, 1145, + 0, 0, 1747, 0, 0, 1145, 0, 0, 0, 1788, + 0, 1014, 966, 0, 1749, 0, 1747, 1747, 1015, 0, + 0, 967, 1788, 0, 0, 0, 0, 0, 1747, 1145, + 0, 0, 0, 492, 0, 1145, 986, 1055, 1053, 1054, + 0, 1145, 1145, 0, 0, 0, 0, 627, 628, 626, + 0, 0, 0, 619, 595, 826, 968, 491, 969, 679, + 0, 1049, 676, 682, 2107, 0, 2805, 2727, 0, 0, + 161, 1108, 0, 1107, 232, 231, 0, 223, 300, 370, + 0, 222, 0, 1584, 0, 1585, 1582, 1583, 321, 354, + 109, 113, 105, 90, 86, 117, 118, 88, 89, 93, + 92, 94, 95, 98, 99, 96, 91, 97, 87, 121, + 123, 122, 100, 119, 120, 85, 468, 467, 466, 465, + 438, 0, 0, 1913, 416, 0, 1621, 1640, 2115, 1818, + 0, 1372, 1512, 0, 0, 784, 1485, 1486, 1496, 0, + 1497, 770, 769, 785, 1488, 1491, 1495, 1493, 1337, 1345, + 1394, 0, 1311, 1395, 0, 1425, 1340, 1339, 0, 0, + 0, 1378, 1405, 0, 1379, 0, 1476, 0, 0, 1352, + 0, 1354, 0, 0, 1440, 1409, 1431, 1381, 1413, 0, + 1357, 1332, 0, 1382, 0, 1387, 1385, 0, 1361, 0, + 0, 1368, 0, 1366, 0, 1367, 0, 1369, 1417, 1419, + 0, 0, 854, 840, 841, 842, 0, 844, 846, 848, + 0, 0, 1629, 1554, 2769, 1190, 2760, 1200, 0, 0, + 1473, 1250, 0, 1259, 1256, 0, 1253, 1222, 1445, 1435, + 1980, 0, 0, 292, 287, 295, 289, 291, 290, 296, + 297, 298, 299, 293, 288, 294, 286, 285, 2704, 0, + 2623, 0, 2697, 2699, 2628, 2685, 2684, 2707, 2707, 2707, + 0, 340, 0, 1755, 1171, 1176, 1180, 0, 1172, 2029, + 329, 334, 364, 362, 376, 379, 383, 381, 514, 0, + 0, 0, 534, 0, 532, 508, 0, 1152, 1100, 375, + 1220, 1772, 1784, 0, 1792, 0, 0, 1769, 1779, 0, + 0, 0, 1778, 494, 0, 254, 0, 2612, 2613, 2611, + 0, 1717, 1707, 1646, 1653, 2756, 1614, 1549, 1545, 1518, + 1545, 0, 0, 1526, 1545, 1522, 1524, 1579, 1220, 1633, + 1646, 0, 1649, 1224, 1223, 0, 2571, 2570, 2564, 2563, + 2565, 2544, 0, 0, 1870, 1649, 1866, 0, 0, 0, + 1621, 0, 373, 2626, 202, 652, 653, 651, 650, 0, + 2832, 0, 0, 0, 129, 0, 0, 482, 0, 0, + 0, 654, 655, 657, 658, 2029, 489, 826, 597, 148, + 410, 681, 928, 1145, 0, 0, 0, 881, 675, 588, + 927, 882, 588, 588, 0, 1004, 1030, 1031, 0, 0, + 605, 602, 0, 614, 987, 978, 988, 999, 1001, 0, + 604, 629, 0, 0, 617, 1747, 0, 1012, 0, 0, + 599, 0, 0, 648, 649, 647, 623, 630, 1032, 1033, + 600, 601, 0, 0, 1636, 1638, 1646, 607, 606, 1696, + 1695, 616, 0, 603, 0, 1018, 994, 0, 645, 643, + 640, 642, 641, 646, 644, 618, 609, 608, 611, 610, + 613, 612, 615, 631, 983, 0, 1034, 1034, 1003, 0, + 2110, 0, 1051, 1005, 0, 659, 677, 660, 0, 0, + 635, 634, 632, 633, 0, 0, 2728, 0, 0, 0, + 956, 0, 164, 162, 172, 1110, 1111, 0, 0, 0, + 0, 0, 0, 218, 0, 1179, 0, 0, 0, 110, + 112, 0, 114, 116, 0, 106, 108, 399, 464, 417, + 1827, 1820, 1664, 0, 1513, 0, 0, 0, 0, 831, + 0, 0, 786, 1499, 748, 783, 1308, 768, 1301, 1303, + 1299, 0, 749, 1302, 783, 0, 1305, 1307, 1298, 0, + 1456, 0, 0, 0, 1479, 0, 0, 0, 0, 0, + 0, 0, 1335, 0, 1436, 0, 0, 0, 0, 0, + 0, 1365, 1363, 1364, 838, 1422, 0, 851, 845, 843, + 850, 0, 1624, 1189, 2763, 930, 1255, 0, 1446, 1983, + 0, 1981, 1957, 1984, 0, 2698, 2696, 2695, 0, 0, + 2712, 2712, 2712, 1797, 1796, 0, 1795, 321, 336, 339, + 1799, 1173, 1181, 2031, 2030, 0, 0, 512, 515, 0, + 507, 0, 531, 0, 498, 576, 0, 0, 0, 1793, + 1781, 2750, 1770, 1773, 2104, 1544, 1588, 2614, 816, 2032, + 1644, 1550, 1548, 1556, 0, 1514, 1545, 1545, 0, 1514, + 0, 0, 1546, 1576, 1558, 1634, 1635, 0, 1630, 1632, + 1626, 1697, 2098, 2526, 2528, 1872, 1079, 1081, 1804, 1640, + 1806, 0, 203, 205, 206, 0, 213, 391, 390, 0, + 0, 0, 0, 0, 0, 0, 479, 476, 679, 478, + 578, 598, 989, 0, 588, 877, 878, 927, 902, 2107, + 927, 927, 0, 0, 0, 977, 0, 1131, 0, 982, + 822, 624, 0, 973, 1013, 1046, 0, 625, 1049, 975, + 0, 1639, 493, 974, 996, 980, 1976, 1007, 1050, 859, + 762, 713, 704, 783, 707, 706, 783, 718, 768, 764, + 0, 768, 768, 741, 740, 758, 744, 726, 831, 831, + 725, 761, 831, 745, 743, 747, 0, 749, 768, 754, + 742, 746, 763, 739, 0, 760, 783, 783, 783, 722, + 759, 831, 0, 752, 783, 683, 768, 831, 836, 0, + 0, 783, 785, 2109, 2807, 0, 2809, 171, 160, 0, + 0, 958, 960, 0, 0, 961, 1116, 0, 226, 301, + 822, 302, 0, 229, 1175, 1586, 321, 102, 0, 103, + 0, 101, 0, 0, 1815, 1373, 781, 779, 782, 780, + 829, 834, 832, 830, 0, 836, 1487, 0, 0, 1310, + 1304, 750, 1309, 1300, 831, 1398, 1376, 1377, 1406, 0, + 1477, 1468, 1404, 0, 1353, 1437, 0, 0, 1414, 1383, + 1386, 1384, 1389, 1390, 0, 1421, 0, 1640, 1257, 1979, + 0, 0, 1955, 2715, 2700, 0, 0, 2711, 2709, 0, + 2710, 2708, 2676, 0, 2621, 2622, 2620, 2604, 0, 321, + 341, 0, 0, 335, 1220, 520, 0, 537, 536, 533, + 1200, 1783, 1785, 1791, 1780, 0, 2040, 0, 1527, 0, + 1531, 1536, 1532, 0, 1523, 0, 1580, 0, 1200, 1646, + 0, 1712, 1664, 2826, 0, 0, 2824, 216, 214, 215, + 0, 209, 211, 0, 394, 392, 393, 0, 0, 0, + 0, 0, 1646, 925, 0, 483, 2750, 592, 656, 579, + 0, 991, 0, 927, 902, 2107, 0, 661, 0, 665, + 667, 587, 1017, 0, 1049, 979, 1000, 1019, 1011, 1010, + 0, 1009, 1145, 1637, 995, 997, 1092, 0, 0, 863, + 712, 705, 723, 721, 772, 765, 0, 772, 772, 732, + 748, 727, 0, 831, 738, 731, 750, 753, 755, 757, + 772, 0, 831, 720, 719, 729, 716, 772, 787, 766, + 751, 831, 709, 837, 836, 711, 831, 836, 772, 772, + 0, 2806, 0, 2804, 0, 158, 163, 173, 174, 948, + 0, 1117, 1113, 1114, 1109, 0, 806, 0, 224, 225, + 237, 236, 228, 0, 321, 111, 115, 107, 2428, 1665, + 1821, 835, 828, 833, 0, 1306, 1480, 1646, 0, 1439, + 1441, 839, 0, 1649, 1982, 0, 2682, 2681, 2680, 2677, + 0, 0, 0, 0, 0, 0, 0, 2713, 2717, 1794, + 0, 0, 0, 528, 0, 0, 562, 577, 0, 0, + 0, 0, 2033, 2035, 0, 1718, 1551, 0, 0, 0, + 0, 0, 1568, 1569, 0, 0, 1574, 1578, 1559, 1631, + 1698, 1211, 1713, 1803, 0, 204, 207, 2833, 213, 212, + 1220, 169, 0, 0, 892, 0, 924, 0, 894, 480, + 490, 0, 485, 0, 0, 990, 678, 673, 669, 0, + 903, 0, 663, 0, 0, 0, 0, 0, 0, 0, + 1016, 2074, 1008, 494, 976, 0, 981, 620, 0, 862, + 0, 867, 776, 777, 778, 733, 773, 775, 0, 931, + 735, 703, 728, 756, 734, 0, 730, 717, 795, 0, + 0, 0, 0, 791, 0, 857, 0, 798, 684, 0, + 685, 788, 790, 0, 0, 0, 0, 724, 708, 710, + 714, 715, 701, 702, 2108, 2808, 1196, 1185, 2813, 165, + 962, 321, 1112, 0, 1119, 245, 243, 321, 233, 241, + 235, 0, 242, 303, 230, 1666, 0, 1220, 1816, 771, + 0, 1482, 1351, 1423, 1697, 1985, 2678, 2718, 2721, 2719, + 2720, 2723, 1668, 0, 2722, 2716, 0, 1542, 1221, 0, + 521, 0, 524, 526, 540, 0, 1788, 1788, 0, 0, + 1788, 1788, 1788, 1788, 555, 563, 565, 0, 0, 0, + 0, 0, 2034, 0, 0, 2041, 2043, 1528, 0, 1533, + 0, 1525, 1564, 1564, 1575, 0, 1195, 2827, 181, 210, + 2818, 161, 170, 0, 890, 0, 1788, 0, 1025, 893, + 918, 900, 0, 1646, 0, 1025, 895, 917, 898, 2029, + 0, 2744, 993, 0, 0, 0, 671, 0, 0, 0, + 0, 2076, 2075, 985, 0, 860, 0, 864, 865, 866, + 0, 858, 774, 831, 0, 831, 801, 800, 1227, 793, + 808, 688, 0, 0, 799, 0, 789, 797, 792, 0, + 0, 2811, 0, 0, 2810, 0, 167, 175, 1118, 1123, + 0, 1120, 1122, 0, 227, 244, 1667, 1822, 1646, 1211, + 1670, 1669, 1800, 1808, 0, 2019, 0, 529, 522, 0, + 0, 538, 0, 0, 1788, 1788, 0, 0, 0, 0, + 0, 535, 564, 1788, 2038, 2039, 0, 2036, 0, 0, + 2042, 0, 0, 0, 1572, 1570, 1220, 0, 2834, 0, + 172, 0, 0, 0, 1025, 891, 916, 915, 896, 910, + 0, 0, 132, 1027, 1026, 901, 0, 923, 926, 134, + 899, 477, 487, 486, 992, 0, 0, 0, 0, 0, + 0, 0, 0, 861, 0, 0, 736, 932, 737, 0, + 807, 1227, 796, 1220, 805, 804, 802, 803, 767, 2750, + 0, 0, 0, 166, 0, 159, 1115, 0, 234, 1481, + 1198, 0, 0, 815, 516, 528, 525, 548, 541, 544, + 0, 574, 568, 0, 0, 570, 571, 569, 566, 559, + 0, 557, 0, 2037, 2045, 2044, 1530, 1535, 0, 1565, + 0, 0, 0, 0, 0, 1701, 1703, 2828, 190, 182, + 0, 321, 0, 0, 146, 908, 907, 130, 897, 909, + 919, 1029, 1028, 914, 913, 911, 912, 2750, 0, 0, + 0, 890, 0, 892, 894, 0, 873, 0, 872, 0, + 869, 868, 1228, 0, 794, 0, 2812, 0, 2814, 0, + 168, 1121, 1807, 1809, 2020, 523, 548, 0, 546, 0, + 542, 539, 543, 572, 573, 0, 556, 0, 567, 1567, + 1566, 1581, 0, 1221, 1699, 1220, 181, 191, 2835, 1220, + 174, 488, 0, 890, 0, 662, 890, 666, 668, 998, + 875, 876, 874, 0, 0, 1229, 689, 2815, 2816, 2046, + 545, 0, 553, 549, 551, 554, 562, 561, 558, 0, + 0, 1704, 1702, 2829, 2819, 157, 674, 670, 890, 664, + 0, 0, 691, 690, 692, 0, 2032, 547, 0, 0, + 560, 1573, 1571, 321, 0, 672, 871, 870, 0, 696, + 686, 693, 695, 0, 2040, 552, 550, 2830, 0, 698, + 697, 694, 0, 2048, 2820, 2047, 0, 2052, 321, 0, + 0, 2059, 2821, 2050, 2051, 2049, 2054, 0, 0, 2056, + 2057, 0, 2021, 2058, 2053, 0, 2060, 2062, 0, 2055, + 0, 1220, 2061, 0, 1221, 2063 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -4321, -4321, -4321, -4321, 1746, 3483, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, 1895, -4321, -4321, -4321, -4321, -4321, - 1541, -4321, 366, -4321, 369, -4321, 371, -2530, -485, 3353, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -103, 1212, 3312, -4321, 267, -4321, -85, -4321, -4321, -4321, - -3524, -199, -371, -4321, 24, 20, 3297, -364, -4293, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -2363, -4321, - -4321, -4321, 97, -4321, -4321, -567, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -145, 404, 2161, -4321, -4321, -4321, - 4383, -4321, 3827, -4321, -1919, 2378, -4321, -4321, -4321, -4321, - -4321, 2468, -1839, -4321, -4321, -4321, 1430, -4321, -4321, -4321, - -920, 36, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, 608, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, 2153, -4321, - -4321, 3748, -4321, -4321, -4321, 1412, -4321, -4321, -4321, -4321, - -4321, -4321, -1328, -4321, 1884, 1883, -4321, 1886, -4321, -263, - -592, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, 3286, -4321, - -4321, -4321, -2505, -4321, -4321, -2620, 2767, -4321, -1858, -4321, - -4321, -2080, -4321, -4321, -2008, 664, -4321, -4321, 1371, -349, - -4321, -1610, -2123, -2097, -4321, -4321, -4321, -2177, -2170, -804, - 2524, -1247, -2488, -4321, -4321, -4321, -4321, -72, -4321, -4321, - 118, 1656, 2200, -4321, -2715, -4321, -4321, 799, -4321, -4321, - 1421, 627, 1423, -4321, 971, 3027, -1325, -4321, -4321, -4321, - -4321, -4321, -4321, -115, 184, -208, -4321, -4046, 635, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -2999, -4321, -4321, - -4321, -358, -4321, -4321, -296, -4321, -4321, -333, -4321, 10, - -2507, -4321, -4321, -4321, -4321, 2286, -1535, -4321, -628, -4321, - 329, 1691, -2924, -2117, -4321, -1032, -1024, -3163, -4321, -4321, - -4321, -4321, 1214, -4321, 586, 1687, -2594, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, 1215, -4321, -4321, -3346, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -353, -4321, -164, 802, - -4321, -3173, 1130, 533, -4321, -4321, -4321, -4321, -629, -3189, - -1164, -4321, 127, -2636, -2758, 502, -4321, -4321, 106, -3731, - -4321, -601, -2289, -2558, -178, -4321, -4321, 119, -3554, 1796, - -4321, 471, -1435, -2285, 1562, -4321, -4321, 1088, -4321, -1261, - 1090, -4321, -4321, -4321, 1104, -4321, -273, -4321, -4321, -4321, - -4321, -4320, -4321, -1624, -2898, -4321, -4321, 4450, 4452, -2639, - -211, -210, -4321, -4321, -4321, 373, -4321, -4321, -2199, -92, - 22, 31, -2614, -3725, 204, -3377, -4321, 331, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, 1739, -915, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -2674, -3070, -4321, -4321, 1268, - -3340, -2217, -2206, -2580, 3475, -4321, -4321, -4321, -4321, 3405, - -2404, -2886, -4321, -4321, -4321, -4321, -4321, -4321, -4321, 2930, - 1076, -4321, -4321, 1860, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, 363, 1972, -4321, -4321, -4321, -4321, -4321, - 2288, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -122, - -4321, -4321, -4321, -4321, -4321, 629, 2831, -4321, -4321, -4321, - -4321, -9, -4321, -4321, -4321, -4321, 2521, -4321, -4321, -4321, - -4321, 2859, -4321, -4321, -4321, -4321, -4321, -4321, 1540, -4321, - 2018, -4321, -1620, -4321, -4321, 1079, -147, 1959, -627, -4321, - 2113, -4321, 153, -4321, 3486, -4321, -4321, -3271, 3594, -4321, - -4321, -2663, -4321, 3571, -1487, -2893, 2477, -40, -141, -2058, - 1134, -84, 1632, 1560, 4587, -4321, -1229, -1211, -4321, -4321, - -2, -4321, -4321, -4321, -4321, -4321, -4321, 2218, 2225, -654, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, 1599, -4321, -4321, -4321, -4321, -1309, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -995, -4321, -2226, -4321, -4321, -4321, - -512, -4321, 3359, -4321, -4321, -4321, -2456, -1530, 1957, 1050, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, 1967, -4321, -1706, - -4321, -2916, -4321, -4321, -4321, -4321, 1623, -4321, -4321, -4321, - -4321, -4321, -4321, -1848, -4321, -2078, 101, -4321, 280, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -183, 874, -181, -3854, - -1212, 1537, -4321, -4321, -1361, 3396, -1910, -4321, 800, -4321, - 2124, 1173, -4321, -4321, -4321, -4321, 667, -2961, 2978, -4321, - -4321, -3394, -1014, -4321, 2980, -4321, -1453, 1527, 476, -4321, - -1629, -1196, -2348, -3177, -2652, -4321, 1339, 176, -4321, -4321, - -4321, -171, -4321, -4321, -4321, 1538, -4321, 484, 486, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -550, - -969, -4321, -4321, 2285, -2634, -498, 4542, 0, -4321, -4321, - 5, -4321, -4321, -4321, -4321, 3211, 3162, 2086, -4321, -4321, - -2494, -4321, -4321, 2044, -4321, 782, -985, -928, 1116, -4321, - -4321, 1115, -3477, -4321, -4321, 15, -4321, -4321, -4321, 1063, - -4321, -46, 4022, 21, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, 2898, -1141, 3927, -4321, -4321, -4321, -4321, -4321, - -4321, 2463, -4321, -4321, -4321, -4321, -4321, -4321, 3082, 4037, - -606, -1450, -4321, -830, 2470, 1964, -831, -4321, -4321, -4321, - 3537, 4045, -4321, -4321, 4546, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, 2701, 705, -4321, -4321, 573, -4321, - -4321, -4321, -4321, 3184, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, 1165, -179, -4321, - 356, -195, -4321, 180, -4321, -4321, -4321, -4321, -4321, -224, - -4321, -4321, -228, -4321, -1110, 3861, -1467, 279, -1352, -2774, - -4321, 1149, 3160, -2989, -703, -1262, -1270, -3028, -15, -4321, - -4321, 3755, 30, -467, -1832, -6, -853, -107, -624, -613, - -894, -4321, -515, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, 2006, -4321, -4321, -4321, 1112, -4321, - 4075, -4321, 2797, -1479, 4076, -586, 2551, 2023, 2025, -4321, - -4321, -4321, -4321, -1976, -4321, -4321, 186, -4321, 2673, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, -4321, -4321, -4321, -4321, 3050, -459, -477, 3195, - 4093, 3716, -4321, 3287, -4321, -4321, -4321, -4321, -4321, 411, - -4321, 427, 2091, -1546, -2553, -4321, -4321, 2173, 703, -4321, - 1696, -626, -649, -4321, -4321, 407, -4321, -4321, -4321, 1410, - 1536, 4103, 3715, -4321, -4321, -4321, -4321, -4321, -2987, -975, - -4321, -3693, -2615, -4321, -4321, -4321, -2331, -3267, -4321, -4321, - -1121, -4321, -4321, -4321, -4321, -2229, -4321, -4321, -4321, 3, - 4058, 4061, 4063, -4321, -875, -4321, -4321, -4321, -4321, -4321, - -4321, -4321, 3623, -4321, -4321, -4321, -4321, -4321, 3065, 3624, - -4321, -4321, -4321, -4321, -4321, 3625, -4321, -4321, -4321, -4321, - -4321, 1713, -4321, -4321, -4321, -4321, -4321, -4321, -4321, -4321, - -4321 + -4035, -4035, -4035, -4035, 1718, 3435, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, 1864, -4035, -4035, -4035, -4035, -4035, + 1515, -4035, 334, -4035, 340, -4035, 339, -2541, -477, 3325, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -133, 1174, 3275, -4035, 228, -4035, -124, -4035, -4035, -4035, + -3505, -242, -409, -4035, 0, 20, 3259, -402, -3589, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -2867, -4035, + -4035, -4035, 57, -4035, -4035, -578, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -187, 367, 2072, -4035, -4035, -4035, + 4348, -4035, 3787, -4035, -1924, 2337, -4035, -4035, -4035, -4035, + -4035, 2426, -1834, -4035, -4035, -4035, 1389, -4035, -4035, -4035, + -922, 29, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, 570, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, 2116, -4035, + -4035, 3714, -4035, -4035, -4035, 1371, -4035, -4035, -4035, -4035, + -4035, -4035, -1306, -4035, 1849, 1853, -4035, 1847, -4035, -144, + 528, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, 3241, -4035, + -4035, -4035, -2326, -4035, -4035, -2600, 2724, -4035, -1947, -4035, + -4035, -2083, -4035, -4035, -1927, -704, -4035, -4035, 1457, -343, + -4035, -1562, -2138, -2136, -4035, -4035, -4035, -2194, -2176, -769, + 2474, -1266, -2521, -4035, -4035, -4035, -4035, -113, -4035, -4035, + 69, 1605, 2157, -4035, -2718, -4035, -4035, 757, -4035, -4035, + 1380, 582, 1377, -4035, 926, 2984, -1330, -4035, -4035, -4035, + -4035, -4035, -4035, -163, 146, -257, -4035, -4034, 594, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -2858, -4035, -4035, + -4035, -399, -4035, -4035, -337, -4035, -4035, -375, -4035, -33, + -2542, -4035, -4035, -4035, -4035, 2243, -1536, -4035, -586, -4035, + 286, 1646, -2607, -2130, -4035, -1039, -1024, -3159, -4035, -4035, + -4035, -4035, 1169, -4035, 541, 1644, -2608, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, 1172, -4035, -4035, -3371, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -400, -4035, -210, 758, + -4035, -3174, 1084, 489, -4035, -4035, -4035, -4035, -1827, -3177, + -1391, -4035, 83, -2760, -2736, 461, -4035, -4035, 60, -3837, + -4035, -602, -2297, -2575, -218, -4035, -4035, 77, -2833, 1753, + -4035, 429, -1053, -2841, 1521, -4035, -4035, 1042, -4035, -2211, + 1044, -4035, -4035, -4035, 1055, -4035, -313, -4035, -4035, -4035, + -4035, -3014, -4035, -1659, -2948, -4035, -4035, 4406, 4407, -2164, + -260, -259, -4035, -4035, -4035, 322, -4035, -4035, -2141, -138, + -28, -20, -2639, -3698, 155, -3352, -4035, 280, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, 1687, -1286, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -3322, -3068, -4035, -4035, 1220, + -2993, -2221, -2217, -2569, 3428, -4035, -4035, -4035, -4035, 3361, + -2410, -2813, -4035, -4035, -4035, -4035, -4035, -4035, -4035, 2889, + 1206, -4035, -4035, 1812, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, 313, 1925, -4035, -4035, -4035, -4035, -4035, + 2245, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -173, + -4035, -4035, -4035, -4035, -4035, 579, 2789, -4035, -4035, -4035, + -4035, -9, -4035, -4035, -4035, -4035, 2469, -4035, -4035, -4035, + -4035, 2811, -4035, -4035, -4035, -4035, -4035, -4035, 1490, -4035, + 1966, -4035, -1634, -4035, -4035, 1029, -147, 1910, -628, -4035, + 2063, -4035, 111, -4035, 3442, -4035, -4035, -3273, 3537, -4035, + -4035, -2633, -4035, 3533, -1498, -2875, 2431, 294, -141, -2063, + 1079, -128, -347, 1344, 5109, -4035, -1225, -1219, -4035, -4035, + -2, -4035, -4035, -4035, -4035, -4035, -4035, 2170, 2179, -638, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, 1550, -4035, -4035, -4035, -4035, -1318, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -993, -4035, -2235, -4035, -4035, -4035, + -512, -4035, 3309, -4035, -4035, -4035, -2463, -1515, 1912, 1006, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, 1914, -4035, -1719, + -4035, -2935, -4035, -4035, -4035, -4035, 1572, -4035, -4035, -4035, + -4035, -4035, -4035, -1844, -4035, -2072, 52, -4035, 230, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -233, 825, -230, -3119, + -1214, 1764, -4035, -4035, -1375, 3356, -1949, -4035, 747, -4035, + 2080, 1128, -4035, -4035, -4035, -4035, 623, -2971, 2935, -4035, + -4035, -3381, -1015, -4035, 2936, -4035, -1467, 1481, 444, -4035, + -1527, -1197, -2258, -3208, -2657, -4035, 1307, 135, -4035, -4035, + -4035, -204, -4035, -4035, -4035, 1504, -4035, 454, 455, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -580, + -955, -4035, -4035, 2254, -1899, -489, 4514, 1, -4035, -4035, + 2, -4035, -4035, -4035, -4035, 3180, 3129, 2052, -4035, -4035, + -2536, -4035, -4035, 2011, -4035, 750, -999, 1218, 1082, -4035, + -4035, 1086, -3479, -4035, -4035, 4, -4035, -4035, -4035, 1034, + -4035, -83, 3989, 5, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, 2872, -1151, 3900, -4035, -4035, -4035, -4035, -4035, + -4035, 2435, -4035, -4035, -4035, -4035, -4035, -4035, 3054, 4011, + -607, -1439, -4035, -849, 2436, 1927, -846, -4035, -4035, -4035, + 3508, 4014, -4035, -4035, 4517, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, 2664, 674, -4035, -4035, 547, -4035, + -4035, -4035, -4035, 3152, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, 1139, -205, -4035, + 327, -222, -4035, 152, -4035, -4035, -4035, -4035, -4035, -252, + -4035, -4035, -254, -4035, -1105, 3835, -1471, 255, -1362, -2770, + -4035, 1121, 3132, -2970, -705, -1228, -1256, -2899, -15, -4035, + -4035, 3758, 30, -473, -1814, -6, -853, -107, -627, -634, + -844, -4035, -515, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, 1978, -4035, -4035, -4035, 1085, -4035, + 4052, -4035, 2766, -1493, 4053, -584, 2524, 1996, 1999, -4035, + -4035, -4035, -4035, -1962, -4035, -4035, 190, -4035, 2644, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, -4035, -4035, -4035, -4035, 3026, -483, -481, 3170, + 4071, 3712, -4035, 3262, -4035, -4035, -4035, -4035, -4035, 384, + -4035, 927, 2065, -1551, -2411, -4035, -4035, 2150, 823, -4035, + 1664, -487, -789, -4035, -4035, 378, -4035, -4035, -4035, 1385, + 1540, 4081, 3707, -4035, -4035, -4035, -4035, -4035, -3001, -982, + -4035, -3700, -2595, -4035, -4035, -4035, -2336, -3281, -4035, -4035, + -1104, -4035, -4035, -4035, -4035, -2183, -4035, -4035, -4035, -1, + 4038, 4042, 4045, -4035, -866, -4035, -4035, -4035, -4035, -4035, + -4035, -4035, 3584, -4035, -4035, -4035, -4035, -4035, 3048, 3587, + -4035, -4035, -4035, -4035, -4035, 3590, -4035, -4035, -4035, -4035, + -4035, 1660, -4035, -4035, -4035, -4035, -4035, -4035, -4035, -4035, + -4035 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 64, 637, 1639, 65, 66, 67, 68, 69, 1454, - 70, 868, 1358, 1950, 1951, 71, 571, 72, 1717, 2314, - 2315, 3739, 3740, 3733, 3734, 3736, 3737, 2316, 697, 698, - 73, 2718, 3907, 3590, 3591, 2208, 645, 646, 1110, 2712, - 2741, 2742, 1648, 3587, 3715, 4424, 3719, 4571, 4680, 4506, - 2821, 4020, 4425, 4426, 566, 2707, 1683, 4623, 2236, 4724, - 2237, 74, 690, 1160, 1710, 1711, 3896, 3897, 3898, 4140, - 4145, 4146, 4147, 4148, 2826, 930, 2272, 2827, 3725, 4250, - 4257, 4258, 3301, 4432, 4433, 4434, 4255, 974, 4435, 75, - 597, 598, 976, 1490, 1966, 1491, 76, 77, 565, 1381, - 1382, 1383, 1384, 2517, 1967, 2512, 2513, 3471, 3302, 4253, - 931, 932, 79, 572, 933, 934, 935, 1438, 936, 937, - 938, 939, 3035, 940, 1434, 3495, 909, 910, 2544, 3486, - 3834, 80, 535, 693, 694, 1716, 2289, 695, 2290, 2832, - 3732, 696, 1162, 2286, 1164, 3499, 941, 2559, 942, 1430, - 81, 1153, 1702, 1703, 943, 1082, 2200, 963, 2050, 3500, - 1443, 944, 2560, 2562, 2561, 82, 582, 623, 592, 3904, - 4152, 669, 670, 708, 2337, 671, 1178, 1128, 1685, 2261, - 2262, 2747, 2748, 2867, 2868, 2869, 2253, 2254, 2255, 2326, - 2327, 2328, 2243, 2244, 2245, 1689, 2240, 2241, 672, 1129, - 1139, 2256, 2257, 2258, 2873, 2330, 2331, 2332, 2333, 2259, - 1942, 2260, 3193, 3178, 4162, 4161, 3179, 3914, 4526, 4742, - 3600, 3601, 3282, 3667, 2278, 83, 585, 952, 1451, 2568, - 1452, 2570, 3040, 3041, 3042, 2032, 2033, 4110, 2037, 2567, - 4298, 4690, 4466, 4467, 3044, 4465, 3048, 3508, 3509, 3846, - 4112, 4301, 4695, 4595, 4776, 4693, 4772, 4694, 4774, 4844, - 4818, 4819, 4606, 4705, 4706, 4780, 4821, 4479, 4480, 4481, - 2590, 3057, 4115, 4165, 2702, 1675, 1676, 3620, 1102, 84, - 3180, 2804, 3181, 3182, 3690, 2806, 2807, 2998, 1565, 3680, - 3651, 3584, 3595, 3596, 3597, 3598, 3599, 4356, 4533, 4358, - 4359, 4530, 4652, 4529, 3700, 3613, 3216, 3217, 3287, 3703, - 4223, 4403, 4404, 4839, 4855, 4856, 4857, 85, 949, 4025, - 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4412, 3365, 3366, - 4380, 4381, 4382, 3360, 3361, 3758, 4405, 4406, 4407, 4026, - 4554, 4049, 1530, 1531, 3536, 1543, 1544, 2655, 2116, 2656, - 1679, 4050, 4051, 4230, 3426, 4079, 3432, 3433, 3434, 2957, - 2958, 2959, 2960, 2961, 2454, 4408, 3702, 4194, 4373, 4376, - 4546, 4755, 3614, 3218, 3617, 1059, 647, 3219, 3220, 4629, - 4513, 4520, 4630, 4521, 4514, 4172, 2715, 4631, 4632, 4633, - 4523, 4516, 3171, 4156, 4157, 3606, 3445, 4383, 86, 142, - 2264, 1120, 1131, 1127, 1150, 676, 2268, 1132, 2822, 3295, - 4244, 659, 2808, 4187, 3932, 4191, 2809, 3630, 2810, 4166, - 4350, 2811, 3949, 4189, 4370, 3631, 3632, 2812, 2813, 2814, - 4637, 4638, 4639, 3221, 1418, 674, 675, 1143, 1144, 1145, - 2501, 3698, 3265, 87, 2196, 2191, 88, 1072, 1073, 1074, - 1610, 1611, 2194, 2195, 2695, 3153, 89, 700, 1721, 1464, - 2048, 90, 961, 2581, 2582, 2583, 3054, 91, 1152, 1699, - 1700, 2271, 3298, 3722, 4021, 4249, 4429, 4245, 4575, 4576, - 92, 702, 1171, 93, 540, 1729, 1730, 1731, 2319, 94, - 1445, 150, 95, 960, 1457, 1460, 1461, 96, 689, 1154, - 1155, 1156, 1157, 2274, 97, 2013, 2547, 2548, 2549, 2550, - 1707, 2828, 1708, 1709, 2283, 3493, 98, 99, 633, 634, - 2461, 2462, 603, 986, 604, 605, 606, 2966, 2967, 2968, - 2093, 1003, 1004, 1005, 1513, 1515, 1516, 1607, 1517, 2029, - 3116, 4665, 1214, 1210, 830, 831, 832, 833, 1305, 1306, - 3711, 834, 1315, 1906, 3377, 3773, 4059, 1764, 1765, 835, - 836, 837, 838, 839, 840, 1933, 3398, 3399, 3789, 2487, - 2488, 2489, 841, 2375, 3383, 2389, 842, 1298, 1891, 1821, - 3781, 3391, 4064, 4271, 1749, 2351, 2905, 3754, 3368, 2993, - 2456, 1237, 1238, 1195, 2358, 1755, 2094, 2095, 2096, 2097, - 2098, 3875, 3876, 4312, 4124, 4314, 4128, 2637, 2638, 2054, - 2055, 2099, 2100, 3093, 4122, 2457, 2458, 2459, 3094, 3543, - 3108, 3109, 4133, 2628, 2101, 3100, 4619, 4320, 4321, 4717, - 4716, 4322, 4131, 4132, 3877, 3878, 3309, 3310, 3311, 3071, - 1811, 1812, 1819, 1411, 1412, 1750, 2103, 2642, 3113, 3556, - 2478, 2644, 3554, 3883, 2817, 3659, 3660, 989, 990, 2079, - 2622, 3087, 1506, 1507, 1508, 2085, 3088, 3089, 4039, 4459, - 4256, 2962, 3814, 3194, 1782, 1783, 3666, 4136, 4500, 4719, - 4720, 4721, 2076, 2077, 2617, 2618, 2619, 991, 992, 1503, - 2078, 3081, 3864, 100, 547, 101, 1948, 2996, 1355, 2509, - 1169, 1469, 1736, 1737, 858, 854, 561, 102, 573, 2545, - 103, 593, 2052, 914, 966, 1470, 1471, 2591, 3058, 3065, - 2592, 3070, 3856, 3060, 3516, 3517, 2496, 2497, 3061, 3519, - 3853, 3830, 3831, 3488, 4106, 104, 621, 3575, 3154, 3155, - 4587, 4588, 967, 105, 546, 1182, 2881, 4265, 1742, 2339, - 4443, 1183, 1184, 2342, 713, 714, 106, 1077, 617, 1589, - 1590, 1591, 2178, 107, 609, 1060, 3143, 3570, 2162, 956, - 1352, 1570, 1063, 1571, 2148, 2677, 1554, 108, 1116, 1115, - 686, 109, 110, 654, 151, 1671, 111, 869, 1374, 1962, - 3006, 3007, 3456, 1375, 1376, 2510, 2506, 3815, 3816, 4087, - 112, 594, 971, 972, 1475, 1473, 2602, 2057, 113, 587, - 957, 2043, 114, 576, 919, 1422, 2012, 115, 116, 117, - 921, 3494, 4688, 4814, 580, 2015, 1426, 3915, 4121, 4307, - 4308, 4310, 4490, 4491, 4841, 4872, 4880, 4876, 4883, 4884, - 4887, 4891, 4892, 844, 1088, 1089, 845, 4365, 846, 847, - 848, 3066, 3067, 2623, 849, 3068, 850, 3288, 1170, 1739, - 569, 531, 666, 1090, 2614, 852, 946, 1123, 1458, 1982, - 1983, 533, 534, 118, 608, 1007, 2111, 1520, 1021, 1548, - 1538, 1547, 2136, 2672, 2139, 2673, 2674, 3567, 3134, 3568, - 3135, 1066, 2132, 1521, 3136, 1522, 2125, 2126, 2127, 2128, - 3128, 1536, 2122, 2145, 119, 922, 539, 1428, 1429, 2556, - 120, 620, 121, 1413, 2003, 2004, 2541, 3024, 2542, 122, - 980, 981, 123, 897, 2705, 2525, 1938, 1126, 1939, 1989, - 900, 1387, 901, 902, 1402, 1396, 1405, 1399, 4285, 4096, - 4097, 2529, 1946, 1984, 2066, 3016, 3823, 1985, 1976, 2519, - 2520, 3825, 4099, 3475, 4292, 4293, 124, 155, 125, 4725, - 542, 705, 1177, 1498, 126, 127, 128, 129, 1501, 1632, - 2612, 1633, 1634, 1635, 1636, 2206, 2073, 1887, 1888, 3443, - 1295, 1296, 2464, 2969, 2970, 1006, 1105, 1659, 1650, 143, - 144, 145, 146, 1147, 1148, 3291, 3710, 4010, 4238, 4239, - 4423, 4569, 1652, 3165, 4624, 4849, 4873, 1653, 1654, 1655, - 3579, 4329, 4622, 4791, 4848, 1656, 3164, 3901, 4503, 4726, - 130, 1091, 631, 1630, 1625, 1627, 2203, 2700, 131, 132, + -1, 64, 638, 1642, 65, 66, 67, 68, 69, 1457, + 70, 870, 1361, 1954, 1955, 71, 572, 72, 1721, 2319, + 2320, 3744, 3745, 3738, 3739, 3741, 3742, 2321, 699, 700, + 73, 2723, 3912, 3595, 3596, 2212, 646, 647, 1112, 2717, + 2746, 2747, 1651, 3592, 3720, 4429, 3724, 4576, 4685, 4511, + 2826, 4025, 4430, 4431, 567, 2712, 1686, 4628, 2240, 4729, + 2241, 74, 692, 1163, 1714, 1715, 3901, 3902, 3903, 4145, + 4150, 4151, 4152, 4153, 2831, 932, 2276, 2832, 3730, 4255, + 4262, 4263, 3306, 4437, 4438, 4439, 4260, 976, 4440, 75, + 598, 599, 978, 1493, 1970, 1494, 76, 77, 566, 1384, + 1385, 1386, 1387, 2522, 1971, 2517, 2518, 3476, 3307, 4258, + 933, 934, 79, 573, 935, 936, 937, 1441, 938, 939, + 940, 941, 3040, 942, 1437, 3500, 911, 912, 2549, 3491, + 3839, 80, 536, 695, 696, 1720, 2294, 697, 2295, 2837, + 3737, 698, 1165, 2291, 1167, 3504, 943, 2564, 944, 1433, + 81, 1155, 1705, 1706, 945, 1084, 2204, 965, 2054, 3505, + 1446, 946, 2565, 2567, 2566, 82, 583, 624, 593, 3909, + 4157, 670, 671, 710, 2342, 672, 1181, 1130, 1688, 2265, + 2266, 2752, 2753, 2872, 2873, 2874, 2257, 2258, 2259, 2331, + 2332, 2333, 2247, 2248, 2249, 1692, 2244, 2245, 673, 1131, + 1141, 2260, 2261, 2262, 2878, 2335, 2336, 2337, 2338, 2263, + 1946, 2264, 3198, 3183, 4167, 4166, 3184, 3919, 4531, 4747, + 3605, 3606, 3287, 3672, 2283, 83, 586, 954, 1454, 2573, + 1455, 2575, 3045, 3046, 3047, 2036, 2037, 4115, 2041, 2572, + 4303, 4695, 4471, 4472, 3049, 4470, 3053, 3513, 3514, 3851, + 4117, 4306, 4700, 4600, 4781, 4698, 4777, 4699, 4779, 4849, + 4823, 4824, 4611, 4710, 4711, 4785, 4826, 4484, 4485, 4486, + 2595, 3062, 4120, 4170, 2707, 1678, 1679, 3625, 1104, 84, + 3185, 2809, 3186, 3187, 3695, 2811, 2812, 3003, 1568, 3685, + 3656, 3589, 3600, 3601, 3602, 3603, 3604, 4361, 4538, 4363, + 4364, 4535, 4657, 4534, 3705, 3618, 3221, 3222, 3292, 3708, + 4228, 4408, 4409, 4844, 4860, 4861, 4862, 85, 951, 4030, + 4006, 4007, 4008, 4009, 4010, 4011, 4012, 4417, 3370, 3371, + 4385, 4386, 4387, 3365, 3366, 3763, 4410, 4411, 4412, 4031, + 4559, 4054, 1533, 1534, 3541, 1546, 1547, 2660, 2120, 2661, + 1682, 4055, 4056, 4235, 3431, 4084, 3437, 3438, 3439, 2962, + 2963, 2964, 2965, 2966, 2459, 4413, 3707, 4199, 4378, 4381, + 4551, 4760, 3619, 3223, 3622, 1061, 648, 3224, 3225, 4634, + 4518, 4525, 4635, 4526, 4519, 4177, 2720, 4636, 4637, 4638, + 4528, 4521, 3176, 4161, 4162, 3611, 3450, 4388, 86, 142, + 2268, 1122, 1133, 1129, 1152, 677, 2272, 1134, 2827, 3300, + 4249, 660, 2813, 4192, 3937, 4196, 2814, 3635, 2815, 4171, + 4355, 2816, 3954, 4194, 4375, 3636, 3637, 2817, 2818, 2819, + 4642, 4643, 4644, 3226, 1421, 675, 676, 1145, 1146, 1147, + 2506, 3703, 3270, 87, 2200, 2195, 88, 1074, 1075, 1076, + 1613, 1614, 2198, 2199, 2700, 3158, 89, 702, 1725, 1467, + 2052, 90, 963, 2586, 2587, 2588, 3059, 91, 1154, 1702, + 1703, 2275, 3303, 3727, 4026, 4254, 4434, 4250, 4580, 4581, + 92, 704, 1174, 93, 541, 1733, 1734, 1735, 2324, 94, + 1448, 150, 95, 962, 1460, 1463, 1464, 96, 691, 1157, + 1158, 1159, 1160, 2279, 97, 2017, 2552, 2553, 2554, 2555, + 1711, 2833, 1712, 1713, 2288, 3498, 98, 99, 634, 635, + 2466, 2467, 604, 988, 605, 606, 607, 2971, 2972, 2973, + 2097, 1005, 1006, 1007, 1516, 1518, 1519, 1610, 1520, 2033, + 3121, 4670, 1217, 1213, 832, 833, 834, 835, 1308, 1309, + 3716, 836, 1318, 1910, 3382, 3778, 4064, 1768, 1769, 837, + 838, 839, 840, 841, 842, 1937, 3403, 3404, 3794, 2492, + 2493, 2494, 843, 2380, 3388, 2394, 844, 1301, 1895, 1825, + 3786, 3396, 4069, 4276, 1753, 2356, 2910, 3759, 3373, 2998, + 2461, 1240, 1241, 1198, 2363, 1759, 2098, 2099, 2100, 2101, + 2102, 3880, 3881, 4317, 4129, 4319, 4133, 2642, 2643, 2058, + 2059, 2103, 2104, 3098, 4127, 2462, 2463, 2464, 3099, 3548, + 3113, 3114, 4138, 2633, 2105, 3105, 4624, 4325, 4326, 4722, + 4721, 4327, 4136, 4137, 3882, 3883, 3314, 3315, 3316, 3076, + 1815, 1816, 1823, 1414, 1415, 1754, 2107, 2647, 3118, 3561, + 2483, 2649, 3559, 3888, 2822, 3664, 3665, 991, 992, 2083, + 2627, 3092, 1509, 1510, 1511, 2089, 3093, 3094, 4044, 4464, + 4261, 2967, 3819, 3199, 1786, 1787, 3671, 4141, 4505, 4724, + 4725, 4726, 2080, 2081, 2622, 2623, 2624, 993, 994, 1506, + 2082, 3086, 3869, 100, 548, 101, 1952, 3001, 1358, 2514, + 1172, 1472, 1740, 1741, 860, 856, 562, 102, 574, 2550, + 103, 594, 2056, 916, 968, 1473, 1474, 2596, 3063, 3070, + 2597, 3075, 3861, 3065, 3521, 3522, 2501, 2502, 3066, 3524, + 3858, 3835, 3836, 3493, 4111, 104, 622, 3580, 3159, 3160, + 4592, 4593, 969, 105, 547, 1185, 2886, 4270, 1746, 2344, + 4448, 1186, 1187, 2347, 715, 716, 106, 1079, 618, 1592, + 1593, 1594, 2182, 107, 610, 1062, 3148, 3575, 2166, 958, + 1355, 1573, 1065, 1574, 2152, 2682, 1557, 108, 1118, 1117, + 687, 109, 110, 655, 151, 1674, 111, 871, 1377, 1966, + 3011, 3012, 3461, 1378, 1379, 2515, 2511, 3820, 3821, 4092, + 112, 595, 973, 974, 1478, 1476, 2607, 2061, 113, 588, + 959, 2047, 114, 577, 921, 1425, 2016, 115, 116, 117, + 923, 3499, 4693, 4819, 581, 2019, 1429, 3920, 4126, 4312, + 4313, 4315, 4495, 4496, 4846, 4877, 4885, 4881, 4888, 4889, + 4892, 4896, 4897, 846, 1090, 1091, 847, 4370, 848, 849, + 850, 3071, 3072, 2628, 851, 3073, 852, 3293, 1173, 1743, + 570, 532, 667, 1092, 2619, 854, 948, 1125, 1461, 1986, + 1987, 534, 535, 118, 609, 1009, 2115, 1523, 1023, 1551, + 1541, 1550, 2140, 2677, 2143, 2678, 2679, 3572, 3139, 3573, + 3140, 1068, 2136, 1524, 3141, 1525, 2129, 2130, 2131, 2132, + 3133, 1539, 2126, 2149, 119, 924, 540, 1431, 1432, 2561, + 120, 621, 121, 1416, 2007, 2008, 2546, 3029, 2547, 122, + 982, 983, 123, 899, 2710, 2530, 1942, 1128, 1943, 1993, + 902, 1390, 903, 904, 1405, 1399, 1408, 1402, 4290, 4101, + 4102, 2534, 1950, 1988, 2070, 3021, 3828, 1989, 1980, 2524, + 2525, 3830, 4104, 3480, 4297, 4298, 124, 155, 125, 4730, + 543, 707, 1180, 1501, 126, 127, 128, 129, 1504, 1635, + 2617, 1636, 1637, 1638, 1639, 2210, 2077, 1891, 1892, 3448, + 1298, 1299, 2469, 2974, 2975, 1008, 1107, 1662, 1653, 143, + 144, 145, 146, 1149, 1150, 3296, 3715, 4015, 4243, 4244, + 4428, 4574, 1655, 3170, 4629, 4854, 4878, 1656, 1657, 1658, + 3584, 4334, 4627, 4796, 4853, 1659, 3169, 3906, 4508, 4731, + 130, 1093, 632, 1633, 1628, 1630, 2207, 2705, 131, 132, 133 }; @@ -4778,897 +4778,933 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 532, 154, 677, 1062, 681, 1096, 1672, 1019, 1058, 568, - 1440, 1502, 563, 1103, 562, 1875, 1104, 1781, 570, 2080, - 1826, 1567, 1024, 1874, 583, 962, 530, 1969, 1532, 1535, - 586, 591, 2340, 668, 157, 843, 78, 1124, 599, 1549, - 2087, 602, 1440, 1597, 1744, 1849, 599, 2815, 1125, 2647, - 2648, 855, 856, 622, 2086, 860, 861, 862, 2816, 1351, - 864, 865, 866, 1239, 1190, 1459, 2016, 947, 2137, 600, - 1968, 3258, 2906, 1435, 1436, 2246, 3438, 947, 1897, 3195, - 3337, 3645, 3064, 3527, 2913, 2282, 1905, 2279, 1677, 899, - 2199, 3195, 3195, 2543, 656, 3538, 1678, 2210, 3001, 3895, - 3172, 1790, 2018, 657, 1943, 1907, 1908, 898, 1619, 1911, - 1912, 1913, 1914, 3706, 1916, 1917, 1919, 1921, 1922, 1923, - 1924, 1925, 3555, 982, 2329, 2035, 2169, 1069, 2511, 660, - 1076, 532, 2975, 532, 667, 673, 2652, 3362, 3363, 2750, - 2224, 898, 2604, 3369, 3865, 3371, 2182, 2805, 2914, 678, - 1168, 682, 3557, 1172, 2185, 2186, 683, 662, 3215, 664, - 2874, 3884, 3184, 4119, 3152, 2751, 684, 2875, 1291, 1292, - 1293, 3808, 685, 3096, 3223, 3646, 3809, 4284, 3227, 3757, - 1334, 3720, 3105, 1701, 4159, 3607, 4247, 3548, 2251, 3242, - 1409, 4016, 3821, 2499, 3262, 3623, 1751, 1752, 1753, 3428, - 3609, 3253, 1563, 3771, 1300, 1301, 1300, 1301, 611, 3195, - 3195, 2030, 4228, 1771, 2871, 1300, 1301, 581, 1084, 1300, - 1301, 4211, 2451, 2041, 1403, 590, 704, 1598, 2251, 1599, - 2971, 1651, 1660, 3563, 1300, 1301, 2733, 1674, 3923, 2499, - 2872, 2356, 3211, 2615, 4045, 4659, 1835, 2864, 3349, 1839, - 4853, 1300, 1301, 2641, 4510, 3207, 3208, 2578, 3603, 4046, - -2672, 1534, 3367, -1576, 1572, 4317, 577, 3946, 1400, -937, - 1858, 1859, 3928, 4047, 1863, 1698, 4316, 3004, 1593, 4775, - 1986, 3785, 1420, 2251, 1028, 1009, -2110, 1300, 1301, 1409, - 1084, 1877, 1878, 3609, 1300, 1301, 4090, 4045, -2655, 2626, - 1300, 1301, 3013, 4528, -1576, 954, 4318, 2129, 614, 4806, - 1552, 3943, 4046, -2659, 1613, 4045, 3429, 905, 4457, 4348, - 1300, 1301, 3618, -2678, 1300, 1301, 4047, -1912, 3142, 2067, - 4723, 3610, 917, 4878, -1616, 1070, 680, 1028, 1009, -2751, - 4756, 3838, 1524, 3648, 4837, 1432, -2513, 1300, 1301, 710, - 1424, 134, 2662, 1300, 1301, 1028, 1009, 1179, 3441, 1885, - 1141, 1628, 1300, 1301, 3696, 1674, 1389, 48, 1674, 1356, - 4377, 1467, 3085, 3343, 3344, 4117, 574, 1338, 1218, 2130, - 4149, 4182, 148, 1271, 2024, 1300, 1301, 1300, 1301, 578, - 3296, 3747, 1300, 1301, 3515, 1723, 2746, -580, 1300, 1301, - -581, 1085, 1086, 291, 2242, 293, -1826, 711, 2361, 4331, - 156, 947, 947, 537, 156, 947, 538, 3540, 2713, 3649, - 3717, 1622, 2523, 1300, 1301, 2704, 2394, 2600, 152, 153, - 4338, 1300, 1301, 4040, 4511, 2443, 3718, 1578, 2248, 1300, - 1301, 2714, 3053, 950, 2242, 4090, 3553, 947, -2751, 1390, - 2524, 158, 3297, 2495, 1391, 2251, -1826, 2362, 1337, 896, - 1945, 1718, 2341, 589, 908, 1300, 1301, 149, 4344, 4378, - 1219, 4251, 136, 1085, 1086, 1272, 536, 2452, 3541, 3542, - 575, 1665, 2252, 1666, 1667, 1668, 1669, 2335, 4091, 3086, - 1621, 4150, 3321, 896, 3144, 1987, 1300, 1301, 1392, 2242, - 1300, 1301, 2579, 1142, 1977, 1433, -484, 1477, 2947, 1453, - 1347, 4379, 4045, 2201, 1393, 4851, 4852, 1724, 1789, 3650, - -2513, 1725, 2252, 2318, 3532, 3533, 3534, 4046, 4879, 1940, - 1886, 2428, 1726, 1239, 1071, 4723, 1525, 2112, 63, 673, - 712, 4047, -2672, 1937, 2068, 4169, 3697, 4807, 4174, 4175, - 673, 3611, 1028, 4205, 3292, 2133, 1425, 3104, 1528, 3839, - 667, 903, 4838, 1629, -1616, 667, 699, 1592, 915, 3522, - 907, 1614, 1151, 1302, 4349, 1302, 1303, 2252, 1303, 3838, - -2655, 955, 958, 2627, -1912, 4179, 2131, 3607, 1302, 1594, - 3786, 1303, 4092, 3627, 667, -2659, 1714, 4458, 156, 3931, - 2064, 2500, 1020, 1302, 3409, 916, 1303, 3643, 3644, 2663, - 4771, 4750, 1078, 959, 3929, 3939, 3940, 156, 1421, 3657, - 1302, 1722, 3850, 1303, 2750, 918, 4294, 1300, 1301, 3870, - 2359, 2650, 1100, 3874, 2246, 1988, 1602, 4091, 3195, 4616, - 2118, 4617, 699, 1677, 2025, 699, 3430, 2500, 947, 1079, - 2751, 1678, 2749, 1300, 1301, 667, 1302, 1130, 1500, 1303, - 3879, 2242, 1553, 1302, 1727, 1910, 1303, 3699, 2578, 1302, - 3594, 2242, 1303, 667, 1158, -1576, 1970, 4319, 3916, 906, - 1552, 2580, 1931, 657, 1988, 1161, 1758, 1759, 2805, 1302, - 1943, 2874, 1303, 1302, 657, 3195, 1303, 657, 2875, 612, - 1130, -1616, 1055, 1401, 2479, 3605, 1719, 1185, 1529, 1969, - 3005, 2357, 4660, 1814, 3921, 2482, 1302, 2329, 2485, 1303, - 3031, 1827, 1302, 1829, 3197, 1303, 703, 2870, 3744, 1573, - 1404, 1302, 3612, 2689, 1303, 1842, 1843, 1844, 3564, 2164, - 4324, 3439, 2167, 1848, 1087, 2871, 2170, 867, 2173, 2252, - 3263, 2317, 1968, 2349, 1302, 1350, 1302, 1303, 4093, 1303, - 1240, 1302, 1728, 4341, 1303, 4854, 2042, 1302, -937, 948, - 1303, 2872, 2184, 613, 4212, 4094, 2188, 2189, 2190, 3148, - 3095, 3822, 1981, 3345, 984, 1941, 1940, 579, 2476, 2218, - -2678, 4352, 1302, 2031, 1440, 1303, 1940, 3839, 1720, 615, - 1302, 4207, 4512, 1303, 2026, 1947, 1080, 4653, 1302, 4655, - 4656, 1303, 4507, 3860, 2883, 1410, 1279, 4048, 3757, 3264, - 2745, 1297, -2678, 1299, 2963, 3721, 2373, 1304, 3431, 1304, - 4248, 1333, 3359, -1616, 1302, 1300, 1301, 1303, 1304, 2402, - 2565, 4225, 1304, 2406, 4302, 1882, 1883, 4151, 1342, 532, - 1344, 2465, 1346, 1130, 532, 4311, 667, 1304, 532, 3743, - 3210, 2453, 4323, 4181, 1385, 1302, 4095, 2430, 1303, 1302, - 4048, 1124, 1303, 3014, 1304, 1343, 2374, 3625, 4446, 3359, - 1348, 2247, 2065, 3015, 1353, 1349, 1958, 3209, 4048, 1354, - 898, 4722, 2444, 4134, 3607, 2028, -580, 3607, 3607, -581, - 1720, 1414, 1579, 3655, 3656, -1616, 1533, 1427, 1537, 4183, - 1304, 1540, 1545, 2579, 1410, 2049, 657, 1304, 1431, 1300, - 1301, 154, 1437, 1304, 4094, 4743, 4744, 1566, 2152, 4747, - 2334, 3030, 3452, 4137, 3107, 1882, 2393, 1720, 2006, 1300, - 1301, 2432, 2433, 1304, 2089, 1462, 1335, 1304, 3293, 3145, - 1124, 1472, 3390, 667, 657, 4125, 4126, 1173, 1940, 1055, - 657, 2168, 2347, 1300, 1301, 1649, 1649, 3938, 681, 1055, - 1304, 3352, -2596, 3354, 4751, 3012, 1304, 3863, 3862, 564, - 2027, 4761, 1603, 1455, 1720, 1304, 3505, 1300, 1301, 2429, - 2058, 1300, 1301, 1720, 2449, 2450, 1302, 2248, 1117, 1303, - -2597, 1020, 4054, 2980, 2981, -484, 3937, 667, 1304, 667, - 1304, 4057, 667, 667, 3064, 1304, 3168, 2213, 2214, 1981, - 4799, 1304, 1302, 3546, 3547, 1303, 3387, 3388, 667, 2217, - 3857, 2634, 1553, 3394, 3395, 3428, 3476, 2753, 3334, 3411, - 3412, 4542, 1941, 3892, 1300, 1301, 1304, 2113, 2469, 4796, - 1300, 1301, 1941, 3550, 1304, 1378, 2238, 4186, 3437, 2074, - 1300, 1301, 1304, 2815, 3410, 898, 1300, 1301, 2267, 3158, - 2786, 657, 3449, 3450, 2816, 4272, 543, 2732, 2226, 3935, - 2335, 2365, 699, 3163, 699, 4048, -2596, 2750, 1304, 3869, - 2877, 3750, 2580, 3873, 1300, 1301, 1641, 3215, 3272, 1640, - 3824, 1300, 1301, 541, 2123, 4206, 3998, 2367, 584, 3202, - 1673, 1664, 3242, 2751, -2597, 682, 2546, 1604, 2789, 1304, - 683, 4278, 2246, 1304, 4642, 1693, 3367, 1642, 1643, 2400, - 684, 1300, 1301, 2658, 657, 3713, 685, 2749, 2370, 1335, - 3607, 1605, 2371, 532, 1720, 3241, 657, 1465, 1300, 1301, - 2573, 2574, 3429, 3774, 3530, 3566, 2251, 2087, 1815, 2087, - 2087, 1816, -2658, 2805, 2685, 657, 1738, 1528, 2224, 1697, - 2511, 2874, 588, 3091, 3092, 1740, 1677, 544, 2875, 1275, - 4644, 2553, 1747, 898, 1678, 4488, 3169, -2656, 2928, 4684, - 2701, 1892, -2657, 2090, 3902, 1300, 1301, 3477, -2662, 947, - 4197, 1300, 1301, 4198, 1302, 2885, 4303, 1303, 3318, 3866, - 4768, 2239, 2322, 3323, 1941, 1240, 4304, 3580, 3903, 4489, - -1711, 3331, 3332, 964, 1337, 2871, 1511, 3339, 1930, 1118, - 1240, 3036, 2470, 4217, 4218, 4219, 3750, 2585, 2477, 4543, - 3149, 4222, 896, 3049, 4421, 2979, 1300, 1301, 4233, 607, - 1304, 2872, 2090, 2329, 3751, 4142, 1119, 1747, 2870, 4713, - 1926, 1336, 1300, 1301, 4143, 1174, 1300, 1301, 2984, 2985, - 987, 1276, 14, 1971, 2484, 4190, 1304, 2090, 2124, 1876, - 1300, 1301, 691, 3273, 2159, 3551, 3714, 4752, 1302, 4732, - 968, 1303, 667, 4367, 3335, 2372, 2075, 2719, 2720, 1317, - 1701, 616, 2524, 1300, 1301, 4714, 4510, 1902, 1302, 1300, - 1301, 1303, 2778, 2866, 2731, 1512, 1748, 1529, 2554, 1875, - 4195, 4196, 632, 2743, 2744, 1300, 1301, 3367, 3280, 667, - 3367, 3367, 1302, 3752, 1934, 1303, 635, 1961, 2683, 3581, - 1300, 1301, 4544, 667, 2160, 545, 2040, 3367, 667, 657, - 3351, 2688, 2978, 3045, 2691, 2692, 1302, 4173, 1970, 1303, - 1302, 4221, 2988, 1303, 2091, 3367, 4226, 4229, 4231, 4232, - 636, 3726, 2242, 1240, 667, 1505, 1300, 1301, 1300, 1301, - 1300, 1301, 4753, 27, 965, 2949, 2890, 4670, 658, 1300, - 1301, 1770, 667, 3727, 2859, 2860, 2861, 2862, 2502, 3751, - 667, 699, 4144, 1472, 969, 1999, 988, 2002, 4346, 3491, - 1300, 1301, 657, 1302, 4754, 4422, 1303, 896, 291, 1302, - 293, 4899, 1303, 2091, 4700, 4701, 1875, 2092, 2020, 1302, - 4305, 4715, 1303, 3336, 3156, 1302, 3704, -2596, 1303, 657, - 2247, 3746, 1300, 1301, -2658, 2471, 3170, 667, 2091, 2008, - 2252, 2265, 2092, 1472, 1336, 291, 4583, 293, 1304, 657, - -2751, 2472, 657, 1302, 4739, -2597, 1303, 1747, 2119, -2656, - 1302, -2596, 2507, 1303, -2657, 3482, 3483, 3484, 3755, 1927, - -2662, 970, 3430, 638, 988, 2248, 4511, 1190, 667, 667, - 1747, 2323, 2070, 4675, 4510, 1320, 2120, 1940, 2577, -2597, - 1302, 2088, 1928, 1303, 4676, 699, 2215, 1300, 1301, 1300, - 1301, 2109, 2149, 2150, 1300, 1301, 4456, 1302, 667, 2114, - 1303, 3582, 2555, 2334, 1300, 1301, 1300, 1301, 667, 3025, - 1300, 1301, 2161, 2876, 147, 896, 4184, 661, 3137, 4648, - 2134, 1020, 1304, 1747, 4783, 2156, 2669, 2158, 2071, 4582, - 3753, 532, 532, 532, 657, 532, 657, 4355, 2219, 4357, - 3187, 2379, 1304, 2515, 1302, 2165, 532, 1303, 667, -2751, - 1302, 2266, 532, 1303, -1219, 2228, 136, 2153, 2154, 2155, - 2348, 2157, 601, 2706, 2183, 2605, 1304, 2710, 2711, 4536, - 4537, 42, 2166, 657, 2242, 3616, 3616, 3626, 2172, 3628, - 2749, 1834, 3138, 898, 3000, 2380, 3639, 2171, 1817, 4306, - 1304, 1818, 1317, 663, 1304, 1302, 2335, 911, 1303, 148, - 3652, 2877, 48, 2087, 1838, 618, 679, 3663, 3665, 2386, - 3583, 1302, 2360, 2697, 1303, 1302, 667, 667, 1303, 4142, - 3682, 3684, 3686, 291, 2192, 293, 3687, 3665, 4143, 1302, - 1300, 1301, 1303, 4538, 2223, 1300, 1301, 2121, 4347, 667, - 2220, 2221, 2222, 657, 3342, 3894, 1929, 1304, -208, 2516, - 1055, 1677, 1302, 1304, 4511, 1303, 667, 1862, 1302, 1678, - 3188, 1303, 2072, 1304, 3131, 947, 3735, 3738, 3741, 1304, - 2277, 688, 2391, 4773, 1302, 3753, 4777, 1303, 2275, 657, - 687, 3139, 2392, -2140, 149, 1300, 1301, 912, 2396, 1302, - 1300, 1301, 1303, 1945, 657, 1300, 1301, 1304, 2250, 1940, - 1644, 1969, 4677, 1511, 1304, 2193, -1712, 1300, 1301, 619, - 1448, 1300, 1301, 1449, 4354, 1185, 2408, 2346, 2870, 58, - 4531, 3353, 2038, 2415, 1568, 1302, 3552, 1302, 1303, 1302, - 1303, 2280, 1303, 1941, 1304, 1300, 1301, 3448, 1302, 3122, - 4267, 1303, 1300, 1301, 1968, 4268, 1300, 1301, 691, -2292, - -2317, 1304, 3474, 2419, 2281, 1175, 4330, 1440, 913, 1302, - 3140, 4585, 1303, 746, -2437, 4334, 4144, 2039, 1875, 2955, - 2420, 3844, 2486, 63, 1300, 1301, 3518, 1569, 1690, 1691, - 2524, 1327, 1328, 1329, 1330, 1331, 1332, 3806, 1320, 4627, - 704, 1302, 1512, 3704, 1303, 2956, 692, 4842, 1304, 1300, - 1301, 1300, 1301, 2983, 1304, 3222, 1240, 2401, 3225, 3226, - 1608, 3228, 4628, 3290, 3231, 3232, 3845, 2422, 3235, 4525, - 1300, 1301, 2503, 3244, 1735, 1300, 1301, 751, 3248, 3249, - 3250, 3251, 3252, -2140, 3510, 1176, 3256, 3257, 2910, 3259, - 4586, 1300, 1301, 2915, 4469, 3268, 3269, 3270, 3271, 1304, - 3030, 3275, 3276, -2140, 3278, -1826, 1302, 2922, 1302, 1303, - 1450, 1303, 624, 1302, 4470, 1304, 1303, 2468, 2423, 1304, - 2564, -1144, 1055, 1302, -1144, 1302, 1303, 1981, 1303, 1302, - 1981, 706, 1303, 1304, 2427, 1657, 3305, 3212, 2445, 2251, - 1609, 2937, 3195, 1645, 3880, 3881, 709, 1300, 1301, -2292, - -2317, 2493, 3392, 1300, 1301, -1826, 1304, 863, 2247, 2492, - 657, 2884, 1304, 625, -2437, 707, 1300, 1301, 3347, -2292, - -2317, 3882, 657, 667, 4414, 3393, 765, 4416, 1304, 3195, - 3195, 3404, 1300, 1301, -2437, 896, 657, 1300, 1301, 537, - 2490, 1385, 538, 1304, 3056, 2322, 1385, 3414, 2491, 2518, - 2620, 2527, 2527, 4213, 2527, 1941, 4214, 3026, 2994, 2394, - 2528, 2528, 3415, 2528, 1124, 1875, 4074, 699, 3616, 3195, - 853, 1300, 1301, 3661, 962, 3076, 857, 3141, 2551, 1304, - 859, 1304, 1427, 1304, 667, 1300, 1301, 657, 2657, 870, - 626, 657, 1304, 4730, 4731, 1300, 1301, 2364, 2997, 1302, - 4068, 2366, 1303, 3238, 1302, 781, 2490, 1303, 904, 947, - 2381, 1462, 2576, 1304, 3560, 920, 898, 951, 667, 667, - 657, 657, 657, 1300, 1301, 947, 947, 537, -1912, 973, - 538, 2382, 2527, 2527, 2527, 1240, 667, 1300, 1301, 2334, - 2630, 2528, 2528, 2528, 2876, 1304, 2866, 2280, 3241, 1028, - 1009, 667, 2572, 1019, 1302, 2594, 3125, 1303, 3662, 1302, - 2225, 3358, 1303, 2390, 1302, 2640, 2629, 1303, 1024, 3889, - 2281, 1580, 2363, 1337, 657, 1502, 1302, 3126, 953, 1303, - 1302, 2877, 1978, 1303, 1020, 1979, 1440, 4800, 1980, 667, - 1300, 1301, 975, 701, 2368, 2369, 1329, 1330, 1331, 1332, - 1646, 1300, 1301, 1581, 1302, 2242, 1020, 1303, 1646, 3569, - 1304, 1302, 1304, 3127, 1303, 1302, 1068, 1304, 1303, 2595, - 4515, 1075, 993, 3748, 4522, 1612, 2681, 1304, 2404, 1304, - 2405, 1617, 1618, 1304, 965, 2409, 1300, 1301, 3512, 4832, - 1300, 1301, 4834, 1302, 1097, 2413, 1303, 2414, 2596, 2690, - 3802, 3576, 3776, 3777, 3804, 2951, 1582, 2675, 657, 2678, - 3867, 1583, 947, 3498, 3498, 3498, 3498, 1099, 1302, 1098, - 1302, 1303, 2682, 1303, 4850, 3791, 1101, 1300, 1301, 2631, - 1109, 1300, 1301, 2252, 1111, 596, 1112, 2708, 532, 1302, - 1113, 532, 1303, 596, 1302, 537, 2632, 1303, 538, 1114, - 2585, 907, 1300, 1301, 2387, 1337, 1121, 1146, 2633, 3799, - 1302, 1140, -1939, 1303, 2709, 1146, 1300, 1301, 2597, 3376, - 2395, 1337, 810, 3240, 2323, -679, 1146, 1300, 1301, 1149, - 1940, 1159, 2819, -1940, 1533, 1875, 1163, 1300, 1301, 2722, - 3212, 657, 627, 657, 3313, 1167, 1533, 1180, 2729, 2730, - 1300, 1301, 3213, 1304, 2397, 1337, 994, 1187, 1304, 1300, - 1301, 1463, 1647, 1188, 628, 1189, 1302, 2398, 1832, 1303, - 1647, 2418, 1302, 1774, 1191, 1303, 2421, 1192, 1211, 1212, - 1300, 1301, 1193, 3379, 1875, 1302, 3638, 1196, 1303, 1197, - 2634, 947, 3156, 2410, 1337, 4515, 947, 2598, 3571, 3647, - 629, 1302, 4522, -2799, 1303, 1198, 1302, 1199, 1304, 1303, - 1200, -2799, 2879, 1304, 1584, 2882, 1201, 2474, 1304, 1092, - 1093, 1202, 1094, -1939, 1095, 1087, 2424, 2587, 2588, 1203, - 1304, 2436, 1204, 995, 1304, 667, 2455, 1775, 1337, 2976, - 1302, 1205, 3689, 1303, -1940, 4286, 1341, 667, 3356, 1206, - 1970, 3212, 3380, 1282, 1302, 1207, -679, 1303, 1304, 1208, - 630, 1209, 640, 1213, 1302, 1304, 1776, 1303, 896, 1304, - 2999, 3521, 3729, 1440, 2411, 1337, 3386, 1981, 1981, 1981, - 2412, 1337, 1340, 3389, 3735, 4591, 3738, 3396, 3741, 1585, - 1215, 1251, 1302, 1216, 2530, 1303, 2531, 1304, 1345, 2631, - 2280, 1217, 4737, 1055, 1220, 2635, 1302, 2416, 1337, 1303, - 1300, 1301, 4736, 1270, 1394, 3400, 2632, 2594, 3934, 2322, - 3664, 1357, 1304, 2281, 1304, 1221, 1283, 1284, 3101, 1386, - 993, 1222, 4277, 1124, 1124, 1124, 1777, 2965, 1337, 1055, - 667, 1395, 3401, 1304, 2065, 2065, 2065, 1317, 1304, 3447, - 4287, 4288, 4393, 1586, 1223, 4289, 4290, 4291, 1224, 1302, - 3535, 3402, 1303, 1388, 1304, 2995, 3403, 3238, 1225, 667, - 1302, 667, 667, 1303, 2609, 2610, 2611, 2636, 3010, 3011, - 1226, 2595, 3405, 1227, 1774, 1397, 1941, 3205, 3206, 3082, - 1228, 947, 134, 3375, 2369, 667, 1408, 4394, 667, 3378, - 1337, 947, 947, 947, 947, 1302, 1229, 4395, 1303, 1302, - 2596, 2280, 1303, 3852, 2599, 1778, 1124, 1409, 4204, 4209, - 1304, 3348, 4210, 3886, 2876, 1230, 1304, 3578, 1233, 4515, - 4522, -1939, 3406, 1337, 2281, 1234, 3890, 3043, 3408, 1304, - 1235, 4220, 3524, 3525, 3413, 1241, 1302, 4227, 1775, 1303, - 1302, 2087, -1940, 1303, 1242, 1304, 4396, 3416, 3528, 3529, - 1304, 1875, -1939, 3069, 994, 4264, 3608, 3072, 1243, 3518, - 3615, 1302, 1587, 3418, 1303, 2986, -679, 1776, 3420, 2242, - 2597, 667, 667, -1940, 3353, 1302, 1028, 1009, 1303, 1244, - 667, 1245, 2657, 1533, 1304, 135, 1302, 3544, 2088, 1303, - 2088, 2088, -1616, 1246, 4270, 1795, 1302, 1247, 1304, 1303, - 1248, 1588, 3637, 136, 3811, 1337, 1249, 2734, 1304, 1302, - 1252, 3118, 1303, 3120, 1398, 3102, 3422, 667, 1302, 996, - 997, 1303, 999, 1253, 1001, 1407, 3423, 1254, 4453, 4454, - 4455, 995, 1255, 1320, 3832, 3833, 1304, 1777, 1020, 1302, - 4065, 1002, 1303, 1256, -2794, 1875, 291, 3117, 293, 2598, - 1304, -1616, 1681, 3661, 3424, 2585, 1409, 78, 3847, 3848, - 1876, 3239, 1257, 2586, 642, 4497, 4498, 1406, 3796, -1939, - 3161, 3174, 3175, 1258, 137, 532, 1259, 3240, -856, 3930, - 657, 657, 1260, 667, 667, -1616, 1261, 2636, 2323, 1262, - -1940, 4032, 4033, 1263, 1940, 1317, 4034, 4035, 1799, 1264, - 4826, 3166, -1616, 1304, 4036, 4037, 1265, -1616, 4043, 4052, - 1266, 3641, 1267, 3944, 1304, 2322, 1778, 2735, 4069, 1337, - 1415, 3797, 1779, -1939, 3948, 1417, 4590, 3950, 4083, 1337, - 1268, -1616, 3798, 1269, 3198, 3199, 3200, 3201, -1616, 3203, - 3204, -1616, 1273, 4387, -1940, 3501, 3502, -679, -1616, 1304, - 4084, 4085, 4391, 1304, 1274, 3673, 1419, 3674, 138, 1277, - -1616, 4413, 3274, 1278, 2324, -1616, 4415, 4063, 947, 4102, - 4103, 4067, 4240, 1281, -1616, 4236, 4237, 3289, 152, 153, - 1865, 1866, 2587, 2588, 4398, 1285, 1322, 1323, 1423, 3303, - 1304, 4399, 1780, 3312, 1304, 1286, 4366, 1287, -1912, 1288, - -1616, 3675, 1800, 1444, 4339, 4340, 1803, 2594, 4073, 4501, - 3681, 4900, 4075, 1804, 1317, 1304, 4343, 4340, 4427, 4428, - 1289, 2486, 4496, 3529, 1290, 3676, 2589, 3826, 3827, 1304, - 1317, 4400, -1616, 4076, -1616, 719, 4509, 4340, 3319, 3320, - 1304, 3322, -1616, 3324, 3325, 3326, 3327, 3328, 3329, 3330, - 1304, -1616, 3333, 3784, 1339, 3338, -1616, 1441, 4077, 3341, - 1446, 3677, 1456, 1304, -1616, 1474, 2599, 1055, 4078, 1492, - 1774, 2595, 1304, -1616, -1616, 2242, 1307, 1124, 1476, 3478, - -1616, 4351, 4540, 4541, 1494, 2736, 2894, -1616, 2065, 139, - 4447, 1320, 1495, 1304, 1805, 1496, 2737, -1616, 4548, 4549, - 2596, 4550, 4549, 2738, 4401, 1497, -1616, 1500, 3812, -1616, - 4593, 4594, 2895, 1308, -1616, 4649, 3848, 1504, 4360, 2325, - 1505, 2630, 1509, -1616, 1317, 746, 1514, 996, 997, 998, - 999, 1000, 1001, 1779, 1775, 1546, 1019, 1325, 1326, 1327, - 1328, 1329, 1330, 1331, 1332, 1523, 2620, 1556, 1550, 1002, - 1941, 1024, 1807, 4681, 4682, 1551, 3922, -1616, 1555, 3925, - 3926, 1574, 140, 1776, 1575, 1309, 4711, 3529, 2896, 1576, - 2597, 2897, 1577, 1385, 1596, 2518, 4734, 1310, 1600, 2898, - 667, -1616, 750, 3490, 1414, 667, 667, 667, 1601, 751, - -679, -1616, 657, 2229, 2323, 1606, -2794, 1615, 2899, 3496, - 1940, 1616, 2739, 4757, 1624, 3212, 1557, 2230, 4385, 4386, - 1320, 2594, 4402, -1616, 4366, 3043, 667, 3213, 756, 757, - 1623, 4389, 1876, -1616, 4712, 3529, 1320, 141, 4392, -1616, - 2417, 4729, 3206, 1777, 4746, 4340, 1558, 1240, 1626, 4417, - 4418, 667, 667, 667, 1322, 1323, 1631, 667, 1638, 2598, - 4748, 4340, 4749, 4340, 2088, -1616, 3045, 1674, 2296, 2297, - 2631, 4384, 4781, 4782, 3678, 1680, 1311, 4685, 1684, 3151, - 2324, 2296, 2297, 1682, 2310, 2595, 4384, 2632, 1687, 3559, - 4797, 4340, 1688, 4661, -1616, 4663, 1692, 2310, 765, 2633, - 4798, 4340, -2794, 1695, 1808, 1696, -1616, 1704, 2740, 4801, - 4340, 2900, 1706, 4055, 2596, 1705, -1616, 2999, 3679, 1732, - 1810, 1715, 1778, 4804, 3848, 3558, -1616, 1733, -1616, 1743, - 1320, -679, 4527, 1741, 667, 4815, 4816, 640, 3589, 532, - -1616, 3592, 1410, 2630, 1335, 4833, 4340, 657, 4847, 3731, - 657, 3289, 4889, 4890, 1747, -1616, -1616, 4100, 4101, -1616, - -1616, 1754, 776, 1773, 1440, 3586, 1784, 1820, 1831, 1832, - 1856, 1875, 4553, 1322, 1323, 2280, 780, 781, 1833, 4589, - 1873, 2634, 1909, 1055, 2597, 1774, 2231, 3289, -1616, 1322, - 1323, 1893, 1884, 1915, 1935, 3624, 3622, 3289, 2281, 1936, - 1944, 3634, 1949, 3633, 1956, 1325, 1326, 1327, 1328, 1329, - 1330, 1331, 1332, 2312, 2313, 1952, 2901, 1953, 667, 3633, - 1954, 1955, 1957, 1960, 3654, 3658, 2312, 2313, 1959, 1876, - 3670, 3669, 1972, 1973, 1974, 2325, 1975, 3671, 3672, 657, - 2005, 3635, 3636, -1616, 4449, 4104, 2009, 1316, 4592, 1775, - 2014, 3633, 2017, 2019, -1616, -1616, 2022, 2023, 3289, 3695, - 2036, 1559, 2232, 2598, 3708, 2044, 1941, 2045, 2046, 3668, - 2047, 4168, 2053, -2488, 2056, -1616, 2599, -1616, 3189, 2060, - 2061, 3633, 2631, 1322, 1323, 2062, 2063, 2233, 291, 2102, - 293, 1410, 2104, 2105, 1525, 2594, 2635, 947, 3683, 2632, - 3707, 2863, 2106, 2110, -1616, -1616, 2115, 2138, -1616, -1616, - 2151, 2633, 2146, 2594, 4199, 2147, 3685, 4202, 4203, 1440, - 3742, 2174, 1133, 2176, 3745, 1326, 1327, 1328, 1329, 1330, - 1331, 1332, 2175, 2179, 4215, 3214, 2177, 1723, 2180, 1779, - 2181, 548, 1327, 1328, 1329, 1330, 1331, 1332, 3190, 2197, - 2234, -679, 4224, 4609, 4610, 2202, 4612, 2207, -687, 2595, - 1317, 2902, 2216, 1312, 1313, 1314, 4393, 2211, 2636, 2249, - 2227, 802, 2269, 2270, 2284, 4361, 1134, 2595, 4362, 2285, - 2287, 2288, 4471, 2320, 2336, 2338, 3759, 4702, 2596, 808, - 4472, 2344, 2350, 2634, 810, 2352, 1875, 811, 2353, 2354, - 549, 1560, 2376, 2378, 4589, 4564, 2596, 2377, 1533, 2385, - 595, 4394, 1300, 1301, 2383, 4123, 2384, 4473, 3810, 4662, - 2388, 4395, 2630, 1561, 2399, 2394, 3118, 3191, 2403, 2407, - 550, 2903, 2463, 2467, 1325, 1326, 1327, 1328, 1329, 1330, - 1331, 1332, 3760, 2425, 4259, 3761, 2235, 2426, 4758, 642, - 2434, 2431, 2446, 3762, 2435, 2447, 4363, 4364, 2597, 1724, - 2904, 2460, 3117, 1725, 1562, -1912, 1318, 551, 1135, 1317, - 4396, 2594, 3763, 2448, 1726, -1295, 2597, 2473, 3043, 1332, - 2599, 4708, 2483, 4709, 4710, -1441, 4572, 2495, 2498, 1319, - 2504, 2505, 4579, 2521, 1218, 1271, 947, -2133, 2522, 3069, - 3859, 1275, 2552, 3861, 2558, 667, 1720, 2563, 2635, 667, - 1533, 2566, 4641, 2569, 552, 2601, 2606, 3764, 1791, 1792, - 1793, 1794, 1795, 4597, 4598, 2593, 2607, 4601, 4602, 4603, - 4604, 1502, -679, 2608, 2995, 2595, 2613, 2598, 2624, 2625, - 4474, 1020, 1020, 4820, 2639, 4397, 2643, 2645, 1876, 2649, - 2651, 2653, 1317, 3899, 2659, 2598, 1320, 1774, 3910, 2660, - 2661, 2631, 2664, 4635, 2596, 2665, 1898, 657, 2676, 947, - 291, 2680, 293, 2666, 2667, 3765, 152, 153, 2632, 3917, - 2636, 2684, 3891, 2668, 4687, 1875, 2693, 2694, 2696, 3924, - 2633, 2699, 2756, 4885, 2757, 2716, 1875, 3927, 3633, 2698, - 1875, 3289, -856, 2524, 4893, 1875, 1727, 2717, 4885, 2721, - 2723, 667, 4820, 4893, 2724, 3633, 2725, 3289, 3289, 4475, - 2820, 1775, 1796, 1797, 1798, 1799, -826, -826, 2726, 2759, - 2727, 3289, 3633, 2728, 2597, 2824, 2825, -826, 4476, 2829, - -69, 2831, 2834, 3633, 3192, 553, 3633, 2762, 3936, 2835, - 3189, 4698, 4699, 1321, 2836, 2763, 2837, 3942, 3397, 2838, - 4707, 4477, 2839, 2840, 3954, 1320, 2841, 2842, 2843, 2844, - 3953, 2845, 2634, 657, 2846, 4482, 2847, 3766, 4008, 2858, - 3767, 1136, 2765, 4009, 2857, 2848, 2849, 719, 2850, 2851, - 532, 2852, 2853, 2854, 4127, 2855, 1674, 554, 4024, 2766, - 2856, 2865, 152, 153, 1728, 3312, 2880, 2884, 4398, 1322, - 1323, 2888, 2893, 2598, 2917, 4399, 4017, 2916, 555, 2918, - 3190, 2929, 2491, 2930, 947, 1324, 2942, 2964, 2532, 1800, - 2771, 1801, 1802, 1803, 2973, 2974, 2982, 4870, 2991, 3017, - 1804, 2992, 2533, 3003, 152, 153, 3008, 1137, 1320, 1138, - 1899, 3019, 3009, 3021, 2599, 4400, 3458, 3768, 3022, 3023, - 3020, 3032, 3028, 3033, 3034, 3046, 3459, 3047, 2031, 3050, - 4360, 3051, 2599, 3052, 3059, 4567, 3073, 746, 3074, 4154, - 3460, 1302, 3077, 556, 1303, 3078, 4793, 2635, 557, 3079, - 3090, 3083, 3461, 3462, 3463, 3084, 291, 3097, 293, 3191, - 3098, 3099, 3111, 3112, 2534, 2775, 2535, 558, 3114, 3123, - 3124, 3464, 2776, 2123, 2124, 4108, 3133, 3146, 1322, 1323, - 4113, 1805, 3159, 3160, 3162, 1876, 3167, 2777, 4401, 3173, - 3185, 3186, 559, 4089, 750, 3212, 3224, 3229, 3233, 3230, - 1055, 751, 3234, 3237, 3236, 3245, 3246, 3243, 560, 3247, - 3254, 3255, 3260, 3261, 4482, 3266, 4478, 3267, 3277, 2636, - 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 3294, 3306, - 756, 757, 3307, 3315, 3316, 3346, 3317, 2345, 1806, 1807, - 667, 3359, 4158, 4158, 2779, 3350, 3364, 3289, 4896, 3370, - 3372, 947, 3373, 3374, 3381, 3769, 4170, 947, 2536, 3289, - 3289, 1322, 1323, 2780, 3382, 3289, 3435, 3633, 4862, 3425, - 4141, 3289, 3455, 3436, 3457, 3440, 3444, 3446, 3479, 1876, - 3487, 3451, 1533, 3633, 3770, 657, 3454, 3480, 1478, 3485, - 2599, 3492, 3503, 4877, 1448, 3514, 4402, 3504, 1479, 3507, - 765, 3513, 1359, 2756, 3526, 2757, 3520, 3531, 4297, 3523, - 3545, 3549, 1480, 2537, 872, 988, 3561, 3565, 2784, 3562, - 2785, 3573, 3577, 1900, 1481, 1482, 1483, 3572, 2787, 1325, - 1326, 1327, 1328, 1329, 1330, 1331, 1332, -826, -826, 1901, - 2759, 3163, 3588, 1484, 3585, 3574, 3619, 2786, -826, 3640, - 639, 3642, 3709, 2229, 3704, 4246, 3716, 3723, 2762, 3724, - 3728, 3730, 3756, 3731, 776, 3775, 2763, 2230, 3779, 3780, - 3788, 2452, 2088, 3787, 3800, 3430, 3192, 3817, 780, 781, - 3818, 1808, 3819, 667, 3820, 3841, 3835, 3837, 3843, 4242, - 3849, 3465, 3851, 2765, 2585, 1304, 1809, 1810, 3871, 3872, - 2793, 3900, 3905, 3906, 873, 1360, 3908, 1674, 3909, 3466, - 2766, -2726, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, - 3911, 3912, 3919, 3918, 3913, 3941, 3920, 3535, 3933, 3945, - 3952, 1361, 3951, 4011, 1362, 4019, 875, 4012, 640, 4015, - 4018, 2771, 4022, 4023, 4027, 4028, 4031, 4029, 4038, 4041, - 4042, 4439, 876, 4053, 4056, 4058, 4070, 4043, 2794, 2795, - 2796, 4044, 4071, 4060, 3072, 2797, 4061, 4072, 4086, 4325, - 4088, 1363, 4081, 3899, 1990, 4098, -886, 4107, 1991, 4062, - 4066, 2798, 3899, 4080, 2799, 4109, 4120, 4135, 4118, 4158, - 1992, 1364, 4103, -1528, 4130, -1533, 3560, 291, 4138, 293, - 4153, 4160, 3289, 2800, 4139, 4155, 4164, 291, 4176, 293, - 4368, 4171, 4177, 880, 4178, 4185, 2775, 4193, 4369, 657, - 4200, 2802, 3467, 2776, 4201, 4216, 3292, 4374, 4235, 4243, - 4241, 4252, 4228, 4052, 4505, 4269, 2231, 4275, 2777, 4274, - 3468, 881, 2538, 2539, 2540, 4276, 4280, 882, 4281, 4282, - 4283, 947, 3176, 4295, 1365, 4482, 4309, 4299, 4296, 4313, - 4300, 4409, 4315, 1485, 987, 4333, 4335, 4332, 4337, 4419, - 4342, 4420, 4372, 802, 4375, 4411, 4225, 4361, 1366, 4388, - 4362, 1486, 4440, 3602, 4437, 4441, 4442, 883, 4436, 4444, - 4448, 808, 4445, 4450, 4452, 2779, 810, 4461, 4464, 811, - 4483, 4484, 3469, 4485, 4486, 4502, 4493, 4519, 4539, 4495, - 4545, 4508, 2232, 4556, 2780, 4532, 4534, 4557, 4535, 3470, - 4558, 4462, 4559, 4560, 4562, 4563, 4565, 2657, 4570, 4580, - 657, 4568, 4581, 4468, 152, 153, 4596, 2233, 4608, 4599, - 4600, 4611, 851, 4605, 4613, 4614, 4618, 4621, 1791, 1792, - 1793, 1794, 1795, 4643, 4636, 4667, 4666, 4673, 4363, 4364, - 4647, 4650, 4651, 4654, 4657, 4679, 4664, 4668, 4692, 2784, - 4674, 2785, 4686, 947, 4158, 4689, 4704, 945, 2753, 2787, - 2778, -1699, 4762, 1367, 4745, 4763, 2756, 945, 2757, 4764, - 4771, 4784, 1368, 4785, 4786, 4787, 4792, 4789, 947, 4794, - 2234, 4790, 4805, 4795, 1065, 4808, 641, 1369, 4809, 4812, - 4810, 4811, 1487, 3699, 4813, 4836, 4835, 4840, 851, 4843, - 1993, 4863, 4846, 2759, 4858, 1370, 4865, -143, 667, 4861, - 4867, 4869, 4874, 4875, 4886, 4871, 4895, 3121, 3340, 3002, - 886, 2762, 4260, 4262, 4409, 4626, 4261, 1595, 1994, 2763, - 642, 2793, 1796, 1797, 1798, 1799, 1995, 1442, 3604, 1658, - 4336, 4625, 4573, 4577, 4830, 4552, 4728, 4828, 1686, 1371, - 4504, 4254, 1372, 4683, 1488, 610, 2765, 1067, 2603, 3472, - 2514, 4105, 2833, 1166, 3037, 3039, 889, 3038, 3497, 851, - 1674, 1489, 4646, 2766, -1750, 1876, 2235, 557, 2263, 890, - 1996, 2494, 1373, 4524, 2803, 1734, 3947, 3506, 3281, 2794, - 2795, 2796, 4111, 851, 3511, 3842, 2797, 2034, 851, 4691, - 4718, 4463, 4770, 4114, 2771, 4860, 4823, 3072, 4845, 3072, - 4607, 4345, 2798, 643, 2703, 2799, 3279, 4703, 3694, 4163, - 3286, 644, 3701, 4866, 4760, 4000, 3772, 4208, 4547, 4234, - 4769, 1997, 4561, 4551, 2800, 3183, 851, 4266, 3427, 1800, - 3803, 1801, 1802, 1803, 4831, 3805, 4158, 950, 4158, 4158, - 1804, 3801, 2802, 851, 648, 4658, 649, 4802, 4733, 4803, - 4634, 893, 4353, 4645, 4518, 4640, 2198, 4390, 3693, 1694, - 291, 3283, 293, 3150, 4371, 3055, 1620, 2823, 4672, 2775, - 4766, 4180, 2321, 894, 2276, 895, 2776, 2575, 3489, 3029, - 3836, 3080, 4437, 2972, 4566, 1518, 4436, 851, 851, 851, - 851, 2777, 4759, 2646, 1637, 1510, 3813, 2909, 4468, 851, - 2907, 3453, 3177, 3868, 4671, 1830, 3106, 3442, 667, 4620, - 2999, 3103, 4499, 4824, 1772, 4030, 4825, 4082, 2989, 4727, - 3807, 1805, 4188, 4328, 2204, 3688, 2205, 3539, 657, 4827, - 4326, 3537, 4327, 2878, 1377, 4584, 650, 4696, 4697, 2007, - 2051, 3027, 3062, 4116, 3854, 4741, 3855, 3893, 2779, 2343, - 4767, 1186, 2686, 1081, 4158, 4158, 1061, 2163, 4158, 4718, - 2687, 3147, 1670, 4829, 1064, 655, 4192, 2780, 4279, 3840, - 2059, 2508, 4859, 4487, 4868, 851, 4894, 4897, 1806, 1807, - 4615, 4740, 1280, 4822, 3858, 4555, 4577, 2108, 3132, 3888, - 1876, 945, 945, 1022, 1023, 945, 2671, 2466, 3130, 3129, - 2557, 2069, 2209, 983, 1493, 1998, 4451, 3018, 3075, 4460, - 1499, 667, 3712, 1106, 985, 851, 1107, 3473, 1108, 2212, - 0, 0, 2784, 0, 2785, 0, 0, 945, 0, 0, - 0, 0, 2787, 0, 0, 0, 0, 0, 4778, 4779, - 1661, 1662, 1663, 0, 0, 0, 0, 0, 0, 4158, - 0, 0, 1359, 0, 2291, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4898, 0, 0, 0, 0, + 533, 154, 678, 1064, 682, 1098, 1505, 1021, 1060, 569, + 1443, 2084, 564, 1675, 563, 964, 1535, 1538, 571, 1785, + 1973, 1830, 1570, 2345, 584, 1026, 531, 1552, 1127, 78, + 587, 592, 1879, 669, 158, 1126, 845, 1748, 600, 2091, + 1853, 603, 1443, 2090, 1600, 601, 600, 2820, 2652, 2653, + 690, 2821, 3069, 623, 2287, 2020, 1105, 2141, 2548, 1106, + 1878, 857, 858, 1242, 1972, 862, 863, 864, 949, 2911, + 866, 867, 868, 3263, 3532, 1438, 1439, 2284, 949, 3200, + 3177, 2918, 1193, 1680, 900, 1901, 901, 3711, 1947, 3342, + 3650, 3200, 3200, 1909, 657, 2214, 1354, 3006, 1681, 3443, + 1911, 1912, 3900, 658, 1915, 1916, 1917, 1918, 2203, 1920, + 1921, 1923, 1925, 1926, 1927, 1928, 1929, 1462, 900, 3543, + 984, 1794, 1171, 2039, 1622, 1175, 2250, 2022, 2755, 661, + 2756, 533, 2980, 533, 668, 674, 1071, 2516, 2810, 1078, + 2173, 2609, 2228, 3372, 2919, 679, 3560, 3562, 2879, 3220, + 3189, 668, 683, 684, 2657, 685, 686, 663, 3157, 665, + 2186, 4124, 3870, 4289, 3367, 3368, 2880, 3814, 2189, 2190, + 3374, 3101, 3376, 3553, 3813, 3725, 2334, 1303, 1304, 3889, + 3110, 1412, 3651, 4252, 1303, 1304, 1294, 1295, 1296, 1566, + 3228, 1303, 1304, 2504, 3232, 3267, 3762, 3826, 1337, 1704, + 3433, 1755, 1756, 1757, 2876, 3247, 2877, 3776, 2255, 3200, + 3200, 2034, 1602, 1677, 1601, 4021, 4164, 3258, 1775, 612, + 4216, 582, 1406, 1677, 4233, 706, 4858, 3212, 3213, 591, + 1303, 1304, 1412, 2456, 2045, 3614, 1303, 1304, 1303, 1304, + 3058, 2255, 1654, 1663, 2583, -937, 3614, 3933, 1677, 2869, + 3585, 1839, 1303, 1304, 1843, -580, 4515, 1403, 1303, 1304, + 4780, 2646, 1303, 1304, 4050, 2620, 578, 3339, 3928, -1577, + 2504, 1086, 615, 3354, 1555, 1862, 1863, 3623, 1338, 1867, + -581, 2976, 1930, 1303, 1304, 3951, 1701, 2028, 1303, 1304, + 1086, 3948, 1303, 1304, 1990, 956, 1881, 1882, 1303, 1304, + 3790, 4050, 1338, -2752, 1030, 1011, 4462, 544, 4336, -2679, + -1577, 2751, 3395, 2133, -2111, 1176, 4051, 3434, 4050, 3612, + 4533, 2738, 1303, 1304, 3943, -1617, 4811, 2631, 1527, 3628, + 4052, -1712, 4842, 4051, -2514, 1631, 1303, 1304, 3701, 1427, + 681, 1030, 1011, 1303, 1304, 3348, 3349, 4052, 1303, 1304, + 3481, 4095, 1435, 1303, 1304, 919, 1727, 3568, 1030, 1011, + 1303, 1304, 1143, 4353, 4883, 1182, 3615, 3018, 2433, 2123, + 3829, 2590, 3586, 1341, 134, 2448, 1751, 2482, 4122, 1944, + 1359, 989, 1508, 3446, 2758, 2134, 3752, 4050, -2752, 579, + 4515, -484, 575, 2242, 2269, 1221, 619, 2124, 1274, 1303, + 1304, 148, 4051, 1303, 1304, 292, 2361, 294, 545, 3301, + 1571, 2196, -2752, 949, 949, 3545, 4052, 949, 3130, 1303, + 1304, 3090, 2252, 3147, 2246, 4493, 3216, 1030, 4210, 3520, + 1303, 1304, 1693, 1694, 1254, 2960, 4516, 3722, 4664, 3131, + 538, 1030, 1011, 539, 952, 3731, 537, 1575, 538, 949, + 2495, 539, 2229, 3723, 1087, 1088, 1273, 2246, 2496, 4494, + 898, 2961, 4343, 1572, 3843, 910, 4349, 3732, 1722, 1286, + 1287, 3302, 2340, 1087, 1088, 3132, 3546, 1625, 1728, 1739, + 3433, 3558, 1729, 542, 1581, 4154, 149, 1222, 2457, 2584, + 1275, 990, 2197, 1730, 898, 136, 576, -2752, 2592, 2593, + 620, 1931, 2256, 1480, 3547, 1144, 703, -1617, -2514, 1991, + 1752, 3482, 1436, 1949, 2270, 1303, 1304, 990, 1350, 1793, + 3702, 2205, 1528, 3340, 1932, 1668, 2116, 1669, 1670, 1671, + 1672, 2323, 3527, 2605, 1242, 2256, 3149, 1632, 3091, 292, + 674, 294, 3526, 4096, 2137, 1428, 1305, 2029, 2243, 1306, + 4843, 674, -2597, 1305, 3587, 3009, 1306, 1981, 2125, 4884, + 1305, 668, 905, 1306, 4812, 4184, 668, 701, 3109, 917, + 4516, 957, 2529, 1153, 2093, 4174, 546, 1595, 4179, 4180, + 3608, 1941, 1944, 960, 1340, 4463, 3616, 3326, 1718, 3934, + 961, 4776, 2135, 1339, 1726, 668, 4155, 3434, 909, 1305, + 3414, 2505, 1306, 1022, -2598, 1305, 918, 1305, 1306, 3791, + 1306, 2632, 3297, 1080, 2755, 3875, 2756, 1339, 4354, 3879, + 3704, 2655, 1503, 1177, 4322, 1731, 1556, 1305, 4755, 4299, + 1306, 1305, 4195, 1102, 1306, 1945, 1303, 1304, 3200, 1680, + 3599, 1303, 1304, 701, -1617, 3855, 701, 3435, 920, 1992, + 1081, 949, 1305, 2068, 1681, 1306, 668, 1305, 1132, 2783, + 1306, 1305, 3341, 3588, 1306, 4323, -2597, 1305, 2585, 3926, + 1306, 3537, 3538, 3539, 668, 1947, 1161, 1974, 2505, 2879, + 2810, -1577, 3844, 3884, 1914, 658, 2250, 1164, 1933, 1762, + 1763, 1305, 1404, 2122, 1306, 3200, 658, 2880, 1724, 658, + 2484, 1935, 1132, 1973, 2754, 1305, 2583, 2030, 1306, 1188, + 613, 2487, 1305, 1723, 2490, 1306, 1818, 1305, -2598, 907, + 1306, 3612, 1305, 1732, 1831, 1306, 1833, 2168, 1407, 1305, + 2171, 705, 1306, 3936, 2174, 2876, 2177, 2877, 1846, 1847, + 1848, 4859, 1647, 3036, -937, 3153, 1852, 1972, 2694, 3944, + 3945, 3268, 869, 3749, -580, 1057, 2188, 1353, 4329, 2354, + 1303, 1304, 1243, 616, 2192, 2193, 2194, 3617, 1305, 2322, + 2334, 1306, 1305, 4217, 950, 1306, -2679, 2046, 1951, -581, + 2875, 4346, 1985, 986, 614, 3350, 3827, 580, 1305, 3100, + 4727, 1306, 3444, 2035, 1303, 1304, 1443, 1089, 1724, 1305, + 1307, 2222, 1306, 3214, 4517, 4212, 1413, 1307, -2679, 2481, + 3202, 1082, 1303, 1304, 1307, 3865, 1282, 1303, 1304, 3726, + 3269, 4357, 2470, 1300, -1617, 1302, 2434, 4253, 2378, 3436, + 4099, 3748, 2449, 1336, 2888, 3762, 4512, 4053, 1945, 4658, + 3215, 4660, 4661, 2570, 3364, 2407, 4316, 4307, -1617, 2411, + 1345, 533, 1347, 1307, 1349, 1132, 533, 1413, 668, 1307, + 533, 1307, 3569, 1352, 2069, 4328, 1388, 1357, 2032, 900, + 4186, 1126, 2458, 2435, 4053, 1307, 2362, 1346, 2379, 1886, + 1887, 1307, 1351, 2031, 1305, 1307, 1356, 1306, 2053, 3610, + -484, 4053, 1605, 4632, 1303, 1304, 4451, 1962, 4230, 1886, + 2398, 1303, 1304, 1417, 2352, 4665, 1307, 2094, 1536, 1430, + 1540, 1307, 1576, 1543, 1548, 1307, 4633, 4139, 658, 2251, + 1434, 1307, 3035, 154, 1440, 2370, 3112, 3435, 4142, 1569, + 2372, 2968, 3457, 2437, 2438, 1648, 3364, 3357, 3019, 3359, + 2375, 4130, 4131, 2172, 1724, 1307, 14, 1465, 3020, 1582, + 1126, 2584, 4156, 1475, 1724, 668, 658, 4748, 4749, 1307, + 4053, 4752, 658, 2454, 2455, 3868, 1307, 1652, 1652, 2339, + 682, 1307, 3630, 2156, 4756, 3017, 1307, 2985, 2986, 4766, + 4211, 4003, 2252, 1307, 3069, 1458, 3510, 1537, 3010, 3392, + 3393, 3150, 1724, 3862, 3399, 3400, 1303, 1304, 3660, 3661, + 3921, 2062, 2376, 1022, 2558, 1305, 3298, 3372, 1306, 668, + 1305, 668, 1555, 1306, 668, 668, 4321, -2597, 2078, 1985, + 1303, 1304, 1307, 3843, 3442, 2071, 1307, 4095, 3612, 4059, + 668, 3612, 3612, 1616, 3551, 3552, 4324, 3897, 4062, 4728, + 3416, 3417, 1307, 4188, 900, 2377, 2117, 4801, -2673, 1303, + 1304, -2597, 4804, 1307, 1303, 1304, 3173, 27, 1303, 1304, + 3415, 1381, 2217, 2218, 2820, 4308, 2340, 3940, 2821, -2598, + 1072, 3454, 3455, 658, 2221, 4309, 2882, 2755, 2095, 2756, + 2230, 908, 2096, 1660, 701, -2656, 701, 3874, 3220, 1303, + 1304, 3878, 1423, 2127, 1303, 1304, -2660, 4474, 1644, 4277, + 2255, 1643, 3718, -2598, 1119, 1645, 1646, 4187, 2791, 1667, + 4547, 1320, 1676, 2271, 1596, 3246, 4283, 4475, 683, 684, + 1889, 685, 686, 2663, 966, 3867, 3168, 1696, 3247, 1305, + 2585, 2405, 1306, 1303, 1304, 4191, 658, -2659, 1307, 147, + 1819, 2559, 4647, 1820, 2667, 533, 1303, 1304, 658, 3779, + 1649, 1303, 1304, 1468, 3535, 2810, 2794, 2384, 2091, 2879, + 2091, 2091, 900, 1305, 3096, 3097, 1306, 2690, 658, 1742, + 2551, 1700, 2228, 1680, 3571, 2250, 3163, 2880, 1744, 3192, + 2516, 1305, 1724, 159, 1306, 2933, 1305, 48, 1681, 1306, + 2754, 2474, -2657, 2706, 1896, 1303, 1304, 4256, 2520, -2658, + 2890, 4200, 4201, 949, 2578, 2579, 2255, 4689, 3372, 3871, + 2639, 3372, 3372, 4773, 4273, 2876, 3207, 2877, 1243, 4096, + 1303, 1304, 1303, 1304, 148, 3807, 3174, 4202, 3372, 3809, + 4203, 1934, 3555, 1243, 1303, 1304, 1303, 1304, 1606, -1913, + 2072, 3844, 4226, 3054, 4728, 898, 3372, 4231, 4234, 4236, + 4237, 1303, 1304, 3719, 2984, 2079, 3154, 1148, 3041, 1307, + 4222, 4223, 4224, 1305, 1307, 42, 1306, 2128, 4227, 1073, + 1305, 2989, 2990, 1306, 3612, 4238, 1975, 4335, 2385, -2141, + 1303, 1304, 1880, 2391, 1531, 967, 4339, 4757, -2663, 4310, + 1617, 1890, 1778, 3277, 2489, 668, 48, 2163, 1649, 3193, + 156, 1303, 1304, 1751, 2521, 995, 2334, 1323, 4548, 149, + 1906, 2875, 1650, 1303, 1304, 3323, 2246, 2094, 1704, 2590, + 3328, 1303, 1304, 4097, 292, 693, 294, 2688, 3336, 3337, + -2673, 4680, 668, 3632, 3344, 1120, 565, 1938, 1879, -1913, + 2693, 585, 4681, 2696, 2697, 2560, 668, 3648, 3649, 2044, + 3050, 668, 658, -2800, 1303, 1304, 1779, 2164, 63, 3662, + 1974, 4675, 1121, 1531, 1556, 1305, 3285, -2656, 1306, 2246, + 3356, 4372, 2507, 1607, 2983, 2475, 1243, 668, -2660, 4621, + 1992, 4622, 4758, 1307, 2993, 1780, 1303, 1304, 3755, 1305, + 1303, 1304, 1306, 4419, 2256, 668, 4421, 1608, 4705, 4706, + 3496, 2668, 2396, 668, 701, 1148, 1475, 3751, 2003, 589, + 2006, 4549, 2042, 58, 4759, 658, 2246, 1307, 1305, -2659, + 898, 1306, 2246, 1305, 4904, 1597, 1306, 1305, 1424, -2141, + 1306, 2024, 1303, 1304, 1532, 1307, 2397, 1774, 4744, 996, + 1307, 1944, 658, 1902, 2399, 1879, 3142, 1303, 1304, -2141, + 668, 4045, 2012, 156, 2401, 1781, 1475, 2043, 1305, 2413, + 1650, 1306, 658, 1305, 3556, 658, 1306, 63, 4311, 1303, + 1304, 2252, 2582, 3161, -2657, 3487, 3488, 3489, 3278, 2251, + 4588, -2658, 1303, 1304, 2512, 2094, 3175, 608, 2095, 4098, + 4351, 668, 668, 1470, 1944, 2074, -1145, 1303, 1304, -1145, + 2256, -2800, 1305, 617, 2092, 1306, 4099, 1193, 701, 2219, + 3143, 1303, 1304, 1532, 2113, 1305, 997, 1307, 1306, 633, + 1305, 668, 2118, 1306, 1307, 4461, 1303, 1304, 1303, 1304, + 4653, 668, 4649, 3030, 1782, 4189, 2420, 4360, 898, 4362, + 4147, 1944, 2353, 2138, 1022, 2165, 913, 156, 2160, 4148, + 2162, 3756, 2674, 4788, 533, 533, 533, 658, 533, 658, + 4682, 2223, 4426, 2339, 1305, 3621, 3621, 1306, 2169, 533, + -2663, 668, 4587, 2881, 1178, 533, 1303, 1304, 2232, 712, + 2157, 2158, 2159, 900, 2161, 2610, 602, 2187, 2476, 1305, + 1821, 1305, 1306, 1822, 1306, 2170, 658, 4100, 4541, 4542, + 2277, 2176, 2340, 1305, 2477, 1305, 1306, 2882, 1306, 3144, + 2175, 970, 1624, 3755, 1057, 1332, 1333, 1334, 1335, 1307, + 1305, 152, 153, 1306, 2091, 1611, 2702, 1903, 4352, 2711, + 3757, 3899, 3653, 2715, 2716, 1778, 914, 713, 2424, 668, + 668, 4737, 636, 1307, 1751, 2010, 157, 748, 2285, 1305, + -2293, 4761, 1306, 2754, 1179, 4543, 2095, 2227, 639, 3005, + 2096, 2365, 668, 2224, 2225, 2226, 658, 1057, 3347, 1680, + 1305, 2286, 1307, 1306, 1965, 3136, 4718, 1307, 637, 668, + 659, 1307, 1305, 1451, 1681, 1306, 1452, 4149, 3145, 949, + 1305, 2425, 1583, 1306, 2282, 689, 2427, 1945, 662, 1779, + 2428, 668, 2280, 658, 3631, 1612, 3633, 915, 3654, 1303, + 1304, 753, 1307, 3644, 1057, 664, 1973, 1307, 658, 136, + 4536, 2254, 4719, 1305, 1584, 971, 1306, 3657, 3194, 2718, + 1278, 2432, 2750, 4427, 3668, 3670, 3358, 3557, 292, 1188, + 294, 2351, 1303, 1304, 4178, 2528, 3942, 3687, 3689, 3691, + 1945, 1783, 2719, 3692, 3670, 1305, 1307, 4272, 1306, 1305, + 1972, 156, 1306, 1303, 1304, 3907, 3453, -1220, 1949, 1307, + 714, 1303, 1304, 2529, 1307, 2450, 3756, 1585, 1838, 1751, + 1443, 1751, 1586, 680, 1303, 1304, 1303, 1304, 3397, 3908, + 4147, 2875, 2369, 3740, 3743, 3746, 2491, 1945, 3195, 4148, + -2293, 1305, 972, 688, 1306, 1303, 1304, 1879, 3655, 4530, + 767, 4382, 998, 999, 3127, 1001, 1305, 1003, 1307, 1306, + -2293, 1784, 1279, 3709, 3295, 2255, 4856, 4857, 1303, 1304, + 1243, 2406, 2737, 1453, 1004, 3523, 693, 3398, 1305, 4778, + 1904, 1306, 4782, 1307, 2988, 1307, 2508, 3758, 4720, 2153, + 2154, 1305, 1303, 1304, 1306, 3760, 1905, 1307, 3515, 1307, + 1456, 3035, 3409, 2915, 3419, 694, 1305, 2075, 2920, 1306, + 2366, 156, 1303, 1304, 1307, 2364, 3420, 3196, 4073, -2318, + 1305, 2327, 2927, 1306, 706, 1303, 1304, 1135, 2495, 783, + 4218, 2473, 2371, 4219, 2569, 1305, 3565, 1305, 1306, 1985, + 1306, 1514, 1985, 1307, -1713, 3146, 708, 1303, 1304, 3310, + 4383, 709, 3200, 1842, 3811, 1866, 2942, 1303, 1304, 2367, + 1340, 2386, 1303, 1304, 1307, 2498, 1303, 1304, 1303, 1304, + 1303, 1304, 855, 2497, 658, 1587, 1307, 4149, 1303, 1304, + 4060, 1136, 2387, -1940, 1307, 1305, 658, 668, 1306, 3200, + 3200, 4359, 4384, -208, 2395, 1303, 1304, -2438, 3621, 898, + 658, 872, 2409, 4847, 859, 1388, 1303, 1304, 2251, 995, + 1388, 3031, 2739, 2523, 2625, 2532, 2532, 1307, 2532, 3081, + 1303, 1304, 2871, 2999, 2533, 2533, 1126, 2533, 964, 3200, + 1515, 701, 3849, 4735, 4736, 2410, 3694, 1303, 1304, 1303, + 1304, 2076, 2556, 711, 1879, 861, 1430, 1778, 668, 1307, + 1588, 658, 2662, 1307, 865, 658, 906, 900, 4590, 3002, + 1303, 1304, 922, 1514, 2327, 538, 3734, 2414, 539, -2318, + 3709, 2418, 3666, 1137, 949, 1465, 2581, 3850, 3246, 1303, + 1304, 2246, 668, 668, 658, 658, 658, 1303, 1304, -2318, + 949, 949, 1303, 1304, -1940, 1307, 2532, 2532, 2532, 1243, + 668, 1303, 1304, 1303, 1304, 2533, 2533, 2533, 1303, 1304, + 1307, 1779, 3758, 2419, 1589, 668, 2577, 1021, 1305, 953, + 3894, 1306, 2740, 955, 1214, 1215, -1827, 2882, 2423, 2645, + 2634, 1466, 1307, 1505, 3197, 1026, 2635, 4591, 658, 2339, + 1780, 1303, 1304, 996, 2881, 1307, 812, -2438, 1022, 1443, + 2426, 1305, 1515, 668, 1306, 975, 597, 1303, 1304, 2256, + 1307, 3885, 3886, 2429, 597, 152, 153, -2438, 2368, 1340, + 1022, 4515, 1305, 3574, 1307, 1306, -1827, 977, 2441, 1070, + 1305, 4204, 2346, 1306, 4207, 4208, 3753, 967, 3887, 1307, + 2686, 1307, 2460, 1305, 538, 1305, 1306, 539, 1306, 1285, + 2328, 4220, 3581, 1303, 1304, 1099, 1944, 3361, 2709, 3385, + 1781, 3872, 2687, 2695, 1305, 3781, 3782, 1306, 3479, 4229, + 997, 2680, 658, 2683, 2246, 2399, 1077, 949, 3503, 3503, + 3503, 3503, 4079, 1590, 2373, 2374, 2500, 1305, 3796, 1307, + 1306, 1100, -1941, 4520, 590, 2636, 2529, 4527, 1303, 1304, + -1827, 2713, 533, 3517, 3217, 533, 1101, 3391, 2392, 1340, + 1397, 1305, 2637, 2952, 1306, 1982, 1303, 1304, 1983, 3381, + 1103, 1984, 1591, 3804, 3106, 2636, 1303, 1304, 2714, 3384, + 1111, 1305, 2400, 1340, 1306, 1113, 1138, 1303, 1304, 1782, + 2741, 4291, 2637, 1114, 1305, 1115, 2824, 1306, 3318, 1536, + -1827, 2742, -1940, 2727, 2638, 658, 2889, 658, 2743, 2301, + 2302, 1536, 2734, 2735, 1879, 625, 1305, 1615, 1116, 1306, + 292, 909, 294, 1620, 1621, 2315, 1305, 1094, 1095, 1306, + 1096, 1305, 1097, -1940, 1306, 1305, 1142, 1305, 1306, 1305, + 1306, 2954, 1306, 2328, 2479, 2402, 1340, 1305, 3576, 1944, + 1306, 4516, 1139, -1941, 1140, 1123, 949, 2403, 1836, 2415, + 1340, 949, 1148, 1879, 1305, 1151, 626, 1306, 2991, 1156, + 3243, 1162, 1307, 2416, 1340, 1305, 1166, 2884, 1306, 1057, + 2887, 2417, 1340, 3935, 1412, 1183, 2639, 2956, 1170, 1305, + 3394, 3161, 1306, 3061, 2421, 1340, 4292, 4293, 1303, 1304, + 668, 4294, 4295, 4296, 2981, 1307, 1305, 2744, 1305, 1306, + 1190, 1306, 668, 1974, 2285, 2970, 1340, 3949, 4520, 2329, + 3015, 3016, 1340, 3401, 1191, 4527, 1307, 1192, 3953, 1305, + 1194, 3955, 1306, 898, 1307, 3004, 1443, 2286, 2255, 1985, + 1985, 1985, 1195, 627, 3405, 4596, 1196, 1307, 1305, 1307, + -1940, 1306, 3406, 1344, 2317, 2318, 1305, 3210, 3211, 1306, + 1727, 1305, 1945, 4742, 1306, 3407, 4741, 3408, 1307, -1617, + 1305, 3107, 1305, 1306, 1320, 1306, 2895, 1305, 3380, 2374, + 1306, 1199, 3939, 3383, 1340, 1089, 3410, 1343, 2069, 2069, + 2069, 1307, 3411, 1340, 2327, 1126, 1126, 1126, 1320, 3529, + 3530, 2640, 1200, 2745, -1940, 668, 1783, 1201, 1684, 3413, + 1305, 3533, 3534, 1306, 3452, 1307, 998, 999, 1000, 1001, + 1002, 1003, 1057, 1202, 3540, 1203, 1305, 1204, -1617, 1306, + 3000, 1030, 1011, 3418, 668, 1307, 668, 668, 1004, 3816, + 1340, 3837, 3838, 2641, 3852, 3853, 4037, 4038, 1307, 4039, + 4040, 3740, 1348, 3743, 3087, 3746, 949, 3363, 4041, 4042, + 668, -1941, -1617, 668, 3857, 1400, 949, 949, 949, 949, + 1307, 3583, 1305, 2641, 2330, 1306, 4762, -1913, 1126, -1617, + 1307, 1205, 1728, 1206, -1617, 1307, 1729, 3891, 3421, 1307, + 3245, 1307, -1941, 1307, 1207, 2871, 1320, 1730, 3423, 4282, + 3895, 1307, 3048, 3425, 1208, 1945, 1057, 3427, -1617, 3428, + 1389, 3429, 2091, 1209, 721, -1617, 4269, 1305, 1307, 3801, + 1306, 4048, 4057, 1210, 2881, -1617, 1211, 4805, 3074, 1307, + 4074, 1340, 3077, 1799, 1212, 1305, 3802, -1617, 1306, 3358, + 1879, 1216, -1617, 1307, 1218, 1305, 668, 668, 1306, 4088, + 1340, -1617, 4520, 4527, 2246, 668, 1305, 2662, 1536, 1306, + 1307, 3803, 1307, 2092, 1219, 2092, 2092, 1320, 3523, 1392, + 1323, 4089, 4090, 3613, 4107, 4108, 3642, 3620, 4068, 4837, + 4072, 1220, 4839, 1307, 1223, -679, 3123, 134, 3125, 1360, + 4241, 4242, 668, 3549, 1323, 628, 2599, 4365, 1224, 3667, + 3217, 4078, 1307, 1225, 748, 4502, 4503, 4344, 4345, -1941, + 1307, 1391, 3218, 1022, 4855, 1307, 1226, 629, 1227, -1617, + 4070, 1228, 3122, 1229, 1307, 78, 1307, 1398, 4080, 1731, + 1230, 1307, 2256, 4081, 1879, 1880, 1803, 4348, 4345, 4432, + 4433, -1617, 4082, 1401, 4083, 3166, 3179, 3180, 1409, 4356, + 533, -1617, 1393, 630, 1231, 658, 658, 1394, 668, 668, + 2600, 752, 3666, -1941, 1307, 4501, 3534, 1232, 753, 1410, + 4831, 1233, 2599, 2328, 1236, 3669, 3171, 1319, 1237, 1944, + 1307, 1411, 4452, -1617, 4514, 4345, 4545, 4546, 4595, 2601, + 135, 1238, 1323, 2899, 1244, 3646, 1245, 758, 759, 1246, + 3156, 1395, 2301, 2302, 1247, 4458, 4459, 4460, 136, 3203, + 3204, 3205, 3206, 631, 3208, 3209, -679, 1396, 2315, 2900, + 4553, 4554, 641, 1325, 1326, 1248, 1307, 1732, 4555, 4554, + 1418, -687, 4598, 4599, -1617, 1249, 2600, 3279, 1250, 4398, + 1804, 4654, 3853, 949, 1807, 4245, 1251, 1325, 1326, -2795, + 1252, 1808, 3294, 1420, 4686, 4687, 4390, 4391, -1617, 2602, + 2285, 4371, 2599, 1323, 3308, 2601, 1255, 767, 3317, 4394, + 1256, 1307, 1257, 4506, 1258, 2901, 4397, 1259, 2902, 137, + 1260, 4905, 1261, 2286, 4399, 1262, 2903, 4422, 4423, 1307, + 1320, 4716, 3534, 1263, 4400, 1264, 2491, 1320, 1559, 1307, + 4717, 3534, 1265, 3764, 1266, 2904, -1617, 1267, 2327, 1268, + 1307, 4734, 3211, 3324, 3325, 1269, 3327, 1270, 3329, 3330, + 3331, 3332, 3333, 3334, 3335, 2590, 2600, 3338, 3789, 1271, + 3343, 778, 1809, 2591, 3346, 2602, 4751, 4345, 2603, 3506, + 3507, 4558, 2069, 4401, 1272, 782, 783, 2317, 2318, 1126, + 4753, 4345, 1057, 1276, 3483, 2601, 1277, 1560, 2535, 3765, + 2536, -1617, 3766, 138, 1280, 4209, 4214, 4754, 4345, 4215, + 3767, 4786, 4787, -1617, 1328, 1329, 1330, 1331, 1332, 1333, + 1334, 1335, 1281, 3817, 1422, 4802, 4345, 1561, 4225, 3768, + 1811, -1913, 1284, -1617, 4232, -1617, 1321, 1288, 1328, 1329, + 1330, 1331, 1332, 1333, 1334, 1335, 4803, 4345, 2905, 1413, + 1021, 4806, 4345, 1289, 2603, 1290, 1325, 1326, 4402, 1322, + 3219, 2625, -1617, -1617, 1291, 2602, -1617, -1617, 1026, 4809, + 3853, 1292, 1310, 1293, 3769, 1945, -679, 1342, 2614, 2615, + 2616, 3831, 3832, 292, 1426, 294, 4820, 4821, 1388, 1444, + 2523, 4275, 2592, 2593, 1449, 668, 1778, 1447, 3495, 1417, + 668, 668, 668, 4838, 4345, 4852, 3736, 658, 2246, 1311, + 3353, 4894, 4895, 3927, 3501, -856, 3930, 3931, 1459, 4371, + 1869, 1870, 4105, 4106, 1477, 1479, 1323, 1495, 1497, 1498, + 3048, 668, 3770, 1323, 139, 1499, 2594, 1880, 1330, 1331, + 1332, 1333, 1334, 1335, 2603, 1500, 152, 153, 1503, 1507, + 1508, -679, 1243, 2906, 2599, 1512, 668, 668, 668, 1517, + 1779, 1312, 668, 3050, 1526, 1549, 3217, 1303, 1304, 2092, + 1554, 4690, 1812, 1313, 643, 1558, 1553, 1577, 3218, 1578, + 804, 4389, 1579, 1599, 4366, 1580, 1603, 4367, 1814, 1780, + 1609, 1604, 1619, 4739, 3564, 2604, 4389, 1618, 810, 1626, + 1627, 1629, 1634, 812, 1641, 1677, 813, 140, 1329, 1330, + 1331, 1332, 1333, 1334, 1335, 152, 153, 1685, 2600, 1683, + 1778, 4403, 3004, 1324, 1687, 1690, 1691, 2328, 4404, 2599, + 3563, 1695, 3686, 1944, 3771, 1698, 4532, 3772, 1699, 668, + 4392, -2795, 1562, 3594, 533, 1707, 3597, 2601, 1708, 4396, + 1709, 1710, 658, 1736, 1719, 658, 3294, -679, 4418, 1781, + 1737, 1745, 1314, 4420, 1747, 4368, 4369, 1443, 4405, 1338, + 3591, 2604, 141, 1795, 1796, 1797, 1798, 1799, 1751, 1325, + 1326, 1758, -679, 1777, 1779, 1788, 1325, 1326, 641, 1824, + 1879, 596, 3294, 2600, 1836, 1327, 1835, 1837, 2907, 1860, + 3629, 3627, 3294, 2329, 1897, 1877, 3639, 1913, 3638, 1888, + 1919, 1940, 4398, 3194, 3773, 1948, 1953, 2602, 4594, 1939, + 721, 640, 2601, 668, 3638, 1956, 2285, 1957, 1958, 3659, + 3663, 1959, 1960, 1961, 1880, 3675, 3674, -2795, 1782, 4109, + 1963, 4406, 3676, 3677, 658, 1964, 3640, 3641, 4454, 2286, + 1976, 1977, 4597, 1978, 1979, 2009, 3638, 4399, 2013, 2018, + 2021, 2604, 2023, 3294, 3700, 2026, 2027, 4400, 2908, 3713, + 2040, 2048, 2050, -2489, 3673, 2049, 2051, 1800, 1801, 1802, + 1803, 2057, 1563, 3195, 2060, 2064, 3638, 2065, 2066, 2067, + 2106, 2108, 2602, 2109, 2110, 2114, 2603, 2909, 1528, 2119, + 2142, 2150, 949, 4365, 1564, 3712, 1057, 2537, 2599, 641, + 748, 3688, 2151, 2179, 2155, 2178, 4401, 2180, 4173, 2635, + 2181, 2538, 1443, 2183, 2184, 3747, 2185, 2201, 2206, 3750, + 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 2211, 1330, + 1331, 1332, 1333, 1334, 1335, 1565, 549, -886, 2599, 4407, + 2215, 3690, 3774, 2231, 2273, 2253, 2220, 2274, 2330, 2289, + 2292, 2290, 3196, 4614, 4615, 2293, 4617, 752, 2635, 2341, + 2325, 2603, 2600, 2343, 753, 2349, 2355, 2357, 2358, 2359, + 2382, 3775, 2381, 2539, 1804, 2540, 1805, 1806, 1807, 1945, + 2383, 4707, 2388, 2389, 2390, 1808, 4569, 2393, 4476, 2399, + 2404, 2601, -679, 758, 759, 550, 4477, 2408, 2468, 2472, + 2412, 2430, 2600, 1536, 2431, 1879, 292, 2439, 294, 2440, + 2436, 2451, 2510, 3815, 2868, 2452, 2453, 2724, 2725, 4667, + 2465, 3123, 3678, 4478, 3679, 551, 1305, 1335, 4264, 1306, + -1296, 2601, 1320, 4594, 2736, 2478, 2500, 2233, -856, 1315, + 1316, 1317, 4763, 2748, 2749, 1783, 2488, 2503, 2636, -1442, + 1221, 2234, 2509, 1274, 1278, 2526, -2134, 3122, 2527, 2557, + 2568, 2602, 552, 767, 2563, 2637, 1809, 2541, 3680, 1724, + 4666, -1913, 4668, 3048, 2574, 2571, 2598, 2638, 2606, 4577, + 2611, 4713, 2612, 4714, 4715, 4584, 2613, 3217, 2629, 2618, + 643, 949, 3681, 4646, 3074, 3864, 2630, 2636, 3866, 2644, + 668, 2602, 2648, 2604, 668, 1536, 2654, 2650, 2656, 553, + 2658, 2664, 2665, 2666, 2637, 2864, 2865, 2866, 2867, 1505, + 2669, 2670, 2542, 1810, 1811, 2671, 2638, 778, 3682, 3000, + 4825, 2672, 1412, 2673, 2681, 2685, 1022, 1022, 152, 153, + 2603, 782, 783, 1880, 4403, 2689, 4479, 2699, 3904, 2698, + 2701, 4404, 2703, 3915, 2704, 2529, 2721, 2722, 2726, 2639, + 2728, 2729, 658, 2730, 949, 4692, 2733, 642, 2731, 3197, + 2732, 2825, 2829, -679, 3922, 2830, 2834, 3896, 2604, 2862, + 2603, 4128, 2836, 2839, 3929, 2840, 2870, 2863, -143, 2841, + 2889, 4405, 3932, 3638, 1879, 2842, 3294, 2843, 2844, 4825, + 2845, 2846, 2635, 3243, 2847, 1879, 668, 2885, 2639, 1879, + 3638, 643, 3294, 3294, 1879, 2848, 2849, -1617, 2850, 2851, + 2235, 2852, 4890, 2853, 2854, 4480, 3294, 3638, 1323, 2855, + 4132, 2856, 2857, 4898, 2898, -69, 2922, 4890, 3638, 2858, + 554, 3638, 4898, 3941, 4481, 2859, 2860, 2285, 2861, 2923, + 2893, 2921, 3947, 2496, 874, -1751, 2997, 3008, 558, 3959, + 2934, 2979, 2935, 2947, 4406, 3958, 1812, 4482, 658, 4487, + 2286, 2969, 3013, 4013, 2640, 3014, -1617, 2978, 4014, 3022, + 1307, 1813, 1814, 2987, 2996, 533, 3026, 3024, 3025, 3027, + 3028, 3037, 555, 4029, 644, 3033, 2236, 3038, 3039, 3051, + 3317, 3057, 645, 3052, 2035, 3055, 3056, 1320, -1617, 3064, + -1617, 4022, 3078, 556, 3079, 3082, 3083, 3084, 3088, 949, + 3089, 2237, 3095, 2640, 3102, 3103, 3116, -1617, 3104, 3117, + 3119, 3683, -1617, 3128, 2127, 2128, 804, 4875, 3129, 3151, + 4366, 2636, 3138, 4367, 875, 3164, 2641, 3165, 3167, -1617, + 3172, 2543, 2544, 2545, 810, 3178, -1617, 2604, 2637, 812, + 3190, 3191, 813, -1617, 3217, 3229, 3234, 3235, 3238, 4572, + 2638, 3239, 4407, -1617, 4159, 3684, 877, 3242, 557, 4798, + 3241, 1325, 1326, 558, 2238, -1617, 3248, 3251, 3250, 3252, + -1617, 3259, 878, 3260, 3265, 2641, 3299, 2604, 3266, -1617, + 3311, 3271, 559, 3272, 3282, 3312, 3351, 3244, 3320, 3321, + 4113, 3322, 3355, 2422, 1994, 4118, 3364, 2350, 1995, 3369, + 1880, 4368, 4369, 3245, 3375, 3377, 3440, 560, 4094, 3462, + 1996, 3449, 3484, 3492, 3497, 3378, 3379, 1451, 3485, 3386, + 3387, 3430, 3512, 561, 3441, 3445, 1057, 3451, 4487, 3456, + 3518, 3459, 2639, 882, 3460, 3490, 1795, 1796, 1797, 1798, + 1799, 3508, 4483, 3519, 3531, 3509, 3525, -1617, 3528, 4901, + 3536, 3550, 3554, 990, 3463, 668, 3566, 4163, 4163, 3570, + 2239, 883, 3294, 3578, 3464, 3567, 949, 884, 3577, -1617, + 3579, 4175, 949, 3582, 3294, 3294, 3168, 3590, 3465, -1617, + 3294, 4867, 3638, 1323, 3593, 4146, 3294, 2791, 3624, 1320, + 3466, 3467, 3468, 3709, 1880, 3645, 3647, 1536, 3638, 3714, + 658, 3721, 3728, 3729, 3733, 3736, 4882, 885, 3735, 3469, + 3761, -1617, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, + 3780, 3784, 3785, 4302, 2233, 3793, 3227, 3792, 3805, 3230, + 3231, 3435, 3233, 2457, 3822, 3236, 3237, 3823, 2234, 3240, + 1800, 1801, 1802, 1803, 3249, 3824, 3825, 2640, 3840, 3253, + 3254, 3255, 3256, 3257, 3842, 3846, 3848, 3261, 3262, 3854, + 3264, 3856, -1617, 3876, 2590, 3877, 3273, 3274, 3275, 3276, + 4251, 3905, 3280, 3281, 3910, 3283, 3911, 3913, 3914, 3924, + 3916, 3917, -2727, 3918, 3923, 3925, -1617, 2092, 3938, 3950, + 3946, 3957, 3956, 1481, 4016, 3402, 4017, 4024, 668, 4027, + 4028, 4020, 4023, 1482, 4247, 4032, 4033, 4034, 2761, 4036, + 2762, 4043, 4058, 4046, 4047, 4048, 4061, 1483, 4049, 2641, + 4063, 4065, 4066, 4067, 4076, 4075, 4071, 4077, 4091, 1484, + 1485, 1486, 4085, 4103, -1617, 4086, 1325, 1326, 4093, 3352, + 1997, 3540, -826, -826, 4114, 2764, 4112, 1804, 1487, 1805, + 1806, 1807, 4123, -826, 4108, -1529, 3565, 4125, 1808, -1534, + 888, 4135, 4140, 2767, 4143, 4158, 4444, 4144, 1998, 4160, + 4169, 2768, 4165, 4176, 4181, 4182, 1999, 4183, 4190, 3077, + 4198, 4205, 4206, 4221, 4330, 1323, 3297, 4240, 3904, -1617, + 4246, 4248, 4257, 4233, 4057, 1362, 4274, 3904, 2770, 4280, + -1617, -1617, 4279, 4285, 4163, 4281, 891, 2235, 4286, 4287, + 4288, 4300, 1677, 4301, 4304, 2771, 4305, 3294, 4314, 892, + 2000, -1617, 4318, -1617, 4320, 4373, 989, 4337, 4340, 3470, + 4338, 4342, 4347, 4374, 658, 4380, 4230, 1413, 4416, 1809, + 4377, 4393, 4379, 4445, 4446, 4447, 2776, 3471, 4449, 4510, + -1617, -1617, 4450, 4455, -1617, -1617, 4457, 4453, 4466, 4469, + 4488, 4489, 4490, 4491, 4498, 4500, 949, 4507, 4513, 4487, + 4524, 2001, 4544, 4537, 4550, 4539, 4414, 4540, 4561, 4562, + 4563, 4564, 4565, 2236, 4424, 4568, 4425, 1328, 1329, 1330, + 1331, 1332, 1333, 1334, 1335, 4567, 1810, 1811, 1363, 4442, + 4573, 895, 4570, 4441, 4575, 152, 153, 4585, 2237, 4586, + 4604, 4601, 292, 4605, 294, 4610, 4616, 4613, 2761, 4618, + 2762, 2780, 4619, 896, 1364, 897, 4623, 1365, 2781, 4626, + 4641, 4648, 4652, 4671, 4678, 4655, 4467, 4656, 1325, 1326, + 4659, 4672, 2662, 2782, 4662, 658, 4679, 4684, 4473, 4669, + 4673, 4697, -826, -826, 4691, 2764, 853, 4694, 4709, -1700, + 3472, 2758, 2783, -826, 1366, 4767, 4750, 4768, 1488, 4769, + 4776, 2238, 4789, 2767, 4790, 4791, 4792, 4797, 3473, 4794, + 4799, 2768, 4800, 4810, 1367, 4813, 1489, 4795, 949, 4163, + 292, 947, 294, 4814, 4815, 4816, 4817, 4818, 3704, 4840, + 2784, 947, 4845, 4841, 4848, 4851, 4863, 4868, 2770, 4866, + 4870, 4872, 4874, 949, 4876, 4879, 4880, 4891, 1067, 2785, + 4900, 1445, 1677, 3007, 3126, 2771, 4267, 3345, 4265, 4266, + 4631, 1598, 853, 1362, 1661, 3609, 4341, 4630, 4733, 1812, + 3474, 4835, 1689, 668, 4833, 4509, 4688, 1368, 1069, 4259, + 611, 2608, 2519, 3477, 1813, 1814, 2776, 3475, 4110, 4414, + 2838, 1169, 3502, 3043, 3042, 2499, 4651, 2239, 2267, 4529, + 3044, 1369, 3286, 1738, 2789, 2808, 2790, 4578, 4582, 3952, + 4557, 3511, 4116, 3516, 2792, 3847, 4696, 2038, 4775, 1328, + 1329, 1330, 1331, 1332, 1333, 1334, 1335, 4119, 4468, 4865, + 4828, 4850, 4612, 4350, 853, 2708, 3284, 3643, 3699, 4168, + 1880, 4871, 3291, 4765, 3706, 3777, 4005, 1490, 4213, 4552, + 3652, 4566, 292, 4239, 294, 4774, 4556, 3188, 853, 3808, + 4271, 2780, 3432, 853, 3810, 4723, 1363, 3806, 2781, 4836, + 649, 650, 3077, 4807, 3077, 4808, 4358, 4738, 4650, 4645, + 4523, 4395, 4708, 2782, 3288, 3698, 2798, 1697, 2202, 4376, + 3155, 1623, 1364, 3060, 4771, 1365, 4185, 3181, 2828, 2580, + 2281, 853, 3034, 3494, 2326, 3841, 1370, 3085, 2977, 1491, + 1513, 4163, 952, 4163, 4163, 1371, 3818, 4571, 853, 1521, + 4663, 2651, 1640, 4764, 2914, 4639, 1492, 3458, 1834, 2912, + 1372, 3447, 1366, 3108, 3873, 4625, 3111, 4504, 4829, 4087, + 2784, 4035, 4830, 4677, 2799, 2800, 2801, 1776, 1373, 2994, + 3812, 2802, 1367, 4193, 2208, 2209, 3544, 4442, 292, 2785, + 294, 4441, 853, 853, 853, 853, 4333, 2803, 3693, 4589, + 2804, 4832, 3542, 4473, 853, 4331, 4332, 2883, 651, 4676, + 2055, 2011, 3032, 668, 3067, 3004, 4121, 3860, 4772, 2805, + 3859, 1083, 1374, 3898, 4732, 1375, 1189, 2348, 2691, 3152, + 2692, 1063, 2167, 658, 1066, 1673, 656, 2807, 2513, 1380, + 4197, 2063, 4701, 4702, 2789, 1368, 2790, 4284, 3845, 4492, + 4746, 4864, 4873, 4899, 2792, 1376, 4902, 4620, 1283, 4163, + 4163, 3863, 2112, 4163, 4723, 3137, 4560, 3893, 4834, 1369, + 2471, 1024, 1025, 2676, 538, 2562, 3135, 539, 3134, 2073, + 853, 2213, 985, 2002, 4456, 4465, 4745, 3080, 4827, 3023, + 3478, 4582, 3717, 987, 1108, 1880, 947, 947, 1109, 3607, + 947, 1110, 1496, 1664, 1502, 2216, 1665, 0, 0, 1666, + 0, 0, 0, 0, 0, 0, 668, 0, 0, 0, + 853, 0, 0, 0, 0, 0, 2798, 0, 0, 0, + 0, 0, 947, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4783, 4784, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4163, 0, 0, 0, 0, 0, + 2296, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4903, 0, 0, 0, 1370, 0, 0, 0, 0, 0, + 0, 0, 0, 1371, 2799, 2800, 2801, 0, 0, 668, + 4893, 2802, 0, 0, 0, 3317, 3317, 0, 1372, 0, + 0, 0, 0, 0, 0, 0, 0, 2803, 0, 0, + 2804, 0, 0, 0, 0, 0, 1373, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2805, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2297, 2807, 2298, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 667, 4888, 0, 0, 0, 0, - 3312, 3312, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2793, 0, 0, 0, 0, 0, + 1374, 0, 0, 1375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1808, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1809, 1810, 0, 0, - 2292, 0, 2293, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1360, 0, 0, 0, 0, - 0, 0, 2794, 2795, 2796, 0, 0, 0, 0, 2797, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1876, - 0, 1361, 0, 0, 1362, 2798, 667, 0, 2799, 0, - 1876, 0, 0, 4864, 1876, 0, 0, 0, 0, 1876, - 2294, 0, 2295, 2296, 2297, 2298, 2299, 2800, 2300, 2301, - 2302, 2303, 2304, 2305, 2306, 2307, 2308, 0, 2309, 2310, - 2311, 1363, 0, 0, 851, 2802, 0, 851, 945, 0, + 0, 0, 0, 0, 1880, 0, 0, 0, 0, 0, + 0, 668, 0, 1376, 0, 1880, 0, 0, 4869, 1880, + 0, 0, 0, 0, 1880, 0, 2299, 3182, 2300, 2301, + 2302, 2303, 2304, 0, 2305, 2306, 2307, 2308, 2309, 2310, + 2311, 2312, 2313, 0, 2314, 2315, 2316, 0, 0, 0, + 853, 0, 0, 853, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1364, 0, 0, 0, 0, 0, 291, 0, 293, - 0, 0, 851, 851, 0, 0, 0, 0, 0, 0, - 0, 851, 851, 851, 851, 851, 851, 851, 851, 851, - 851, 851, 851, 0, 0, 0, 0, 0, 0, 0, - 0, 851, 851, 0, 851, 851, 0, 0, 0, 851, - 851, 0, 0, 851, 851, 851, 851, 0, 851, 851, - 851, 0, 0, 0, 1365, 0, 0, 851, 851, 0, - 851, 851, 851, 851, 851, 0, 0, 851, 851, 851, - 851, 851, 851, 851, 851, 851, 851, 851, 1366, 851, - 0, 0, 851, 851, 0, 0, 0, 851, 0, 0, - 0, 851, 851, 851, 0, 0, 0, 0, 2312, 2313, - 0, 2752, 0, 851, 851, 851, 0, 2753, 0, 2754, - 0, 2755, 851, 0, 0, 0, 0, 0, 0, 851, - 851, 851, 851, 2756, 0, 2757, 0, 0, 0, 0, - 851, 851, 851, 0, 851, 851, 851, 851, 851, 0, - 851, 851, 851, 851, 851, 851, 851, 851, 0, 0, - 0, 851, 851, 0, 0, 2758, 0, 0, 0, 0, - 2759, 2760, 0, 0, 0, 0, 2761, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2762, 0, - 0, 0, 0, 1367, 0, 0, 2763, 0, 0, 0, - 0, 0, 1368, 0, 0, 0, 2764, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1369, 0, 0, - 0, 0, 0, 2765, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1370, 0, 1674, 0, 0, - 2766, 0, 0, 0, 0, 0, 0, 851, 0, 2767, - 2768, 0, 0, 0, 0, 0, 0, 2769, 0, 0, - 0, 0, 0, 851, 0, 2770, 0, 0, 0, -965, - 0, 2771, 0, 0, 0, 0, 0, 0, 0, 1371, - 1083, 2772, 1372, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 853, 853, + 0, 0, 0, 0, 0, 0, 0, 853, 853, 853, + 853, 853, 853, 853, 853, 853, 853, 853, 853, 0, + 0, 0, 0, 0, 0, 0, 0, 853, 853, 0, + 853, 853, 0, 0, 0, 853, 853, 0, 0, 853, + 853, 853, 853, 0, 853, 853, 853, 0, 0, 0, + 0, 0, 0, 853, 853, 0, 853, 853, 853, 853, + 853, 0, 0, 853, 853, 853, 853, 853, 853, 853, + 853, 853, 853, 853, 0, 853, 0, 0, 853, 853, + 0, 0, 0, 853, 0, 0, 0, 853, 853, 853, + 0, 0, 0, 0, 2317, 2318, 0, 0, 0, 853, + 853, 853, 0, 0, 0, 0, 0, 0, 853, 0, + 0, 0, 0, 0, 0, 853, 853, 853, 853, 0, + 0, 0, 0, 0, 0, 0, 853, 853, 853, 0, + 853, 853, 853, 853, 853, 0, 853, 853, 853, 853, + 853, 853, 853, 853, 0, 0, 0, 853, 853, 0, + 0, 0, 0, 0, 0, 2757, 0, 0, 0, 0, + 0, 2758, 0, 2759, 0, 2760, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2761, 0, 2762, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2773, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 537, 0, 0, 538, 0, 0, 291, 0, 293, - 0, 0, 851, 0, 2774, 0, 2775, 0, 0, 0, - 0, 1165, 0, 2776, 0, 0, 0, 851, 0, 3955, - 3956, 0, 0, 0, 0, 3957, 0, 3958, 2777, 3959, - 3960, 0, 0, 0, 851, 0, 0, 0, 0, 0, - 1194, 0, 0, 0, 0, 0, 3759, 0, 0, 0, - 0, 0, 2778, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2763, + 0, 0, 0, 0, 2764, 2765, 0, 0, 0, 0, + 2766, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2767, 853, 0, 0, 0, 0, 0, 0, + 2768, 0, 0, 0, 0, 0, 1027, 0, 0, 853, + 2769, 0, 0, 0, 0, 0, 0, 0, 0, 1028, + 0, 0, 0, 0, 0, 0, 0, 2770, 0, 0, + 956, 1029, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1677, 0, 0, 2771, 0, 0, 0, 0, 0, + 0, 0, 0, 2772, 2773, 1030, 1011, 0, 0, 0, + 0, 2774, 0, 0, 0, 0, 0, 1031, 0, 2775, + 0, 0, 0, -965, 0, 2776, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2777, 0, 0, 853, 0, + 0, 0, 0, 1032, 0, 1033, 0, 1034, 0, 0, + 0, 0, 0, 853, 0, 2778, 0, 0, 0, 1035, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1232, 0, - 0, 0, 0, 0, 0, 2779, 0, 0, 0, 0, - 0, 851, 0, 0, 0, 1250, 0, 0, 0, 0, - 0, 0, 3961, 0, 2780, 3962, 0, 0, 2781, 0, - 0, 0, 0, 3963, 0, 0, 0, 0, 0, 0, + 853, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 16, 0, 0, 0, 0, 0, 0, 0, + 0, 292, 0, 294, 0, 0, 0, 0, 2779, 0, + 2780, 0, 0, 0, 0, 0, 0, 2781, -1913, 1036, + 0, 0, 0, 1037, 0, 0, 1038, 0, 0, 0, + 0, 0, 2782, 0, 0, 0, 0, 853, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3964, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1294, 0, 0, 0, 0, 2782, 0, 0, - 3965, 0, 2783, 0, 0, 0, 0, 0, 0, 2784, - 0, 2785, 0, 0, 0, 0, 2786, 0, 0, 2787, - 0, 0, 0, 0, 0, 3966, 0, 3967, 0, 0, + 0, 0, 0, 0, 0, 1039, 2783, 1040, 0, 0, + 0, 0, 0, 0, 0, 1041, 0, 1042, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3968, 3969, 0, 0, 0, 0, 0, 0, 945, - 2788, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2789, 2790, 2791, 2792, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1416, 0, 0, - 0, 0, 0, 0, 0, 3970, 0, 0, 0, 851, - 0, 2793, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 292, 0, 294, 0, 2784, + 0, 0, 0, 1043, 1044, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2785, 0, + 0, 0, 2786, 0, 0, 1045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3971, 0, 0, 1447, 0, 0, - 0, 0, 0, 3972, 3973, 0, 3974, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1046, 0, 0, + 0, 0, 0, 0, 0, 0, 947, 0, 0, 0, + 0, 2787, 0, 3696, 0, 0, 2788, 0, 0, 2758, + 0, 2759, 0, 2789, 0, 2790, 1047, 0, 0, 0, + 2791, 0, 0, 2792, 0, 2761, 0, 2762, 0, 0, + 0, 0, 0, 0, 0, 0, 853, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2794, - 2795, 2796, 0, 0, 0, 0, 2797, 0, 0, 0, - 3975, 3976, 3977, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2798, 0, 0, 2799, 0, 0, 0, 3978, - 3979, 3980, 0, 0, 0, 0, 0, 3981, 0, 0, - 3982, 0, 0, 0, 2800, 0, 0, 0, 0, 2801, - 0, 0, 0, 851, 851, 851, 3983, 3984, 0, 0, - 0, 0, 2802, 0, 0, 0, 0, 0, 851, 0, + 0, 0, 0, 0, 2793, 0, 0, 2763, 0, 0, + 0, 0, 2764, 0, 0, 0, 0, 0, 2794, 2795, + 2796, 2797, 0, 0, 0, 0, 0, 0, 0, 0, + 2767, 0, 0, 0, 1048, 0, 0, 0, 2768, 0, + 0, 0, 0, 0, 0, 2798, 0, 0, 2769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1049, 0, 0, 0, 0, 2770, 0, 0, 0, 0, + 0, 1050, 1051, 0, 0, 1052, 1053, 0, 0, 1677, + 0, 0, 2771, 0, 0, 0, 0, 0, 0, 0, + 0, 2772, 0, 0, 0, 0, 1054, 0, 0, 3697, + 853, 853, 853, 2799, 2800, 2801, 0, 2775, 0, 0, + 2802, 0, 0, 2776, 0, 853, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2803, 0, 0, 2804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3985, 3986, 851, 0, 0, 0, 0, 0, - 851, 0, 0, 851, 0, 851, 0, 0, 0, 0, - 0, 851, 0, 851, 851, 0, 0, 3987, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -965, 0, - 0, 0, 0, 0, 0, 2756, 0, 2757, 0, 0, - 0, 0, 0, 0, 0, 1377, 0, 0, 0, 0, + 0, 853, 0, 2778, 1055, 0, 0, 853, 2805, 0, + 853, 0, 853, 2806, 0, 0, 0, 1056, 853, 0, + 853, 853, 0, 0, 4602, 4603, 2807, 0, 4606, 4607, + 4608, 4609, 0, 0, 0, 0, 0, 0, 0, 292, + 0, 294, 0, 0, 0, 0, 0, 0, 2780, 0, + -2533, 0, 1380, 0, 1057, 2781, 0, 0, 2761, 0, + 2762, 0, 0, 1085, 4640, 0, 0, 0, 0, 0, + 2782, 0, 1058, 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, -826, - -826, 0, 2759, 3988, 0, 0, 1712, 3989, 0, 1713, - -826, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2762, 3990, 0, 0, 0, 0, 0, 0, 2763, 0, - 0, 0, 0, 0, 1745, 1746, 0, 0, 0, 0, - 0, 0, 0, 1756, 1757, 0, 0, 1760, 1761, 1762, - 1763, 1766, 1767, 1768, 1769, 2765, 851, 0, 0, 0, - 0, 0, 0, 1785, 1786, 851, 1787, 1788, 0, 1674, - 0, 1813, 2766, 0, 0, 1822, 1823, 1824, 1825, 3991, - 0, 1828, 3992, 0, 0, 3993, 3994, 3995, 3996, 1836, - 1837, 0, 1840, 1841, 851, 0, 0, 0, 0, 1845, - 1846, 1847, 0, 2771, 1850, 1851, 1852, 1853, 1854, 1855, - 0, 1857, 0, 0, 1860, 1861, 0, 0, 1025, 1864, - 0, 0, 0, 1867, 1871, 1872, 0, 851, 3997, 3998, - 0, 1026, 0, 0, 0, 1879, 1880, 1881, 0, 0, - 0, 0, 954, 1027, 1889, 0, 0, 0, 851, 0, - 0, 1894, 1895, 1896, 0, 3999, 851, 0, 0, 0, - 0, 0, 0, 0, 0, 851, 0, 1028, 1009, 291, - 0, 293, 0, 0, 0, 0, 0, 0, 2775, 1029, - 0, 0, 0, 0, 1932, 2776, 0, 0, 0, 0, + 0, 0, -965, 0, 2783, 2764, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2777, 0, 0, 0, 0, 1030, 0, 1031, 0, 1032, - 0, 0, 0, 0, 0, 945, 0, 0, 0, 0, - 0, 1033, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2767, 0, 0, 0, 0, 0, 0, + 0, 2768, 0, 0, 0, 0, 0, 2784, 0, 0, + -2533, 0, 0, 853, 0, 1168, 0, 0, 1059, 0, + 0, 0, 853, 0, 0, 0, 2785, 0, 2770, 0, + 2786, 0, 4703, 4704, 0, 0, 0, 0, 0, 0, + 0, 4712, 1677, 0, 1197, 2771, 0, 0, 0, 0, + 0, 853, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 16, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2779, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2011, - -1912, 1034, 0, 0, 0, 1035, 2780, 0, 1036, 2818, - 0, 0, 0, 0, 0, 2021, 0, 0, 0, 0, + 0, 0, 0, 0, 2788, 0, 2776, 0, 0, 0, + 0, 2789, 1235, 2790, 853, 0, 0, 0, 0, 0, + 0, 2792, 0, 0, 0, 0, 0, 0, 0, 1253, + 0, 0, 0, 0, 0, 853, 0, 0, 0, 0, + 0, 0, 0, 853, 0, 0, 0, 0, 0, 0, + 0, 0, 853, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2795, 0, 0, + 0, 0, 292, 0, 294, 0, 1297, 0, 0, 0, + 0, 2780, 0, 0, 0, 0, 0, 0, 2781, 0, + 0, 0, 0, 2798, 0, 0, 0, 0, 0, 0, + 0, 0, 947, 2782, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 851, 0, 0, 0, 0, 0, 0, 1037, 0, 1038, - 0, 0, 0, 0, 0, 0, 0, 1039, 0, 1040, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2784, 0, 2785, 0, 0, 0, 291, 0, 293, - 0, 2787, 0, 0, 0, 1041, 1042, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 851, 0, 2107, 0, 851, 1043, 0, 0, - 0, 851, 851, 0, 0, 0, 0, 0, 0, 2117, - 851, 0, 851, 0, 851, 851, 851, 851, 0, 1044, - 851, 0, 0, 0, 0, 0, 2144, 0, 0, 0, - 851, 851, 0, 851, 851, 0, 851, 851, 851, 851, - 0, 851, 0, 2793, 851, 0, 0, 0, 1045, 0, - 0, 0, 0, 851, 0, 0, 0, 0, 0, 0, - 851, 0, 851, 0, 851, 851, 0, 851, 851, 0, - 0, 0, 851, 851, 851, 0, 0, 0, 851, 851, - 851, 0, 851, 2187, 851, 0, 851, 0, 851, 0, - 851, 0, 0, 0, 0, 851, 0, 0, 0, 0, - 0, 2794, 2795, 2796, 0, 0, 0, 0, 2797, 0, - 0, 0, 851, 0, 0, 3691, 1046, 0, 0, 851, - 0, 2753, 851, 2754, 2798, 0, 0, 2799, 851, 0, - 0, 851, 0, 0, 0, 851, 0, 2756, 0, 2757, - 0, 0, 1047, 0, 0, 0, 2800, 0, 0, 0, - 0, 0, 0, 1048, 1049, 0, 0, 1050, 1051, 0, - 0, 0, 0, 0, 2802, 0, 0, 0, 0, 2758, - 0, 0, 0, 0, 2759, 0, 0, 0, 1052, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 945, - 0, 0, 2762, 0, 0, 0, 0, 0, 0, 0, - 2763, 0, 0, 0, 0, 945, 945, 851, 0, 851, - 2764, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1053, 2765, 0, 0, - 0, 2355, 0, 0, 0, 0, 0, 0, 0, 1054, - 0, 1674, 0, 0, 2766, 0, 0, 0, 0, 0, - 0, 0, 0, 2767, 0, 0, 0, 0, 0, 0, - 0, 3692, 0, 0, 0, 0, 0, 0, 0, 2770, - 0, 0, -2532, 0, 0, 2771, 1055, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 851, 0, 0, - 0, 0, 0, 0, 1056, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2773, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2799, 2800, 2801, 0, 0, 0, 0, 2802, 0, + 2784, 1419, 0, 0, 0, 0, 2823, 0, 0, 0, + 0, 0, 0, 0, 2803, 0, 0, 2804, 0, 2785, + 0, 0, 0, 0, 0, 0, 0, 0, 853, 0, + 0, 0, 0, 0, 0, 0, 2805, 0, 0, 0, + 0, 1450, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2807, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2789, 0, 2790, 0, 0, 0, + 0, 0, 0, 0, 2792, 0, 0, 0, 0, 0, + 853, 0, 0, 0, 853, 0, 0, 0, 0, 853, + 853, 0, 0, 0, 0, 0, 0, 0, 853, 0, + 853, 0, 853, 853, 853, 853, 0, 0, 853, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 853, 853, + 0, 853, 853, 0, 853, 853, 853, 853, 0, 853, + 0, 0, 853, 0, 0, 0, 0, 0, 0, 0, + 0, 853, 0, 0, 0, 0, 2798, 0, 853, 0, + 853, 0, 853, 853, 0, 853, 853, 0, 0, 0, + 853, 853, 853, 0, 0, 0, 853, 853, 853, 0, + 853, 0, 853, 0, 853, 0, 853, 0, 853, 0, + 0, 0, 0, 853, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 853, 0, 0, 0, 2799, 2800, 2801, 853, 0, 0, + 853, 2802, 0, 0, 0, 0, 853, 0, 0, 853, + 0, 0, 0, 853, 0, 0, 0, 2803, 0, 0, + 2804, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1716, 0, 0, 1717, 0, 0, 0, 0, 2805, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2807, 0, 1749, + 1750, 0, 0, 0, 0, 0, 0, 947, 1760, 1761, + 0, 0, 1764, 1765, 1766, 1767, 1770, 1771, 1772, 1773, + 0, 0, 0, 947, 947, 853, 0, 853, 1789, 1790, + 0, 1791, 1792, 0, 0, 0, 1817, 0, 0, 0, + 1826, 1827, 1828, 1829, 0, 0, 1832, 0, 0, 0, + 0, 0, 0, 0, 1840, 1841, 0, 1844, 1845, 0, + 0, 0, 0, 0, 1849, 1850, 1851, 0, 0, 1854, + 1855, 1856, 1857, 1858, 1859, 0, 1861, 0, 0, 1864, + 1865, 0, 0, 0, 1868, 0, 0, 0, 1871, 1875, + 1876, 0, 0, 0, 0, 2761, 0, 2762, 0, 0, + 1883, 1884, 1885, 0, 0, 853, 0, 0, 0, 1893, + 0, 0, 0, 0, 0, 0, 1898, 1899, 1900, 0, + 0, 0, 0, 0, 1, 0, 2, 0, 0, -826, + -826, 0, 2764, 0, 0, 0, 0, 0, 0, 0, + -826, 0, 0, 0, 3, 0, 0, 0, 4, 1936, + 2767, 0, 0, 0, 0, 0, 0, 0, 2768, 0, + 947, 0, 5, 6, 0, 0, 7, 0, 0, 0, + 8, 0, 0, 0, 0, 9, 10, 0, 0, 0, + 0, 2823, 0, 0, 0, 2770, 0, 0, 0, 0, + 0, 0, 0, 0, 3201, 11, 0, 0, 0, 1677, + 0, 0, 2771, 0, 0, 0, 3201, 3201, 0, 0, + 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2776, 2015, 0, 0, 0, 13, 0, + 0, 0, 0, 0, 0, 0, 14, 0, 15, 16, + 2025, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 18, 0, 0, 0, 0, 0, 2823, 0, + 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 947, + 0, 0, 0, 0, 947, 853, 0, 0, 0, 292, + 0, 294, 0, 0, 0, 21, 0, 0, 2780, 0, + 0, 0, 0, 0, 0, 2781, 0, 0, 0, 0, + 0, 22, 0, 23, 3201, 3201, 0, 24, 0, 2111, + 2782, 25, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2121, 26, 0, 0, 0, 853, + 0, 0, 0, 853, 0, 0, 0, 27, 0, 28, + 0, 2148, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, + 853, 853, 0, 0, 0, 0, 0, 2784, 0, 0, + 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, + 0, 853, 0, 0, 32, 0, 2785, 0, 0, 0, + 853, 0, 853, 0, 853, 0, 0, 0, 2191, 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, 853, 0, 0, 0, 0, 853, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2789, 0, 2790, 0, 0, 0, 0, 0, 0, + 0, 2792, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 947, + 0, 0, 33, 0, 0, 0, 0, 0, 0, 947, + 947, 947, 947, 0, 0, 0, 0, 0, 0, 34, + 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, + 0, 0, 0, 2798, 0, 0, 0, 853, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, + 39, 0, 40, 0, 41, 42, 0, 2360, 43, 44, + 0, 0, 0, 0, 853, 0, 0, 0, 0, 45, + 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, + 47, 0, 0, 0, 853, 0, 48, 0, 0, 0, + 0, 2799, 2800, 2801, 49, 0, 0, 0, 2802, 50, + 51, 52, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2803, 0, 0, 2804, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 0, 0, 2823, 2805, 0, 0, 0, + 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2807, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2443, 2445, 2447, 0, 0, 0, 3960, 3961, 0, + 0, 0, 0, 3962, 55, 3963, 0, 3964, 3965, 0, + 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, + 57, 0, 0, 58, 3764, 0, 0, 0, 59, 0, + 0, 0, 2480, 0, 0, 0, 0, 0, 0, 0, + 0, 2485, 0, 2486, 0, 0, 0, 0, 0, 0, + 60, 0, 0, 2823, 0, 0, 0, 0, 61, 0, + 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, + 3966, 0, 0, 3967, 0, 0, 947, 0, 0, 0, + 0, 3968, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3969, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3201, 0, 0, 0, 0, 0, 0, 0, 3970, 0, + 0, 853, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3971, 0, 3972, 0, 0, 0, 0, + 0, 853, 0, 0, 2576, 853, 853, 0, 853, 3973, + 3974, 0, 0, 2589, 0, 0, 0, 853, 0, 1, + 0, 2, 853, 0, 0, 853, 0, 853, 853, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 2626, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3975, 0, 0, 0, 5, 6, 0, + 0, 7, 0, 853, 0, 8, 0, 0, 0, 0, + 9, 10, 0, 0, 0, 2148, 0, 0, 0, 0, + 0, 0, 3976, 0, 0, 0, 0, 0, 0, 0, + 11, 3977, 3978, 0, 3979, 0, 2675, 0, 853, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 0, 0, 0, 2684, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3980, 3981, + 3982, 0, 853, 13, 0, 0, 0, 0, 0, 0, + 0, 14, 0, 15, 16, 0, 0, 3983, 3984, 3985, + 0, 0, 0, 0, 0, 3986, 17, 18, 3987, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 853, + 0, 0, 0, 0, 3988, 3989, 0, 0, 0, 0, + 0, 0, 0, 20, 0, 0, 0, 0, 0, 853, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3990, 3991, 0, 0, 0, 2823, 22, 0, 23, 0, + 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 3992, 0, 0, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 2835, + 0, 0, 27, 0, 28, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, + 0, 3993, 31, 0, 0, 3994, 0, 0, 0, 32, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3995, + 0, 2892, 0, 0, 0, 2894, 0, 0, 0, 0, + 2896, 2897, 0, 0, 0, 0, 853, 853, 0, 1767, + 0, 2913, 0, 1767, 0, 2916, 2917, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2924, + 2925, 0, 2926, 0, 0, 2928, 2929, 2930, 2931, 0, + 2932, 0, 0, 0, 0, 0, 0, 3996, 0, 0, + 3997, 0, 2936, 3998, 3999, 4000, 4001, 0, 0, 2937, + 0, 2938, 0, 2939, 2940, 0, 2941, 33, 0, 0, + 0, 2944, 2945, 2946, 0, 0, 0, 2948, 2949, 2950, + 0, 2951, 0, 2953, 34, 2955, 35, 2957, 0, 2958, + 0, 0, 0, 0, 2959, 0, 4002, 4003, 0, 36, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 37, 2982, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4004, 0, 947, 0, 2992, 0, 0, + 2995, 0, 38, 0, 0, 39, 0, 40, 0, 41, + 42, 0, 0, 43, 44, 853, 0, 0, 0, 0, + 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, + 0, 0, 0, 0, 0, 47, 0, 0, 853, 0, + 0, 48, 0, 0, 0, 853, 0, 0, 0, 49, + 0, 0, 0, 0, 50, 51, 52, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1085, 0, 0, 0, + 0, 853, 0, 0, 0, 0, 0, 53, 0, 0, + 0, 0, 0, 0, 0, 54, 1, 0, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 6, 0, 0, 0, 55, + 0, 0, 8, 0, 0, 0, 0, 9, 10, 0, + 0, 56, 0, 0, 0, 57, 3115, 0, 58, 0, + 0, 0, 0, 59, 0, 0, 0, 11, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 60, 12, 0, 0, 0, + 0, 0, 0, 61, 947, 0, 0, 0, 0, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 0, 63, 0, 0, 0, 0, 0, 14, 0, + 15, 16, 0, 0, 0, 0, 0, 853, 0, 0, + 0, 853, 0, 17, 18, 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, + 20, 0, 0, 0, 0, 0, 853, 947, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 0, 23, 0, 0, 0, 24, + 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2823, 0, 0, 0, 27, + 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3319, 29, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 30, 0, 0, 0, 31, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4415, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3360, 0, 0, 0, 3362, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 853, 0, 0, 0, 0, + 0, 0, 947, 0, 0, 0, 0, 0, 0, 0, + 0, 3389, 3390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3412, 0, 0, 0, 0, 0, 0, 0, + 853, 3422, 0, 3424, 33, 3426, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 853, 0, 853, 0, 0, + 0, 34, 0, 35, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, + 0, 0, 4522, 0, 0, 0, 4522, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 291, 945, 293, 0, 2438, 2440, 2442, 0, 0, - 2775, 0, -2532, 0, 0, 0, 0, 2776, 0, 0, - 1057, 0, 0, 2818, 0, 0, 0, 0, 0, 0, - 0, 0, 2777, 0, 0, 0, 3196, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2475, 0, 3196, 3196, - 0, 0, 0, 0, 0, 2480, 2778, 2481, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, + 0, 0, 39, 0, 40, 0, 0, 42, 0, 0, + 43, 44, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, + 0, 0, 47, 0, 0, 0, 0, 0, 48, 4415, + 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, + 0, 50, 51, 52, 0, 0, 0, 0, 0, 947, + 0, 0, 0, 0, 0, 947, 0, 0, 2626, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 853, 0, + 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, + 0, 0, 54, 0, 0, 2626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2779, + 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, + 0, 0, 4522, 0, 0, 0, 0, 4522, 56, 0, + 0, 0, 57, 0, 4522, 58, 0, 0, 0, 0, + 59, 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, 2780, 0, - 2818, 0, 2781, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 945, 0, 0, 0, 0, 945, 851, 0, 0, + 61, 0, 0, 0, 0, 0, 62, 0, 0, 0, + 0, 0, 0, 853, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2783, 0, 0, 0, - 0, 0, 0, 2784, 0, 2785, 3196, 3196, 0, 0, - 0, 0, 0, 2787, 0, 0, 0, 0, 2571, 0, - 0, 0, 0, 0, 0, 0, 0, 2584, 0, 0, - 0, 851, 0, 0, 0, 851, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2621, 0, 0, 2790, - 0, 0, 851, 851, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 851, 0, 2793, 0, 0, 0, 2144, - 0, 0, 851, 0, 851, 0, 851, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2670, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 851, 2679, 0, 0, - 0, 851, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2794, 2795, 2796, 0, 0, 0, 0, - 2797, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2798, 0, 0, 2799, - 0, 945, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 945, 945, 945, 945, 0, 0, 0, 2800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2802, 0, 0, 0, + 0, 0, 0, 4522, 0, 0, 0, 0, 0, 4740, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 851, 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, 851, 0, 0, 0, - 0, 0, 2830, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 851, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 853, 0, 0, 0, 0, 0, 0, 0, + 853, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3754, 0, 0, 0, 0, 0, 0, 0, + 0, 853, 0, 0, 0, 0, 0, 0, 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3783, 0, 0, 0, 3787, 3788, 0, 4522, + 0, 4522, 4522, 0, 0, 0, 0, 0, 3795, 0, + 0, 0, 0, 3797, 0, 0, 3798, 0, 3799, 3800, + 0, 0, 0, 0, 0, 0, 0, 853, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2887, 0, 0, 2818, 2889, 0, - 0, 0, 0, 2891, 2892, 0, 0, 0, 0, 0, - 0, 0, 1763, 0, 2908, 0, 1763, 0, 2911, 2912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2919, 2920, 0, 2921, 0, 0, 2923, 2924, - 2925, 2926, 0, 2927, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2931, 0, 0, 0, 0, - 0, 0, 2932, 0, 2933, 0, 2934, 2935, 0, 2936, - 0, 0, 0, 0, 2939, 2940, 2941, 0, 0, 0, - 2943, 2944, 2945, 0, 2946, 0, 2948, 0, 2950, 0, - 2952, 0, 2953, 0, 0, 2818, 0, 2954, 0, 0, + 0, 4522, 0, 0, 4522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2977, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 945, 0, - 2987, 0, 0, 2990, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4522, 0, 0, 3834, + 0, 0, 0, 0, 0, 0, 853, 0, 0, 0, + 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3196, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 851, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3834, 0, 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 851, 0, 0, 0, 851, 851, 1083, - 851, 0, 0, 3, 0, 0, 0, 4, 0, 851, - 0, 0, 0, 0, 851, 0, 0, 851, 0, 851, - 851, 5, 6, 0, 0, 7, 0, 0, 0, 8, - 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 11, 851, 0, 0, 0, 0, + 0, 853, 0, 0, 0, 0, 0, 0, 0, 0, + 3890, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 12, 0, 0, 0, 0, 0, 3110, + 3834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 851, 0, 0, 0, 0, 0, 0, 13, 0, 0, - 0, 0, 0, 0, 0, 14, 0, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17, 18, 0, 0, 851, 0, 0, 0, 0, 0, - 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 851, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 22, 851, 23, 0, 0, 0, 24, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 26, 0, 0, 2818, 0, 0, - 0, 0, 0, 0, 0, 0, 27, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, - 0, 0, 0, 32, 0, 0, 0, 0, 0, 3314, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 851, 851, - 0, 0, 0, 3355, 0, 0, 0, 3357, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 33, 0, 0, 3384, 3385, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, - 35, 0, 0, 0, 0, 3407, 0, 0, 0, 0, - 0, 0, 0, 36, 3417, 0, 3419, 0, 3421, 0, - 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4018, 4019, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 38, 0, 0, 39, - 0, 40, 0, 41, 42, 0, 0, 43, 44, 0, - 0, 0, 0, 0, 0, 0, 0, 945, 45, 0, - 0, 46, 0, 0, 0, 0, 0, 0, 0, 47, - 0, 0, 0, 0, 0, 48, 0, 851, 0, 0, - 0, 0, 0, 49, 0, 0, 0, 0, 50, 51, - 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 851, 0, 0, 0, 0, 0, 0, 851, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 53, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2621, 0, 851, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 2, 0, 0, 2621, 0, - 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3, 0, 56, 0, 4, 2144, 57, - 0, 0, 58, 0, 0, 0, 0, 59, 0, 0, - 0, 5, 6, 0, 0, 7, 0, 0, 0, 8, - 0, 0, 0, 0, 9, 10, 0, 0, 0, 60, - 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, - 0, 0, 0, 62, 11, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, - 0, 0, 0, 12, 0, 0, 945, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, - 0, 0, 0, 0, 0, 14, 0, 15, 16, 851, - 0, 0, 0, 851, 0, 0, 0, 0, 0, 0, - 17, 18, 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, 20, 851, 945, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 22, 0, 23, 0, 0, 0, 24, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 26, 0, 0, 2818, 0, 0, - 0, 0, 0, 0, 0, 0, 27, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 29, 3749, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, - 0, 0, 0, 32, 0, 3778, 0, 0, 4410, 3782, - 3783, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3790, 0, 0, 0, 0, 3792, 0, 0, 3793, - 0, 3794, 3795, 0, 0, 0, 0, 851, 0, 0, - 0, 0, 0, 0, 945, 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, 0, 0, - 0, 0, 851, 0, 0, 0, 0, 0, 0, 0, - 0, 33, 0, 0, 0, 0, 0, 851, 0, 851, - 0, 0, 3829, 0, 0, 0, 0, 0, 34, 0, - 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 36, 4517, 0, 0, 0, 4517, 0, - 0, 0, 0, 0, 37, 0, 3829, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 38, 0, 0, 39, - 0, 40, 0, 41, 42, 0, 0, 43, 44, 0, - 0, 0, 0, 3885, 0, 0, 0, 0, 45, 0, - 0, 46, 0, 0, 0, 0, 0, 0, 0, 47, - 0, 4410, 0, 3829, 0, 48, 0, 0, 0, 0, - 0, 0, 0, 49, 0, 0, 0, 0, 50, 51, - 52, 945, 0, 0, 0, 0, 0, 945, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4134, + 0, 0, 0, 0, 0, 0, 2626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 851, 0, 1, 0, 2, 0, 0, 0, 0, 0, - 0, 53, 0, 0, 0, 0, 0, 0, 0, 54, - 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 5, 6, 0, 0, 0, 0, 0, 0, 8, 0, - 0, 0, 0, 9, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 55, 4517, 0, 0, 0, 0, 4517, - 0, 0, 0, 11, 0, 56, 4517, 0, 0, 57, - 0, 0, 58, 0, 0, 0, 0, 59, 0, 0, - 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, - 4013, 4014, 0, 0, 0, 0, 0, 0, 0, 60, - 0, 0, 0, 0, 0, 0, 13, 61, 0, 0, - 0, 0, 0, 62, 14, 851, 15, 16, 0, 0, - 0, 0, 0, 0, 0, 0, 63, 0, 0, 17, - 18, 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, 20, 0, 0, 0, + 0, 0, 4172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 21, 0, 4517, 0, 0, 0, 0, - 0, 4735, 0, 0, 0, 0, 0, 0, 0, 22, - 0, 23, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 851, 27, 0, 28, 0, 3829, - 0, 0, 851, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, - 0, 0, 4129, 0, 0, 0, 0, 0, 0, 2621, - 0, 30, 0, 851, 0, 31, 0, 0, 0, 0, - 0, 945, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4517, 0, 4517, 4517, 4167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 851, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4517, 0, 0, 4517, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 34, 4517, 35, - 0, 0, 0, 0, 0, 0, 0, 0, 851, 0, - 0, 0, 36, 945, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 945, 0, - 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, - 40, 0, 0, 42, 0, 0, 43, 44, 0, 0, - 0, 2621, 0, 851, 0, 4273, 0, 45, 0, 0, - 46, 0, 0, 0, 0, 0, 0, 0, 47, 0, - 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, - 0, 0, 49, 0, 0, 0, 0, 50, 51, 52, - 3829, 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, - 53, 0, 0, 0, 0, 0, 0, 0, 54, 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, 0, 0, 0, 0, 0, 0, 2626, 0, + 0, 0, 4278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 56, 0, 0, 0, 57, 0, - 0, 58, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, - 0, 0, 62, 0, 0, 0, 0, 0, 0, 4438, - 0, 0, 0, 0, 0, 63, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4492, - 0, 4494, 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, 0, 0, 0, 0, 0, @@ -5678,12 +5714,13 @@ static const yytype_int16 yytable[] = 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, 0, 0, 0, 4443, 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, - 0, 0, 2621, 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, 4497, 0, 4499, 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, @@ -5693,10 +5730,10 @@ static const yytype_int16 yytable[] = 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, 0, 0, 0, 0, 4678, 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, 0, 0, 0, 0, 0, 0, 0, 0, 2626, 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, @@ -5704,6622 +5741,6646 @@ static const yytype_int16 yytable[] = 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, 0, 0, 0, 4765, 0, 0, 0, - 0, 0, 0, 0, 3829, 159, 0, 160, 715, 162, - 163, 164, 165, 0, 0, 166, 0, 0, 0, 167, - 0, 0, 716, 0, 169, 170, 171, 172, 173, 174, - 175, 717, 177, 0, 178, 4788, 0, 718, 179, 719, - 720, 721, 180, 722, 0, 181, 182, 183, 1868, 184, - 0, 185, 186, 0, 0, 187, 723, 724, 188, 189, - 0, 190, 725, 726, 192, 193, 0, 194, 195, 196, - 197, 727, 199, 0, 728, 201, 729, 730, 731, 732, - 733, 0, 207, 208, 209, 210, 211, 212, 213, 214, - 0, 215, 216, 0, 217, 218, 219, 734, 221, 0, - 222, 735, 736, 223, 0, 0, 224, 737, 225, 738, - 739, 226, 0, 227, 740, 741, 0, 228, 229, 230, - 742, 743, 744, 0, 0, 0, 0, 745, 233, 746, - 0, 0, 747, 234, 0, 235, 0, 0, 0, 0, - 236, 0, 237, 238, 239, 240, 241, 0, 0, 0, - 0, 242, 0, 0, 243, 244, 245, 0, 0, 0, - 246, 0, 247, 248, 0, 249, 250, 251, 0, 252, - 253, 0, 254, 255, 256, 257, 258, 259, 260, 748, - 0, 261, 262, 263, 264, 749, 750, 265, 266, 0, - 267, 268, 269, 751, 0, 270, 0, 0, 0, 752, - 272, 0, 273, 0, 274, 0, 275, 276, 753, 278, - 754, 280, 281, 0, 282, 3829, 755, 283, 284, 285, - 0, 286, 756, 757, 0, 287, 288, 0, 0, 0, - 758, 290, 291, 292, 293, 759, 0, 0, 294, 295, - 296, 0, 0, 297, 0, 0, 0, 760, 298, 299, - 761, 0, 0, 300, 0, 301, 302, 0, 303, 304, - 0, 0, 0, 305, 0, 0, 306, 307, 762, 0, - 1869, 309, 0, 763, 310, 311, 0, 0, 0, 0, - 0, 764, 313, 0, 314, 0, 315, 0, 316, 317, - 0, 0, 765, 0, 0, 0, 318, 319, 320, 321, + 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4683, 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, 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, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4770, 0, 0, 0, 0, 0, 0, + 0, 3834, 160, 0, 161, 717, 163, 164, 165, 166, + 0, 0, 167, 0, 0, 0, 168, 0, 0, 718, + 0, 170, 171, 172, 173, 174, 175, 176, 719, 178, + 0, 179, 4793, 0, 720, 180, 721, 722, 723, 181, + 724, 0, 182, 183, 184, 1872, 185, 0, 186, 187, + 0, 0, 188, 725, 726, 189, 190, 0, 191, 727, + 728, 193, 194, 0, 195, 196, 197, 198, 729, 200, + 0, 730, 202, 731, 732, 733, 734, 735, 0, 208, + 209, 210, 211, 212, 213, 214, 215, 0, 216, 217, + 0, 218, 219, 220, 736, 222, 0, 223, 737, 738, + 224, 0, 0, 225, 739, 226, 740, 741, 227, 0, + 228, 742, 743, 0, 229, 230, 231, 744, 745, 746, + 0, 0, 0, 0, 747, 234, 748, 0, 0, 749, + 235, 0, 236, 0, 0, 0, 0, 237, 0, 238, + 239, 240, 241, 242, 0, 0, 0, 0, 243, 0, + 0, 244, 245, 246, 0, 0, 0, 247, 0, 248, + 249, 0, 250, 251, 252, 0, 253, 254, 0, 255, + 256, 257, 258, 259, 260, 261, 750, 0, 262, 263, + 264, 265, 751, 752, 266, 267, 0, 268, 269, 270, + 753, 0, 271, 0, 0, 0, 754, 273, 0, 274, + 0, 275, 0, 276, 277, 755, 279, 756, 281, 282, + 0, 283, 3834, 757, 284, 285, 286, 0, 287, 758, + 759, 0, 288, 289, 0, 0, 0, 760, 291, 292, + 293, 294, 761, 0, 0, 295, 296, 297, 0, 0, + 298, 0, 0, 0, 762, 299, 300, 763, 0, 0, + 301, 0, 302, 303, 0, 304, 305, 0, 0, 0, + 306, 0, 0, 307, 308, 764, 0, 1873, 310, 0, + 765, 311, 312, 0, 0, 0, 0, 0, 766, 314, + 0, 315, 0, 316, 0, 317, 318, 0, 0, 767, + 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 334, 0, + 335, 336, 337, 338, 768, 339, 340, 341, 342, 769, + 343, 344, 345, 0, 0, 0, 0, 346, 347, 348, + 349, 770, 351, 0, 0, 771, 353, 772, 354, 0, + 355, 773, 774, 775, 776, 777, 360, 361, 362, 363, + 364, 365, 0, 778, 366, 0, 0, 367, 368, 369, + 370, 779, 780, 781, 371, 372, 0, 782, 783, 373, + 0, 374, 375, 784, 0, 377, 378, 379, 380, 0, + 381, 382, 0, 0, 0, 0, 0, 0, 0, 0, + 383, 384, 385, 0, 785, 386, 0, 387, 0, 388, + 389, 786, 391, 392, 393, 394, 787, 788, 397, 789, + 0, 398, 399, 400, 0, 401, 0, 402, 403, 404, + 405, 406, 0, 790, 408, 409, 0, 0, 410, 0, + 0, 0, 411, 412, 413, 414, 415, 0, 0, 416, + 417, 418, 419, 420, 0, 421, 422, 0, 423, 424, + 425, 791, 792, 426, 0, 427, 0, 428, 429, 0, + 430, 431, 0, 432, 0, 793, 0, 794, 434, 435, + 436, 437, 438, 439, 795, 796, 442, 443, 444, 445, + 0, 797, 447, 0, 0, 0, 448, 449, 450, 451, + 0, 0, 0, 452, 0, 0, 0, 453, 0, 454, + 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, + 464, 465, 0, 0, 0, 0, 0, 0, 466, 467, + 0, 468, 0, 0, 469, 0, 0, 0, 470, 471, + 472, 0, 0, 0, 473, 798, 799, 474, 475, 0, + 476, 477, 800, 479, 480, 481, 801, 802, 482, 483, + 484, 485, 803, 486, 487, 0, 0, 488, 489, 490, + 491, 0, 804, 492, 493, 0, 805, 806, 807, 808, + 0, 0, 0, 0, 1874, 498, 499, 500, 0, 809, + 810, 811, 502, 503, 504, 812, 505, 506, 813, 507, + 508, 0, 509, 510, 0, 0, 511, 0, 0, 512, + 0, 513, 0, 814, 515, 0, 0, 815, 816, 817, + 818, 516, 0, 0, 517, 819, 0, 820, 518, 519, + 520, 521, 522, 821, 822, 0, 0, 0, 0, 0, + 0, 525, 526, 0, 527, 528, 529, 0, 0, 823, + 0, 0, 0, 0, 0, 0, 0, 824, 825, 0, + 0, 0, 0, 826, 827, 0, 0, 828, 829, 0, + 0, 830, 831, 160, 0, 161, 717, 163, 164, 165, + 166, 2144, 0, 167, 0, 0, 0, 168, 0, 0, + 718, 0, 170, 171, 172, 173, 174, 175, 176, 719, + 178, 0, 179, 0, 0, 2145, 180, 721, 722, 723, + 181, 724, 0, 182, 183, 184, 0, 185, 0, 186, + 187, 0, 0, 188, 725, 726, 189, 190, 0, 191, + 727, 728, 193, 194, 0, 195, 196, 197, 198, 729, + 200, 0, 730, 202, 731, 732, 733, 734, 735, 0, + 208, 209, 210, 211, 212, 213, 214, 215, 0, 216, + 217, 0, 218, 219, 220, 736, 222, 0, 223, 737, + 738, 224, 0, 0, 225, 739, 226, 740, 741, 227, + 0, 228, 742, 743, 0, 229, 230, 231, 744, 745, + 746, 0, 0, 0, 0, 747, 234, 748, 0, 0, + 2146, 235, 0, 236, 0, 0, 0, 0, 237, 0, + 238, 239, 240, 241, 242, 0, 0, 0, 0, 243, + 0, 0, 244, 245, 246, 0, 0, 0, 247, 0, + 248, 249, 0, 250, 251, 252, 0, 253, 254, 0, + 255, 256, 257, 258, 259, 260, 261, 750, 0, 262, + 263, 264, 265, 751, 752, 266, 267, 0, 268, 269, + 270, 753, 0, 271, 0, 0, 0, 754, 273, 0, + 274, 0, 275, 0, 276, 277, 755, 279, 756, 281, + 282, 0, 283, 0, 757, 284, 285, 286, 0, 287, + 758, 759, 0, 288, 289, 0, 0, 0, 760, 291, + 292, 293, 294, 761, 0, 0, 295, 296, 297, 0, + 0, 298, 0, 0, 0, 762, 299, 300, 763, 0, + 0, 301, 0, 302, 303, 0, 304, 305, 0, 0, + 0, 306, 0, 0, 307, 308, 764, 0, 0, 310, + 0, 765, 311, 312, 0, 0, 0, 0, 0, 766, + 314, 0, 315, 0, 316, 0, 317, 318, 0, 0, + 767, 0, 0, 0, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 0, 335, 336, 337, 338, 768, 339, 340, 341, 342, + 769, 343, 344, 345, 0, 0, 0, 0, 346, 347, + 348, 349, 770, 351, 0, 0, 771, 353, 772, 354, + 0, 355, 773, 774, 775, 776, 777, 360, 361, 362, + 363, 364, 365, 0, 778, 366, 0, 0, 367, 368, + 369, 370, 779, 780, 781, 371, 372, 0, 782, 783, + 373, 0, 374, 375, 784, 2147, 377, 378, 379, 380, + 0, 381, 382, 0, 0, 0, 0, 0, 0, 0, + 0, 383, 384, 385, 0, 785, 386, 0, 387, 0, + 388, 389, 786, 391, 392, 393, 394, 787, 788, 397, + 789, 0, 398, 399, 400, 0, 401, 0, 402, 403, + 404, 405, 406, 0, 790, 408, 409, 0, 0, 410, + 0, 0, 0, 411, 412, 413, 414, 415, 0, 0, + 416, 417, 418, 419, 420, 0, 421, 422, 0, 423, + 424, 425, 791, 792, 426, 0, 427, 0, 428, 429, + 0, 430, 431, 0, 432, 0, 793, 0, 794, 434, + 435, 436, 437, 438, 439, 795, 796, 442, 443, 444, + 445, 0, 797, 447, 0, 0, 0, 448, 449, 450, + 451, 0, 0, 0, 452, 0, 0, 0, 453, 0, + 454, 455, 456, 457, 458, 459, 0, 460, 461, 462, + 463, 464, 465, 0, 0, 0, 0, 0, 0, 466, + 467, 0, 468, 0, 0, 469, 0, 0, 0, 470, + 471, 472, 0, 0, 0, 473, 798, 799, 474, 475, + 0, 476, 477, 800, 479, 480, 481, 801, 802, 482, + 483, 484, 485, 803, 486, 487, 0, 0, 488, 489, + 490, 491, 0, 804, 492, 493, 0, 805, 806, 807, + 808, 0, 0, 0, 0, 0, 498, 499, 500, 0, + 809, 810, 811, 502, 503, 504, 812, 505, 506, 813, + 507, 508, 0, 509, 510, 0, 0, 511, 0, 0, + 512, 0, 513, 0, 814, 515, 0, 0, 815, 816, + 817, 818, 516, 0, 0, 517, 819, 0, 820, 518, + 519, 520, 521, 522, 821, 822, 0, 0, 0, 0, + 0, 0, 525, 526, 0, 527, 528, 529, 0, 0, + 823, 0, 0, 0, 0, 0, 0, 0, 824, 825, + 0, 0, 0, 0, 826, 827, 0, 0, 828, 829, + 0, 0, 830, 831, 160, 0, 161, 717, 163, 164, + 165, 166, 0, 0, 167, 0, 0, 0, 168, 0, + 0, 718, 0, 170, 171, 172, 173, 174, 175, 176, + 719, 178, 0, 179, 0, 0, 720, 180, 721, 722, + 723, 181, 724, 0, 182, 183, 184, 0, 185, 0, + 186, 187, 0, 0, 188, 725, 726, 189, 190, 0, + 191, 727, 728, 193, 194, 0, 195, 196, 197, 198, + 729, 200, 0, 730, 202, 731, 732, 733, 734, 735, + 0, 208, 209, 210, 211, 212, 213, 214, 215, 0, + 216, 217, 0, 218, 219, 220, 736, 222, 0, 223, + 737, 738, 224, 0, 0, 225, 739, 226, 740, 741, + 227, 0, 228, 742, 743, 0, 229, 230, 231, 744, + 745, 746, 0, 0, 0, 0, 747, 234, 748, 0, + 0, 749, 235, 0, 236, 0, 0, 0, 0, 237, + 0, 238, 239, 240, 241, 242, 0, 0, 0, 0, + 243, 0, 0, 244, 245, 246, 0, 0, 0, 247, + 0, 248, 249, 0, 250, 251, 252, 0, 253, 254, + 0, 255, 256, 257, 258, 259, 260, 261, 750, 0, + 262, 263, 264, 265, 751, 752, 266, 267, 0, 268, + 269, 270, 753, 0, 271, 0, 0, 0, 754, 273, + 2442, 274, 0, 275, 0, 276, 277, 755, 279, 756, + 281, 282, 0, 283, 0, 757, 284, 285, 286, 0, + 287, 758, 759, 0, 288, 289, 0, 0, 0, 760, + 291, 292, 293, 294, 761, 0, 0, 295, 296, 297, + 0, 0, 298, 0, 0, 0, 762, 299, 300, 763, + 0, 0, 301, 0, 302, 303, 0, 304, 305, 0, + 0, 0, 306, 0, 0, 307, 308, 764, 0, 0, + 310, 0, 765, 311, 312, 0, 0, 0, 0, 0, + 766, 314, 0, 315, 0, 316, 0, 317, 318, 0, + 0, 767, 0, 0, 0, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 0, 335, 336, 337, 338, 768, 339, 340, 341, + 342, 769, 343, 344, 345, 0, 0, 0, 0, 346, + 347, 348, 349, 770, 351, 0, 0, 771, 353, 772, + 354, 0, 355, 773, 774, 775, 776, 777, 360, 361, + 362, 363, 364, 365, 0, 778, 366, 0, 0, 367, + 368, 369, 370, 779, 780, 781, 371, 372, 0, 782, + 783, 373, 0, 374, 375, 784, 0, 377, 378, 379, + 380, 0, 381, 382, 0, 0, 0, 0, 0, 0, + 0, 0, 383, 384, 385, 0, 785, 386, 0, 387, + 0, 388, 389, 786, 391, 392, 393, 394, 787, 788, + 397, 789, 0, 398, 399, 400, 0, 401, 0, 402, + 403, 404, 405, 406, 0, 790, 408, 409, 0, 0, + 410, 0, 0, 0, 411, 412, 413, 414, 415, 0, + 0, 416, 417, 418, 419, 420, 0, 421, 422, 0, + 423, 424, 425, 791, 792, 426, 0, 427, 0, 428, + 429, 0, 430, 431, 0, 432, 0, 793, 0, 794, + 434, 435, 436, 437, 438, 439, 795, 796, 442, 443, + 444, 445, 0, 797, 447, 0, 0, 0, 448, 449, + 450, 451, 0, 0, 0, 452, 0, 0, 0, 453, + 0, 454, 455, 456, 457, 458, 459, 0, 460, 461, + 462, 463, 464, 465, 0, 0, 0, 0, 0, 0, + 466, 467, 0, 468, 0, 0, 469, 0, 0, 0, + 470, 471, 472, 0, 0, 0, 473, 798, 799, 474, + 475, 0, 476, 477, 800, 479, 480, 481, 801, 802, + 482, 483, 484, 485, 803, 486, 487, 0, 0, 488, + 489, 490, 491, 0, 804, 492, 493, 0, 805, 806, + 807, 808, 0, 0, 0, 0, 0, 498, 499, 500, + 0, 809, 810, 811, 502, 503, 504, 812, 505, 506, + 813, 507, 508, 0, 509, 510, 0, 0, 511, 0, + 0, 512, 0, 513, 0, 814, 515, 0, 0, 815, + 816, 817, 818, 516, 0, 0, 517, 819, 0, 820, + 518, 519, 520, 521, 522, 821, 822, 0, 0, 0, + 0, 0, 0, 525, 526, 0, 527, 528, 529, 0, + 0, 823, 0, 0, 0, 0, 0, 0, 0, 824, + 825, 0, 0, 0, 0, 826, 827, 0, 0, 828, + 829, 0, 0, 830, 831, 160, 0, 161, 717, 163, + 164, 165, 166, 0, 0, 167, 0, 0, 0, 168, + 0, 0, 718, 0, 170, 171, 172, 173, 174, 175, + 176, 719, 178, 0, 179, 0, 0, 720, 180, 721, + 722, 723, 181, 724, 0, 182, 183, 184, 0, 185, + 0, 186, 187, 0, 0, 188, 725, 726, 189, 190, + 0, 191, 727, 728, 193, 194, 0, 195, 196, 197, + 198, 729, 200, 0, 730, 202, 731, 732, 733, 734, + 735, 0, 208, 209, 210, 211, 212, 213, 214, 215, + 0, 216, 217, 0, 218, 219, 220, 736, 222, 0, + 223, 737, 738, 224, 0, 0, 225, 739, 226, 740, + 741, 227, 0, 228, 742, 743, 0, 229, 230, 231, + 744, 745, 746, 0, 0, 0, 0, 747, 234, 748, + 0, 0, 749, 235, 0, 236, 0, 0, 0, 0, + 237, 0, 238, 239, 240, 241, 242, 0, 0, 0, + 0, 243, 0, 0, 244, 245, 246, 0, 0, 0, + 247, 0, 248, 249, 0, 250, 251, 252, 0, 253, + 254, 0, 255, 256, 257, 258, 259, 260, 261, 750, + 0, 262, 263, 264, 265, 751, 752, 266, 267, 0, + 268, 269, 270, 753, 0, 271, 0, 0, 0, 754, + 273, 2444, 274, 0, 275, 0, 276, 277, 755, 279, + 756, 281, 282, 0, 283, 0, 757, 284, 285, 286, + 0, 287, 758, 759, 0, 288, 289, 0, 0, 0, + 760, 291, 292, 293, 294, 761, 0, 0, 295, 296, + 297, 0, 0, 298, 0, 0, 0, 762, 299, 300, + 763, 0, 0, 301, 0, 302, 303, 0, 304, 305, + 0, 0, 0, 306, 0, 0, 307, 308, 764, 0, + 0, 310, 0, 765, 311, 312, 0, 0, 0, 0, + 0, 766, 314, 0, 315, 0, 316, 0, 317, 318, + 0, 0, 767, 0, 0, 0, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 0, 335, 336, 337, 338, 768, 339, 340, + 341, 342, 769, 343, 344, 345, 0, 0, 0, 0, + 346, 347, 348, 349, 770, 351, 0, 0, 771, 353, + 772, 354, 0, 355, 773, 774, 775, 776, 777, 360, + 361, 362, 363, 364, 365, 0, 778, 366, 0, 0, + 367, 368, 369, 370, 779, 780, 781, 371, 372, 0, + 782, 783, 373, 0, 374, 375, 784, 0, 377, 378, + 379, 380, 0, 381, 382, 0, 0, 0, 0, 0, + 0, 0, 0, 383, 384, 385, 0, 785, 386, 0, + 387, 0, 388, 389, 786, 391, 392, 393, 394, 787, + 788, 397, 789, 0, 398, 399, 400, 0, 401, 0, + 402, 403, 404, 405, 406, 0, 790, 408, 409, 0, + 0, 410, 0, 0, 0, 411, 412, 413, 414, 415, + 0, 0, 416, 417, 418, 419, 420, 0, 421, 422, + 0, 423, 424, 425, 791, 792, 426, 0, 427, 0, + 428, 429, 0, 430, 431, 0, 432, 0, 793, 0, + 794, 434, 435, 436, 437, 438, 439, 795, 796, 442, + 443, 444, 445, 0, 797, 447, 0, 0, 0, 448, + 449, 450, 451, 0, 0, 0, 452, 0, 0, 0, + 453, 0, 454, 455, 456, 457, 458, 459, 0, 460, + 461, 462, 463, 464, 465, 0, 0, 0, 0, 0, + 0, 466, 467, 0, 468, 0, 0, 469, 0, 0, + 0, 470, 471, 472, 0, 0, 0, 473, 798, 799, + 474, 475, 0, 476, 477, 800, 479, 480, 481, 801, + 802, 482, 483, 484, 485, 803, 486, 487, 0, 0, + 488, 489, 490, 491, 0, 804, 492, 493, 0, 805, + 806, 807, 808, 0, 0, 0, 0, 0, 498, 499, + 500, 0, 809, 810, 811, 502, 503, 504, 812, 505, + 506, 813, 507, 508, 0, 509, 510, 0, 0, 511, + 0, 0, 512, 0, 513, 0, 814, 515, 0, 0, + 815, 816, 817, 818, 516, 0, 0, 517, 819, 0, + 820, 518, 519, 520, 521, 522, 821, 822, 0, 0, + 0, 0, 0, 0, 525, 526, 0, 527, 528, 529, + 0, 0, 823, 0, 0, 0, 0, 0, 0, 0, + 824, 825, 0, 0, 0, 0, 826, 827, 0, 0, + 828, 829, 0, 0, 830, 831, 160, 0, 161, 717, + 163, 164, 165, 166, 0, 0, 167, 0, 0, 0, + 168, 0, 0, 718, 0, 170, 171, 172, 173, 174, + 175, 176, 719, 178, 0, 179, 0, 0, 720, 180, + 721, 722, 723, 181, 724, 0, 182, 183, 184, 0, + 185, 0, 186, 187, 0, 0, 188, 725, 726, 189, + 190, 0, 191, 727, 728, 193, 194, 0, 195, 196, + 197, 198, 729, 200, 0, 730, 202, 731, 732, 733, + 734, 735, 0, 208, 209, 210, 211, 212, 213, 214, + 215, 0, 216, 217, 0, 218, 219, 220, 736, 222, + 0, 223, 737, 738, 224, 0, 0, 225, 739, 226, + 740, 741, 227, 0, 228, 742, 743, 0, 229, 230, + 231, 744, 745, 746, 0, 0, 0, 0, 747, 234, + 748, 0, 0, 749, 235, 0, 236, 0, 0, 0, + 0, 237, 0, 238, 239, 240, 241, 242, 0, 0, + 0, 0, 243, 0, 0, 244, 245, 246, 0, 0, + 0, 247, 0, 248, 249, 0, 250, 251, 252, 0, + 253, 254, 0, 255, 256, 257, 258, 259, 260, 261, + 750, 0, 262, 263, 264, 265, 751, 752, 266, 267, + 0, 268, 269, 270, 753, 0, 271, 0, 0, 0, + 754, 273, 2446, 274, 0, 275, 0, 276, 277, 755, + 279, 756, 281, 282, 0, 283, 0, 757, 284, 285, + 286, 0, 287, 758, 759, 0, 288, 289, 0, 0, + 0, 760, 291, 292, 293, 294, 761, 0, 0, 295, + 296, 297, 0, 0, 298, 0, 0, 0, 762, 299, + 300, 763, 0, 0, 301, 0, 302, 303, 0, 304, + 305, 0, 0, 0, 306, 0, 0, 307, 308, 764, + 0, 0, 310, 0, 765, 311, 312, 0, 0, 0, + 0, 0, 766, 314, 0, 315, 0, 316, 0, 317, + 318, 0, 0, 767, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 0, 334, 335, 336, 337, 766, 338, 339, - 340, 341, 767, 342, 343, 344, 0, 0, 0, 0, - 345, 346, 347, 348, 768, 350, 0, 0, 769, 352, - 770, 353, 0, 354, 771, 772, 773, 774, 775, 359, - 360, 361, 362, 363, 364, 0, 776, 365, 0, 0, - 366, 367, 368, 369, 777, 778, 779, 370, 371, 0, - 780, 781, 372, 0, 373, 374, 782, 0, 376, 377, - 378, 379, 0, 380, 381, 0, 0, 0, 0, 0, - 0, 0, 0, 382, 383, 384, 0, 783, 385, 0, - 386, 0, 387, 388, 784, 390, 391, 392, 393, 785, - 786, 396, 787, 0, 397, 398, 399, 0, 400, 0, - 401, 402, 403, 404, 405, 0, 788, 407, 408, 0, - 0, 409, 0, 0, 0, 410, 411, 412, 413, 414, - 0, 0, 415, 416, 417, 418, 419, 0, 420, 421, - 0, 422, 423, 424, 789, 790, 425, 0, 426, 0, - 427, 428, 0, 429, 430, 0, 431, 0, 791, 0, - 792, 433, 434, 435, 436, 437, 438, 793, 794, 441, - 442, 443, 444, 0, 795, 446, 0, 0, 0, 447, - 448, 449, 450, 0, 0, 0, 451, 0, 0, 0, - 452, 0, 453, 454, 455, 456, 457, 458, 0, 459, - 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, - 0, 465, 466, 0, 467, 0, 0, 468, 0, 0, - 0, 469, 470, 471, 0, 0, 0, 472, 796, 797, - 473, 474, 0, 475, 476, 798, 478, 479, 480, 799, - 800, 481, 482, 483, 484, 801, 485, 486, 0, 0, - 487, 488, 489, 490, 0, 802, 491, 492, 0, 803, - 804, 805, 806, 0, 0, 0, 0, 1870, 497, 498, - 499, 0, 807, 808, 809, 501, 502, 503, 810, 504, - 505, 811, 506, 507, 0, 508, 509, 0, 0, 510, - 0, 0, 511, 0, 512, 0, 812, 514, 0, 0, - 813, 814, 815, 816, 515, 0, 0, 516, 817, 0, - 818, 517, 518, 519, 520, 521, 819, 820, 0, 0, - 0, 0, 0, 0, 524, 525, 0, 526, 527, 528, - 0, 0, 821, 0, 0, 0, 0, 0, 0, 0, - 822, 823, 0, 0, 0, 0, 824, 825, 0, 0, - 826, 827, 0, 0, 828, 829, 159, 0, 160, 715, - 162, 163, 164, 165, 2140, 0, 166, 0, 0, 0, - 167, 0, 0, 716, 0, 169, 170, 171, 172, 173, - 174, 175, 717, 177, 0, 178, 0, 0, 2141, 179, - 719, 720, 721, 180, 722, 0, 181, 182, 183, 0, - 184, 0, 185, 186, 0, 0, 187, 723, 724, 188, - 189, 0, 190, 725, 726, 192, 193, 0, 194, 195, - 196, 197, 727, 199, 0, 728, 201, 729, 730, 731, - 732, 733, 0, 207, 208, 209, 210, 211, 212, 213, - 214, 0, 215, 216, 0, 217, 218, 219, 734, 221, - 0, 222, 735, 736, 223, 0, 0, 224, 737, 225, - 738, 739, 226, 0, 227, 740, 741, 0, 228, 229, - 230, 742, 743, 744, 0, 0, 0, 0, 745, 233, - 746, 0, 0, 2142, 234, 0, 235, 0, 0, 0, - 0, 236, 0, 237, 238, 239, 240, 241, 0, 0, - 0, 0, 242, 0, 0, 243, 244, 245, 0, 0, - 0, 246, 0, 247, 248, 0, 249, 250, 251, 0, - 252, 253, 0, 254, 255, 256, 257, 258, 259, 260, - 748, 0, 261, 262, 263, 264, 749, 750, 265, 266, - 0, 267, 268, 269, 751, 0, 270, 0, 0, 0, - 752, 272, 0, 273, 0, 274, 0, 275, 276, 753, - 278, 754, 280, 281, 0, 282, 0, 755, 283, 284, - 285, 0, 286, 756, 757, 0, 287, 288, 0, 0, - 0, 758, 290, 291, 292, 293, 759, 0, 0, 294, - 295, 296, 0, 0, 297, 0, 0, 0, 760, 298, - 299, 761, 0, 0, 300, 0, 301, 302, 0, 303, - 304, 0, 0, 0, 305, 0, 0, 306, 307, 762, - 0, 0, 309, 0, 763, 310, 311, 0, 0, 0, - 0, 0, 764, 313, 0, 314, 0, 315, 0, 316, - 317, 0, 0, 765, 0, 0, 0, 318, 319, 320, + 332, 333, 334, 0, 335, 336, 337, 338, 768, 339, + 340, 341, 342, 769, 343, 344, 345, 0, 0, 0, + 0, 346, 347, 348, 349, 770, 351, 0, 0, 771, + 353, 772, 354, 0, 355, 773, 774, 775, 776, 777, + 360, 361, 362, 363, 364, 365, 0, 778, 366, 0, + 0, 367, 368, 369, 370, 779, 780, 781, 371, 372, + 0, 782, 783, 373, 0, 374, 375, 784, 0, 377, + 378, 379, 380, 0, 381, 382, 0, 0, 0, 0, + 0, 0, 0, 0, 383, 384, 385, 0, 785, 386, + 0, 387, 0, 388, 389, 786, 391, 392, 393, 394, + 787, 788, 397, 789, 0, 398, 399, 400, 0, 401, + 0, 402, 403, 404, 405, 406, 0, 790, 408, 409, + 0, 0, 410, 0, 0, 0, 411, 412, 413, 414, + 415, 0, 0, 416, 417, 418, 419, 420, 0, 421, + 422, 0, 423, 424, 425, 791, 792, 426, 0, 427, + 0, 428, 429, 0, 430, 431, 0, 432, 0, 793, + 0, 794, 434, 435, 436, 437, 438, 439, 795, 796, + 442, 443, 444, 445, 0, 797, 447, 0, 0, 0, + 448, 449, 450, 451, 0, 0, 0, 452, 0, 0, + 0, 453, 0, 454, 455, 456, 457, 458, 459, 0, + 460, 461, 462, 463, 464, 465, 0, 0, 0, 0, + 0, 0, 466, 467, 0, 468, 0, 0, 469, 0, + 0, 0, 470, 471, 472, 0, 0, 0, 473, 798, + 799, 474, 475, 0, 476, 477, 800, 479, 480, 481, + 801, 802, 482, 483, 484, 485, 803, 486, 487, 0, + 0, 488, 489, 490, 491, 0, 804, 492, 493, 0, + 805, 806, 807, 808, 0, 0, 0, 0, 0, 498, + 499, 500, 0, 809, 810, 811, 502, 503, 504, 812, + 505, 506, 813, 507, 508, 0, 509, 510, 0, 0, + 511, 0, 0, 512, 0, 513, 0, 814, 515, 0, + 0, 815, 816, 817, 818, 516, 0, 0, 517, 819, + 0, 820, 518, 519, 520, 521, 522, 821, 822, 0, + 0, 0, 0, 0, 0, 525, 526, 0, 527, 528, + 529, 0, 0, 823, 0, 0, 0, 0, 0, 0, + 0, 824, 825, 0, 0, 0, 0, 826, 827, 0, + 0, 828, 829, 0, 0, 830, 831, 160, 0, 161, + 717, 163, 164, 165, 166, 0, 0, 167, 0, 0, + 0, 168, 0, 0, 718, 0, 170, 171, 172, 173, + 174, 175, 176, 719, 178, 0, 179, 0, 0, 720, + 180, 721, 722, 723, 181, 724, 0, 182, 183, 184, + 0, 185, 0, 186, 187, 0, 0, 188, 725, 726, + 189, 190, 0, 191, 727, 728, 193, 194, 0, 195, + 196, 197, 198, 729, 200, 0, 730, 202, 731, 732, + 733, 734, 735, 0, 208, 209, 210, 211, 212, 213, + 214, 215, 0, 216, 217, 0, 218, 219, 220, 736, + 222, 0, 223, 737, 738, 224, 0, 0, 225, 739, + 226, 740, 741, 227, 0, 228, 742, 743, 0, 229, + 230, 231, 744, 745, 746, 0, 0, 0, 0, 747, + 234, 748, 0, 0, 749, 235, 0, 236, 0, 0, + 0, 0, 237, 0, 238, 239, 240, 241, 242, 0, + 0, 0, 0, 243, 0, 0, 244, 245, 246, 0, + 0, 0, 247, 0, 248, 249, 0, 250, 251, 252, + 0, 253, 254, 0, 255, 256, 257, 258, 259, 260, + 261, 750, 0, 262, 263, 264, 265, 751, 752, 266, + 267, 0, 268, 269, 270, 753, 0, 271, 0, 0, + 0, 754, 273, 0, 274, 0, 275, 0, 276, 277, + 755, 279, 756, 281, 282, 0, 283, 0, 757, 284, + 285, 286, 0, 287, 758, 759, 0, 288, 289, 0, + 0, 0, 760, 291, 292, 293, 294, 761, 0, 0, + 295, 296, 297, 0, 0, 298, 0, 0, 0, 762, + 299, 300, 763, 0, 0, 301, 0, 302, 303, 0, + 304, 305, 0, 0, 0, 306, 0, 0, 307, 308, + 764, 0, 0, 310, 0, 765, 311, 312, 0, 0, + 0, 0, 0, 766, 314, 0, 315, 0, 316, 0, + 317, 318, 0, 0, 767, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 0, 334, 335, 336, 337, 766, 338, - 339, 340, 341, 767, 342, 343, 344, 0, 0, 0, - 0, 345, 346, 347, 348, 768, 350, 0, 0, 769, - 352, 770, 353, 0, 354, 771, 772, 773, 774, 775, - 359, 360, 361, 362, 363, 364, 0, 776, 365, 0, - 0, 366, 367, 368, 369, 777, 778, 779, 370, 371, - 0, 780, 781, 372, 0, 373, 374, 782, 2143, 376, - 377, 378, 379, 0, 380, 381, 0, 0, 0, 0, - 0, 0, 0, 0, 382, 383, 384, 0, 783, 385, - 0, 386, 0, 387, 388, 784, 390, 391, 392, 393, - 785, 786, 396, 787, 0, 397, 398, 399, 0, 400, - 0, 401, 402, 403, 404, 405, 0, 788, 407, 408, - 0, 0, 409, 0, 0, 0, 410, 411, 412, 413, - 414, 0, 0, 415, 416, 417, 418, 419, 0, 420, - 421, 0, 422, 423, 424, 789, 790, 425, 0, 426, - 0, 427, 428, 0, 429, 430, 0, 431, 0, 791, - 0, 792, 433, 434, 435, 436, 437, 438, 793, 794, - 441, 442, 443, 444, 0, 795, 446, 0, 0, 0, - 447, 448, 449, 450, 0, 0, 0, 451, 0, 0, - 0, 452, 0, 453, 454, 455, 456, 457, 458, 0, - 459, 460, 461, 462, 463, 464, 0, 0, 0, 0, - 0, 0, 465, 466, 0, 467, 0, 0, 468, 0, - 0, 0, 469, 470, 471, 0, 0, 0, 472, 796, - 797, 473, 474, 0, 475, 476, 798, 478, 479, 480, - 799, 800, 481, 482, 483, 484, 801, 485, 486, 0, - 0, 487, 488, 489, 490, 0, 802, 491, 492, 0, - 803, 804, 805, 806, 0, 0, 0, 0, 0, 497, - 498, 499, 0, 807, 808, 809, 501, 502, 503, 810, - 504, 505, 811, 506, 507, 0, 508, 509, 0, 0, - 510, 0, 0, 511, 0, 512, 0, 812, 514, 0, - 0, 813, 814, 815, 816, 515, 0, 0, 516, 817, - 0, 818, 517, 518, 519, 520, 521, 819, 820, 0, - 0, 0, 0, 0, 0, 524, 525, 0, 526, 527, - 528, 0, 0, 821, 0, 0, 0, 0, 0, 0, - 0, 822, 823, 0, 0, 0, 0, 824, 825, 0, - 0, 826, 827, 0, 0, 828, 829, 159, 0, 160, - 715, 162, 163, 164, 165, 0, 0, 166, 0, 0, - 0, 167, 0, 0, 716, 0, 169, 170, 171, 172, - 173, 174, 175, 717, 177, 0, 178, 0, 0, 718, - 179, 719, 720, 721, 180, 722, 0, 181, 182, 183, - 0, 184, 0, 185, 186, 0, 0, 187, 723, 724, - 188, 189, 0, 190, 725, 726, 192, 193, 0, 194, - 195, 196, 197, 727, 199, 0, 728, 201, 729, 730, - 731, 732, 733, 0, 207, 208, 209, 210, 211, 212, - 213, 214, 0, 215, 216, 0, 217, 218, 219, 734, - 221, 0, 222, 735, 736, 223, 0, 0, 224, 737, - 225, 738, 739, 226, 0, 227, 740, 741, 0, 228, - 229, 230, 742, 743, 744, 0, 0, 0, 0, 745, - 233, 746, 0, 0, 747, 234, 0, 235, 0, 0, - 0, 0, 236, 0, 237, 238, 239, 240, 241, 0, - 0, 0, 0, 242, 0, 0, 243, 244, 245, 0, - 0, 0, 246, 0, 247, 248, 0, 249, 250, 251, - 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, - 260, 748, 0, 261, 262, 263, 264, 749, 750, 265, - 266, 0, 267, 268, 269, 751, 0, 270, 0, 0, - 0, 752, 272, 2437, 273, 0, 274, 0, 275, 276, - 753, 278, 754, 280, 281, 0, 282, 0, 755, 283, - 284, 285, 0, 286, 756, 757, 0, 287, 288, 0, - 0, 0, 758, 290, 291, 292, 293, 759, 0, 0, - 294, 295, 296, 0, 0, 297, 0, 0, 0, 760, - 298, 299, 761, 0, 0, 300, 0, 301, 302, 0, - 303, 304, 0, 0, 0, 305, 0, 0, 306, 307, - 762, 0, 0, 309, 0, 763, 310, 311, 0, 0, - 0, 0, 0, 764, 313, 0, 314, 0, 315, 0, - 316, 317, 0, 0, 765, 0, 0, 0, 318, 319, + 331, 332, 333, 334, 0, 335, 336, 337, 338, 768, + 339, 340, 341, 342, 769, 343, 344, 345, 0, 0, + 0, 0, 346, 347, 348, 349, 770, 351, 0, 0, + 771, 353, 772, 354, 0, 355, 773, 774, 775, 776, + 777, 360, 361, 362, 363, 364, 365, 0, 778, 366, + 0, 0, 367, 368, 369, 370, 779, 780, 781, 371, + 372, 0, 782, 783, 373, 0, 374, 375, 784, 0, + 377, 378, 379, 380, 0, 381, 382, 0, 0, 0, + 0, 0, 0, 0, 0, 383, 384, 385, 0, 785, + 386, 0, 387, 0, 388, 389, 786, 391, 392, 393, + 394, 787, 788, 397, 789, 0, 398, 399, 400, 0, + 401, 0, 402, 403, 404, 405, 406, 0, 790, 408, + 409, 0, 0, 410, 0, 0, 0, 411, 412, 413, + 414, 415, 0, 0, 416, 417, 418, 419, 420, 0, + 421, 422, 0, 423, 424, 425, 791, 792, 426, 0, + 427, 0, 428, 429, 0, 430, 431, 0, 432, 0, + 793, 0, 794, 434, 435, 436, 437, 438, 439, 795, + 796, 442, 443, 444, 445, 0, 797, 447, 0, 0, + 0, 448, 449, 450, 451, 0, 0, 0, 452, 0, + 0, 0, 453, 0, 454, 455, 456, 457, 458, 459, + 0, 460, 461, 462, 463, 464, 465, 0, 0, 0, + 0, 0, 0, 466, 467, 0, 468, 0, 0, 469, + 0, 0, 0, 470, 471, 472, 0, 0, 0, 473, + 798, 799, 474, 475, 0, 476, 477, 800, 479, 480, + 481, 801, 802, 482, 483, 484, 485, 803, 486, 487, + 0, 0, 488, 489, 490, 491, 0, 804, 492, 493, + 0, 805, 806, 807, 808, 0, 0, 0, 0, 0, + 498, 499, 500, 0, 809, 810, 811, 502, 503, 504, + 812, 505, 506, 813, 507, 508, 0, 509, 510, 0, + 0, 511, 0, 0, 512, 0, 513, 0, 814, 515, + 0, 0, 815, 816, 817, 818, 516, 0, 0, 517, + 819, 0, 820, 518, 519, 520, 521, 522, 821, 822, + 0, 0, 0, 0, 0, 0, 525, 526, 0, 527, + 528, 529, 0, 0, 823, 0, 0, 0, 0, 0, + 0, 0, 824, 825, 0, 0, 0, 0, 826, 827, + 0, 0, 828, 829, 0, 0, 830, 831, 160, 0, + 161, 717, 163, 164, 165, 166, 0, 0, 167, 0, + 0, 0, 168, 0, 0, 718, 0, 170, 171, 172, + 173, 174, 175, 176, 719, 178, 0, 179, 0, 0, + 720, 180, 721, 722, 723, 181, 724, 0, 182, 183, + 184, 0, 185, 0, 186, 187, 0, 0, 188, 725, + 726, 189, 190, 0, 191, 727, 728, 193, 194, 0, + 195, 196, 197, 198, 729, 200, 0, 730, 202, 731, + 732, 733, 734, 735, 0, 208, 209, 210, 211, 212, + 213, 214, 215, 0, 216, 217, 0, 218, 219, 220, + 736, 222, 0, 223, 737, 738, 224, 0, 0, 225, + 739, 226, 740, 741, 227, 0, 228, 742, 743, 0, + 229, 230, 231, 744, 745, 746, 0, 0, 0, 0, + 747, 234, 748, 0, 0, 749, 235, 0, 236, 0, + 0, 0, 0, 237, 0, 238, 239, 240, 241, 242, + 0, 0, 0, 0, 243, 0, 0, 244, 245, 246, + 0, 0, 0, 247, 0, 248, 249, 0, 250, 251, + 252, 0, 253, 254, 0, 255, 256, 257, 258, 259, + 260, 261, 750, 0, 262, 263, 264, 265, 751, 752, + 266, 267, 0, 268, 269, 270, 753, 0, 271, 0, + 0, 0, 754, 273, 0, 274, 0, 275, 0, 276, + 277, 755, 279, 756, 281, 282, 0, 283, 0, 757, + 284, 285, 286, 0, 287, 758, 759, 0, 288, 289, + 0, 0, 0, 760, 291, 292, 293, 294, 761, 0, + 0, 295, 296, 297, 0, 0, 298, 0, 0, 0, + 762, 299, 300, 763, 0, 0, 301, 0, 302, 303, + 0, 304, 305, 0, 0, 0, 306, 0, 0, 307, + 308, 764, 0, 0, 310, 0, 765, 311, 312, 0, + 0, 0, 0, 0, 766, 314, 0, 315, 0, 316, + 0, 317, 318, 0, 0, 767, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 0, 334, 335, 336, 337, 766, - 338, 339, 340, 341, 767, 342, 343, 344, 0, 0, - 0, 0, 345, 346, 347, 348, 768, 350, 0, 0, - 769, 352, 770, 353, 0, 354, 771, 772, 773, 774, - 775, 359, 360, 361, 362, 363, 364, 0, 776, 365, - 0, 0, 366, 367, 368, 369, 777, 778, 779, 370, - 371, 0, 780, 781, 372, 0, 373, 374, 782, 0, - 376, 377, 378, 379, 0, 380, 381, 0, 0, 0, - 0, 0, 0, 0, 0, 382, 383, 384, 0, 783, - 385, 0, 386, 0, 387, 388, 784, 390, 391, 392, - 393, 785, 786, 396, 787, 0, 397, 398, 399, 0, - 400, 0, 401, 402, 403, 404, 405, 0, 788, 407, - 408, 0, 0, 409, 0, 0, 0, 410, 411, 412, - 413, 414, 0, 0, 415, 416, 417, 418, 419, 0, - 420, 421, 0, 422, 423, 424, 789, 790, 425, 0, - 426, 0, 427, 428, 0, 429, 430, 0, 431, 0, - 791, 0, 792, 433, 434, 435, 436, 437, 438, 793, - 794, 441, 442, 443, 444, 0, 795, 446, 0, 0, - 0, 447, 448, 449, 450, 0, 0, 0, 451, 0, - 0, 0, 452, 0, 453, 454, 455, 456, 457, 458, - 0, 459, 460, 461, 462, 463, 464, 0, 0, 0, - 0, 0, 0, 465, 466, 0, 467, 0, 0, 468, - 0, 0, 0, 469, 470, 471, 0, 0, 0, 472, - 796, 797, 473, 474, 0, 475, 476, 798, 478, 479, - 480, 799, 800, 481, 482, 483, 484, 801, 485, 486, - 0, 0, 487, 488, 489, 490, 0, 802, 491, 492, - 0, 803, 804, 805, 806, 0, 0, 0, 0, 0, - 497, 498, 499, 0, 807, 808, 809, 501, 502, 503, - 810, 504, 505, 811, 506, 507, 0, 508, 509, 0, - 0, 510, 0, 0, 511, 0, 512, 0, 812, 514, - 0, 0, 813, 814, 815, 816, 515, 0, 0, 516, - 817, 0, 818, 517, 518, 519, 520, 521, 819, 820, - 0, 0, 0, 0, 0, 0, 524, 525, 0, 526, - 527, 528, 0, 0, 821, 0, 0, 0, 0, 0, - 0, 0, 822, 823, 0, 0, 0, 0, 824, 825, - 0, 0, 826, 827, 0, 0, 828, 829, 159, 0, - 160, 715, 162, 163, 164, 165, 0, 0, 166, 0, - 0, 0, 167, 0, 0, 716, 0, 169, 170, 171, - 172, 173, 174, 175, 717, 177, 0, 178, 0, 0, - 718, 179, 719, 720, 721, 180, 722, 0, 181, 182, - 183, 0, 184, 0, 185, 186, 0, 0, 187, 723, - 724, 188, 189, 0, 190, 725, 726, 192, 193, 0, - 194, 195, 196, 197, 727, 199, 0, 728, 201, 729, - 730, 731, 732, 733, 0, 207, 208, 209, 210, 211, - 212, 213, 214, 0, 215, 216, 0, 217, 218, 219, - 734, 221, 0, 222, 735, 736, 223, 0, 0, 224, - 737, 225, 738, 739, 226, 0, 227, 740, 741, 0, - 228, 229, 230, 742, 743, 744, 0, 0, 0, 0, - 745, 233, 746, 0, 0, 747, 234, 0, 235, 0, - 0, 0, 0, 236, 0, 237, 238, 239, 240, 241, - 0, 0, 0, 0, 242, 0, 0, 243, 244, 245, - 0, 0, 0, 246, 0, 247, 248, 0, 249, 250, - 251, 0, 252, 253, 0, 254, 255, 256, 257, 258, - 259, 260, 748, 0, 261, 262, 263, 264, 749, 750, - 265, 266, 0, 267, 268, 269, 751, 0, 270, 0, - 0, 0, 752, 272, 2439, 273, 0, 274, 0, 275, - 276, 753, 278, 754, 280, 281, 0, 282, 0, 755, - 283, 284, 285, 0, 286, 756, 757, 0, 287, 288, - 0, 0, 0, 758, 290, 291, 292, 293, 759, 0, - 0, 294, 295, 296, 0, 0, 297, 0, 0, 0, - 760, 298, 299, 761, 0, 0, 300, 0, 301, 302, - 0, 303, 304, 0, 0, 0, 305, 0, 0, 306, - 307, 762, 0, 0, 309, 0, 763, 310, 311, 0, - 0, 0, 0, 0, 764, 313, 0, 314, 0, 315, - 0, 316, 317, 0, 0, 765, 0, 0, 0, 318, + 330, 331, 332, 333, 334, 0, 335, 336, 337, 338, + 768, 339, 340, 341, 342, 769, 343, 344, 345, 0, + 0, 0, 0, 346, 347, 348, 349, 770, 351, 0, + 0, 771, 353, 772, 354, 0, 355, 773, 774, 775, + 776, 777, 360, 361, 362, 363, 364, 365, 0, 778, + 366, 0, 0, 367, 368, 369, 370, 779, 780, 781, + 371, 372, 0, 782, 783, 373, 0, 374, 375, 784, + 0, 377, 378, 379, 380, 0, 381, 382, 0, 0, + 0, 0, 0, 0, 0, 0, 383, 384, 385, 0, + 785, 386, 0, 387, 0, 388, 389, 786, 391, 392, + 393, 394, 787, 788, 397, 789, 0, 398, 399, 400, + 0, 401, 0, 402, 403, 404, 405, 406, 0, 790, + 408, 409, 0, 0, 410, 0, 0, 0, 411, 412, + 413, 414, 415, 0, 0, 416, 417, 418, 419, 420, + 0, 421, 422, 0, 423, 424, 425, 791, 792, 426, + 0, 427, 0, 428, 429, 0, 430, 431, 0, 432, + 0, 793, 0, 794, 434, 435, 436, 437, 438, 439, + 795, 796, 442, 443, 444, 445, 0, 797, 447, 0, + 0, 0, 448, 449, 450, 451, 0, 0, 0, 452, + 0, 0, 0, 453, 0, 454, 455, 456, 457, 458, + 459, 0, 460, 461, 462, 463, 464, 465, 0, 0, + 0, 0, 0, 0, 466, 467, 0, 468, 0, 0, + 469, 0, 0, 0, 470, 471, 472, 0, 0, 0, + 473, 798, 799, 474, 475, 0, 476, 477, 800, 479, + 480, 481, 801, 802, 482, 483, 484, 485, 803, 486, + 487, 0, 0, 488, 489, 490, 491, 0, 804, 492, + 493, 0, 805, 806, 807, 808, 0, 0, 0, 0, + 0, 498, 499, 500, 0, 809, 810, 811, 502, 503, + 504, 812, 505, 506, 813, 507, 508, 0, 509, 510, + 0, 0, 511, 0, 0, 512, 0, 513, 0, 814, + 515, 0, 0, 815, 816, 817, 818, 516, 0, 0, + 517, 819, 0, 820, 518, 519, 520, 521, 522, 821, + 822, 0, 0, 0, 0, 0, 0, 525, 526, 0, + 527, 528, 529, 0, 0, 823, 0, 0, 0, 0, + 0, 0, 0, 824, 825, 0, 0, 0, 0, 826, + 1234, 0, 0, 828, 829, 0, 0, 830, 831, 160, + 0, 161, 717, 163, 164, 165, 166, 1907, 0, 167, + 0, 0, 0, 1908, 0, 0, 718, 0, 170, 171, + 172, 173, 174, 175, 176, 719, 178, 0, 179, 0, + 0, 720, 180, 721, 722, 723, 181, 724, 0, 182, + 183, 184, 0, 185, 0, 186, 187, 0, 0, 188, + 725, 726, 189, 190, 0, 191, 727, 728, 193, 194, + 0, 195, 196, 197, 198, 729, 200, 0, 730, 202, + 731, 732, 733, 734, 735, 0, 208, 209, 210, 211, + 212, 213, 214, 215, 0, 216, 217, 0, 218, 219, + 220, 736, 222, 0, 223, 737, 738, 224, 0, 0, + 225, 739, 226, 740, 741, 227, 0, 228, 742, 743, + 0, 229, 230, 231, 744, 745, 746, 0, 0, 0, + 0, 747, 234, 748, 0, 0, 749, 235, 0, 236, + 0, 0, 0, 0, 237, 0, 238, 239, 240, 241, + 242, 0, 0, 0, 0, 243, 0, 0, 244, 245, + 246, 0, 0, 0, 247, 0, 248, 249, 0, 250, + 251, 252, 0, 253, 254, 0, 255, 256, 257, 258, + 259, 260, 261, 750, 0, 262, 263, 264, 265, 751, + 752, 266, 267, 0, 268, 269, 270, 753, 0, 271, + 0, 0, 0, 754, 273, 0, 274, 0, 275, 0, + 276, 277, 755, 279, 756, 281, 282, 0, 283, 0, + 757, 284, 285, 286, 0, 287, 758, 759, 0, 288, + 289, 0, 0, 0, 760, 291, 292, 293, 294, 761, + 0, 0, 295, 296, 297, 0, 0, 298, 0, 0, + 0, 762, 299, 300, 763, 0, 0, 301, 0, 302, + 303, 0, 304, 305, 0, 0, 0, 306, 0, 0, + 307, 308, 764, 0, 0, 310, 0, 765, 311, 312, + 0, 0, 0, 0, 0, 766, 314, 0, 315, 0, + 316, 0, 317, 318, 0, 0, 767, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 0, 334, 335, 336, 337, - 766, 338, 339, 340, 341, 767, 342, 343, 344, 0, - 0, 0, 0, 345, 346, 347, 348, 768, 350, 0, - 0, 769, 352, 770, 353, 0, 354, 771, 772, 773, - 774, 775, 359, 360, 361, 362, 363, 364, 0, 776, - 365, 0, 0, 366, 367, 368, 369, 777, 778, 779, - 370, 371, 0, 780, 781, 372, 0, 373, 374, 782, - 0, 376, 377, 378, 379, 0, 380, 381, 0, 0, - 0, 0, 0, 0, 0, 0, 382, 383, 384, 0, - 783, 385, 0, 386, 0, 387, 388, 784, 390, 391, - 392, 393, 785, 786, 396, 787, 0, 397, 398, 399, - 0, 400, 0, 401, 402, 403, 404, 405, 0, 788, - 407, 408, 0, 0, 409, 0, 0, 0, 410, 411, - 412, 413, 414, 0, 0, 415, 416, 417, 418, 419, - 0, 420, 421, 0, 422, 423, 424, 789, 790, 425, - 0, 426, 0, 427, 428, 0, 429, 430, 0, 431, - 0, 791, 0, 792, 433, 434, 435, 436, 437, 438, - 793, 794, 441, 442, 443, 444, 0, 795, 446, 0, - 0, 0, 447, 448, 449, 450, 0, 0, 0, 451, - 0, 0, 0, 452, 0, 453, 454, 455, 456, 457, - 458, 0, 459, 460, 461, 462, 463, 464, 0, 0, - 0, 0, 0, 0, 465, 466, 0, 467, 0, 0, - 468, 0, 0, 0, 469, 470, 471, 0, 0, 0, - 472, 796, 797, 473, 474, 0, 475, 476, 798, 478, - 479, 480, 799, 800, 481, 482, 483, 484, 801, 485, - 486, 0, 0, 487, 488, 489, 490, 0, 802, 491, - 492, 0, 803, 804, 805, 806, 0, 0, 0, 0, - 0, 497, 498, 499, 0, 807, 808, 809, 501, 502, - 503, 810, 504, 505, 811, 506, 507, 0, 508, 509, - 0, 0, 510, 0, 0, 511, 0, 512, 0, 812, - 514, 0, 0, 813, 814, 815, 816, 515, 0, 0, - 516, 817, 0, 818, 517, 518, 519, 520, 521, 819, - 820, 0, 0, 0, 0, 0, 0, 524, 525, 0, - 526, 527, 528, 0, 0, 821, 0, 0, 0, 0, - 0, 0, 0, 822, 823, 0, 0, 0, 0, 824, - 825, 0, 0, 826, 827, 0, 0, 828, 829, 159, - 0, 160, 715, 162, 163, 164, 165, 0, 0, 166, - 0, 0, 0, 167, 0, 0, 716, 0, 169, 170, - 171, 172, 173, 174, 175, 717, 177, 0, 178, 0, - 0, 718, 179, 719, 720, 721, 180, 722, 0, 181, - 182, 183, 0, 184, 0, 185, 186, 0, 0, 187, - 723, 724, 188, 189, 0, 190, 725, 726, 192, 193, - 0, 194, 195, 196, 197, 727, 199, 0, 728, 201, - 729, 730, 731, 732, 733, 0, 207, 208, 209, 210, - 211, 212, 213, 214, 0, 215, 216, 0, 217, 218, - 219, 734, 221, 0, 222, 735, 736, 223, 0, 0, - 224, 737, 225, 738, 739, 226, 0, 227, 740, 741, - 0, 228, 229, 230, 742, 743, 744, 0, 0, 0, - 0, 745, 233, 746, 0, 0, 747, 234, 0, 235, - 0, 0, 0, 0, 236, 0, 237, 238, 239, 240, - 241, 0, 0, 0, 0, 242, 0, 0, 243, 244, - 245, 0, 0, 0, 246, 0, 247, 248, 0, 249, - 250, 251, 0, 252, 253, 0, 254, 255, 256, 257, - 258, 259, 260, 748, 0, 261, 262, 263, 264, 749, - 750, 265, 266, 0, 267, 268, 269, 751, 0, 270, - 0, 0, 0, 752, 272, 2441, 273, 0, 274, 0, - 275, 276, 753, 278, 754, 280, 281, 0, 282, 0, - 755, 283, 284, 285, 0, 286, 756, 757, 0, 287, - 288, 0, 0, 0, 758, 290, 291, 292, 293, 759, - 0, 0, 294, 295, 296, 0, 0, 297, 0, 0, - 0, 760, 298, 299, 761, 0, 0, 300, 0, 301, - 302, 0, 303, 304, 0, 0, 0, 305, 0, 0, - 306, 307, 762, 0, 0, 309, 0, 763, 310, 311, - 0, 0, 0, 0, 0, 764, 313, 0, 314, 0, - 315, 0, 316, 317, 0, 0, 765, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 0, 334, 335, 336, - 337, 766, 338, 339, 340, 341, 767, 342, 343, 344, - 0, 0, 0, 0, 345, 346, 347, 348, 768, 350, - 0, 0, 769, 352, 770, 353, 0, 354, 771, 772, - 773, 774, 775, 359, 360, 361, 362, 363, 364, 0, - 776, 365, 0, 0, 366, 367, 368, 369, 777, 778, - 779, 370, 371, 0, 780, 781, 372, 0, 373, 374, - 782, 0, 376, 377, 378, 379, 0, 380, 381, 0, - 0, 0, 0, 0, 0, 0, 0, 382, 383, 384, - 0, 783, 385, 0, 386, 0, 387, 388, 784, 390, - 391, 392, 393, 785, 786, 396, 787, 0, 397, 398, - 399, 0, 400, 0, 401, 402, 403, 404, 405, 0, - 788, 407, 408, 0, 0, 409, 0, 0, 0, 410, - 411, 412, 413, 414, 0, 0, 415, 416, 417, 418, - 419, 0, 420, 421, 0, 422, 423, 424, 789, 790, - 425, 0, 426, 0, 427, 428, 0, 429, 430, 0, - 431, 0, 791, 0, 792, 433, 434, 435, 436, 437, - 438, 793, 794, 441, 442, 443, 444, 0, 795, 446, - 0, 0, 0, 447, 448, 449, 450, 0, 0, 0, - 451, 0, 0, 0, 452, 0, 453, 454, 455, 456, - 457, 458, 0, 459, 460, 461, 462, 463, 464, 0, - 0, 0, 0, 0, 0, 465, 466, 0, 467, 0, - 0, 468, 0, 0, 0, 469, 470, 471, 0, 0, - 0, 472, 796, 797, 473, 474, 0, 475, 476, 798, - 478, 479, 480, 799, 800, 481, 482, 483, 484, 801, - 485, 486, 0, 0, 487, 488, 489, 490, 0, 802, - 491, 492, 0, 803, 804, 805, 806, 0, 0, 0, - 0, 0, 497, 498, 499, 0, 807, 808, 809, 501, - 502, 503, 810, 504, 505, 811, 506, 507, 0, 508, - 509, 0, 0, 510, 0, 0, 511, 0, 512, 0, - 812, 514, 0, 0, 813, 814, 815, 816, 515, 0, - 0, 516, 817, 0, 818, 517, 518, 519, 520, 521, - 819, 820, 0, 0, 0, 0, 0, 0, 524, 525, - 0, 526, 527, 528, 0, 0, 821, 0, 0, 0, - 0, 0, 0, 0, 822, 823, 0, 0, 0, 0, - 824, 825, 0, 0, 826, 827, 0, 0, 828, 829, - 159, 0, 160, 715, 162, 163, 164, 165, 0, 0, - 166, 0, 0, 0, 167, 0, 0, 716, 0, 169, - 170, 171, 172, 173, 174, 175, 717, 177, 0, 178, - 0, 0, 718, 179, 719, 720, 721, 180, 722, 0, - 181, 182, 183, 0, 184, 0, 185, 186, 0, 0, - 187, 723, 724, 188, 189, 0, 190, 725, 726, 192, - 193, 0, 194, 195, 196, 197, 727, 199, 0, 728, - 201, 729, 730, 731, 732, 733, 0, 207, 208, 209, - 210, 211, 212, 213, 214, 0, 215, 216, 0, 217, - 218, 219, 734, 221, 0, 222, 735, 736, 223, 0, - 0, 224, 737, 225, 738, 739, 226, 0, 227, 740, - 741, 0, 228, 229, 230, 742, 743, 744, 0, 0, - 0, 0, 745, 233, 746, 0, 0, 747, 234, 0, - 235, 0, 0, 0, 0, 236, 0, 237, 238, 239, - 240, 241, 0, 0, 0, 0, 242, 0, 0, 243, - 244, 245, 0, 0, 0, 246, 0, 247, 248, 0, - 249, 250, 251, 0, 252, 253, 0, 254, 255, 256, - 257, 258, 259, 260, 748, 0, 261, 262, 263, 264, - 749, 750, 265, 266, 0, 267, 268, 269, 751, 0, - 270, 0, 0, 0, 752, 272, 0, 273, 0, 274, - 0, 275, 276, 753, 278, 754, 280, 281, 0, 282, - 0, 755, 283, 284, 285, 0, 286, 756, 757, 0, - 287, 288, 0, 0, 0, 758, 290, 291, 292, 293, - 759, 0, 0, 294, 295, 296, 0, 0, 297, 0, - 0, 0, 760, 298, 299, 761, 0, 0, 300, 0, - 301, 302, 0, 303, 304, 0, 0, 0, 305, 0, - 0, 306, 307, 762, 0, 0, 309, 0, 763, 310, - 311, 0, 0, 0, 0, 0, 764, 313, 0, 314, - 0, 315, 0, 316, 317, 0, 0, 765, 0, 0, - 0, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 0, 334, 335, - 336, 337, 766, 338, 339, 340, 341, 767, 342, 343, - 344, 0, 0, 0, 0, 345, 346, 347, 348, 768, - 350, 0, 0, 769, 352, 770, 353, 0, 354, 771, - 772, 773, 774, 775, 359, 360, 361, 362, 363, 364, - 0, 776, 365, 0, 0, 366, 367, 368, 369, 777, - 778, 779, 370, 371, 0, 780, 781, 372, 0, 373, - 374, 782, 0, 376, 377, 378, 379, 0, 380, 381, - 0, 0, 0, 0, 0, 0, 0, 0, 382, 383, - 384, 0, 783, 385, 0, 386, 0, 387, 388, 784, - 390, 391, 392, 393, 785, 786, 396, 787, 0, 397, - 398, 399, 0, 400, 0, 401, 402, 403, 404, 405, - 0, 788, 407, 408, 0, 0, 409, 0, 0, 0, - 410, 411, 412, 413, 414, 0, 0, 415, 416, 417, - 418, 419, 0, 420, 421, 0, 422, 423, 424, 789, - 790, 425, 0, 426, 0, 427, 428, 0, 429, 430, - 0, 431, 0, 791, 0, 792, 433, 434, 435, 436, - 437, 438, 793, 794, 441, 442, 443, 444, 0, 795, - 446, 0, 0, 0, 447, 448, 449, 450, 0, 0, - 0, 451, 0, 0, 0, 452, 0, 453, 454, 455, - 456, 457, 458, 0, 459, 460, 461, 462, 463, 464, - 0, 0, 0, 0, 0, 0, 465, 466, 0, 467, - 0, 0, 468, 0, 0, 0, 469, 470, 471, 0, - 0, 0, 472, 796, 797, 473, 474, 0, 475, 476, - 798, 478, 479, 480, 799, 800, 481, 482, 483, 484, - 801, 485, 486, 0, 0, 487, 488, 489, 490, 0, - 802, 491, 492, 0, 803, 804, 805, 806, 0, 0, - 0, 0, 0, 497, 498, 499, 0, 807, 808, 809, - 501, 502, 503, 810, 504, 505, 811, 506, 507, 0, - 508, 509, 0, 0, 510, 0, 0, 511, 0, 512, - 0, 812, 514, 0, 0, 813, 814, 815, 816, 515, - 0, 0, 516, 817, 0, 818, 517, 518, 519, 520, - 521, 819, 820, 0, 0, 0, 0, 0, 0, 524, - 525, 0, 526, 527, 528, 0, 0, 821, 0, 0, - 0, 0, 0, 0, 0, 822, 823, 0, 0, 0, - 0, 824, 825, 0, 0, 826, 827, 0, 0, 828, - 829, 159, 0, 160, 715, 162, 163, 164, 165, 0, - 0, 166, 0, 0, 0, 167, 0, 0, 716, 0, - 169, 170, 171, 172, 173, 174, 175, 717, 177, 0, - 178, 0, 0, 718, 179, 719, 720, 721, 180, 722, - 0, 181, 182, 183, 0, 184, 0, 185, 186, 0, - 0, 187, 723, 724, 188, 189, 0, 190, 725, 726, - 192, 193, 0, 194, 195, 196, 197, 727, 199, 0, - 728, 201, 729, 730, 731, 732, 733, 0, 207, 208, - 209, 210, 211, 212, 213, 214, 0, 215, 216, 0, - 217, 218, 219, 734, 221, 0, 222, 735, 736, 223, - 0, 0, 224, 737, 225, 738, 739, 226, 0, 227, - 740, 741, 0, 228, 229, 230, 742, 743, 744, 0, - 0, 0, 0, 745, 233, 746, 0, 0, 747, 234, - 0, 235, 0, 0, 0, 0, 236, 0, 237, 238, - 239, 240, 241, 0, 0, 0, 0, 242, 0, 0, - 243, 244, 245, 0, 0, 0, 246, 0, 247, 248, - 0, 249, 250, 251, 0, 252, 253, 0, 254, 255, - 256, 257, 258, 259, 260, 748, 0, 261, 262, 263, - 264, 749, 750, 265, 266, 0, 267, 268, 269, 751, - 0, 270, 0, 0, 0, 752, 272, 0, 273, 0, - 274, 0, 275, 276, 753, 278, 754, 280, 281, 0, - 282, 0, 755, 283, 284, 285, 0, 286, 756, 757, - 0, 287, 288, 0, 0, 0, 758, 290, 291, 292, - 293, 759, 0, 0, 294, 295, 296, 0, 0, 297, - 0, 0, 0, 760, 298, 299, 761, 0, 0, 300, - 0, 301, 302, 0, 303, 304, 0, 0, 0, 305, - 0, 0, 306, 307, 762, 0, 0, 309, 0, 763, - 310, 311, 0, 0, 0, 0, 0, 764, 313, 0, - 314, 0, 315, 0, 316, 317, 0, 0, 765, 0, - 0, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, - 335, 336, 337, 766, 338, 339, 340, 341, 767, 342, - 343, 344, 0, 0, 0, 0, 345, 346, 347, 348, - 768, 350, 0, 0, 769, 352, 770, 353, 0, 354, - 771, 772, 773, 774, 775, 359, 360, 361, 362, 363, - 364, 0, 776, 365, 0, 0, 366, 367, 368, 369, - 777, 778, 779, 370, 371, 0, 780, 781, 372, 0, - 373, 374, 782, 0, 376, 377, 378, 379, 0, 380, - 381, 0, 0, 0, 0, 0, 0, 0, 0, 382, - 383, 384, 0, 783, 385, 0, 386, 0, 387, 388, - 784, 390, 391, 392, 393, 785, 786, 396, 787, 0, - 397, 398, 399, 0, 400, 0, 401, 402, 403, 404, - 405, 0, 788, 407, 408, 0, 0, 409, 0, 0, - 0, 410, 411, 412, 413, 414, 0, 0, 415, 416, - 417, 418, 419, 0, 420, 421, 0, 422, 423, 424, - 789, 790, 425, 0, 426, 0, 427, 428, 0, 429, - 430, 0, 431, 0, 791, 0, 792, 433, 434, 435, - 436, 437, 438, 793, 794, 441, 442, 443, 444, 0, - 795, 446, 0, 0, 0, 447, 448, 449, 450, 0, - 0, 0, 451, 0, 0, 0, 452, 0, 453, 454, - 455, 456, 457, 458, 0, 459, 460, 461, 462, 463, - 464, 0, 0, 0, 0, 0, 0, 465, 466, 0, - 467, 0, 0, 468, 0, 0, 0, 469, 470, 471, - 0, 0, 0, 472, 796, 797, 473, 474, 0, 475, - 476, 798, 478, 479, 480, 799, 800, 481, 482, 483, - 484, 801, 485, 486, 0, 0, 487, 488, 489, 490, - 0, 802, 491, 492, 0, 803, 804, 805, 806, 0, - 0, 0, 0, 0, 497, 498, 499, 0, 807, 808, - 809, 501, 502, 503, 810, 504, 505, 811, 506, 507, - 0, 508, 509, 0, 0, 510, 0, 0, 511, 0, - 512, 0, 812, 514, 0, 0, 813, 814, 815, 816, - 515, 0, 0, 516, 817, 0, 818, 517, 518, 519, - 520, 521, 819, 820, 0, 0, 0, 0, 0, 0, - 524, 525, 0, 526, 527, 528, 0, 0, 821, 0, - 0, 0, 0, 0, 0, 0, 822, 823, 0, 0, - 0, 0, 824, 1231, 0, 0, 826, 827, 0, 0, - 828, 829, 159, 0, 160, 715, 162, 163, 164, 165, - 1903, 0, 166, 0, 0, 0, 1904, 0, 0, 716, - 0, 169, 170, 171, 172, 173, 174, 175, 717, 177, - 0, 178, 0, 0, 718, 179, 719, 720, 721, 180, - 722, 0, 181, 182, 183, 0, 184, 0, 185, 186, - 0, 0, 187, 723, 724, 188, 189, 0, 190, 725, - 726, 192, 193, 0, 194, 195, 196, 197, 727, 199, - 0, 728, 201, 729, 730, 731, 732, 733, 0, 207, - 208, 209, 210, 211, 212, 213, 214, 0, 215, 216, - 0, 217, 218, 219, 734, 221, 0, 222, 735, 736, - 223, 0, 0, 224, 737, 225, 738, 739, 226, 0, - 227, 740, 741, 0, 228, 229, 230, 742, 743, 744, - 0, 0, 0, 0, 745, 233, 746, 0, 0, 747, - 234, 0, 235, 0, 0, 0, 0, 236, 0, 237, - 238, 239, 240, 241, 0, 0, 0, 0, 242, 0, - 0, 243, 244, 245, 0, 0, 0, 246, 0, 247, - 248, 0, 249, 250, 251, 0, 252, 253, 0, 254, - 255, 256, 257, 258, 259, 260, 748, 0, 261, 262, - 263, 264, 749, 750, 265, 266, 0, 267, 268, 269, - 751, 0, 270, 0, 0, 0, 752, 272, 0, 273, - 0, 274, 0, 275, 276, 753, 278, 754, 280, 281, - 0, 282, 0, 755, 283, 284, 285, 0, 286, 756, - 757, 0, 287, 288, 0, 0, 0, 758, 290, 291, - 292, 293, 759, 0, 0, 294, 295, 296, 0, 0, - 297, 0, 0, 0, 760, 298, 299, 761, 0, 0, - 300, 0, 301, 302, 0, 303, 304, 0, 0, 0, - 305, 0, 0, 306, 307, 762, 0, 0, 309, 0, - 763, 310, 311, 0, 0, 0, 0, 0, 764, 313, - 0, 314, 0, 315, 0, 316, 317, 0, 0, 765, - 0, 0, 0, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, - 334, 335, 336, 337, 766, 338, 339, 340, 341, 767, - 342, 343, 344, 0, 0, 0, 0, 345, 346, 347, - 348, 768, 350, 0, 0, 769, 352, 770, 353, 0, - 354, 771, 772, 773, 774, 775, 359, 360, 361, 362, - 363, 364, 0, 776, 365, 0, 0, 366, 367, 368, - 369, 777, 0, 779, 370, 371, 0, 780, 781, 372, - 0, 373, 374, 782, 0, 376, 377, 378, 379, 0, - 380, 381, 0, 0, 0, 0, 0, 0, 0, 0, - 382, 383, 384, 0, 783, 385, 0, 386, 0, 387, - 388, 784, 390, 391, 392, 393, 785, 786, 396, 787, - 0, 397, 398, 399, 0, 400, 0, 401, 402, 403, - 404, 405, 0, 788, 407, 408, 0, 0, 409, 0, - 0, 0, 410, 411, 412, 413, 414, 0, 0, 415, - 416, 417, 418, 419, 0, 420, 421, 0, 422, 423, - 424, 789, 790, 425, 0, 426, 0, 427, 428, 0, - 429, 430, 0, 431, 0, 791, 0, 792, 433, 434, - 435, 436, 437, 438, 793, 794, 441, 442, 443, 444, - 0, 795, 446, 0, 0, 0, 447, 448, 449, 450, - 0, 0, 0, 451, 0, 0, 0, 452, 0, 453, - 454, 455, 456, 457, 458, 0, 459, 460, 461, 462, - 463, 464, 0, 0, 0, 0, 0, 0, 465, 466, - 0, 467, 0, 0, 468, 0, 0, 0, 469, 470, - 471, 0, 0, 0, 472, 796, 797, 473, 474, 0, - 475, 476, 798, 478, 479, 480, 799, 800, 481, 482, - 483, 484, 801, 485, 486, 0, 0, 487, 488, 489, - 490, 0, 802, 491, 492, 0, 803, 804, 805, 806, - 0, 0, 0, 0, 0, 497, 498, 499, 0, 807, - 808, 809, 501, 502, 503, 810, 504, 505, 811, 506, - 507, 0, 508, 509, 0, 0, 510, 0, 0, 511, - 0, 512, 0, 812, 514, 0, 0, 813, 814, 815, - 816, 515, 0, 0, 516, 817, 0, 818, 517, 518, - 519, 520, 521, 819, 820, 0, 0, 0, 0, 0, - 0, 524, 525, 0, 526, 527, 528, 0, 0, 821, - 0, 0, 0, 0, 0, 0, 0, 822, 823, 0, - 0, 0, 0, 824, 825, 0, 0, 826, 827, 0, - 0, 828, 829, 159, 0, 160, 715, 162, 163, 164, - 165, 0, 0, 166, 0, 0, 0, 167, 0, 0, - 716, 0, 169, 170, 171, 172, 173, 174, 175, 717, - 177, 0, 178, 0, 0, 718, 179, 719, 720, 721, - 180, 722, 0, 181, 182, 183, 0, 184, 0, 185, - 186, 0, 0, 187, 723, 724, 188, 189, 0, 190, - 725, 726, 192, 193, 0, 194, 195, 196, 197, 727, - 199, 0, 728, 201, 729, 730, 731, 732, 733, 0, - 207, 208, 209, 210, 211, 212, 213, 214, 0, 215, - 216, 0, 217, 218, 219, 734, 221, 0, 222, 735, - 736, 223, 0, 0, 224, 737, 225, 738, 739, 226, - 0, 227, 740, 741, 0, 228, 229, 230, 742, 743, - 744, 0, 0, 0, 0, 745, 233, 746, 0, 0, - 747, 234, 0, 235, 0, 0, 0, 0, 236, 0, - 237, 238, 239, 240, 241, 0, 0, 0, 0, 242, - 0, 0, 243, 244, 245, 0, 0, 0, 246, 0, - 247, 248, 0, 249, 250, 251, 0, 252, 253, 0, - 254, 255, 256, 257, 258, 259, 260, 748, 0, 261, - 262, 263, 264, 749, 750, 265, 266, 0, 267, 268, - 269, 751, 0, 270, 0, 0, 0, 752, 272, 0, - 273, 0, 274, 0, 275, 276, 753, 278, 754, 280, - 281, 0, 282, 0, 755, 283, 284, 285, 0, 286, - 756, 757, 0, 287, 288, 0, 0, 0, 758, 290, - 291, 292, 293, 759, 0, 0, 294, 295, 296, 0, - 0, 297, 0, 0, 0, 760, 298, 299, 761, 0, - 0, 300, 0, 301, 302, 0, 303, 304, 0, 0, - 0, 305, 0, 0, 306, 307, 762, 0, 0, 309, - 0, 763, 310, 311, 0, 0, 0, 0, 0, 764, - 313, 0, 314, 0, 315, 0, 316, 317, 0, 0, - 765, 0, 0, 0, 318, 319, 320, 321, 322, 323, + 329, 330, 331, 332, 333, 334, 0, 335, 336, 337, + 338, 768, 339, 340, 341, 342, 769, 343, 344, 345, + 0, 0, 0, 0, 346, 347, 348, 349, 770, 351, + 0, 0, 771, 353, 772, 354, 0, 355, 773, 774, + 775, 776, 777, 360, 361, 362, 363, 364, 365, 0, + 778, 366, 0, 0, 367, 368, 369, 370, 779, 0, + 781, 371, 372, 0, 782, 783, 373, 0, 374, 375, + 784, 0, 377, 378, 379, 380, 0, 381, 382, 0, + 0, 0, 0, 0, 0, 0, 0, 383, 384, 385, + 0, 785, 386, 0, 387, 0, 388, 389, 786, 391, + 392, 393, 394, 787, 788, 397, 789, 0, 398, 399, + 400, 0, 401, 0, 402, 403, 404, 405, 406, 0, + 790, 408, 409, 0, 0, 410, 0, 0, 0, 411, + 412, 413, 414, 415, 0, 0, 416, 417, 418, 419, + 420, 0, 421, 422, 0, 423, 424, 425, 791, 792, + 426, 0, 427, 0, 428, 429, 0, 430, 431, 0, + 432, 0, 793, 0, 794, 434, 435, 436, 437, 438, + 439, 795, 796, 442, 443, 444, 445, 0, 797, 447, + 0, 0, 0, 448, 449, 450, 451, 0, 0, 0, + 452, 0, 0, 0, 453, 0, 454, 455, 456, 457, + 458, 459, 0, 460, 461, 462, 463, 464, 465, 0, + 0, 0, 0, 0, 0, 466, 467, 0, 468, 0, + 0, 469, 0, 0, 0, 470, 471, 472, 0, 0, + 0, 473, 798, 799, 474, 475, 0, 476, 477, 800, + 479, 480, 481, 801, 802, 482, 483, 484, 485, 803, + 486, 487, 0, 0, 488, 489, 490, 491, 0, 804, + 492, 493, 0, 805, 806, 807, 808, 0, 0, 0, + 0, 0, 498, 499, 500, 0, 809, 810, 811, 502, + 503, 504, 812, 505, 506, 813, 507, 508, 0, 509, + 510, 0, 0, 511, 0, 0, 512, 0, 513, 0, + 814, 515, 0, 0, 815, 816, 817, 818, 516, 0, + 0, 517, 819, 0, 820, 518, 519, 520, 521, 522, + 821, 822, 0, 0, 0, 0, 0, 0, 525, 526, + 0, 527, 528, 529, 0, 0, 823, 0, 0, 0, + 0, 0, 0, 0, 824, 825, 0, 0, 0, 0, + 826, 827, 0, 0, 828, 829, 0, 0, 830, 831, + 160, 0, 161, 717, 163, 164, 165, 166, 0, 0, + 167, 0, 0, 0, 168, 0, 0, 718, 0, 170, + 171, 172, 173, 174, 175, 176, 719, 178, 0, 179, + 0, 0, 720, 180, 721, 722, 723, 181, 724, 0, + 182, 183, 184, 0, 185, 0, 186, 187, 0, 0, + 188, 725, 726, 189, 190, 0, 191, 727, 728, 193, + 194, 0, 195, 196, 197, 198, 729, 200, 0, 730, + 202, 731, 732, 733, 734, 735, 0, 208, 209, 210, + 211, 212, 213, 214, 215, 0, 216, 217, 0, 218, + 219, 220, 736, 222, 0, 223, 737, 738, 224, 0, + 0, 225, 739, 226, 740, 741, 227, 0, 228, 742, + 743, 0, 229, 230, 231, 744, 745, 746, 0, 0, + 0, 0, 747, 234, 748, 0, 0, 749, 235, 0, + 236, 0, 0, 0, 0, 237, 0, 238, 239, 240, + 241, 242, 0, 0, 0, 0, 243, 0, 0, 244, + 245, 246, 0, 0, 0, 247, 0, 248, 249, 0, + 250, 251, 252, 0, 253, 254, 0, 255, 256, 257, + 258, 259, 260, 261, 750, 0, 262, 263, 264, 265, + 751, 752, 266, 267, 0, 268, 269, 270, 753, 0, + 271, 0, 0, 0, 754, 273, 0, 274, 0, 275, + 0, 276, 277, 755, 279, 756, 281, 282, 0, 283, + 0, 757, 284, 285, 286, 0, 287, 758, 759, 0, + 288, 289, 0, 0, 0, 760, 291, 292, 293, 294, + 761, 0, 0, 295, 296, 297, 0, 0, 298, 0, + 0, 0, 762, 299, 300, 763, 0, 0, 301, 0, + 302, 303, 0, 304, 305, 0, 0, 0, 306, 0, + 0, 307, 308, 764, 0, 0, 310, 0, 765, 311, + 312, 0, 0, 0, 0, 0, 766, 314, 0, 315, + 0, 316, 0, 317, 318, 0, 0, 767, 0, 0, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 0, 335, 336, + 337, 338, 768, 339, 340, 341, 342, 769, 343, 344, + 345, 0, 0, 0, 0, 346, 347, 348, 349, 770, + 351, 0, 0, 771, 353, 772, 354, 0, 355, 773, + 774, 775, 776, 777, 360, 361, 362, 363, 364, 365, + 0, 778, 366, 0, 0, 367, 368, 369, 370, 779, + 780, 781, 371, 372, 0, 782, 783, 373, 0, 374, + 375, 784, 0, 377, 378, 379, 380, 0, 381, 382, + 0, 0, 0, 0, 0, 0, 0, 0, 383, 384, + 385, 0, 785, 386, 0, 387, 0, 388, 389, 786, + 391, 392, 393, 394, 787, 788, 397, 789, 0, 398, + 399, 400, 0, 401, 0, 402, 403, 404, 405, 406, + 0, 790, 408, 409, 0, 0, 410, 0, 0, 0, + 411, 412, 413, 414, 415, 0, 0, 416, 417, 418, + 419, 420, 0, 421, 422, 0, 423, 424, 425, 791, + 792, 426, 0, 427, 0, 428, 429, 0, 430, 431, + 0, 432, 0, 793, 0, 794, 434, 435, 436, 437, + 438, 439, 795, 796, 442, 443, 444, 445, 0, 797, + 447, 0, 0, 0, 448, 449, 450, 451, 0, 0, + 0, 452, 0, 0, 0, 453, 0, 454, 455, 456, + 457, 458, 459, 0, 460, 461, 462, 463, 464, 465, + 0, 0, 0, 0, 0, 0, 466, 467, 0, 468, + 0, 0, 469, 0, 0, 0, 470, 471, 472, 0, + 0, 0, 473, 798, 799, 474, 475, 0, 476, 477, + 800, 479, 480, 481, 801, 802, 482, 483, 484, 485, + 803, 486, 487, 0, 0, 488, 489, 490, 491, 0, + 804, 492, 493, 0, 805, 806, 807, 808, 0, 0, + 0, 0, 0, 498, 499, 500, 0, 809, 810, 811, + 502, 503, 504, 812, 505, 506, 813, 507, 508, 0, + 509, 510, 0, 0, 511, 0, 0, 512, 0, 513, + 0, 2014, 515, 0, 0, 815, 816, 817, 818, 516, + 0, 0, 517, 819, 0, 820, 518, 519, 520, 521, + 522, 821, 822, 0, 0, 0, 0, 0, 0, 525, + 526, 0, 527, 528, 529, 0, 0, 823, 0, 0, + 0, 0, 0, 0, 0, 824, 825, 0, 0, 0, + 0, 826, 827, 0, 0, 828, 829, 0, 0, 830, + 831, 160, 0, 161, 717, 163, 164, 165, 166, 0, + 0, 167, 0, 0, 0, 168, 0, 0, 718, 0, + 170, 171, 172, 173, 174, 175, 176, 719, 178, 0, + 179, 0, 0, 720, 180, 721, 722, 723, 181, 724, + 0, 182, 183, 184, 0, 185, 0, 186, 187, 0, + 0, 188, 725, 726, 189, 190, 0, 191, 727, 728, + 193, 194, 0, 195, 196, 197, 198, 729, 200, 0, + 730, 202, 731, 732, 733, 734, 735, 0, 208, 209, + 210, 211, 212, 213, 214, 215, 0, 216, 217, 0, + 218, 219, 220, 736, 222, 0, 223, 737, 738, 224, + 0, 0, 225, 739, 226, 740, 741, 227, 0, 228, + 742, 743, 0, 229, 230, 231, 744, 745, 746, 0, + 0, 0, 0, 747, 234, 748, 0, 0, 749, 235, + 0, 236, 0, 0, 0, 0, 237, 0, 238, 239, + 240, 241, 242, 0, 0, 0, 0, 243, 0, 0, + 244, 245, 246, 0, 0, 0, 247, 0, 248, 249, + 0, 250, 251, 252, 0, 253, 254, 0, 255, 256, + 257, 258, 259, 260, 261, 750, 0, 262, 263, 264, + 265, 751, 752, 266, 267, 0, 268, 269, 270, 753, + 0, 271, 0, 0, 0, 754, 273, 0, 274, 0, + 275, 0, 276, 277, 755, 279, 756, 281, 282, 0, + 283, 0, 757, 284, 285, 286, 0, 287, 758, 759, + 0, 288, 289, 0, 0, 0, 760, 291, 292, 293, + 294, 761, 0, 0, 295, 296, 297, 0, 0, 298, + 0, 0, 0, 762, 299, 300, 2891, 0, 0, 301, + 0, 302, 303, 0, 304, 305, 0, 0, 0, 306, + 0, 0, 307, 308, 764, 0, 0, 310, 0, 765, + 311, 312, 0, 0, 0, 0, 0, 766, 314, 0, + 315, 0, 316, 0, 317, 318, 0, 0, 767, 0, + 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 0, 335, + 336, 337, 338, 768, 339, 340, 341, 342, 769, 343, + 344, 345, 0, 0, 0, 0, 346, 347, 348, 349, + 770, 351, 0, 0, 771, 353, 772, 354, 0, 355, + 773, 774, 775, 776, 777, 360, 361, 362, 363, 364, + 365, 0, 778, 366, 0, 0, 367, 368, 369, 370, + 779, 780, 781, 371, 372, 0, 782, 783, 373, 0, + 374, 375, 784, 0, 377, 378, 379, 380, 0, 381, + 382, 0, 0, 0, 0, 0, 0, 0, 0, 383, + 384, 385, 0, 785, 386, 0, 387, 0, 388, 389, + 786, 391, 392, 393, 394, 787, 788, 397, 789, 0, + 398, 399, 400, 0, 401, 0, 402, 403, 404, 405, + 406, 0, 790, 408, 409, 0, 0, 410, 0, 0, + 0, 411, 412, 413, 414, 415, 0, 0, 416, 417, + 418, 419, 420, 0, 421, 422, 0, 423, 424, 425, + 791, 792, 426, 0, 427, 0, 428, 429, 0, 430, + 431, 0, 432, 0, 793, 0, 794, 434, 435, 436, + 437, 438, 439, 795, 796, 442, 443, 444, 445, 0, + 797, 447, 0, 0, 0, 448, 449, 450, 451, 0, + 0, 0, 452, 0, 0, 0, 453, 0, 454, 455, + 456, 457, 458, 459, 0, 460, 461, 462, 463, 464, + 465, 0, 0, 0, 0, 0, 0, 466, 467, 0, + 468, 0, 0, 469, 0, 0, 0, 470, 471, 472, + 0, 0, 0, 473, 798, 799, 474, 475, 0, 476, + 477, 800, 479, 480, 481, 801, 802, 482, 483, 484, + 485, 803, 486, 487, 0, 0, 488, 489, 490, 491, + 0, 804, 492, 493, 0, 805, 806, 807, 808, 0, + 0, 0, 0, 0, 498, 499, 500, 0, 809, 810, + 811, 502, 503, 504, 812, 505, 506, 813, 507, 508, + 0, 509, 510, 0, 0, 511, 0, 0, 512, 0, + 513, 0, 814, 515, 0, 0, 815, 816, 817, 818, + 516, 0, 0, 517, 819, 0, 820, 518, 519, 520, + 521, 522, 821, 822, 0, 0, 0, 0, 0, 0, + 525, 526, 0, 527, 528, 529, 0, 0, 823, 0, + 0, 0, 0, 0, 0, 0, 824, 825, 0, 0, + 0, 0, 826, 827, 0, 0, 828, 829, 0, 0, + 830, 831, 160, 0, 161, 717, 163, 164, 165, 166, + 0, 0, 167, 0, 0, 0, 168, 0, 0, 718, + 0, 170, 171, 172, 173, 174, 175, 176, 719, 178, + 0, 179, 0, 0, 720, 180, 721, 722, 723, 181, + 724, 0, 182, 183, 184, 0, 185, 0, 186, 187, + 0, 0, 188, 725, 726, 189, 190, 0, 191, 727, + 728, 193, 194, 0, 195, 196, 197, 198, 729, 200, + 0, 730, 202, 731, 732, 733, 734, 735, 0, 208, + 209, 210, 211, 212, 213, 214, 215, 0, 216, 217, + 0, 218, 219, 220, 736, 222, 0, 223, 737, 738, + 224, 0, 0, 225, 739, 226, 740, 741, 227, 0, + 228, 742, 743, 0, 229, 230, 231, 744, 745, 746, + 0, 0, 0, 0, 747, 234, 748, 0, 0, 749, + 235, 0, 236, 0, 0, 0, 0, 237, 0, 238, + 239, 240, 241, 242, 0, 0, 0, 0, 243, 0, + 0, 244, 245, 246, 0, 0, 0, 247, 0, 248, + 249, 0, 250, 251, 252, 0, 253, 254, 0, 255, + 256, 257, 258, 259, 260, 261, 750, 0, 262, 263, + 264, 265, 751, 752, 266, 267, 0, 268, 269, 270, + 753, 0, 271, 0, 0, 0, 754, 273, 0, 274, + 0, 275, 0, 276, 277, 755, 279, 756, 281, 282, + 0, 283, 0, 757, 284, 285, 286, 0, 287, 758, + 759, 0, 288, 289, 0, 0, 0, 760, 291, 292, + 293, 294, 761, 0, 0, 295, 296, 297, 0, 0, + 298, 0, 0, 0, 762, 299, 300, 2943, 0, 0, + 301, 0, 302, 303, 0, 304, 305, 0, 0, 0, + 306, 0, 0, 307, 308, 764, 0, 0, 310, 0, + 765, 311, 312, 0, 0, 0, 0, 0, 766, 314, + 0, 315, 0, 316, 0, 317, 318, 0, 0, 767, + 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 334, 0, + 335, 336, 337, 338, 768, 339, 340, 341, 342, 769, + 343, 344, 345, 0, 0, 0, 0, 346, 347, 348, + 349, 770, 351, 0, 0, 771, 353, 772, 354, 0, + 355, 773, 774, 775, 776, 777, 360, 361, 362, 363, + 364, 365, 0, 778, 366, 0, 0, 367, 368, 369, + 370, 779, 780, 781, 371, 372, 0, 782, 783, 373, + 0, 374, 375, 784, 0, 377, 378, 379, 380, 0, + 381, 382, 0, 0, 0, 0, 0, 0, 0, 0, + 383, 384, 385, 0, 785, 386, 0, 387, 0, 388, + 389, 786, 391, 392, 393, 394, 787, 788, 397, 789, + 0, 398, 399, 400, 0, 401, 0, 402, 403, 404, + 405, 406, 0, 790, 408, 409, 0, 0, 410, 0, + 0, 0, 411, 412, 413, 414, 415, 0, 0, 416, + 417, 418, 419, 420, 0, 421, 422, 0, 423, 424, + 425, 791, 792, 426, 0, 427, 0, 428, 429, 0, + 430, 431, 0, 432, 0, 793, 0, 794, 434, 435, + 436, 437, 438, 439, 795, 796, 442, 443, 444, 445, + 0, 797, 447, 0, 0, 0, 448, 449, 450, 451, + 0, 0, 0, 452, 0, 0, 0, 453, 0, 454, + 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, + 464, 465, 0, 0, 0, 0, 0, 0, 466, 467, + 0, 468, 0, 0, 469, 0, 0, 0, 470, 471, + 472, 0, 0, 0, 473, 798, 799, 474, 475, 0, + 476, 477, 800, 479, 480, 481, 801, 802, 482, 483, + 484, 485, 803, 486, 487, 0, 0, 488, 489, 490, + 491, 0, 804, 492, 493, 0, 805, 806, 807, 808, + 0, 0, 0, 0, 0, 498, 499, 500, 0, 809, + 810, 811, 502, 503, 504, 812, 505, 506, 813, 507, + 508, 0, 509, 510, 0, 0, 511, 0, 0, 512, + 0, 513, 0, 814, 515, 0, 0, 815, 816, 817, + 818, 516, 0, 0, 517, 819, 0, 820, 518, 519, + 520, 521, 522, 821, 822, 0, 0, 0, 0, 0, + 0, 525, 526, 0, 527, 528, 529, 0, 0, 823, + 0, 0, 0, 0, 0, 0, 0, 824, 825, 0, + 0, 0, 0, 826, 827, 0, 0, 828, 829, 0, + 0, 830, 831, 160, 0, 161, 717, 163, 164, 165, + 166, 0, 0, 167, 0, 0, 0, 168, 0, 0, + 718, 0, 170, 171, 172, 173, 174, 175, 176, 719, + 178, 0, 179, 0, 0, 720, 180, 721, 722, 723, + 181, 724, 0, 182, 183, 184, 0, 185, 0, 186, + 187, 0, 0, 188, 725, 726, 189, 190, 0, 191, + 727, 728, 193, 194, 0, 195, 196, 197, 198, 729, + 200, 0, 730, 202, 731, 732, 733, 734, 735, 0, + 208, 209, 210, 211, 212, 213, 214, 215, 0, 216, + 217, 0, 218, 219, 220, 736, 222, 0, 223, 737, + 738, 224, 0, 0, 225, 739, 226, 740, 741, 227, + 0, 228, 742, 743, 0, 229, 230, 231, 744, 745, + 746, 0, 0, 0, 0, 747, 234, 748, 0, 0, + 3833, 235, 0, 236, 0, 0, 0, 0, 237, 0, + 238, 239, 240, 241, 242, 0, 0, 0, 0, 243, + 0, 0, 244, 245, 246, 0, 0, 0, 247, 0, + 248, 249, 0, 250, 251, 252, 0, 253, 254, 0, + 255, 256, 257, 258, 259, 260, 261, 750, 0, 262, + 263, 264, 265, 751, 752, 266, 267, 0, 268, 269, + 270, 753, 0, 271, 0, 0, 0, 754, 273, 0, + 274, 0, 275, 0, 276, 277, 755, 279, 756, 281, + 282, 0, 283, 0, 757, 284, 285, 286, 0, 287, + 758, 759, 0, 288, 289, 0, 0, 0, 760, 291, + 292, 293, 294, 761, 0, 0, 295, 296, 297, 0, + 0, 298, 0, 0, 0, 762, 299, 300, 763, 0, + 0, 301, 0, 302, 303, 0, 304, 305, 0, 0, + 0, 306, 0, 0, 307, 308, 764, 0, 0, 310, + 0, 765, 311, 312, 0, 0, 0, 0, 0, 766, + 314, 0, 315, 0, 316, 0, 317, 318, 0, 0, + 767, 0, 0, 0, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 0, 335, 336, 337, 338, 768, 339, 340, 341, 342, + 769, 343, 344, 345, 0, 0, 0, 0, 346, 347, + 348, 349, 770, 351, 0, 0, 771, 353, 772, 354, + 0, 355, 773, 774, 775, 776, 777, 360, 361, 362, + 363, 364, 365, 0, 778, 366, 0, 0, 367, 368, + 369, 370, 779, 780, 781, 371, 372, 0, 782, 783, + 373, 0, 374, 375, 784, 0, 377, 378, 379, 380, + 0, 381, 382, 0, 0, 0, 0, 0, 0, 0, + 0, 383, 384, 385, 0, 785, 386, 0, 387, 0, + 388, 389, 786, 391, 392, 393, 394, 787, 788, 397, + 789, 0, 398, 399, 400, 0, 401, 0, 402, 403, + 404, 405, 406, 0, 790, 408, 409, 0, 0, 410, + 0, 0, 0, 411, 412, 413, 414, 415, 0, 0, + 416, 417, 418, 419, 420, 0, 421, 422, 0, 423, + 424, 425, 791, 792, 426, 0, 427, 0, 428, 429, + 0, 430, 431, 0, 432, 0, 793, 0, 794, 434, + 435, 436, 437, 438, 439, 795, 796, 442, 443, 444, + 445, 0, 797, 447, 0, 0, 0, 448, 449, 450, + 451, 0, 0, 0, 452, 0, 0, 0, 453, 0, + 454, 455, 456, 457, 458, 459, 0, 460, 461, 462, + 463, 464, 465, 0, 0, 0, 0, 0, 0, 466, + 467, 0, 468, 0, 0, 469, 0, 0, 0, 470, + 471, 472, 0, 0, 0, 473, 798, 799, 474, 475, + 0, 476, 477, 800, 479, 480, 481, 801, 802, 482, + 483, 484, 485, 803, 486, 487, 0, 0, 488, 489, + 490, 491, 0, 804, 492, 493, 0, 805, 806, 807, + 808, 0, 0, 0, 0, 0, 498, 499, 500, 0, + 809, 810, 811, 502, 503, 504, 812, 505, 506, 813, + 507, 508, 0, 509, 510, 0, 0, 511, 0, 0, + 512, 0, 513, 0, 814, 515, 0, 0, 815, 816, + 817, 818, 516, 0, 0, 517, 819, 0, 820, 518, + 519, 520, 521, 522, 821, 822, 0, 0, 0, 0, + 0, 0, 525, 526, 0, 527, 528, 529, 0, 0, + 823, 0, 0, 0, 0, 0, 0, 0, 824, 825, + 0, 0, 0, 0, 826, 827, 0, 0, 828, 829, + 0, 0, 830, 831, 160, 0, 161, 717, 163, 164, + 165, 166, 0, 0, 167, 0, 0, 0, 168, 0, + 0, 718, 0, 170, 171, 172, 173, 174, 175, 176, + 719, 178, 0, 179, 0, 0, 720, 180, 721, 722, + 723, 181, 724, 0, 182, 183, 184, 0, 185, 0, + 186, 187, 0, 0, 188, 725, 726, 189, 190, 0, + 191, 727, 728, 193, 194, 0, 195, 196, 197, 198, + 729, 200, 0, 730, 202, 731, 732, 733, 734, 735, + 0, 208, 209, 210, 211, 212, 213, 214, 215, 0, + 216, 217, 0, 218, 219, 220, 736, 222, 0, 223, + 737, 738, 224, 0, 0, 225, 739, 226, 740, 741, + 227, 0, 228, 742, 743, 0, 229, 230, 231, 744, + 745, 746, 0, 0, 0, 0, 747, 234, 748, 0, + 0, 749, 235, 0, 236, 0, 0, 0, 0, 237, + 0, 238, 239, 240, 241, 242, 0, 0, 0, 0, + 243, 0, 0, 244, 245, 246, 0, 0, 0, 247, + 0, 248, 249, 0, 250, 251, 252, 0, 253, 254, + 0, 255, 256, 257, 258, 259, 260, 261, 750, 0, + 262, 263, 264, 265, 751, 752, 266, 267, 0, 268, + 269, 270, 753, 0, 271, 0, 0, 0, 754, 273, + 0, 274, 0, 275, 0, 276, 277, 755, 279, 756, + 281, 282, 0, 283, 0, 757, 284, 285, 286, 0, + 287, 758, 759, 0, 288, 289, 0, 0, 0, 760, + 291, 292, 293, 294, 761, 0, 0, 295, 296, 297, + 0, 0, 298, 0, 0, 0, 762, 299, 300, 763, + 0, 0, 301, 0, 302, 303, 0, 304, 305, 0, + 0, 0, 306, 0, 0, 307, 308, 764, 0, 0, + 310, 0, 765, 311, 312, 0, 0, 0, 0, 0, + 766, 314, 0, 315, 0, 316, 0, 317, 318, 0, + 0, 767, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 0, 334, 335, 336, 337, 766, 338, 339, 340, 341, - 767, 342, 343, 344, 0, 0, 0, 0, 345, 346, - 347, 348, 768, 350, 0, 0, 769, 352, 770, 353, - 0, 354, 771, 772, 773, 774, 775, 359, 360, 361, - 362, 363, 364, 0, 776, 365, 0, 0, 366, 367, - 368, 369, 777, 778, 779, 370, 371, 0, 780, 781, - 372, 0, 373, 374, 782, 0, 376, 377, 378, 379, - 0, 380, 381, 0, 0, 0, 0, 0, 0, 0, - 0, 382, 383, 384, 0, 783, 385, 0, 386, 0, - 387, 388, 784, 390, 391, 392, 393, 785, 786, 396, - 787, 0, 397, 398, 399, 0, 400, 0, 401, 402, - 403, 404, 405, 0, 788, 407, 408, 0, 0, 409, - 0, 0, 0, 410, 411, 412, 413, 414, 0, 0, - 415, 416, 417, 418, 419, 0, 420, 421, 0, 422, - 423, 424, 789, 790, 425, 0, 426, 0, 427, 428, - 0, 429, 430, 0, 431, 0, 791, 0, 792, 433, - 434, 435, 436, 437, 438, 793, 794, 441, 442, 443, - 444, 0, 795, 446, 0, 0, 0, 447, 448, 449, - 450, 0, 0, 0, 451, 0, 0, 0, 452, 0, - 453, 454, 455, 456, 457, 458, 0, 459, 460, 461, - 462, 463, 464, 0, 0, 0, 0, 0, 0, 465, - 466, 0, 467, 0, 0, 468, 0, 0, 0, 469, - 470, 471, 0, 0, 0, 472, 796, 797, 473, 474, - 0, 475, 476, 798, 478, 479, 480, 799, 800, 481, - 482, 483, 484, 801, 485, 486, 0, 0, 487, 488, - 489, 490, 0, 802, 491, 492, 0, 803, 804, 805, - 806, 0, 0, 0, 0, 0, 497, 498, 499, 0, - 807, 808, 809, 501, 502, 503, 810, 504, 505, 811, - 506, 507, 0, 508, 509, 0, 0, 510, 0, 0, - 511, 0, 512, 0, 2010, 514, 0, 0, 813, 814, - 815, 816, 515, 0, 0, 516, 817, 0, 818, 517, - 518, 519, 520, 521, 819, 820, 0, 0, 0, 0, - 0, 0, 524, 525, 0, 526, 527, 528, 0, 0, - 821, 0, 0, 0, 0, 0, 0, 0, 822, 823, - 0, 0, 0, 0, 824, 825, 0, 0, 826, 827, - 0, 0, 828, 829, 159, 0, 160, 715, 162, 163, - 164, 165, 0, 0, 166, 0, 0, 0, 167, 0, - 0, 716, 0, 169, 170, 171, 172, 173, 174, 175, - 717, 177, 0, 178, 0, 0, 718, 179, 719, 720, - 721, 180, 722, 0, 181, 182, 183, 0, 184, 0, - 185, 186, 0, 0, 187, 723, 724, 188, 189, 0, - 190, 725, 726, 192, 193, 0, 194, 195, 196, 197, - 727, 199, 0, 728, 201, 729, 730, 731, 732, 733, - 0, 207, 208, 209, 210, 211, 212, 213, 214, 0, - 215, 216, 0, 217, 218, 219, 734, 221, 0, 222, - 735, 736, 223, 0, 0, 224, 737, 225, 738, 739, - 226, 0, 227, 740, 741, 0, 228, 229, 230, 742, - 743, 744, 0, 0, 0, 0, 745, 233, 746, 0, - 0, 747, 234, 0, 235, 0, 0, 0, 0, 236, - 0, 237, 238, 239, 240, 241, 0, 0, 0, 0, - 242, 0, 0, 243, 244, 245, 0, 0, 0, 246, - 0, 247, 248, 0, 249, 250, 251, 0, 252, 253, - 0, 254, 255, 256, 257, 258, 259, 260, 748, 0, - 261, 262, 263, 264, 749, 750, 265, 266, 0, 267, - 268, 269, 751, 0, 270, 0, 0, 0, 752, 272, - 0, 273, 0, 274, 0, 275, 276, 753, 278, 754, - 280, 281, 0, 282, 0, 755, 283, 284, 285, 0, - 286, 756, 757, 0, 287, 288, 0, 0, 0, 758, - 290, 291, 292, 293, 759, 0, 0, 294, 295, 296, - 0, 0, 297, 0, 0, 0, 760, 298, 299, 2886, - 0, 0, 300, 0, 301, 302, 0, 303, 304, 0, - 0, 0, 305, 0, 0, 306, 307, 762, 0, 0, - 309, 0, 763, 310, 311, 0, 0, 0, 0, 0, - 764, 313, 0, 314, 0, 315, 0, 316, 317, 0, - 0, 765, 0, 0, 0, 318, 319, 320, 321, 322, + 334, 0, 335, 336, 337, 338, 768, 339, 340, 341, + 342, 769, 343, 344, 345, 4822, 0, 0, 0, 346, + 347, 348, 349, 770, 351, 0, 0, 771, 353, 772, + 354, 0, 355, 773, 774, 775, 776, 777, 360, 361, + 362, 363, 364, 365, 0, 778, 366, 0, 0, 367, + 368, 369, 370, 779, 0, 781, 371, 372, 0, 782, + 783, 373, 0, 374, 375, 784, 0, 377, 378, 379, + 380, 0, 381, 382, 0, 0, 0, 0, 0, 0, + 0, 0, 383, 384, 385, 0, 785, 386, 0, 387, + 0, 388, 389, 786, 391, 392, 393, 394, 787, 788, + 397, 789, 0, 398, 399, 400, 0, 401, 0, 402, + 403, 404, 405, 406, 0, 790, 408, 409, 0, 0, + 410, 0, 0, 0, 411, 412, 413, 414, 415, 0, + 0, 416, 417, 418, 419, 420, 0, 421, 422, 0, + 423, 424, 425, 791, 792, 426, 0, 427, 0, 428, + 429, 0, 430, 431, 0, 432, 0, 793, 0, 794, + 434, 435, 436, 437, 438, 439, 795, 796, 442, 443, + 444, 445, 0, 797, 447, 0, 0, 0, 448, 449, + 450, 451, 0, 0, 0, 452, 0, 0, 0, 453, + 0, 454, 455, 456, 457, 458, 459, 0, 460, 461, + 462, 463, 464, 465, 0, 0, 0, 0, 0, 0, + 466, 467, 0, 468, 0, 0, 469, 0, 0, 0, + 470, 471, 472, 0, 0, 0, 473, 798, 799, 474, + 475, 0, 476, 477, 800, 479, 480, 481, 801, 802, + 482, 483, 484, 485, 803, 486, 487, 0, 0, 488, + 489, 490, 491, 0, 804, 492, 493, 0, 805, 806, + 807, 808, 0, 0, 0, 0, 0, 498, 499, 500, + 0, 809, 810, 811, 502, 503, 504, 812, 505, 506, + 813, 507, 508, 0, 509, 510, 0, 0, 511, 0, + 0, 512, 0, 513, 0, 814, 515, 0, 0, 815, + 816, 817, 818, 516, 0, 0, 517, 819, 0, 820, + 518, 519, 520, 521, 522, 821, 822, 0, 0, 0, + 0, 0, 0, 525, 526, 0, 527, 528, 529, 0, + 0, 823, 0, 0, 0, 0, 0, 0, 0, 824, + 825, 0, 0, 0, 0, 826, 827, 0, 0, 828, + 829, 0, 0, 830, 831, 160, 0, 161, 717, 163, + 164, 165, 166, 0, 0, 167, 0, 0, 0, 168, + 0, 0, 718, 0, 170, 171, 172, 173, 174, 175, + 176, 719, 178, 0, 179, 0, 0, 720, 180, 721, + 722, 723, 181, 724, 0, 182, 183, 184, 0, 185, + 0, 186, 187, 0, 0, 188, 725, 726, 189, 190, + 0, 191, 727, 728, 193, 194, 0, 195, 196, 197, + 198, 729, 200, 0, 730, 202, 731, 732, 733, 734, + 735, 0, 208, 209, 210, 211, 212, 213, 214, 215, + 0, 216, 217, 0, 218, 219, 220, 736, 222, 0, + 223, 737, 738, 224, 0, 0, 225, 739, 226, 740, + 741, 227, 0, 228, 742, 743, 0, 229, 230, 231, + 744, 745, 746, 0, 0, 0, 0, 747, 234, 748, + 0, 0, 749, 235, 0, 236, 0, 0, 0, 0, + 237, 0, 238, 239, 240, 241, 242, 0, 0, 0, + 0, 243, 0, 0, 244, 245, 246, 0, 0, 0, + 247, 0, 248, 249, 0, 250, 251, 252, 0, 253, + 254, 0, 255, 256, 257, 258, 259, 260, 261, 750, + 0, 262, 263, 264, 265, 751, 752, 266, 267, 0, + 268, 269, 270, 753, 0, 271, 0, 0, 0, 754, + 273, 0, 274, 0, 275, 0, 276, 277, 755, 279, + 756, 281, 282, 0, 283, 0, 757, 284, 285, 286, + 0, 287, 758, 759, 0, 288, 289, 0, 0, 0, + 760, 291, 292, 293, 294, 761, 0, 0, 295, 296, + 297, 0, 0, 298, 0, 0, 0, 762, 299, 300, + 763, 0, 0, 301, 0, 302, 303, 0, 304, 305, + 0, 0, 0, 306, 0, 0, 307, 308, 764, 0, + 0, 310, 0, 765, 311, 312, 0, 0, 0, 0, + 0, 766, 314, 0, 315, 0, 316, 0, 317, 318, + 0, 0, 767, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 0, 334, 335, 336, 337, 766, 338, 339, 340, - 341, 767, 342, 343, 344, 0, 0, 0, 0, 345, - 346, 347, 348, 768, 350, 0, 0, 769, 352, 770, - 353, 0, 354, 771, 772, 773, 774, 775, 359, 360, - 361, 362, 363, 364, 0, 776, 365, 0, 0, 366, - 367, 368, 369, 777, 778, 779, 370, 371, 0, 780, - 781, 372, 0, 373, 374, 782, 0, 376, 377, 378, - 379, 0, 380, 381, 0, 0, 0, 0, 0, 0, - 0, 0, 382, 383, 384, 0, 783, 385, 0, 386, - 0, 387, 388, 784, 390, 391, 392, 393, 785, 786, - 396, 787, 0, 397, 398, 399, 0, 400, 0, 401, - 402, 403, 404, 405, 0, 788, 407, 408, 0, 0, - 409, 0, 0, 0, 410, 411, 412, 413, 414, 0, - 0, 415, 416, 417, 418, 419, 0, 420, 421, 0, - 422, 423, 424, 789, 790, 425, 0, 426, 0, 427, - 428, 0, 429, 430, 0, 431, 0, 791, 0, 792, - 433, 434, 435, 436, 437, 438, 793, 794, 441, 442, - 443, 444, 0, 795, 446, 0, 0, 0, 447, 448, - 449, 450, 0, 0, 0, 451, 0, 0, 0, 452, - 0, 453, 454, 455, 456, 457, 458, 0, 459, 460, - 461, 462, 463, 464, 0, 0, 0, 0, 0, 0, - 465, 466, 0, 467, 0, 0, 468, 0, 0, 0, - 469, 470, 471, 0, 0, 0, 472, 796, 797, 473, - 474, 0, 475, 476, 798, 478, 479, 480, 799, 800, - 481, 482, 483, 484, 801, 485, 486, 0, 0, 487, - 488, 489, 490, 0, 802, 491, 492, 0, 803, 804, - 805, 806, 0, 0, 0, 0, 0, 497, 498, 499, - 0, 807, 808, 809, 501, 502, 503, 810, 504, 505, - 811, 506, 507, 0, 508, 509, 0, 0, 510, 0, - 0, 511, 0, 512, 0, 812, 514, 0, 0, 813, - 814, 815, 816, 515, 0, 0, 516, 817, 0, 818, - 517, 518, 519, 520, 521, 819, 820, 0, 0, 0, - 0, 0, 0, 524, 525, 0, 526, 527, 528, 0, - 0, 821, 0, 0, 0, 0, 0, 0, 0, 822, - 823, 0, 0, 0, 0, 824, 825, 0, 0, 826, - 827, 0, 0, 828, 829, 159, 0, 160, 715, 162, - 163, 164, 165, 0, 0, 166, 0, 0, 0, 167, - 0, 0, 716, 0, 169, 170, 171, 172, 173, 174, - 175, 717, 177, 0, 178, 0, 0, 718, 179, 719, - 720, 721, 180, 722, 0, 181, 182, 183, 0, 184, - 0, 185, 186, 0, 0, 187, 723, 724, 188, 189, - 0, 190, 725, 726, 192, 193, 0, 194, 195, 196, - 197, 727, 199, 0, 728, 201, 729, 730, 731, 732, - 733, 0, 207, 208, 209, 210, 211, 212, 213, 214, - 0, 215, 216, 0, 217, 218, 219, 734, 221, 0, - 222, 735, 736, 223, 0, 0, 224, 737, 225, 738, - 739, 226, 0, 227, 740, 741, 0, 228, 229, 230, - 742, 743, 744, 0, 0, 0, 0, 745, 233, 746, - 0, 0, 747, 234, 0, 235, 0, 0, 0, 0, - 236, 0, 237, 238, 239, 240, 241, 0, 0, 0, - 0, 242, 0, 0, 243, 244, 245, 0, 0, 0, - 246, 0, 247, 248, 0, 249, 250, 251, 0, 252, - 253, 0, 254, 255, 256, 257, 258, 259, 260, 748, - 0, 261, 262, 263, 264, 749, 750, 265, 266, 0, - 267, 268, 269, 751, 0, 270, 0, 0, 0, 752, - 272, 0, 273, 0, 274, 0, 275, 276, 753, 278, - 754, 280, 281, 0, 282, 0, 755, 283, 284, 285, - 0, 286, 756, 757, 0, 287, 288, 0, 0, 0, - 758, 290, 291, 292, 293, 759, 0, 0, 294, 295, - 296, 0, 0, 297, 0, 0, 0, 760, 298, 299, - 2938, 0, 0, 300, 0, 301, 302, 0, 303, 304, - 0, 0, 0, 305, 0, 0, 306, 307, 762, 0, - 0, 309, 0, 763, 310, 311, 0, 0, 0, 0, - 0, 764, 313, 0, 314, 0, 315, 0, 316, 317, - 0, 0, 765, 0, 0, 0, 318, 319, 320, 321, + 333, 334, 0, 335, 336, 337, 338, 768, 339, 340, + 341, 342, 769, 343, 344, 345, 0, 0, 0, 0, + 346, 347, 348, 349, 770, 351, 0, 0, 771, 353, + 772, 354, 0, 355, 773, 774, 775, 776, 777, 360, + 361, 362, 363, 364, 365, 0, 778, 366, 0, 0, + 367, 368, 369, 370, 779, 0, 781, 371, 372, 0, + 782, 783, 373, 0, 374, 375, 784, 0, 377, 378, + 379, 380, 0, 381, 382, 0, 0, 0, 0, 0, + 0, 0, 0, 383, 384, 385, 0, 785, 386, 0, + 387, 0, 388, 389, 786, 391, 392, 393, 394, 787, + 788, 397, 789, 0, 398, 399, 400, 0, 401, 0, + 402, 403, 404, 405, 406, 0, 790, 408, 409, 0, + 0, 410, 0, 0, 0, 411, 412, 413, 414, 415, + 0, 0, 416, 417, 418, 419, 420, 0, 421, 422, + 0, 423, 424, 425, 791, 792, 426, 0, 427, 0, + 428, 429, 0, 430, 431, 0, 432, 0, 793, 0, + 794, 434, 435, 436, 437, 438, 439, 795, 796, 442, + 443, 444, 445, 0, 797, 447, 0, 0, 0, 448, + 449, 450, 451, 0, 0, 0, 452, 0, 0, 0, + 453, 0, 454, 455, 456, 457, 458, 459, 0, 460, + 461, 462, 463, 464, 465, 0, 0, 0, 0, 0, + 0, 466, 467, 0, 468, 0, 0, 469, 0, 0, + 0, 470, 471, 472, 0, 0, 0, 473, 798, 799, + 474, 475, 0, 476, 477, 800, 479, 480, 481, 801, + 802, 482, 483, 484, 485, 803, 486, 487, 0, 0, + 488, 489, 490, 491, 0, 804, 492, 493, 0, 805, + 806, 807, 808, 0, 0, 0, 0, 0, 498, 499, + 500, 0, 809, 810, 811, 502, 503, 504, 812, 505, + 506, 813, 507, 508, 0, 509, 510, 0, 0, 511, + 0, 0, 512, 0, 513, 0, 814, 515, 0, 0, + 815, 816, 817, 818, 516, 0, 0, 517, 819, 0, + 820, 518, 519, 520, 521, 522, 821, 822, 0, 0, + 0, 0, 0, 0, 525, 526, 0, 527, 528, 529, + 0, 0, 823, 0, 0, 0, 0, 0, 0, 0, + 824, 825, 0, 0, 0, 0, 826, 827, 0, 0, + 828, 829, 0, 0, 830, 831, 160, 0, 161, 717, + 163, 164, 165, 166, 0, 0, 167, 0, 0, 0, + 168, 0, 0, 718, 0, 170, 171, 172, 173, 174, + 175, 176, 719, 178, 0, 179, 0, 0, 720, 180, + 721, 722, 723, 181, 724, 0, 182, 183, 184, 0, + 185, 0, 186, 187, 0, 0, 188, 725, 726, 189, + 190, 0, 191, 727, 728, 193, 194, 0, 195, 196, + 197, 198, 729, 200, 0, 730, 202, 731, 732, 733, + 734, 735, 0, 208, 209, 210, 211, 212, 213, 214, + 215, 0, 216, 217, 0, 218, 219, 220, 736, 222, + 0, 223, 737, 738, 224, 0, 0, 225, 739, 226, + 740, 741, 227, 0, 228, 742, 743, 0, 229, 230, + 231, 744, 745, 746, 0, 0, 0, 0, 747, 234, + 748, 0, 0, 749, 235, 0, 236, 0, 0, 0, + 0, 237, 0, 238, 239, 240, 241, 242, 0, 0, + 0, 0, 243, 0, 0, 244, 245, 246, 0, 0, + 0, 247, 0, 248, 249, 0, 250, 251, 252, 0, + 253, 254, 0, 255, 256, 257, 258, 259, 260, 261, + 750, 0, 262, 263, 264, 265, 751, 752, 266, 267, + 0, 268, 269, 270, 753, 0, 271, 0, 0, 0, + 754, 273, 0, 274, 0, 275, 0, 276, 277, 755, + 279, 756, 281, 282, 0, 283, 0, 757, 284, 285, + 286, 0, 287, 758, 759, 0, 288, 289, 0, 0, + 0, 760, 291, 292, 293, 294, 761, 0, 0, 295, + 296, 297, 0, 0, 298, 0, 0, 0, 762, 299, + 300, 1922, 0, 0, 301, 0, 302, 303, 0, 304, + 305, 0, 0, 0, 306, 0, 0, 307, 308, 764, + 0, 0, 310, 0, 765, 311, 312, 0, 0, 0, + 0, 0, 766, 314, 0, 315, 0, 316, 0, 317, + 318, 0, 0, 767, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 0, 334, 335, 336, 337, 766, 338, 339, - 340, 341, 767, 342, 343, 344, 0, 0, 0, 0, - 345, 346, 347, 348, 768, 350, 0, 0, 769, 352, - 770, 353, 0, 354, 771, 772, 773, 774, 775, 359, - 360, 361, 362, 363, 364, 0, 776, 365, 0, 0, - 366, 367, 368, 369, 777, 778, 779, 370, 371, 0, - 780, 781, 372, 0, 373, 374, 782, 0, 376, 377, - 378, 379, 0, 380, 381, 0, 0, 0, 0, 0, - 0, 0, 0, 382, 383, 384, 0, 783, 385, 0, - 386, 0, 387, 388, 784, 390, 391, 392, 393, 785, - 786, 396, 787, 0, 397, 398, 399, 0, 400, 0, - 401, 402, 403, 404, 405, 0, 788, 407, 408, 0, - 0, 409, 0, 0, 0, 410, 411, 412, 413, 414, - 0, 0, 415, 416, 417, 418, 419, 0, 420, 421, - 0, 422, 423, 424, 789, 790, 425, 0, 426, 0, - 427, 428, 0, 429, 430, 0, 431, 0, 791, 0, - 792, 433, 434, 435, 436, 437, 438, 793, 794, 441, - 442, 443, 444, 0, 795, 446, 0, 0, 0, 447, - 448, 449, 450, 0, 0, 0, 451, 0, 0, 0, - 452, 0, 453, 454, 455, 456, 457, 458, 0, 459, - 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, - 0, 465, 466, 0, 467, 0, 0, 468, 0, 0, - 0, 469, 470, 471, 0, 0, 0, 472, 796, 797, - 473, 474, 0, 475, 476, 798, 478, 479, 480, 799, - 800, 481, 482, 483, 484, 801, 485, 486, 0, 0, - 487, 488, 489, 490, 0, 802, 491, 492, 0, 803, - 804, 805, 806, 0, 0, 0, 0, 0, 497, 498, - 499, 0, 807, 808, 809, 501, 502, 503, 810, 504, - 505, 811, 506, 507, 0, 508, 509, 0, 0, 510, - 0, 0, 511, 0, 512, 0, 812, 514, 0, 0, - 813, 814, 815, 816, 515, 0, 0, 516, 817, 0, - 818, 517, 518, 519, 520, 521, 819, 820, 0, 0, - 0, 0, 0, 0, 524, 525, 0, 526, 527, 528, - 0, 0, 821, 0, 0, 0, 0, 0, 0, 0, - 822, 823, 0, 0, 0, 0, 824, 825, 0, 0, - 826, 827, 0, 0, 828, 829, 159, 0, 160, 715, - 162, 163, 164, 165, 0, 0, 166, 0, 0, 0, - 167, 0, 0, 716, 0, 169, 170, 171, 172, 173, - 174, 175, 717, 177, 0, 178, 0, 0, 718, 179, - 719, 720, 721, 180, 722, 0, 181, 182, 183, 0, - 184, 0, 185, 186, 0, 0, 187, 723, 724, 188, - 189, 0, 190, 725, 726, 192, 193, 0, 194, 195, - 196, 197, 727, 199, 0, 728, 201, 729, 730, 731, - 732, 733, 0, 207, 208, 209, 210, 211, 212, 213, - 214, 0, 215, 216, 0, 217, 218, 219, 734, 221, - 0, 222, 735, 736, 223, 0, 0, 224, 737, 225, - 738, 739, 226, 0, 227, 740, 741, 0, 228, 229, - 230, 742, 743, 744, 0, 0, 0, 0, 745, 233, - 746, 0, 0, 3828, 234, 0, 235, 0, 0, 0, - 0, 236, 0, 237, 238, 239, 240, 241, 0, 0, - 0, 0, 242, 0, 0, 243, 244, 245, 0, 0, - 0, 246, 0, 247, 248, 0, 249, 250, 251, 0, - 252, 253, 0, 254, 255, 256, 257, 258, 259, 260, - 748, 0, 261, 262, 263, 264, 749, 750, 265, 266, - 0, 267, 268, 269, 751, 0, 270, 0, 0, 0, - 752, 272, 0, 273, 0, 274, 0, 275, 276, 753, - 278, 754, 280, 281, 0, 282, 0, 755, 283, 284, - 285, 0, 286, 756, 757, 0, 287, 288, 0, 0, - 0, 758, 290, 291, 292, 293, 759, 0, 0, 294, - 295, 296, 0, 0, 297, 0, 0, 0, 760, 298, - 299, 761, 0, 0, 300, 0, 301, 302, 0, 303, - 304, 0, 0, 0, 305, 0, 0, 306, 307, 762, - 0, 0, 309, 0, 763, 310, 311, 0, 0, 0, - 0, 0, 764, 313, 0, 314, 0, 315, 0, 316, - 317, 0, 0, 765, 0, 0, 0, 318, 319, 320, + 332, 333, 334, 0, 335, 336, 337, 338, 768, 339, + 340, 341, 342, 769, 343, 344, 345, 0, 0, 0, + 0, 346, 347, 348, 349, 770, 351, 0, 0, 771, + 353, 772, 354, 0, 355, 773, 774, 775, 776, 777, + 360, 361, 362, 363, 364, 365, 0, 778, 366, 0, + 0, 367, 368, 369, 370, 779, 0, 781, 371, 372, + 0, 782, 783, 373, 0, 374, 375, 784, 0, 377, + 378, 379, 380, 0, 381, 382, 0, 0, 0, 0, + 0, 0, 0, 0, 383, 384, 385, 0, 785, 386, + 0, 387, 0, 388, 389, 786, 391, 392, 393, 394, + 787, 788, 397, 789, 0, 398, 399, 400, 0, 401, + 0, 402, 403, 404, 405, 406, 0, 790, 408, 409, + 0, 0, 410, 0, 0, 0, 411, 412, 413, 414, + 415, 0, 0, 416, 417, 418, 419, 420, 0, 421, + 422, 0, 423, 424, 425, 791, 792, 426, 0, 427, + 0, 428, 429, 0, 430, 431, 0, 432, 0, 793, + 0, 794, 434, 435, 436, 437, 438, 439, 795, 796, + 442, 443, 444, 445, 0, 797, 447, 0, 0, 0, + 448, 449, 450, 451, 0, 0, 0, 452, 0, 0, + 0, 453, 0, 454, 455, 456, 457, 458, 459, 0, + 460, 461, 462, 463, 464, 465, 0, 0, 0, 0, + 0, 0, 466, 467, 0, 468, 0, 0, 469, 0, + 0, 0, 470, 471, 472, 0, 0, 0, 473, 798, + 799, 474, 475, 0, 476, 477, 800, 479, 480, 481, + 801, 802, 482, 483, 484, 485, 803, 486, 487, 0, + 0, 488, 489, 490, 491, 0, 804, 492, 493, 0, + 805, 806, 807, 808, 0, 0, 0, 0, 0, 498, + 499, 500, 0, 809, 810, 811, 502, 503, 504, 812, + 505, 506, 813, 507, 508, 0, 509, 510, 0, 0, + 511, 0, 0, 512, 0, 513, 0, 814, 515, 0, + 0, 815, 816, 817, 818, 516, 0, 0, 517, 819, + 0, 820, 518, 519, 520, 521, 522, 821, 822, 0, + 0, 0, 0, 0, 0, 525, 526, 0, 527, 528, + 529, 0, 0, 823, 0, 0, 0, 0, 0, 0, + 0, 824, 825, 0, 0, 0, 0, 826, 827, 0, + 0, 828, 829, 0, 0, 830, 831, 160, 0, 161, + 717, 163, 164, 165, 166, 0, 0, 167, 0, 0, + 0, 168, 0, 0, 718, 0, 170, 171, 172, 173, + 174, 175, 176, 719, 178, 0, 179, 0, 0, 720, + 180, 721, 722, 723, 181, 724, 0, 182, 183, 184, + 0, 185, 0, 186, 187, 0, 0, 188, 725, 726, + 189, 190, 0, 191, 727, 728, 193, 194, 0, 195, + 196, 197, 198, 729, 200, 0, 730, 202, 731, 732, + 733, 734, 735, 0, 208, 209, 210, 211, 212, 213, + 214, 215, 0, 216, 217, 0, 218, 219, 220, 736, + 222, 0, 223, 737, 738, 224, 0, 0, 225, 739, + 226, 740, 741, 227, 0, 228, 742, 743, 0, 229, + 230, 231, 744, 745, 746, 0, 0, 0, 0, 747, + 234, 748, 0, 0, 749, 235, 0, 236, 0, 0, + 0, 0, 237, 0, 238, 239, 240, 241, 242, 0, + 0, 0, 0, 243, 0, 0, 244, 245, 246, 0, + 0, 0, 247, 0, 248, 249, 0, 250, 251, 252, + 0, 253, 254, 0, 255, 256, 257, 258, 259, 260, + 261, 750, 0, 262, 263, 264, 265, 751, 752, 266, + 267, 0, 268, 269, 270, 753, 0, 271, 0, 0, + 0, 754, 273, 0, 274, 0, 275, 0, 276, 277, + 755, 279, 756, 281, 282, 0, 283, 0, 757, 284, + 285, 286, 0, 287, 758, 759, 0, 288, 289, 0, + 0, 0, 760, 291, 292, 293, 294, 761, 0, 0, + 295, 296, 297, 0, 0, 298, 0, 0, 0, 762, + 299, 300, 1924, 0, 0, 301, 0, 302, 303, 0, + 304, 305, 0, 0, 0, 306, 0, 0, 307, 308, + 764, 0, 0, 310, 0, 765, 311, 312, 0, 0, + 0, 0, 0, 766, 314, 0, 315, 0, 316, 0, + 317, 318, 0, 0, 767, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 0, 334, 335, 336, 337, 766, 338, - 339, 340, 341, 767, 342, 343, 344, 0, 0, 0, - 0, 345, 346, 347, 348, 768, 350, 0, 0, 769, - 352, 770, 353, 0, 354, 771, 772, 773, 774, 775, - 359, 360, 361, 362, 363, 364, 0, 776, 365, 0, - 0, 366, 367, 368, 369, 777, 778, 779, 370, 371, - 0, 780, 781, 372, 0, 373, 374, 782, 0, 376, - 377, 378, 379, 0, 380, 381, 0, 0, 0, 0, - 0, 0, 0, 0, 382, 383, 384, 0, 783, 385, - 0, 386, 0, 387, 388, 784, 390, 391, 392, 393, - 785, 786, 396, 787, 0, 397, 398, 399, 0, 400, - 0, 401, 402, 403, 404, 405, 0, 788, 407, 408, - 0, 0, 409, 0, 0, 0, 410, 411, 412, 413, - 414, 0, 0, 415, 416, 417, 418, 419, 0, 420, - 421, 0, 422, 423, 424, 789, 790, 425, 0, 426, - 0, 427, 428, 0, 429, 430, 0, 431, 0, 791, - 0, 792, 433, 434, 435, 436, 437, 438, 793, 794, - 441, 442, 443, 444, 0, 795, 446, 0, 0, 0, - 447, 448, 449, 450, 0, 0, 0, 451, 0, 0, - 0, 452, 0, 453, 454, 455, 456, 457, 458, 0, - 459, 460, 461, 462, 463, 464, 0, 0, 0, 0, - 0, 0, 465, 466, 0, 467, 0, 0, 468, 0, - 0, 0, 469, 470, 471, 0, 0, 0, 472, 796, - 797, 473, 474, 0, 475, 476, 798, 478, 479, 480, - 799, 800, 481, 482, 483, 484, 801, 485, 486, 0, - 0, 487, 488, 489, 490, 0, 802, 491, 492, 0, - 803, 804, 805, 806, 0, 0, 0, 0, 0, 497, - 498, 499, 0, 807, 808, 809, 501, 502, 503, 810, - 504, 505, 811, 506, 507, 0, 508, 509, 0, 0, - 510, 0, 0, 511, 0, 512, 0, 812, 514, 0, - 0, 813, 814, 815, 816, 515, 0, 0, 516, 817, - 0, 818, 517, 518, 519, 520, 521, 819, 820, 0, - 0, 0, 0, 0, 0, 524, 525, 0, 526, 527, - 528, 0, 0, 821, 0, 0, 0, 0, 0, 0, - 0, 822, 823, 0, 0, 0, 0, 824, 825, 0, - 0, 826, 827, 0, 0, 828, 829, 159, 0, 160, - 715, 162, 163, 164, 165, 0, 0, 166, 0, 0, - 0, 167, 0, 0, 716, 0, 169, 170, 171, 172, - 173, 174, 175, 717, 177, 0, 178, 0, 0, 718, - 179, 719, 720, 721, 180, 722, 0, 181, 182, 183, - 0, 184, 0, 185, 186, 0, 0, 187, 723, 724, - 188, 189, 0, 190, 725, 726, 192, 193, 0, 194, - 195, 196, 197, 727, 199, 0, 728, 201, 729, 730, - 731, 732, 733, 0, 207, 208, 209, 210, 211, 212, - 213, 214, 0, 215, 216, 0, 217, 218, 219, 734, - 221, 0, 222, 735, 736, 223, 0, 0, 224, 737, - 225, 738, 739, 226, 0, 227, 740, 741, 0, 228, - 229, 230, 742, 743, 744, 0, 0, 0, 0, 745, - 233, 746, 0, 0, 747, 234, 0, 235, 0, 0, - 0, 0, 236, 0, 237, 238, 239, 240, 241, 0, - 0, 0, 0, 242, 0, 0, 243, 244, 245, 0, - 0, 0, 246, 0, 247, 248, 0, 249, 250, 251, - 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, - 260, 748, 0, 261, 262, 263, 264, 749, 750, 265, - 266, 0, 267, 268, 269, 751, 0, 270, 0, 0, - 0, 752, 272, 0, 273, 0, 274, 0, 275, 276, - 753, 278, 754, 280, 281, 0, 282, 0, 755, 283, - 284, 285, 0, 286, 756, 757, 0, 287, 288, 0, - 0, 0, 758, 290, 291, 292, 293, 759, 0, 0, - 294, 295, 296, 0, 0, 297, 0, 0, 0, 760, - 298, 299, 761, 0, 0, 300, 0, 301, 302, 0, - 303, 304, 0, 0, 0, 305, 0, 0, 306, 307, - 762, 0, 0, 309, 0, 763, 310, 311, 0, 0, - 0, 0, 0, 764, 313, 0, 314, 0, 315, 0, - 316, 317, 0, 0, 765, 0, 0, 0, 318, 319, + 331, 332, 333, 334, 0, 335, 336, 337, 338, 768, + 339, 340, 341, 342, 769, 343, 344, 345, 0, 0, + 0, 0, 346, 347, 348, 349, 770, 351, 0, 0, + 771, 353, 772, 354, 0, 355, 773, 774, 775, 776, + 777, 360, 361, 362, 363, 364, 365, 0, 778, 366, + 0, 0, 367, 368, 369, 370, 779, 0, 781, 371, + 372, 0, 782, 783, 373, 0, 374, 375, 784, 0, + 377, 378, 379, 380, 0, 381, 382, 0, 0, 0, + 0, 0, 0, 0, 0, 383, 384, 385, 0, 785, + 386, 0, 387, 0, 388, 389, 786, 391, 392, 393, + 394, 787, 788, 397, 789, 0, 398, 399, 400, 0, + 401, 0, 402, 403, 404, 405, 406, 0, 790, 408, + 409, 0, 0, 410, 0, 0, 0, 411, 412, 413, + 414, 415, 0, 0, 416, 417, 418, 419, 420, 0, + 421, 422, 0, 423, 424, 425, 791, 792, 426, 0, + 427, 0, 428, 429, 0, 430, 431, 0, 432, 0, + 793, 0, 794, 434, 435, 436, 437, 438, 439, 795, + 796, 442, 443, 444, 445, 0, 797, 447, 0, 0, + 0, 448, 449, 450, 451, 0, 0, 0, 452, 0, + 0, 0, 453, 0, 454, 455, 456, 457, 458, 459, + 0, 460, 461, 462, 463, 464, 465, 0, 0, 0, + 0, 0, 0, 466, 467, 0, 468, 0, 0, 469, + 0, 0, 0, 470, 471, 472, 0, 0, 0, 473, + 798, 799, 474, 475, 0, 476, 477, 800, 479, 480, + 481, 801, 802, 482, 483, 484, 485, 803, 486, 487, + 0, 0, 488, 489, 490, 491, 0, 804, 492, 493, + 0, 805, 806, 807, 808, 0, 0, 0, 0, 0, + 498, 499, 500, 0, 809, 810, 811, 502, 503, 504, + 812, 505, 506, 813, 507, 508, 0, 509, 510, 0, + 0, 511, 0, 0, 512, 0, 513, 0, 814, 515, + 0, 0, 815, 816, 817, 818, 516, 0, 0, 517, + 819, 0, 820, 518, 519, 520, 521, 522, 821, 822, + 0, 0, 0, 0, 0, 0, 525, 526, 0, 527, + 528, 529, 0, 0, 823, 0, 0, 0, 0, 0, + 0, 0, 824, 825, 0, 0, 0, 0, 826, 827, + 0, 0, 828, 829, 0, 0, 830, 831, 160, 0, + 161, 162, 163, 164, 165, 166, 0, 0, 167, 0, + 0, 0, 168, 0, 0, 169, 0, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 0, 179, 0, 0, + 0, 180, 721, 0, 0, 181, 0, 0, 182, 183, + 184, 0, 185, 0, 186, 187, 0, 0, 188, 0, + 0, 189, 190, 0, 191, 192, 0, 193, 194, 0, + 195, 196, 197, 198, 199, 200, 0, 201, 202, 203, + 204, 205, 206, 207, 0, 208, 209, 210, 211, 212, + 213, 214, 215, 0, 216, 217, 0, 218, 219, 220, + 221, 222, 0, 223, 0, 0, 224, 0, 0, 225, + 0, 226, 0, 0, 227, 0, 228, 0, 0, 0, + 229, 230, 231, 0, 0, 1967, 0, 0, 0, 0, + 233, 234, 748, 0, 0, 0, 235, 0, 236, 0, + 0, 0, 0, 237, 0, 238, 239, 240, 241, 242, + 0, 0, 0, 0, 243, 0, 0, 244, 245, 246, + 0, 0, 0, 247, 0, 248, 249, 0, 250, 251, + 252, 0, 253, 254, 0, 255, 256, 257, 258, 259, + 260, 261, 0, 0, 262, 263, 264, 265, 0, 752, + 266, 267, 0, 268, 269, 270, 753, 0, 271, 0, + 0, 0, 272, 273, 0, 274, 0, 275, 0, 276, + 277, 278, 279, 280, 281, 282, 0, 283, 0, 0, + 284, 285, 286, 0, 287, 758, 759, 0, 288, 289, + 0, 0, 0, 290, 291, 292, 293, 294, 0, 0, + 0, 295, 296, 297, 0, 0, 298, 0, 0, 0, + 0, 299, 300, 0, 0, 0, 301, 0, 302, 303, + 0, 304, 305, 0, 0, 0, 306, 0, 0, 307, + 308, 309, 0, 0, 310, 0, 0, 311, 312, 0, + 0, 0, 0, 0, 313, 314, 0, 315, 0, 316, + 0, 317, 318, 0, 0, 767, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 0, 334, 335, 336, 337, 766, - 338, 339, 340, 341, 767, 342, 343, 344, 4817, 0, - 0, 0, 345, 346, 347, 348, 768, 350, 0, 0, - 769, 352, 770, 353, 0, 354, 771, 772, 773, 774, - 775, 359, 360, 361, 362, 363, 364, 0, 776, 365, - 0, 0, 366, 367, 368, 369, 777, 0, 779, 370, - 371, 0, 780, 781, 372, 0, 373, 374, 782, 0, - 376, 377, 378, 379, 0, 380, 381, 0, 0, 0, - 0, 0, 0, 0, 0, 382, 383, 384, 0, 783, - 385, 0, 386, 0, 387, 388, 784, 390, 391, 392, - 393, 785, 786, 396, 787, 0, 397, 398, 399, 0, - 400, 0, 401, 402, 403, 404, 405, 0, 788, 407, - 408, 0, 0, 409, 0, 0, 0, 410, 411, 412, - 413, 414, 0, 0, 415, 416, 417, 418, 419, 0, - 420, 421, 0, 422, 423, 424, 789, 790, 425, 0, - 426, 0, 427, 428, 0, 429, 430, 0, 431, 0, - 791, 0, 792, 433, 434, 435, 436, 437, 438, 793, - 794, 441, 442, 443, 444, 0, 795, 446, 0, 0, - 0, 447, 448, 449, 450, 0, 0, 0, 451, 0, - 0, 0, 452, 0, 453, 454, 455, 456, 457, 458, - 0, 459, 460, 461, 462, 463, 464, 0, 0, 0, - 0, 0, 0, 465, 466, 0, 467, 0, 0, 468, - 0, 0, 0, 469, 470, 471, 0, 0, 0, 472, - 796, 797, 473, 474, 0, 475, 476, 798, 478, 479, - 480, 799, 800, 481, 482, 483, 484, 801, 485, 486, - 0, 0, 487, 488, 489, 490, 0, 802, 491, 492, - 0, 803, 804, 805, 806, 0, 0, 0, 0, 0, - 497, 498, 499, 0, 807, 808, 809, 501, 502, 503, - 810, 504, 505, 811, 506, 507, 0, 508, 509, 0, - 0, 510, 0, 0, 511, 0, 512, 0, 812, 514, - 0, 0, 813, 814, 815, 816, 515, 0, 0, 516, - 817, 0, 818, 517, 518, 519, 520, 521, 819, 820, - 0, 0, 0, 0, 0, 0, 524, 525, 0, 526, - 527, 528, 0, 0, 821, 0, 0, 0, 0, 0, - 0, 0, 822, 823, 0, 0, 0, 0, 824, 825, - 0, 0, 826, 827, 0, 0, 828, 829, 159, 0, - 160, 715, 162, 163, 164, 165, 0, 0, 166, 0, - 0, 0, 167, 0, 0, 716, 0, 169, 170, 171, - 172, 173, 174, 175, 717, 177, 0, 178, 0, 0, - 718, 179, 719, 720, 721, 180, 722, 0, 181, 182, - 183, 0, 184, 0, 185, 186, 0, 0, 187, 723, - 724, 188, 189, 0, 190, 725, 726, 192, 193, 0, - 194, 195, 196, 197, 727, 199, 0, 728, 201, 729, - 730, 731, 732, 733, 0, 207, 208, 209, 210, 211, - 212, 213, 214, 0, 215, 216, 0, 217, 218, 219, - 734, 221, 0, 222, 735, 736, 223, 0, 0, 224, - 737, 225, 738, 739, 226, 0, 227, 740, 741, 0, - 228, 229, 230, 742, 743, 744, 0, 0, 0, 0, - 745, 233, 746, 0, 0, 747, 234, 0, 235, 0, - 0, 0, 0, 236, 0, 237, 238, 239, 240, 241, - 0, 0, 0, 0, 242, 0, 0, 243, 244, 245, - 0, 0, 0, 246, 0, 247, 248, 0, 249, 250, - 251, 0, 252, 253, 0, 254, 255, 256, 257, 258, - 259, 260, 748, 0, 261, 262, 263, 264, 749, 750, - 265, 266, 0, 267, 268, 269, 751, 0, 270, 0, - 0, 0, 752, 272, 0, 273, 0, 274, 0, 275, - 276, 753, 278, 754, 280, 281, 0, 282, 0, 755, - 283, 284, 285, 0, 286, 756, 757, 0, 287, 288, - 0, 0, 0, 758, 290, 291, 292, 293, 759, 0, - 0, 294, 295, 296, 0, 0, 297, 0, 0, 0, - 760, 298, 299, 761, 0, 0, 300, 0, 301, 302, - 0, 303, 304, 0, 0, 0, 305, 0, 0, 306, - 307, 762, 0, 0, 309, 0, 763, 310, 311, 0, - 0, 0, 0, 0, 764, 313, 0, 314, 0, 315, - 0, 316, 317, 0, 0, 765, 0, 0, 0, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 0, 334, 335, 336, 337, - 766, 338, 339, 340, 341, 767, 342, 343, 344, 0, - 0, 0, 0, 345, 346, 347, 348, 768, 350, 0, - 0, 769, 352, 770, 353, 0, 354, 771, 772, 773, - 774, 775, 359, 360, 361, 362, 363, 364, 0, 776, - 365, 0, 0, 366, 367, 368, 369, 777, 0, 779, - 370, 371, 0, 780, 781, 372, 0, 373, 374, 782, - 0, 376, 377, 378, 379, 0, 380, 381, 0, 0, - 0, 0, 0, 0, 0, 0, 382, 383, 384, 0, - 783, 385, 0, 386, 0, 387, 388, 784, 390, 391, - 392, 393, 785, 786, 396, 787, 0, 397, 398, 399, - 0, 400, 0, 401, 402, 403, 404, 405, 0, 788, - 407, 408, 0, 0, 409, 0, 0, 0, 410, 411, - 412, 413, 414, 0, 0, 415, 416, 417, 418, 419, - 0, 420, 421, 0, 422, 423, 424, 789, 790, 425, - 0, 426, 0, 427, 428, 0, 429, 430, 0, 431, - 0, 791, 0, 792, 433, 434, 435, 436, 437, 438, - 793, 794, 441, 442, 443, 444, 0, 795, 446, 0, - 0, 0, 447, 448, 449, 450, 0, 0, 0, 451, - 0, 0, 0, 452, 0, 453, 454, 455, 456, 457, - 458, 0, 459, 460, 461, 462, 463, 464, 0, 0, - 0, 0, 0, 0, 465, 466, 0, 467, 0, 0, - 468, 0, 0, 0, 469, 470, 471, 0, 0, 0, - 472, 796, 797, 473, 474, 0, 475, 476, 798, 478, - 479, 480, 799, 800, 481, 482, 483, 484, 801, 485, - 486, 0, 0, 487, 488, 489, 490, 0, 802, 491, - 492, 0, 803, 804, 805, 806, 0, 0, 0, 0, - 0, 497, 498, 499, 0, 807, 808, 809, 501, 502, - 503, 810, 504, 505, 811, 506, 507, 0, 508, 509, - 0, 0, 510, 0, 0, 511, 0, 512, 0, 812, - 514, 0, 0, 813, 814, 815, 816, 515, 0, 0, - 516, 817, 0, 818, 517, 518, 519, 520, 521, 819, - 820, 0, 0, 0, 0, 0, 0, 524, 525, 0, - 526, 527, 528, 0, 0, 821, 0, 0, 0, 0, - 0, 0, 0, 822, 823, 0, 0, 0, 0, 824, - 825, 0, 0, 826, 827, 0, 0, 828, 829, 159, - 0, 160, 715, 162, 163, 164, 165, 0, 0, 166, - 0, 0, 0, 167, 0, 0, 716, 0, 169, 170, - 171, 172, 173, 174, 175, 717, 177, 0, 178, 0, - 0, 718, 179, 719, 720, 721, 180, 722, 0, 181, - 182, 183, 0, 184, 0, 185, 186, 0, 0, 187, - 723, 724, 188, 189, 0, 190, 725, 726, 192, 193, - 0, 194, 195, 196, 197, 727, 199, 0, 728, 201, - 729, 730, 731, 732, 733, 0, 207, 208, 209, 210, - 211, 212, 213, 214, 0, 215, 216, 0, 217, 218, - 219, 734, 221, 0, 222, 735, 736, 223, 0, 0, - 224, 737, 225, 738, 739, 226, 0, 227, 740, 741, - 0, 228, 229, 230, 742, 743, 744, 0, 0, 0, - 0, 745, 233, 746, 0, 0, 747, 234, 0, 235, - 0, 0, 0, 0, 236, 0, 237, 238, 239, 240, - 241, 0, 0, 0, 0, 242, 0, 0, 243, 244, - 245, 0, 0, 0, 246, 0, 247, 248, 0, 249, - 250, 251, 0, 252, 253, 0, 254, 255, 256, 257, - 258, 259, 260, 748, 0, 261, 262, 263, 264, 749, - 750, 265, 266, 0, 267, 268, 269, 751, 0, 270, - 0, 0, 0, 752, 272, 0, 273, 0, 274, 0, - 275, 276, 753, 278, 754, 280, 281, 0, 282, 0, - 755, 283, 284, 285, 0, 286, 756, 757, 0, 287, - 288, 0, 0, 0, 758, 290, 291, 292, 293, 759, - 0, 0, 294, 295, 296, 0, 0, 297, 0, 0, - 0, 760, 298, 299, 1918, 0, 0, 300, 0, 301, - 302, 0, 303, 304, 0, 0, 0, 305, 0, 0, - 306, 307, 762, 0, 0, 309, 0, 763, 310, 311, - 0, 0, 0, 0, 0, 764, 313, 0, 314, 0, - 315, 0, 316, 317, 0, 0, 765, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 0, 334, 335, 336, - 337, 766, 338, 339, 340, 341, 767, 342, 343, 344, - 0, 0, 0, 0, 345, 346, 347, 348, 768, 350, - 0, 0, 769, 352, 770, 353, 0, 354, 771, 772, - 773, 774, 775, 359, 360, 361, 362, 363, 364, 0, - 776, 365, 0, 0, 366, 367, 368, 369, 777, 0, - 779, 370, 371, 0, 780, 781, 372, 0, 373, 374, - 782, 0, 376, 377, 378, 379, 0, 380, 381, 0, - 0, 0, 0, 0, 0, 0, 0, 382, 383, 384, - 0, 783, 385, 0, 386, 0, 387, 388, 784, 390, - 391, 392, 393, 785, 786, 396, 787, 0, 397, 398, - 399, 0, 400, 0, 401, 402, 403, 404, 405, 0, - 788, 407, 408, 0, 0, 409, 0, 0, 0, 410, - 411, 412, 413, 414, 0, 0, 415, 416, 417, 418, - 419, 0, 420, 421, 0, 422, 423, 424, 789, 790, - 425, 0, 426, 0, 427, 428, 0, 429, 430, 0, - 431, 0, 791, 0, 792, 433, 434, 435, 436, 437, - 438, 793, 794, 441, 442, 443, 444, 0, 795, 446, - 0, 0, 0, 447, 448, 449, 450, 0, 0, 0, - 451, 0, 0, 0, 452, 0, 453, 454, 455, 456, - 457, 458, 0, 459, 460, 461, 462, 463, 464, 0, - 0, 0, 0, 0, 0, 465, 466, 0, 467, 0, - 0, 468, 0, 0, 0, 469, 470, 471, 0, 0, - 0, 472, 796, 797, 473, 474, 0, 475, 476, 798, - 478, 479, 480, 799, 800, 481, 482, 483, 484, 801, - 485, 486, 0, 0, 487, 488, 489, 490, 0, 802, - 491, 492, 0, 803, 804, 805, 806, 0, 0, 0, - 0, 0, 497, 498, 499, 0, 807, 808, 809, 501, - 502, 503, 810, 504, 505, 811, 506, 507, 0, 508, - 509, 0, 0, 510, 0, 0, 511, 0, 512, 0, - 812, 514, 0, 0, 813, 814, 815, 816, 515, 0, - 0, 516, 817, 0, 818, 517, 518, 519, 520, 521, - 819, 820, 0, 0, 0, 0, 0, 0, 524, 525, - 0, 526, 527, 528, 0, 0, 821, 0, 0, 0, - 0, 0, 0, 0, 822, 823, 0, 0, 0, 0, - 824, 825, 0, 0, 826, 827, 0, 0, 828, 829, - 159, 0, 160, 715, 162, 163, 164, 165, 0, 0, - 166, 0, 0, 0, 167, 0, 0, 716, 0, 169, - 170, 171, 172, 173, 174, 175, 717, 177, 0, 178, - 0, 0, 718, 179, 719, 720, 721, 180, 722, 0, - 181, 182, 183, 0, 184, 0, 185, 186, 0, 0, - 187, 723, 724, 188, 189, 0, 190, 725, 726, 192, - 193, 0, 194, 195, 196, 197, 727, 199, 0, 728, - 201, 729, 730, 731, 732, 733, 0, 207, 208, 209, - 210, 211, 212, 213, 214, 0, 215, 216, 0, 217, - 218, 219, 734, 221, 0, 222, 735, 736, 223, 0, - 0, 224, 737, 225, 738, 739, 226, 0, 227, 740, - 741, 0, 228, 229, 230, 742, 743, 744, 0, 0, - 0, 0, 745, 233, 746, 0, 0, 747, 234, 0, - 235, 0, 0, 0, 0, 236, 0, 237, 238, 239, - 240, 241, 0, 0, 0, 0, 242, 0, 0, 243, - 244, 245, 0, 0, 0, 246, 0, 247, 248, 0, - 249, 250, 251, 0, 252, 253, 0, 254, 255, 256, - 257, 258, 259, 260, 748, 0, 261, 262, 263, 264, - 749, 750, 265, 266, 0, 267, 268, 269, 751, 0, - 270, 0, 0, 0, 752, 272, 0, 273, 0, 274, - 0, 275, 276, 753, 278, 754, 280, 281, 0, 282, - 0, 755, 283, 284, 285, 0, 286, 756, 757, 0, - 287, 288, 0, 0, 0, 758, 290, 291, 292, 293, - 759, 0, 0, 294, 295, 296, 0, 0, 297, 0, - 0, 0, 760, 298, 299, 1920, 0, 0, 300, 0, - 301, 302, 0, 303, 304, 0, 0, 0, 305, 0, - 0, 306, 307, 762, 0, 0, 309, 0, 763, 310, - 311, 0, 0, 0, 0, 0, 764, 313, 0, 314, - 0, 315, 0, 316, 317, 0, 0, 765, 0, 0, - 0, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 0, 334, 335, - 336, 337, 766, 338, 339, 340, 341, 767, 342, 343, - 344, 0, 0, 0, 0, 345, 346, 347, 348, 768, - 350, 0, 0, 769, 352, 770, 353, 0, 354, 771, - 772, 773, 774, 775, 359, 360, 361, 362, 363, 364, - 0, 776, 365, 0, 0, 366, 367, 368, 369, 777, - 0, 779, 370, 371, 0, 780, 781, 372, 0, 373, - 374, 782, 0, 376, 377, 378, 379, 0, 380, 381, - 0, 0, 0, 0, 0, 0, 0, 0, 382, 383, - 384, 0, 783, 385, 0, 386, 0, 387, 388, 784, - 390, 391, 392, 393, 785, 786, 396, 787, 0, 397, - 398, 399, 0, 400, 0, 401, 402, 403, 404, 405, - 0, 788, 407, 408, 0, 0, 409, 0, 0, 0, - 410, 411, 412, 413, 414, 0, 0, 415, 416, 417, - 418, 419, 0, 420, 421, 0, 422, 423, 424, 789, - 790, 425, 0, 426, 0, 427, 428, 0, 429, 430, - 0, 431, 0, 791, 0, 792, 433, 434, 435, 436, - 437, 438, 793, 794, 441, 442, 443, 444, 0, 795, - 446, 0, 0, 0, 447, 448, 449, 450, 0, 0, - 0, 451, 0, 0, 0, 452, 0, 453, 454, 455, - 456, 457, 458, 0, 459, 460, 461, 462, 463, 464, - 0, 0, 0, 0, 0, 0, 465, 466, 0, 467, - 0, 0, 468, 0, 0, 0, 469, 470, 471, 0, - 0, 0, 472, 796, 797, 473, 474, 0, 475, 476, - 798, 478, 479, 480, 799, 800, 481, 482, 483, 484, - 801, 485, 486, 0, 0, 487, 488, 489, 490, 0, - 802, 491, 492, 0, 803, 804, 805, 806, 0, 0, - 0, 0, 0, 497, 498, 499, 0, 807, 808, 809, - 501, 502, 503, 810, 504, 505, 811, 506, 507, 0, - 508, 509, 0, 0, 510, 0, 0, 511, 0, 512, - 0, 812, 514, 0, 0, 813, 814, 815, 816, 515, - 0, 0, 516, 817, 0, 818, 517, 518, 519, 520, - 521, 819, 820, 0, 0, 0, 0, 0, 0, 524, - 525, 0, 526, 527, 528, 0, 0, 821, 0, 0, - 0, 0, 0, 0, 0, 822, 823, 0, 0, 0, - 0, 824, 825, 0, 0, 826, 827, 0, 0, 828, - 829, 159, 0, 160, 161, 162, 163, 164, 165, 0, - 0, 166, 0, 0, 0, 167, 0, 0, 168, 0, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 0, - 178, 0, 0, 0, 179, 719, 0, 0, 180, 0, - 0, 181, 182, 183, 0, 184, 0, 185, 186, 0, - 0, 187, 0, 0, 188, 189, 0, 190, 191, 0, - 192, 193, 0, 194, 195, 196, 197, 198, 199, 0, - 200, 201, 202, 203, 204, 205, 206, 0, 207, 208, - 209, 210, 211, 212, 213, 214, 0, 215, 216, 0, - 217, 218, 219, 220, 221, 0, 222, 0, 0, 223, - 0, 0, 224, 0, 225, 0, 0, 226, 0, 227, - 0, 0, 0, 228, 229, 230, 0, 0, 1963, 0, - 0, 0, 0, 232, 233, 746, 0, 0, 0, 234, - 0, 235, 0, 0, 0, 0, 236, 0, 237, 238, - 239, 240, 241, 0, 0, 0, 0, 242, 0, 0, - 243, 244, 245, 0, 0, 0, 246, 0, 247, 248, - 0, 249, 250, 251, 0, 252, 253, 0, 254, 255, - 256, 257, 258, 259, 260, 0, 0, 261, 262, 263, - 264, 0, 750, 265, 266, 0, 267, 268, 269, 751, - 0, 270, 0, 0, 0, 271, 272, 0, 273, 0, - 274, 0, 275, 276, 277, 278, 279, 280, 281, 0, - 282, 0, 0, 283, 284, 285, 0, 286, 756, 757, - 0, 287, 288, 0, 0, 0, 289, 290, 291, 292, - 293, 0, 0, 0, 294, 295, 296, 0, 0, 297, - 0, 0, 0, 0, 298, 299, 0, 0, 0, 300, - 0, 301, 302, 0, 303, 304, 0, 0, 0, 305, - 0, 0, 306, 307, 308, 0, 0, 309, 0, 0, - 310, 311, 0, 0, 0, 0, 0, 312, 313, 0, - 314, 0, 315, 0, 316, 317, 0, 0, 765, 0, - 0, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, - 335, 336, 337, 0, 338, 339, 340, 341, 0, 342, - 343, 344, 0, 0, 0, 0, 345, 346, 347, 348, - 349, 350, 0, 0, 351, 352, 0, 353, 0, 354, - 0, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 776, 365, 0, 0, 366, 367, 368, 369, - 0, 0, 0, 370, 371, 0, 780, 781, 372, 0, - 373, 374, 375, 0, 376, 377, 378, 379, 0, 380, - 381, 0, 0, 0, 0, 0, 0, 0, 0, 382, - 383, 384, 0, 0, 385, 0, 386, 0, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 0, 0, - 397, 398, 399, 0, 400, 0, 401, 402, 403, 404, - 405, 0, 406, 407, 408, 0, 0, 409, 0, 0, - 0, 410, 411, 412, 413, 414, 0, 0, 415, 416, - 417, 418, 419, 0, 420, 421, 0, 422, 423, 424, - 0, 0, 425, 0, 426, 0, 427, 428, 0, 429, - 430, 0, 431, 0, 432, 0, 0, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 0, - 445, 446, 0, 0, 0, 447, 448, 449, 450, 0, - 0, 0, 451, 0, 0, 0, 452, 0, 453, 454, - 455, 456, 457, 458, 0, 459, 460, 461, 462, 463, - 464, 0, 0, 0, 0, 0, 0, 465, 466, 0, - 467, 0, 0, 468, 0, 0, 0, 469, 470, 471, - 0, 0, 0, 472, 0, 0, 473, 474, 0, 475, - 476, 477, 478, 479, 480, 0, 0, 481, 482, 483, - 484, 0, 485, 486, 0, 0, 487, 488, 489, 490, - 0, 802, 491, 492, 0, 1964, 494, 495, 1965, 0, - 0, 0, 0, 0, 497, 498, 499, 0, 0, 808, - 500, 501, 502, 503, 810, 504, 505, 811, 506, 507, - 0, 508, 509, 0, 0, 510, 0, 0, 511, 0, - 512, 0, 513, 514, 0, 0, 0, 0, 0, 0, - 515, 0, 0, 516, 0, 0, 0, 517, 518, 519, - 520, 521, 522, 523, 0, 0, 0, 0, 0, 0, - 524, 525, 0, 526, 527, 528, 0, 0, 529, 0, - 0, 0, 0, 0, 0, 159, 0, 160, 161, 162, - 163, 164, 165, 0, 0, 166, 0, 0, 0, 167, - 828, 829, 168, 0, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 0, 178, 0, 0, 0, 179, 0, - 0, 0, 180, 0, 0, 181, 182, 183, 0, 184, - 0, 185, 186, 0, 0, 187, 0, 0, 188, 189, - 0, 190, 191, 0, 192, 193, 0, 194, 195, 196, - 197, 198, 199, 0, 200, 201, 202, 203, 204, 205, - 206, 0, 207, 208, 209, 210, 211, 212, 213, 214, - 0, 215, 216, 3213, 217, 218, 219, 220, 221, 0, - 222, 0, 0, 223, 0, 0, 224, 0, 225, 0, - 0, 226, 0, 227, 0, 0, 0, 228, 229, 230, - 0, 0, 231, 0, 0, 0, 0, 232, 233, 0, - 0, 0, 0, 234, 0, 235, 0, 0, 0, 0, - 236, 0, 237, 238, 239, 240, 241, 0, 0, 0, - 0, 242, 0, 0, 243, 244, 245, 0, 0, 0, - 246, 0, 247, 248, 0, 249, 250, 251, 0, 252, - 253, 0, 254, 255, 256, 257, 258, 259, 260, 0, - 0, 261, 262, 263, 264, 0, 0, 265, 266, 0, - 267, 268, 269, 0, 0, 270, 0, 0, 0, 271, - 272, 0, 273, 640, 274, 0, 275, 276, 277, 278, - 279, 280, 281, 0, 282, 0, 0, 283, 284, 285, - 0, 286, 0, 0, 0, 287, 288, 0, 0, 0, - 289, 290, 291, 292, 293, 0, 0, 0, 294, 295, - 296, 2280, 0, 297, 0, 0, 0, 0, 298, 299, - 0, 0, 0, 300, 0, 301, 302, 0, 303, 304, - 0, 0, 0, 305, 2281, 0, 306, 307, 308, 0, - 0, 309, 0, 0, 310, 311, 0, 3593, 0, 0, - 0, 312, 313, 0, 314, 0, 315, 0, 316, 317, - 0, 0, 0, 0, 0, 0, 318, 319, 320, 321, + 330, 331, 332, 333, 334, 0, 335, 336, 337, 338, + 0, 339, 340, 341, 342, 0, 343, 344, 345, 0, + 0, 0, 0, 346, 347, 348, 349, 350, 351, 0, + 0, 352, 353, 0, 354, 0, 355, 0, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 0, 778, + 366, 0, 0, 367, 368, 369, 370, 0, 0, 0, + 371, 372, 0, 782, 783, 373, 0, 374, 375, 376, + 0, 377, 378, 379, 380, 0, 381, 382, 0, 0, + 0, 0, 0, 0, 0, 0, 383, 384, 385, 0, + 0, 386, 0, 387, 0, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 0, 0, 398, 399, 400, + 0, 401, 0, 402, 403, 404, 405, 406, 0, 407, + 408, 409, 0, 0, 410, 0, 0, 0, 411, 412, + 413, 414, 415, 0, 0, 416, 417, 418, 419, 420, + 0, 421, 422, 0, 423, 424, 425, 0, 0, 426, + 0, 427, 0, 428, 429, 0, 430, 431, 0, 432, + 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 0, 446, 447, 0, + 0, 0, 448, 449, 450, 451, 0, 0, 0, 452, + 0, 0, 0, 453, 0, 454, 455, 456, 457, 458, + 459, 0, 460, 461, 462, 463, 464, 465, 0, 0, + 0, 0, 0, 0, 466, 467, 0, 468, 0, 0, + 469, 0, 0, 0, 470, 471, 472, 0, 0, 0, + 473, 0, 0, 474, 475, 0, 476, 477, 478, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 0, 0, 488, 489, 490, 491, 0, 804, 492, + 493, 0, 1968, 495, 496, 1969, 0, 0, 0, 0, + 0, 498, 499, 500, 0, 0, 810, 501, 502, 503, + 504, 812, 505, 506, 813, 507, 508, 0, 509, 510, + 0, 0, 511, 0, 0, 512, 0, 513, 0, 514, + 515, 0, 0, 0, 0, 0, 0, 516, 0, 0, + 517, 0, 0, 0, 518, 519, 520, 521, 522, 523, + 524, 0, 0, 0, 0, 0, 0, 525, 526, 0, + 527, 528, 529, 0, 0, 530, 0, 0, 0, 0, + 0, 0, 160, 0, 161, 162, 163, 164, 165, 166, + 0, 0, 167, 0, 0, 0, 168, 830, 831, 169, + 0, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 0, 179, 0, 0, 0, 180, 0, 0, 0, 181, + 0, 0, 182, 183, 184, 0, 185, 0, 186, 187, + 0, 0, 188, 0, 0, 189, 190, 0, 191, 192, + 0, 193, 194, 0, 195, 196, 197, 198, 199, 200, + 0, 201, 202, 203, 204, 205, 206, 207, 0, 208, + 209, 210, 211, 212, 213, 214, 215, 0, 216, 217, + 3218, 218, 219, 220, 221, 222, 0, 223, 0, 0, + 224, 0, 0, 225, 0, 226, 0, 0, 227, 0, + 228, 0, 0, 0, 229, 230, 231, 0, 0, 232, + 0, 0, 0, 0, 233, 234, 0, 0, 0, 0, + 235, 0, 236, 0, 0, 0, 0, 237, 0, 238, + 239, 240, 241, 242, 0, 0, 0, 0, 243, 0, + 0, 244, 245, 246, 0, 0, 0, 247, 0, 248, + 249, 0, 250, 251, 252, 0, 253, 254, 0, 255, + 256, 257, 258, 259, 260, 261, 0, 0, 262, 263, + 264, 265, 0, 0, 266, 267, 0, 268, 269, 270, + 0, 0, 271, 0, 0, 0, 272, 273, 0, 274, + 641, 275, 0, 276, 277, 278, 279, 280, 281, 282, + 0, 283, 0, 0, 284, 285, 286, 0, 287, 0, + 0, 0, 288, 289, 0, 0, 0, 290, 291, 292, + 293, 294, 0, 0, 0, 295, 296, 297, 2285, 0, + 298, 0, 0, 0, 0, 299, 300, 0, 0, 0, + 301, 0, 302, 303, 0, 304, 305, 0, 0, 0, + 306, 2286, 0, 307, 308, 309, 0, 0, 310, 0, + 0, 311, 312, 0, 3598, 0, 0, 0, 313, 314, + 0, 315, 0, 316, 0, 317, 318, 0, 0, 0, + 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 334, 0, + 335, 336, 337, 338, 0, 339, 340, 341, 342, 0, + 343, 344, 345, 0, 0, 0, 0, 346, 347, 348, + 349, 350, 351, 0, 0, 352, 353, 0, 354, 0, + 355, 0, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 0, 0, 366, 0, 0, 367, 368, 369, + 370, 0, 0, 0, 371, 372, 0, 0, 0, 373, + 0, 374, 375, 376, 0, 377, 378, 379, 380, 0, + 381, 382, 0, 0, 0, 0, 0, 0, 0, 0, + 383, 384, 385, 0, 0, 386, 0, 387, 0, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, + 0, 398, 399, 400, 0, 401, 0, 402, 403, 404, + 405, 406, 0, 407, 408, 409, 0, 0, 410, 0, + 0, 0, 411, 412, 413, 414, 415, 0, 0, 416, + 417, 418, 419, 420, 0, 421, 422, 0, 423, 424, + 425, 0, 0, 426, 0, 427, 0, 428, 429, 0, + 430, 431, 0, 432, 0, 433, 0, 0, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 0, 446, 447, 2590, 0, 0, 448, 449, 450, 451, + 0, 0, 0, 452, 0, 0, 0, 453, 0, 454, + 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, + 464, 465, 643, 0, 0, 0, 0, 0, 466, 467, + 0, 468, 0, 0, 469, 0, 0, 0, 470, 471, + 472, 0, 0, 0, 473, 0, 0, 474, 475, 0, + 476, 477, 478, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 0, 0, 488, 489, 490, + 491, 0, 0, 492, 493, 0, 494, 495, 496, 497, + 0, 0, 0, 0, 0, 498, 499, 500, 0, 0, + 0, 501, 502, 503, 504, 0, 505, 506, 0, 507, + 508, 0, 509, 510, 0, 0, 511, 0, 0, 512, + 0, 513, 0, 514, 515, 0, 0, 0, 0, 0, + 0, 516, 0, 0, 517, 0, 0, 0, 518, 519, + 520, 521, 522, 523, 524, 0, 0, 0, 0, 0, + 0, 525, 526, 0, 527, 528, 529, 0, 0, 530, + 0, 0, 0, 0, 160, 0, 161, 162, 163, 164, + 165, 166, 0, 0, 167, 0, 0, 0, 168, 0, + 0, 169, 3290, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 0, 179, 0, 0, 0, 180, 0, 0, + 0, 181, 0, 0, 182, 183, 184, 0, 185, 0, + 186, 187, 0, 0, 188, 0, 0, 189, 190, 0, + 191, 192, 0, 193, 194, 0, 195, 196, 197, 198, + 199, 200, 0, 201, 202, 203, 204, 205, 206, 207, + 0, 208, 209, 210, 211, 212, 213, 214, 215, 0, + 216, 217, 3218, 218, 219, 220, 221, 222, 0, 223, + 0, 0, 224, 0, 0, 225, 0, 226, 0, 0, + 227, 0, 228, 0, 0, 0, 229, 230, 231, 0, + 0, 232, 0, 0, 0, 0, 233, 234, 0, 0, + 0, 0, 235, 0, 236, 0, 0, 0, 0, 237, + 0, 238, 239, 240, 241, 242, 0, 0, 0, 0, + 243, 0, 0, 244, 245, 246, 0, 0, 0, 247, + 0, 248, 249, 0, 250, 251, 252, 0, 253, 254, + 0, 255, 256, 257, 258, 259, 260, 261, 0, 0, + 262, 263, 264, 265, 0, 0, 266, 267, 0, 268, + 269, 270, 0, 0, 271, 0, 0, 0, 272, 273, + 0, 274, 641, 275, 0, 276, 277, 278, 279, 280, + 281, 282, 0, 283, 0, 0, 284, 285, 286, 0, + 287, 0, 0, 0, 288, 289, 0, 0, 0, 290, + 291, 292, 293, 294, 0, 0, 0, 295, 296, 297, + 2285, 0, 298, 0, 0, 0, 0, 299, 300, 0, + 0, 0, 301, 0, 302, 303, 0, 304, 305, 0, + 0, 0, 306, 2286, 0, 307, 308, 309, 0, 0, + 310, 0, 0, 311, 312, 0, 0, 0, 0, 0, + 313, 314, 0, 315, 0, 316, 0, 317, 318, 0, + 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 0, 335, 336, 337, 338, 0, 339, 340, 341, + 342, 0, 343, 344, 345, 0, 0, 0, 0, 346, + 347, 348, 349, 350, 351, 0, 0, 352, 353, 0, + 354, 0, 355, 0, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 0, 0, 366, 0, 0, 367, + 368, 369, 370, 0, 0, 0, 371, 372, 0, 0, + 0, 373, 0, 374, 375, 376, 0, 377, 378, 379, + 380, 0, 381, 382, 0, 0, 0, 0, 0, 0, + 0, 0, 383, 384, 385, 0, 0, 386, 0, 387, + 0, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 0, 0, 398, 399, 400, 0, 401, 0, 402, + 403, 404, 405, 406, 0, 407, 408, 409, 0, 0, + 410, 0, 0, 0, 411, 412, 413, 414, 415, 0, + 0, 416, 417, 418, 419, 420, 0, 421, 422, 0, + 423, 424, 425, 0, 0, 426, 0, 427, 0, 428, + 429, 0, 430, 431, 0, 432, 0, 433, 0, 0, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 0, 446, 447, 0, 0, 0, 448, 449, + 450, 451, 0, 0, 0, 452, 0, 0, 0, 453, + 0, 454, 455, 456, 457, 458, 459, 0, 460, 461, + 462, 463, 464, 465, 643, 0, 0, 0, 0, 0, + 466, 467, 0, 468, 0, 0, 469, 0, 0, 0, + 470, 471, 472, 0, 0, 0, 473, 0, 0, 474, + 475, 0, 476, 477, 478, 479, 480, 481, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 0, 0, 488, + 489, 490, 491, 0, 0, 492, 493, 0, 494, 495, + 496, 497, 0, 0, 0, 0, 0, 498, 499, 500, + 0, 0, 0, 501, 502, 503, 504, 0, 505, 506, + 0, 507, 508, 0, 509, 510, 0, 0, 511, 0, + 0, 512, 0, 513, 0, 514, 515, 0, 0, 0, + 0, 0, 0, 516, 0, 0, 517, 0, 0, 0, + 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, + 0, 0, 0, 525, 526, 0, 527, 528, 529, 0, + 0, 530, 0, 0, 0, 0, 160, 0, 161, 162, + 163, 164, 165, 166, 0, 0, 167, 0, 0, 0, + 168, 0, 0, 169, 3290, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 0, 179, 0, 0, 0, 180, + 0, 0, 0, 181, 0, 0, 182, 183, 184, 0, + 185, 0, 186, 187, 0, 0, 188, 0, 0, 189, + 190, 0, 191, 192, 0, 193, 194, 0, 195, 196, + 197, 198, 199, 200, 0, 201, 202, 203, 204, 205, + 206, 207, 0, 208, 209, 210, 211, 212, 213, 214, + 215, 0, 216, 217, 0, 218, 219, 220, 221, 222, + 0, 223, 0, 0, 224, 0, 0, 225, 0, 226, + 0, 0, 227, 0, 228, 0, 0, 0, 229, 230, + 231, 0, 0, 232, 0, 0, 0, 0, 233, 234, + 0, 0, 0, 0, 235, 0, 236, 0, 0, 0, + 0, 237, 0, 238, 239, 240, 241, 242, 0, 0, + 0, 0, 243, 0, 0, 244, 245, 246, 0, 0, + 0, 247, 0, 248, 249, 0, 250, 251, 252, 0, + 253, 254, 0, 255, 256, 257, 258, 259, 260, 261, + 0, 0, 262, 263, 264, 265, 0, 0, 266, 267, + 0, 268, 269, 270, 0, 0, 271, 0, 0, 0, + 272, 273, 0, 274, 0, 275, 0, 276, 277, 278, + 279, 280, 281, 282, 0, 283, 0, 0, 284, 285, + 286, 0, 287, 0, 0, 0, 288, 289, 0, 0, + 0, 290, 291, 292, 293, 294, 0, 0, 0, 295, + 296, 297, 0, 0, 298, 0, 0, 0, 0, 299, + 300, 0, 0, 0, 301, 0, 302, 303, 0, 304, + 305, 0, 0, 0, 306, 0, 0, 307, 308, 309, + 0, 0, 310, 0, 0, 311, 312, 0, 0, 0, + 0, 0, 313, 314, 0, 315, 0, 316, 0, 317, + 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 0, 334, 335, 336, 337, 0, 338, 339, - 340, 341, 0, 342, 343, 344, 0, 0, 0, 0, - 345, 346, 347, 348, 349, 350, 0, 0, 351, 352, - 0, 353, 0, 354, 0, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 365, 0, 0, - 366, 367, 368, 369, 0, 0, 0, 370, 371, 0, - 0, 0, 372, 0, 373, 374, 375, 0, 376, 377, - 378, 379, 0, 380, 381, 0, 0, 0, 0, 0, - 0, 0, 0, 382, 383, 384, 0, 0, 385, 0, - 386, 0, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 0, 0, 397, 398, 399, 0, 400, 0, - 401, 402, 403, 404, 405, 0, 406, 407, 408, 0, - 0, 409, 0, 0, 0, 410, 411, 412, 413, 414, - 0, 0, 415, 416, 417, 418, 419, 0, 420, 421, - 0, 422, 423, 424, 0, 0, 425, 0, 426, 0, - 427, 428, 0, 429, 430, 0, 431, 0, 432, 0, - 0, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 0, 445, 446, 2585, 0, 0, 447, - 448, 449, 450, 0, 0, 0, 451, 0, 0, 0, - 452, 0, 453, 454, 455, 456, 457, 458, 0, 459, - 460, 461, 462, 463, 464, 642, 0, 0, 0, 0, - 0, 465, 466, 0, 467, 0, 0, 468, 0, 0, - 0, 469, 470, 471, 0, 0, 0, 472, 0, 0, - 473, 474, 0, 475, 476, 477, 478, 479, 480, 0, - 0, 481, 482, 483, 484, 0, 485, 486, 0, 0, - 487, 488, 489, 490, 0, 0, 491, 492, 0, 493, - 494, 495, 496, 0, 0, 0, 0, 0, 497, 498, - 499, 0, 0, 0, 500, 501, 502, 503, 0, 504, - 505, 0, 506, 507, 0, 508, 509, 0, 0, 510, - 0, 0, 511, 0, 512, 0, 513, 514, 0, 0, - 0, 0, 0, 0, 515, 0, 0, 516, 0, 0, - 0, 517, 518, 519, 520, 521, 522, 523, 0, 0, - 0, 0, 0, 0, 524, 525, 0, 526, 527, 528, - 0, 0, 529, 0, 0, 0, 0, 159, 0, 160, - 161, 162, 163, 164, 165, 0, 0, 166, 0, 0, - 0, 167, 0, 0, 168, 3285, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 0, 178, 0, 0, 0, - 179, 0, 0, 0, 180, 0, 0, 181, 182, 183, - 0, 184, 0, 185, 186, 0, 0, 187, 0, 0, - 188, 189, 0, 190, 191, 0, 192, 193, 0, 194, - 195, 196, 197, 198, 199, 0, 200, 201, 202, 203, - 204, 205, 206, 0, 207, 208, 209, 210, 211, 212, - 213, 214, 0, 215, 216, 3213, 217, 218, 219, 220, - 221, 0, 222, 0, 0, 223, 0, 0, 224, 0, - 225, 0, 0, 226, 0, 227, 0, 0, 0, 228, - 229, 230, 0, 0, 231, 0, 0, 0, 0, 232, - 233, 0, 0, 0, 0, 234, 0, 235, 0, 0, - 0, 0, 236, 0, 237, 238, 239, 240, 241, 0, - 0, 0, 0, 242, 0, 0, 243, 244, 245, 0, - 0, 0, 246, 0, 247, 248, 0, 249, 250, 251, - 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, - 260, 0, 0, 261, 262, 263, 264, 0, 0, 265, - 266, 0, 267, 268, 269, 0, 0, 270, 0, 0, - 0, 271, 272, 0, 273, 640, 274, 0, 275, 276, - 277, 278, 279, 280, 281, 0, 282, 0, 0, 283, - 284, 285, 0, 286, 0, 0, 0, 287, 288, 0, - 0, 0, 289, 290, 291, 292, 293, 0, 0, 0, - 294, 295, 296, 2280, 0, 297, 0, 0, 0, 0, - 298, 299, 0, 0, 0, 300, 0, 301, 302, 0, - 303, 304, 0, 0, 0, 305, 2281, 0, 306, 307, - 308, 0, 0, 309, 0, 0, 310, 311, 0, 0, - 0, 0, 0, 312, 313, 0, 314, 0, 315, 0, - 316, 317, 0, 0, 0, 0, 0, 0, 318, 319, + 332, 333, 334, 0, 335, 336, 337, 338, 0, 339, + 340, 341, 342, 0, 343, 344, 345, 0, 0, 0, + 0, 346, 347, 348, 349, 350, 351, 0, 0, 352, + 353, 0, 354, 0, 355, 0, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 0, 0, 366, 0, + 0, 367, 368, 369, 370, 0, 0, 0, 371, 372, + 0, 0, 0, 373, 0, 374, 375, 376, 0, 377, + 378, 379, 380, 0, 381, 382, 0, 0, 0, 0, + 0, 0, 0, 0, 383, 384, 385, 0, 0, 386, + 0, 387, 0, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 0, 0, 398, 399, 400, 0, 401, + 0, 402, 403, 404, 405, 406, 0, 407, 408, 409, + 0, 0, 410, 0, 0, 0, 411, 412, 413, 414, + 415, 0, 0, 416, 417, 418, 419, 420, 0, 421, + 422, 0, 423, 424, 425, 0, 0, 426, 0, 427, + 0, 428, 429, 0, 430, 431, 0, 432, 0, 433, + 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 0, 446, 447, 2590, 0, 0, + 448, 449, 450, 451, 0, 0, 0, 452, 0, 0, + 0, 453, 0, 454, 455, 456, 457, 458, 459, 0, + 460, 461, 462, 463, 464, 465, 0, 0, 0, 0, + 0, 0, 466, 467, 0, 468, 0, 0, 469, 0, + 0, 0, 470, 471, 472, 0, 0, 0, 473, 0, + 0, 474, 475, 0, 476, 477, 478, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 0, + 0, 488, 489, 490, 491, 0, 0, 492, 493, 0, + 494, 495, 496, 497, 0, 0, 0, 0, 0, 498, + 499, 500, 0, 0, 0, 501, 502, 503, 504, 0, + 505, 506, 0, 507, 508, 0, 509, 510, 0, 0, + 511, 0, 0, 512, 0, 513, 0, 514, 515, 0, + 0, 0, 0, 0, 0, 516, 0, 0, 517, 0, + 0, 0, 518, 519, 520, 521, 522, 523, 524, 0, + 0, 0, 0, 0, 0, 525, 526, 0, 527, 528, + 529, 0, 0, 530, 0, 0, 0, 0, 160, 0, + 161, 162, 163, 164, 165, 166, 0, 0, 167, 3068, + 0, 0, 168, 0, 0, 169, 831, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 0, 179, 0, 0, + 0, 180, 0, 0, 0, 181, 0, 0, 182, 183, + 184, 0, 185, 0, 186, 187, 0, 0, 188, 0, + 0, 189, 190, 0, 191, 192, 0, 193, 194, 0, + 195, 196, 197, 198, 199, 200, 0, 201, 202, 203, + 204, 205, 206, 207, 0, 208, 209, 210, 211, 212, + 213, 214, 215, 0, 216, 217, 0, 218, 219, 220, + 221, 222, 0, 223, 0, 0, 224, 0, 0, 225, + 0, 226, 0, 0, 227, 0, 228, 0, 0, 0, + 229, 230, 231, 0, 0, 232, 0, 0, 0, 0, + 233, 234, 0, 0, 0, 0, 235, 0, 236, 0, + 0, 0, 0, 237, 0, 238, 239, 240, 241, 242, + 0, 0, 0, 0, 243, 0, 0, 244, 245, 246, + 0, 0, 0, 247, 0, 248, 249, 0, 250, 251, + 252, 0, 253, 254, 0, 255, 256, 257, 258, 259, + 260, 261, 0, 0, 262, 263, 264, 265, 0, 0, + 266, 267, 0, 268, 269, 270, 0, 0, 271, 0, + 0, 0, 272, 273, 0, 274, 0, 275, 0, 276, + 277, 278, 279, 280, 281, 282, 0, 283, 0, 0, + 284, 285, 286, 0, 287, 0, 0, 0, 288, 289, + 0, 0, 0, 290, 291, 292, 293, 294, 0, 0, + 0, 295, 296, 297, 0, 0, 298, 0, 0, 0, + 0, 299, 300, 0, 0, 0, 301, 0, 302, 303, + 0, 304, 305, 0, 0, 0, 306, 0, 0, 307, + 308, 309, 0, 0, 310, 0, 0, 311, 312, 0, + 0, 0, 0, 0, 313, 314, 0, 315, 0, 316, + 0, 317, 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 0, 334, 335, 336, 337, 0, - 338, 339, 340, 341, 0, 342, 343, 344, 0, 0, - 0, 0, 345, 346, 347, 348, 349, 350, 0, 0, - 351, 352, 0, 353, 0, 354, 0, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 365, - 0, 0, 366, 367, 368, 369, 0, 0, 0, 370, - 371, 0, 0, 0, 372, 0, 373, 374, 375, 0, - 376, 377, 378, 379, 0, 380, 381, 0, 0, 0, - 0, 0, 0, 0, 0, 382, 383, 384, 0, 0, - 385, 0, 386, 0, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 0, 0, 397, 398, 399, 0, - 400, 0, 401, 402, 403, 404, 405, 0, 406, 407, - 408, 0, 0, 409, 0, 0, 0, 410, 411, 412, - 413, 414, 0, 0, 415, 416, 417, 418, 419, 0, - 420, 421, 0, 422, 423, 424, 0, 0, 425, 0, - 426, 0, 427, 428, 0, 429, 430, 0, 431, 0, - 432, 0, 0, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 0, 445, 446, 0, 0, - 0, 447, 448, 449, 450, 0, 0, 0, 451, 0, - 0, 0, 452, 0, 453, 454, 455, 456, 457, 458, - 0, 459, 460, 461, 462, 463, 464, 642, 0, 0, - 0, 0, 0, 465, 466, 0, 467, 0, 0, 468, - 0, 0, 0, 469, 470, 471, 0, 0, 0, 472, - 0, 0, 473, 474, 0, 475, 476, 477, 478, 479, - 480, 0, 0, 481, 482, 483, 484, 0, 485, 486, - 0, 0, 487, 488, 489, 490, 0, 0, 491, 492, - 0, 493, 494, 495, 496, 0, 0, 0, 0, 0, - 497, 498, 499, 0, 0, 0, 500, 501, 502, 503, - 0, 504, 505, 0, 506, 507, 0, 508, 509, 0, - 0, 510, 0, 0, 511, 0, 512, 0, 513, 514, - 0, 0, 0, 0, 0, 0, 515, 0, 0, 516, - 0, 0, 0, 517, 518, 519, 520, 521, 522, 523, - 0, 0, 0, 0, 0, 0, 524, 525, 0, 526, - 527, 528, 0, 0, 529, 0, 0, 0, 0, 159, - 0, 160, 161, 162, 163, 164, 165, 0, 0, 166, - 0, 0, 0, 167, 0, 0, 168, 3285, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 0, 178, 0, - 0, 0, 179, 0, 0, 0, 180, 0, 0, 181, - 182, 183, 0, 184, 0, 185, 186, 0, 0, 187, - 0, 0, 188, 189, 0, 190, 191, 0, 192, 193, - 0, 194, 195, 196, 197, 198, 199, 0, 200, 201, - 202, 203, 204, 205, 206, 0, 207, 208, 209, 210, - 211, 212, 213, 214, 0, 215, 216, 0, 217, 218, - 219, 220, 221, 0, 222, 0, 0, 223, 0, 0, - 224, 0, 225, 0, 0, 226, 0, 227, 0, 0, - 0, 228, 229, 230, 0, 0, 231, 0, 0, 0, - 0, 232, 233, 0, 0, 0, 0, 234, 0, 235, - 0, 0, 0, 0, 236, 0, 237, 238, 239, 240, - 241, 0, 0, 0, 0, 242, 0, 0, 243, 244, - 245, 0, 0, 0, 246, 0, 247, 248, 0, 249, - 250, 251, 0, 252, 253, 0, 254, 255, 256, 257, - 258, 259, 260, 0, 0, 261, 262, 263, 264, 0, - 0, 265, 266, 0, 267, 268, 269, 0, 0, 270, - 0, 0, 0, 271, 272, 0, 273, 0, 274, 0, - 275, 276, 277, 278, 279, 280, 281, 0, 282, 0, - 0, 283, 284, 285, 0, 286, 0, 0, 0, 287, - 288, 0, 0, 0, 289, 290, 291, 292, 293, 0, - 0, 0, 294, 295, 296, 0, 0, 297, 0, 0, - 0, 0, 298, 299, 0, 0, 0, 300, 0, 301, - 302, 0, 303, 304, 0, 0, 0, 305, 0, 0, - 306, 307, 308, 0, 0, 309, 0, 0, 310, 311, - 0, 0, 0, 0, 0, 312, 313, 0, 314, 0, - 315, 0, 316, 317, 0, 0, 0, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 0, 334, 335, 336, - 337, 0, 338, 339, 340, 341, 0, 342, 343, 344, - 0, 0, 0, 0, 345, 346, 347, 348, 349, 350, - 0, 0, 351, 352, 0, 353, 0, 354, 0, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 365, 0, 0, 366, 367, 368, 369, 0, 0, - 0, 370, 371, 0, 0, 0, 372, 0, 373, 374, - 375, 0, 376, 377, 378, 379, 0, 380, 381, 0, - 0, 0, 0, 0, 0, 0, 0, 382, 383, 384, - 0, 0, 385, 0, 386, 0, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 0, 0, 397, 398, - 399, 0, 400, 0, 401, 402, 403, 404, 405, 0, - 406, 407, 408, 0, 0, 409, 0, 0, 0, 410, - 411, 412, 413, 414, 0, 0, 415, 416, 417, 418, - 419, 0, 420, 421, 0, 422, 423, 424, 0, 0, - 425, 0, 426, 0, 427, 428, 0, 429, 430, 0, - 431, 0, 432, 0, 0, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 0, 445, 446, - 2585, 0, 0, 447, 448, 449, 450, 0, 0, 0, - 451, 0, 0, 0, 452, 0, 453, 454, 455, 456, - 457, 458, 0, 459, 460, 461, 462, 463, 464, 0, - 0, 0, 0, 0, 0, 465, 466, 0, 467, 0, - 0, 468, 0, 0, 0, 469, 470, 471, 0, 0, - 0, 472, 0, 0, 473, 474, 0, 475, 476, 477, - 478, 479, 480, 0, 0, 481, 482, 483, 484, 0, - 485, 486, 0, 0, 487, 488, 489, 490, 0, 0, - 491, 492, 0, 493, 494, 495, 496, 0, 0, 0, - 0, 0, 497, 498, 499, 0, 0, 0, 500, 501, - 502, 503, 0, 504, 505, 0, 506, 507, 0, 508, - 509, 0, 0, 510, 0, 0, 511, 0, 512, 0, - 513, 514, 0, 0, 0, 0, 0, 0, 515, 0, - 0, 516, 0, 0, 0, 517, 518, 519, 520, 521, - 522, 523, 0, 0, 0, 0, 0, 0, 524, 525, - 0, 526, 527, 528, 0, 0, 529, 0, 0, 0, - 0, 159, 0, 160, 161, 162, 163, 164, 165, 0, - 0, 166, 3063, 0, 0, 167, 0, 0, 168, 829, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 0, - 178, 0, 0, 0, 179, 0, 0, 0, 180, 0, - 0, 181, 182, 183, 0, 184, 0, 185, 186, 0, - 0, 187, 0, 0, 188, 189, 0, 190, 191, 0, - 192, 193, 0, 194, 195, 196, 197, 198, 199, 0, - 200, 201, 202, 203, 204, 205, 206, 0, 207, 208, - 209, 210, 211, 212, 213, 214, 0, 215, 216, 0, - 217, 218, 219, 220, 221, 0, 222, 0, 0, 223, - 0, 0, 224, 0, 225, 0, 0, 226, 0, 227, - 0, 0, 0, 228, 229, 230, 0, 0, 231, 0, - 0, 0, 0, 232, 233, 0, 0, 0, 0, 234, - 0, 235, 0, 0, 0, 0, 236, 0, 237, 238, - 239, 240, 241, 0, 0, 0, 0, 242, 0, 0, - 243, 244, 245, 0, 0, 0, 246, 0, 247, 248, - 0, 249, 250, 251, 0, 252, 253, 0, 254, 255, - 256, 257, 258, 259, 260, 0, 0, 261, 262, 263, - 264, 0, 0, 265, 266, 0, 267, 268, 269, 0, - 0, 270, 0, 0, 0, 271, 272, 0, 273, 0, - 274, 0, 275, 276, 277, 278, 279, 280, 281, 0, - 282, 0, 0, 283, 284, 285, 0, 286, 0, 0, - 0, 287, 288, 0, 0, 0, 289, 290, 291, 292, - 293, 0, 0, 0, 294, 295, 296, 0, 0, 297, - 0, 0, 0, 0, 298, 299, 0, 0, 0, 300, - 0, 301, 302, 0, 303, 304, 0, 0, 0, 305, - 0, 0, 306, 307, 308, 0, 0, 309, 0, 0, - 310, 311, 0, 0, 0, 0, 0, 312, 313, 0, - 314, 0, 315, 0, 316, 317, 0, 0, 0, 0, - 0, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, - 335, 336, 337, 0, 338, 339, 340, 341, 0, 342, - 343, 344, 0, 0, 0, 0, 345, 346, 347, 348, - 349, 350, 0, 0, 351, 352, 0, 353, 0, 354, - 0, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 365, 0, 0, 366, 367, 368, 369, - 0, 0, 0, 370, 371, 0, 0, 0, 372, 0, - 373, 374, 375, 0, 376, 377, 378, 379, 0, 380, - 381, 0, 0, 0, 0, 0, 0, 0, 0, 382, - 383, 384, 0, 0, 385, 0, 386, 0, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 0, 0, - 397, 398, 399, 0, 400, 0, 401, 402, 403, 404, - 405, 0, 406, 407, 408, 0, 0, 409, 0, 0, - 0, 410, 411, 412, 413, 414, 0, 0, 415, 416, - 417, 418, 419, 0, 420, 421, 0, 422, 423, 424, - 0, 0, 425, 0, 426, 0, 427, 428, 0, 429, - 430, 0, 431, 0, 432, 0, 0, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 0, - 445, 446, 0, 0, 0, 447, 448, 449, 450, 0, - 0, 0, 451, 0, 0, 0, 452, 0, 453, 454, - 455, 456, 457, 458, 0, 459, 460, 461, 462, 463, - 464, 0, 0, 0, 0, 0, 0, 465, 466, 0, - 467, 0, 0, 468, 0, 0, 0, 469, 470, 471, - 0, 0, 0, 472, 0, 0, 473, 474, 0, 475, - 476, 477, 478, 479, 480, 0, 0, 481, 482, 483, - 484, 0, 485, 486, 0, 0, 487, 488, 489, 490, - 0, 0, 491, 492, 0, 493, 494, 495, 496, 0, - 0, 0, 0, 0, 497, 498, 499, 0, 0, 0, - 500, 501, 502, 503, 0, 504, 505, 0, 506, 507, - 0, 508, 509, 0, 0, 510, 0, 0, 511, 0, - 512, 0, 513, 514, 0, 0, 0, 0, 0, 0, - 515, 0, 0, 516, 0, 0, 0, 517, 518, 519, - 520, 521, 522, 523, 0, 0, 0, 0, 0, 0, - 524, 525, 0, 526, 527, 528, 0, 0, 529, 0, - 0, 0, 0, 0, 0, 159, 0, 160, 161, 162, - 163, 164, 165, 0, 4881, 166, 0, 0, 0, 167, - 4882, 829, 168, 0, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 0, 178, 0, 0, 0, 179, 0, - 0, 0, 180, 0, 0, 181, 182, 183, 0, 184, - 0, 185, 186, 0, 0, 187, 0, 0, 188, 189, - 0, 190, 191, 0, 192, 193, 0, 194, 195, 196, - 197, 198, 199, 0, 200, 201, 202, 203, 204, 205, - 206, 0, 207, 208, 209, 210, 211, 212, 213, 214, - 0, 215, 216, 0, 217, 218, 219, 220, 221, 0, - 222, 0, 0, 223, 0, 0, 224, 0, 225, 0, - 0, 226, 0, 227, 0, 0, 0, 228, 229, 230, - 0, 0, 231, 0, 0, 0, 0, 232, 233, 0, - 0, 0, 0, 234, 0, 235, 0, 0, 0, 0, - 236, 0, 237, 238, 239, 240, 241, 0, 0, 0, - 0, 242, 0, 0, 243, 244, 245, 0, 0, 0, - 246, 0, 247, 248, 0, 249, 250, 251, 0, 252, - 253, 0, 254, 255, 256, 257, 258, 259, 260, 0, - 0, 261, 262, 263, 264, 0, 0, 265, 266, 0, - 267, 268, 269, 0, 0, 270, 0, 0, 0, 271, - 272, 0, 273, 0, 274, 0, 275, 276, 277, 278, - 279, 280, 281, 0, 282, 0, 0, 283, 284, 285, - 0, 286, 0, 0, 0, 287, 288, 0, 0, 0, - 289, 290, 291, 292, 293, 0, 0, 0, 294, 295, - 296, 0, 0, 297, 0, 0, 0, 0, 298, 299, - 0, 0, 0, 300, 0, 301, 302, 0, 303, 304, - 0, 0, 0, 305, 0, 0, 306, 307, 308, 0, - 0, 309, 0, 0, 310, 311, 0, 0, 0, 0, - 0, 312, 313, 0, 314, 0, 315, 0, 316, 317, - 0, 0, 0, 0, 0, 0, 318, 319, 320, 321, + 330, 331, 332, 333, 334, 0, 335, 336, 337, 338, + 0, 339, 340, 341, 342, 0, 343, 344, 345, 0, + 0, 0, 0, 346, 347, 348, 349, 350, 351, 0, + 0, 352, 353, 0, 354, 0, 355, 0, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 0, 0, + 366, 0, 0, 367, 368, 369, 370, 0, 0, 0, + 371, 372, 0, 0, 0, 373, 0, 374, 375, 376, + 0, 377, 378, 379, 380, 0, 381, 382, 0, 0, + 0, 0, 0, 0, 0, 0, 383, 384, 385, 0, + 0, 386, 0, 387, 0, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 0, 0, 398, 399, 400, + 0, 401, 0, 402, 403, 404, 405, 406, 0, 407, + 408, 409, 0, 0, 410, 0, 0, 0, 411, 412, + 413, 414, 415, 0, 0, 416, 417, 418, 419, 420, + 0, 421, 422, 0, 423, 424, 425, 0, 0, 426, + 0, 427, 0, 428, 429, 0, 430, 431, 0, 432, + 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 0, 446, 447, 0, + 0, 0, 448, 449, 450, 451, 0, 0, 0, 452, + 0, 0, 0, 453, 0, 454, 455, 456, 457, 458, + 459, 0, 460, 461, 462, 463, 464, 465, 0, 0, + 0, 0, 0, 0, 466, 467, 0, 468, 0, 0, + 469, 0, 0, 0, 470, 471, 472, 0, 0, 0, + 473, 0, 0, 474, 475, 0, 476, 477, 478, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 0, 0, 488, 489, 490, 491, 0, 0, 492, + 493, 0, 494, 495, 496, 497, 0, 0, 0, 0, + 0, 498, 499, 500, 0, 0, 0, 501, 502, 503, + 504, 0, 505, 506, 0, 507, 508, 0, 509, 510, + 0, 0, 511, 0, 0, 512, 0, 513, 0, 514, + 515, 0, 0, 0, 0, 0, 0, 516, 0, 0, + 517, 0, 0, 0, 518, 519, 520, 521, 522, 523, + 524, 0, 0, 0, 0, 0, 0, 525, 526, 0, + 527, 528, 529, 0, 0, 530, 0, 0, 0, 0, + 0, 0, 160, 0, 161, 162, 163, 164, 165, 166, + 0, 4886, 167, 0, 0, 0, 168, 4887, 831, 169, + 0, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 0, 179, 0, 0, 0, 180, 0, 0, 0, 181, + 0, 0, 182, 183, 184, 0, 185, 0, 186, 187, + 0, 0, 188, 0, 0, 189, 190, 0, 191, 192, + 0, 193, 194, 0, 195, 196, 197, 198, 199, 200, + 0, 201, 202, 203, 204, 205, 206, 207, 0, 208, + 209, 210, 211, 212, 213, 214, 215, 0, 216, 217, + 0, 218, 219, 220, 221, 222, 0, 223, 0, 0, + 224, 0, 0, 225, 0, 226, 0, 0, 227, 0, + 228, 0, 0, 0, 229, 230, 231, 0, 0, 232, + 0, 0, 0, 0, 233, 234, 0, 0, 0, 0, + 235, 0, 236, 0, 0, 0, 0, 237, 0, 238, + 239, 240, 241, 242, 0, 0, 0, 0, 243, 0, + 0, 244, 245, 246, 0, 0, 0, 247, 0, 248, + 249, 0, 250, 251, 252, 0, 253, 254, 0, 255, + 256, 257, 258, 259, 260, 261, 0, 0, 262, 263, + 264, 265, 0, 0, 266, 267, 0, 268, 269, 270, + 0, 0, 271, 0, 0, 0, 272, 273, 0, 274, + 0, 275, 0, 276, 277, 278, 279, 280, 281, 282, + 0, 283, 0, 0, 284, 285, 286, 0, 287, 0, + 0, 0, 288, 289, 0, 0, 0, 290, 291, 292, + 293, 294, 0, 0, 0, 295, 296, 297, 0, 0, + 298, 0, 0, 0, 0, 299, 300, 0, 0, 0, + 301, 0, 302, 303, 0, 304, 305, 0, 0, 0, + 306, 0, 0, 307, 308, 309, 0, 0, 310, 0, + 0, 311, 312, 0, 0, 0, 0, 0, 313, 314, + 0, 315, 0, 316, 0, 317, 318, 0, 0, 0, + 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 334, 0, + 335, 336, 337, 338, 0, 339, 340, 341, 342, 0, + 343, 344, 345, 0, 0, 0, 0, 346, 347, 348, + 349, 350, 351, 0, 0, 352, 353, 0, 354, 0, + 355, 0, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 0, 0, 366, 0, 0, 367, 368, 369, + 370, 0, 0, 0, 371, 372, 0, 0, 0, 373, + 0, 374, 375, 376, 0, 377, 378, 379, 380, 0, + 381, 382, 0, 0, 0, 0, 0, 0, 0, 0, + 383, 384, 385, 0, 0, 386, 0, 387, 0, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, + 0, 398, 399, 400, 0, 401, 0, 402, 403, 404, + 405, 406, 0, 407, 408, 409, 0, 0, 410, 0, + 0, 0, 411, 412, 413, 414, 415, 0, 0, 416, + 417, 418, 419, 420, 0, 421, 422, 0, 423, 424, + 425, 0, 0, 426, 0, 427, 0, 428, 429, 0, + 430, 431, 0, 432, 0, 433, 0, 0, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 0, 446, 447, 0, 0, 0, 448, 449, 450, 451, + 0, 0, 0, 452, 0, 0, 0, 453, 0, 454, + 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, + 464, 465, 0, 0, 0, 0, 0, 0, 466, 467, + 0, 468, 0, 0, 469, 0, 0, 0, 470, 471, + 472, 0, 0, 0, 473, 0, 0, 474, 475, 0, + 476, 477, 478, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 0, 0, 488, 489, 490, + 491, 0, 0, 492, 493, 0, 494, 495, 496, 497, + 0, 0, 0, 0, 0, 498, 499, 500, 0, 0, + 0, 501, 502, 503, 504, 0, 505, 506, 0, 507, + 508, 0, 509, 510, 0, 0, 511, 0, 0, 512, + 0, 513, 0, 514, 515, 0, 0, 0, 0, 0, + 0, 516, 0, 0, 517, 0, 0, 0, 518, 519, + 520, 521, 522, 523, 524, 0, 0, 0, 0, 0, + 0, 525, 526, 0, 527, 528, 529, 0, 0, 530, + 0, 0, 0, 0, 0, 0, 160, 0, 161, 162, + 163, 164, 165, 166, 1239, 0, 167, 0, 0, 0, + 168, 0, 831, 169, 0, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 0, 179, 0, 0, 0, 180, + 0, 0, 0, 181, 0, 0, 182, 183, 184, 0, + 185, 0, 186, 187, 0, 0, 188, 0, 0, 189, + 190, 0, 191, 192, 0, 193, 194, 0, 195, 196, + 197, 198, 199, 200, 0, 201, 202, 203, 204, 205, + 206, 207, 0, 208, 209, 210, 211, 212, 213, 214, + 215, 0, 216, 217, 0, 218, 219, 220, 221, 222, + 0, 223, 0, 0, 224, 0, 0, 225, 0, 226, + 0, 0, 227, 0, 228, 0, 0, 0, 229, 230, + 231, 0, 0, 232, 0, 0, 0, 0, 233, 234, + 0, 0, 0, 0, 235, 0, 236, 0, 0, 0, + 0, 237, 0, 238, 239, 240, 241, 242, 0, 0, + 0, 0, 243, 0, 0, 244, 245, 246, 0, 0, + 0, 247, 0, 248, 249, 0, 250, 251, 252, 0, + 253, 254, 0, 255, 256, 257, 258, 259, 260, 261, + 0, 0, 262, 263, 264, 265, 0, 0, 266, 267, + 0, 268, 269, 270, 0, 0, 271, 0, 0, 0, + 272, 273, 0, 274, 0, 275, 0, 276, 277, 278, + 279, 280, 281, 282, 0, 283, 0, 0, 284, 285, + 286, 0, 287, 0, 0, 0, 288, 289, 0, 0, + 0, 290, 291, 292, 293, 294, 0, 0, 0, 295, + 296, 297, 0, 0, 298, 0, 0, 0, 0, 299, + 300, 0, 1471, 0, 301, 0, 302, 303, 0, 304, + 305, 0, 0, 0, 306, 0, 0, 307, 308, 309, + 0, 0, 310, 0, 0, 311, 312, 0, 0, 0, + 0, 0, 313, 314, 0, 315, 0, 316, 0, 317, + 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 0, 334, 335, 336, 337, 0, 338, 339, - 340, 341, 0, 342, 343, 344, 0, 0, 0, 0, - 345, 346, 347, 348, 349, 350, 0, 0, 351, 352, - 0, 353, 0, 354, 0, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 365, 0, 0, - 366, 367, 368, 369, 0, 0, 0, 370, 371, 0, - 0, 0, 372, 0, 373, 374, 375, 0, 376, 377, - 378, 379, 0, 380, 381, 0, 0, 0, 0, 0, - 0, 0, 0, 382, 383, 384, 0, 0, 385, 0, - 386, 0, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 0, 0, 397, 398, 399, 0, 400, 0, - 401, 402, 403, 404, 405, 0, 406, 407, 408, 0, - 0, 409, 0, 0, 0, 410, 411, 412, 413, 414, - 0, 0, 415, 416, 417, 418, 419, 0, 420, 421, - 0, 422, 423, 424, 0, 0, 425, 0, 426, 0, - 427, 428, 0, 429, 430, 0, 431, 0, 432, 0, - 0, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 0, 445, 446, 0, 0, 0, 447, - 448, 449, 450, 0, 0, 0, 451, 0, 0, 0, - 452, 0, 453, 454, 455, 456, 457, 458, 0, 459, - 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, - 0, 465, 466, 0, 467, 0, 0, 468, 0, 0, - 0, 469, 470, 471, 0, 0, 0, 472, 0, 0, - 473, 474, 0, 475, 476, 477, 478, 479, 480, 0, - 0, 481, 482, 483, 484, 0, 485, 486, 0, 0, - 487, 488, 489, 490, 0, 0, 491, 492, 0, 493, - 494, 495, 496, 0, 0, 0, 0, 0, 497, 498, - 499, 0, 0, 0, 500, 501, 502, 503, 0, 504, - 505, 0, 506, 507, 0, 508, 509, 0, 0, 510, - 0, 0, 511, 0, 512, 0, 513, 514, 0, 0, - 0, 0, 0, 0, 515, 0, 0, 516, 0, 0, - 0, 517, 518, 519, 520, 521, 522, 523, 0, 0, - 0, 0, 0, 0, 524, 525, 0, 526, 527, 528, - 0, 0, 529, 0, 0, 0, 0, 0, 0, 159, - 0, 160, 161, 162, 163, 164, 165, 1236, 0, 166, - 0, 0, 0, 167, 0, 829, 168, 0, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 0, 178, 0, - 0, 0, 179, 0, 0, 0, 180, 0, 0, 181, - 182, 183, 0, 184, 0, 185, 186, 0, 0, 187, - 0, 0, 188, 189, 0, 190, 191, 0, 192, 193, - 0, 194, 195, 196, 197, 198, 199, 0, 200, 201, - 202, 203, 204, 205, 206, 0, 207, 208, 209, 210, - 211, 212, 213, 214, 0, 215, 216, 0, 217, 218, - 219, 220, 221, 0, 222, 0, 0, 223, 0, 0, - 224, 0, 225, 0, 0, 226, 0, 227, 0, 0, - 0, 228, 229, 230, 0, 0, 231, 0, 0, 0, - 0, 232, 233, 0, 0, 0, 0, 234, 0, 235, - 0, 0, 0, 0, 236, 0, 237, 238, 239, 240, - 241, 0, 0, 0, 0, 242, 0, 0, 243, 244, - 245, 0, 0, 0, 246, 0, 247, 248, 0, 249, - 250, 251, 0, 252, 253, 0, 254, 255, 256, 257, - 258, 259, 260, 0, 0, 261, 262, 263, 264, 0, - 0, 265, 266, 0, 267, 268, 269, 0, 0, 270, - 0, 0, 0, 271, 272, 0, 273, 0, 274, 0, - 275, 276, 277, 278, 279, 280, 281, 0, 282, 0, - 0, 283, 284, 285, 0, 286, 0, 0, 0, 287, - 288, 0, 0, 0, 289, 290, 291, 292, 293, 0, - 0, 0, 294, 295, 296, 0, 0, 297, 0, 0, - 0, 0, 298, 299, 0, 1468, 0, 300, 0, 301, - 302, 0, 303, 304, 0, 0, 0, 305, 0, 0, - 306, 307, 308, 0, 0, 309, 0, 0, 310, 311, - 0, 0, 0, 0, 0, 312, 313, 0, 314, 0, - 315, 0, 316, 317, 0, 0, 0, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 0, 334, 335, 336, - 337, 0, 338, 339, 340, 341, 0, 342, 343, 344, - 0, 0, 0, 0, 345, 346, 347, 348, 349, 350, - 0, 0, 351, 352, 0, 353, 0, 354, 0, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 365, 0, 0, 366, 367, 368, 369, 0, 0, - 0, 370, 371, 0, 0, 0, 372, 0, 373, 374, - 375, 0, 376, 377, 378, 379, 0, 380, 381, 0, - 0, 0, 0, 0, 0, 0, 0, 382, 383, 384, - 0, 0, 385, 0, 386, 0, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 0, 0, 397, 398, - 399, 0, 400, 0, 401, 402, 403, 404, 405, 0, - 406, 407, 408, 0, 0, 409, 0, 0, 0, 410, - 411, 412, 413, 414, 0, 0, 415, 416, 417, 418, - 419, 0, 420, 421, 0, 422, 423, 424, 0, 0, - 425, 0, 426, 0, 427, 428, 0, 429, 430, 0, - 431, 0, 432, 0, 0, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 0, 445, 446, - 0, 0, 0, 447, 448, 449, 450, 0, 0, 0, - 451, 0, 0, 0, 452, 0, 453, 454, 455, 456, - 457, 458, 0, 459, 460, 461, 462, 463, 464, 0, - 0, 0, 0, 0, 0, 465, 466, 0, 467, 0, - 0, 468, 0, 0, 0, 469, 470, 471, 0, 0, - 0, 472, 0, 0, 473, 474, 0, 475, 476, 477, - 478, 479, 480, 0, 0, 481, 482, 483, 484, 0, - 485, 486, 0, 0, 487, 488, 489, 490, 0, 0, - 491, 492, 0, 493, 494, 495, 496, 0, 0, 0, - 0, 0, 497, 498, 499, 0, 0, 0, 500, 501, - 502, 503, 0, 504, 505, 0, 506, 507, 0, 508, - 509, 0, 0, 510, 0, 0, 511, 0, 512, 0, - 513, 514, 0, 0, 0, 0, 0, 0, 515, 0, - 0, 516, 0, 0, 0, 517, 518, 519, 520, 521, - 522, 523, 0, 0, 0, 0, 0, 0, 524, 525, - 0, 526, 527, 528, 0, 0, 529, 0, 0, 0, - 0, 159, 0, 160, 161, 162, 163, 164, 165, 0, - 0, 166, 0, 0, 0, 167, 0, 0, 168, 567, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 0, - 178, 0, 0, 0, 179, 0, 0, 0, 180, 0, - 0, 181, 182, 183, 0, 184, 0, 185, 186, 0, - 0, 187, 0, 0, 188, 189, 0, 190, 191, 0, - 192, 193, 0, 194, 195, 196, 197, 198, 199, 0, - 200, 201, 202, 203, 204, 205, 206, 0, 207, 208, - 209, 210, 211, 212, 213, 214, 0, 215, 216, 0, - 217, 218, 219, 220, 221, 0, 222, 0, 0, 223, - 0, 0, 224, 0, 225, 0, 0, 226, 0, 227, - 0, 0, 0, 228, 229, 230, 0, 0, 231, 0, - 0, 0, 0, 232, 233, 0, 0, 0, 0, 234, - 0, 235, 0, 0, 0, 0, 236, 0, 237, 238, - 239, 240, 241, 0, 0, 0, 0, 242, 0, 0, - 243, 244, 245, 0, 0, 0, 246, 0, 247, 248, - 0, 249, 250, 251, 0, 252, 253, 0, 254, 255, - 256, 257, 258, 259, 260, 0, 0, 261, 262, 263, - 264, 0, 0, 265, 266, 0, 267, 268, 269, 0, - 0, 270, 0, 0, 0, 271, 272, 0, 273, 0, - 274, 0, 275, 276, 277, 278, 279, 280, 281, 0, - 282, 0, 0, 283, 284, 285, 0, 286, 0, 0, - 0, 287, 288, 0, 0, 0, 289, 290, 291, 292, - 293, 0, 0, 0, 294, 295, 296, 0, 0, 297, - 0, 0, 0, 0, 298, 299, 0, 0, 0, 300, - 0, 301, 302, 0, 303, 304, 0, 0, 0, 305, - 0, 0, 306, 307, 308, 0, 0, 309, 0, 0, - 310, 311, 0, 0, 0, 0, 0, 312, 313, 0, - 314, 0, 315, 0, 316, 317, 0, 0, 0, 0, - 0, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, - 335, 336, 337, 0, 338, 339, 340, 341, 0, 342, - 343, 344, 0, 0, 0, 0, 345, 346, 347, 348, - 349, 350, 0, 0, 351, 352, 0, 353, 0, 354, - 0, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 365, 0, 0, 366, 367, 368, 369, - 0, 0, 0, 370, 371, 0, 0, 0, 372, 0, - 373, 374, 375, 0, 376, 377, 378, 379, 0, 380, - 381, 0, 0, 0, 0, 0, 0, 0, 0, 382, - 383, 384, 0, 0, 385, 0, 386, 0, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 0, 0, - 397, 398, 399, 0, 400, 0, 401, 402, 403, 404, - 405, 0, 406, 407, 408, 0, 0, 409, 0, 0, - 0, 410, 411, 412, 413, 414, 0, 0, 415, 416, - 417, 418, 419, 0, 420, 421, 0, 422, 423, 424, - 0, 0, 425, 0, 426, 0, 427, 428, 0, 429, - 430, 0, 431, 0, 432, 0, 0, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 0, - 445, 446, 0, 0, 0, 447, 448, 449, 450, 0, - 0, 0, 451, 0, 0, 0, 452, 0, 453, 454, - 455, 456, 457, 458, 0, 459, 460, 461, 462, 463, - 464, 0, 0, 0, 0, 0, 0, 465, 466, 0, - 467, 0, 0, 468, 0, 0, 0, 469, 470, 471, - 0, 0, 0, 472, 0, 0, 473, 474, 0, 475, - 476, 477, 478, 479, 480, 0, 0, 481, 482, 483, - 484, 0, 485, 486, 0, 0, 487, 488, 489, 490, - 0, 0, 491, 492, 0, 493, 494, 495, 496, 0, - 0, 0, 0, 0, 497, 498, 499, 0, 0, 0, - 500, 501, 502, 503, 0, 504, 505, 0, 506, 507, - 0, 508, 509, 0, 0, 510, 0, 0, 511, 0, - 512, 0, 513, 514, 0, 0, 0, 0, 0, 0, - 515, 0, 0, 516, 0, 0, 0, 517, 518, 519, - 520, 521, 522, 523, 0, 0, 0, 0, 0, 0, - 524, 525, 0, 526, 527, 528, 0, 0, 529, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2526, 159, - 0, 160, 161, 162, 163, 164, 165, 0, 0, 166, - 0, 567, 0, 167, 0, 0, 168, 0, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 0, 178, 0, - 0, 0, 179, 0, 0, 0, 180, 0, 0, 181, - 182, 183, 0, 184, 0, 185, 186, 0, 0, 187, - 0, 0, 188, 189, 0, 190, 191, 0, 192, 193, - 0, 194, 195, 196, 197, 198, 199, 0, 200, 201, - 202, 203, 204, 205, 206, 0, 207, 208, 209, 210, - 211, 212, 213, 214, 0, 215, 216, 0, 217, 218, - 219, 220, 221, 0, 222, 0, 0, 223, 0, 0, - 224, 0, 225, 0, 0, 226, 0, 227, 0, 0, - 0, 228, 229, 230, 0, 0, 231, 0, 0, 0, - 0, 232, 233, 0, 0, 0, 0, 234, 0, 235, - 0, 0, 0, 0, 236, 0, 237, 238, 239, 240, - 241, 0, 0, 0, 0, 242, 0, 0, 243, 244, - 245, 0, 0, 0, 246, 0, 247, 248, 0, 249, - 250, 251, 0, 252, 253, 0, 254, 255, 256, 257, - 258, 259, 260, 0, 0, 261, 262, 263, 264, 0, - 0, 265, 266, 0, 267, 268, 269, 0, 0, 270, - 0, 0, 0, 271, 272, 0, 273, 0, 274, 0, - 275, 276, 277, 278, 279, 280, 281, 0, 282, 0, - 0, 283, 284, 285, 0, 286, 0, 0, 0, 287, - 288, 0, 0, 0, 289, 290, 291, 292, 293, 0, - 0, 0, 294, 295, 296, 0, 0, 297, 0, 0, - 0, 0, 298, 299, 0, 0, 0, 300, 0, 301, - 302, 0, 303, 304, 0, 0, 0, 305, 0, 0, - 306, 307, 308, 0, 0, 309, 0, 0, 310, 311, - 0, 0, 0, 0, 0, 312, 313, 0, 314, 0, - 315, 0, 316, 317, 0, 0, 0, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 0, 334, 335, 336, - 337, 0, 338, 339, 340, 341, 0, 342, 343, 344, - 0, 0, 0, 0, 345, 346, 347, 348, 349, 350, - 0, 0, 351, 352, 0, 353, 0, 354, 0, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 365, 0, 0, 366, 367, 368, 369, 0, 0, - 0, 370, 371, 0, 0, 0, 372, 0, 373, 374, - 375, 0, 376, 377, 378, 379, 0, 380, 381, 0, - 0, 0, 0, 0, 0, 0, 0, 382, 383, 384, - 0, 0, 385, 0, 386, 0, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 0, 0, 397, 398, - 399, 0, 400, 0, 401, 402, 403, 404, 405, 0, - 406, 407, 408, 0, 0, 409, 0, 0, 0, 410, - 411, 412, 413, 414, 0, 0, 415, 416, 417, 418, - 419, 0, 420, 421, 0, 422, 423, 424, 0, 0, - 425, 0, 426, 0, 427, 428, 0, 429, 430, 0, - 431, 0, 432, 0, 0, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 0, 445, 446, - 0, 0, 0, 447, 448, 449, 450, 0, 0, 0, - 451, 0, 0, 0, 452, 0, 453, 454, 455, 456, - 457, 458, 0, 459, 460, 461, 462, 463, 464, 0, - 0, 0, 0, 0, 0, 465, 466, 0, 467, 0, - 0, 468, 0, 0, 0, 469, 470, 471, 0, 0, - 0, 472, 0, 0, 473, 474, 0, 475, 476, 477, - 478, 479, 480, 0, 0, 481, 482, 483, 484, 0, - 485, 486, 0, 0, 487, 488, 489, 490, 0, 0, - 491, 492, 0, 493, 494, 495, 496, 0, 0, 0, - 0, 0, 497, 498, 499, 0, 0, 0, 500, 501, - 502, 503, 0, 504, 505, 0, 506, 507, 0, 508, - 509, 0, 0, 510, 0, 0, 511, 0, 512, 0, - 513, 514, 0, 0, 0, 0, 0, 0, 515, 0, - 0, 516, 0, 0, 0, 517, 518, 519, 520, 521, - 522, 523, 0, 0, 0, 0, 0, 0, 524, 525, - 0, 526, 527, 528, 0, 0, 529, 0, 0, 0, - 0, 0, 0, 159, 0, 160, 161, 162, 163, 164, - 165, 3284, 0, 166, 0, 0, 0, 167, 0, 3285, - 168, 0, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 0, 178, 0, 0, 0, 179, 0, 0, 0, - 180, 0, 0, 181, 182, 183, 0, 184, 0, 185, - 186, 0, 0, 187, 0, 0, 188, 189, 0, 190, - 191, 0, 192, 193, 0, 194, 195, 196, 197, 198, - 199, 0, 200, 201, 202, 203, 204, 205, 206, 0, - 207, 208, 209, 210, 211, 212, 213, 214, 0, 215, - 216, 0, 217, 218, 219, 220, 221, 0, 222, 0, - 0, 223, 0, 0, 224, 0, 225, 0, 0, 226, - 0, 227, 0, 0, 0, 228, 229, 230, 0, 0, - 231, 0, 0, 0, 0, 232, 233, 0, 0, 0, - 0, 234, 0, 235, 0, 0, 0, 0, 236, 0, - 237, 238, 239, 240, 241, 0, 0, 0, 0, 242, - 0, 0, 243, 244, 245, 0, 0, 0, 246, 0, - 247, 248, 0, 249, 250, 251, 0, 252, 253, 0, - 254, 255, 256, 257, 258, 259, 260, 0, 0, 261, - 262, 263, 264, 0, 0, 265, 266, 0, 267, 268, - 269, 0, 0, 270, 0, 0, 0, 271, 272, 0, - 273, 0, 274, 0, 275, 276, 277, 278, 279, 280, - 281, 0, 282, 0, 0, 283, 284, 285, 0, 286, - 0, 0, 0, 287, 288, 0, 0, 0, 289, 290, - 291, 292, 293, 0, 0, 0, 294, 295, 296, 0, - 0, 297, 0, 0, 0, 0, 298, 299, 0, 0, - 0, 300, 0, 301, 302, 0, 303, 304, 0, 0, - 0, 305, 0, 0, 306, 307, 308, 0, 0, 309, - 0, 0, 310, 311, 0, 0, 0, 0, 0, 312, - 313, 0, 314, 0, 315, 0, 316, 317, 0, 0, - 0, 0, 0, 0, 318, 319, 320, 321, 322, 323, + 332, 333, 334, 0, 335, 336, 337, 338, 0, 339, + 340, 341, 342, 0, 343, 344, 345, 0, 0, 0, + 0, 346, 347, 348, 349, 350, 351, 0, 0, 352, + 353, 0, 354, 0, 355, 0, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 0, 0, 366, 0, + 0, 367, 368, 369, 370, 0, 0, 0, 371, 372, + 0, 0, 0, 373, 0, 374, 375, 376, 0, 377, + 378, 379, 380, 0, 381, 382, 0, 0, 0, 0, + 0, 0, 0, 0, 383, 384, 385, 0, 0, 386, + 0, 387, 0, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 0, 0, 398, 399, 400, 0, 401, + 0, 402, 403, 404, 405, 406, 0, 407, 408, 409, + 0, 0, 410, 0, 0, 0, 411, 412, 413, 414, + 415, 0, 0, 416, 417, 418, 419, 420, 0, 421, + 422, 0, 423, 424, 425, 0, 0, 426, 0, 427, + 0, 428, 429, 0, 430, 431, 0, 432, 0, 433, + 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 0, 446, 447, 0, 0, 0, + 448, 449, 450, 451, 0, 0, 0, 452, 0, 0, + 0, 453, 0, 454, 455, 456, 457, 458, 459, 0, + 460, 461, 462, 463, 464, 465, 0, 0, 0, 0, + 0, 0, 466, 467, 0, 468, 0, 0, 469, 0, + 0, 0, 470, 471, 472, 0, 0, 0, 473, 0, + 0, 474, 475, 0, 476, 477, 478, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 0, + 0, 488, 489, 490, 491, 0, 0, 492, 493, 0, + 494, 495, 496, 497, 0, 0, 0, 0, 0, 498, + 499, 500, 0, 0, 0, 501, 502, 503, 504, 0, + 505, 506, 0, 507, 508, 0, 509, 510, 0, 0, + 511, 0, 0, 512, 0, 513, 0, 514, 515, 0, + 0, 0, 0, 0, 0, 516, 0, 0, 517, 0, + 0, 0, 518, 519, 520, 521, 522, 523, 524, 0, + 0, 0, 0, 0, 0, 525, 526, 0, 527, 528, + 529, 0, 0, 530, 0, 0, 0, 0, 160, 0, + 161, 162, 163, 164, 165, 166, 0, 0, 167, 0, + 0, 0, 168, 0, 0, 169, 568, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 0, 179, 0, 0, + 0, 180, 0, 0, 0, 181, 0, 0, 182, 183, + 184, 0, 185, 0, 186, 187, 0, 0, 188, 0, + 0, 189, 190, 0, 191, 192, 0, 193, 194, 0, + 195, 196, 197, 198, 199, 200, 0, 201, 202, 203, + 204, 205, 206, 207, 0, 208, 209, 210, 211, 212, + 213, 214, 215, 0, 216, 217, 0, 218, 219, 220, + 221, 222, 0, 223, 0, 0, 224, 0, 0, 225, + 0, 226, 0, 0, 227, 0, 228, 0, 0, 0, + 229, 230, 231, 0, 0, 232, 0, 0, 0, 0, + 233, 234, 0, 0, 0, 0, 235, 0, 236, 0, + 0, 0, 0, 237, 0, 238, 239, 240, 241, 242, + 0, 0, 0, 0, 243, 0, 0, 244, 245, 246, + 0, 0, 0, 247, 0, 248, 249, 0, 250, 251, + 252, 0, 253, 254, 0, 255, 256, 257, 258, 259, + 260, 261, 0, 0, 262, 263, 264, 265, 0, 0, + 266, 267, 0, 268, 269, 270, 0, 0, 271, 0, + 0, 0, 272, 273, 0, 274, 0, 275, 0, 276, + 277, 278, 279, 280, 281, 282, 0, 283, 0, 0, + 284, 285, 286, 0, 287, 0, 0, 0, 288, 289, + 0, 0, 0, 290, 291, 292, 293, 294, 0, 0, + 0, 295, 296, 297, 0, 0, 298, 0, 0, 0, + 0, 299, 300, 0, 0, 0, 301, 0, 302, 303, + 0, 304, 305, 0, 0, 0, 306, 0, 0, 307, + 308, 309, 0, 0, 310, 0, 0, 311, 312, 0, + 0, 0, 0, 0, 313, 314, 0, 315, 0, 316, + 0, 317, 318, 0, 0, 0, 0, 0, 0, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 0, 335, 336, 337, 338, + 0, 339, 340, 341, 342, 0, 343, 344, 345, 0, + 0, 0, 0, 346, 347, 348, 349, 350, 351, 0, + 0, 352, 353, 0, 354, 0, 355, 0, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 0, 0, + 366, 0, 0, 367, 368, 369, 370, 0, 0, 0, + 371, 372, 0, 0, 0, 373, 0, 374, 375, 376, + 0, 377, 378, 379, 380, 0, 381, 382, 0, 0, + 0, 0, 0, 0, 0, 0, 383, 384, 385, 0, + 0, 386, 0, 387, 0, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 0, 0, 398, 399, 400, + 0, 401, 0, 402, 403, 404, 405, 406, 0, 407, + 408, 409, 0, 0, 410, 0, 0, 0, 411, 412, + 413, 414, 415, 0, 0, 416, 417, 418, 419, 420, + 0, 421, 422, 0, 423, 424, 425, 0, 0, 426, + 0, 427, 0, 428, 429, 0, 430, 431, 0, 432, + 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 0, 446, 447, 0, + 0, 0, 448, 449, 450, 451, 0, 0, 0, 452, + 0, 0, 0, 453, 0, 454, 455, 456, 457, 458, + 459, 0, 460, 461, 462, 463, 464, 465, 0, 0, + 0, 0, 0, 0, 466, 467, 0, 468, 0, 0, + 469, 0, 0, 0, 470, 471, 472, 0, 0, 0, + 473, 0, 0, 474, 475, 0, 476, 477, 478, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 0, 0, 488, 489, 490, 491, 0, 0, 492, + 493, 0, 494, 495, 496, 497, 0, 0, 0, 0, + 0, 498, 499, 500, 0, 0, 0, 501, 502, 503, + 504, 0, 505, 506, 0, 507, 508, 0, 509, 510, + 0, 0, 511, 0, 0, 512, 0, 513, 0, 514, + 515, 0, 0, 0, 0, 0, 0, 516, 0, 0, + 517, 0, 0, 0, 518, 519, 520, 521, 522, 523, + 524, 0, 0, 0, 0, 0, 0, 525, 526, 0, + 527, 528, 529, 0, 0, 530, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2531, 160, 0, 161, 162, + 163, 164, 165, 166, 0, 0, 167, 0, 568, 0, + 168, 0, 0, 169, 0, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 0, 179, 0, 0, 0, 180, + 0, 0, 0, 181, 0, 0, 182, 183, 184, 0, + 185, 0, 186, 187, 0, 0, 188, 0, 0, 189, + 190, 0, 191, 192, 0, 193, 194, 0, 195, 196, + 197, 198, 199, 200, 0, 201, 202, 203, 204, 205, + 206, 207, 0, 208, 209, 210, 211, 212, 213, 214, + 215, 0, 216, 217, 0, 218, 219, 220, 221, 222, + 0, 223, 0, 0, 224, 0, 0, 225, 0, 226, + 0, 0, 227, 0, 228, 0, 0, 0, 229, 230, + 231, 0, 0, 232, 0, 0, 0, 0, 233, 234, + 0, 0, 0, 0, 235, 0, 236, 0, 0, 0, + 0, 237, 0, 238, 239, 240, 241, 242, 0, 0, + 0, 0, 243, 0, 0, 244, 245, 246, 0, 0, + 0, 247, 0, 248, 249, 0, 250, 251, 252, 0, + 253, 254, 0, 255, 256, 257, 258, 259, 260, 261, + 0, 0, 262, 263, 264, 265, 0, 0, 266, 267, + 0, 268, 269, 270, 0, 0, 271, 0, 0, 0, + 272, 273, 0, 274, 0, 275, 0, 276, 277, 278, + 279, 280, 281, 282, 0, 283, 0, 0, 284, 285, + 286, 0, 287, 0, 0, 0, 288, 289, 0, 0, + 0, 290, 291, 292, 293, 294, 0, 0, 0, 295, + 296, 297, 0, 0, 298, 0, 0, 0, 0, 299, + 300, 0, 0, 0, 301, 0, 302, 303, 0, 304, + 305, 0, 0, 0, 306, 0, 0, 307, 308, 309, + 0, 0, 310, 0, 0, 311, 312, 0, 0, 0, + 0, 0, 313, 314, 0, 315, 0, 316, 0, 317, + 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 334, 0, 335, 336, 337, 338, 0, 339, + 340, 341, 342, 0, 343, 344, 345, 0, 0, 0, + 0, 346, 347, 348, 349, 350, 351, 0, 0, 352, + 353, 0, 354, 0, 355, 0, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 0, 0, 366, 0, + 0, 367, 368, 369, 370, 0, 0, 0, 371, 372, + 0, 0, 0, 373, 0, 374, 375, 376, 0, 377, + 378, 379, 380, 0, 381, 382, 0, 0, 0, 0, + 0, 0, 0, 0, 383, 384, 385, 0, 0, 386, + 0, 387, 0, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 0, 0, 398, 399, 400, 0, 401, + 0, 402, 403, 404, 405, 406, 0, 407, 408, 409, + 0, 0, 410, 0, 0, 0, 411, 412, 413, 414, + 415, 0, 0, 416, 417, 418, 419, 420, 0, 421, + 422, 0, 423, 424, 425, 0, 0, 426, 0, 427, + 0, 428, 429, 0, 430, 431, 0, 432, 0, 433, + 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 0, 446, 447, 0, 0, 0, + 448, 449, 450, 451, 0, 0, 0, 452, 0, 0, + 0, 453, 0, 454, 455, 456, 457, 458, 459, 0, + 460, 461, 462, 463, 464, 465, 0, 0, 0, 0, + 0, 0, 466, 467, 0, 468, 0, 0, 469, 0, + 0, 0, 470, 471, 472, 0, 0, 0, 473, 0, + 0, 474, 475, 0, 476, 477, 478, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 0, + 0, 488, 489, 490, 491, 0, 0, 492, 493, 0, + 494, 495, 496, 497, 0, 0, 0, 0, 0, 498, + 499, 500, 0, 0, 0, 501, 502, 503, 504, 0, + 505, 506, 0, 507, 508, 0, 509, 510, 0, 0, + 511, 0, 0, 512, 0, 513, 0, 514, 515, 0, + 0, 0, 0, 0, 0, 516, 0, 0, 517, 0, + 0, 0, 518, 519, 520, 521, 522, 523, 524, 0, + 0, 0, 0, 0, 0, 525, 526, 0, 527, 528, + 529, 0, 0, 530, 0, 0, 0, 0, 0, 0, + 160, 0, 161, 162, 163, 164, 165, 166, 3289, 0, + 167, 0, 0, 0, 168, 0, 3290, 169, 0, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 0, 179, + 0, 0, 0, 180, 0, 0, 0, 181, 0, 0, + 182, 183, 184, 0, 185, 0, 186, 187, 0, 0, + 188, 0, 0, 189, 190, 0, 191, 192, 0, 193, + 194, 0, 195, 196, 197, 198, 199, 200, 0, 201, + 202, 203, 204, 205, 206, 207, 0, 208, 209, 210, + 211, 212, 213, 214, 215, 0, 216, 217, 0, 218, + 219, 220, 221, 222, 0, 223, 0, 0, 224, 0, + 0, 225, 0, 226, 0, 0, 227, 0, 228, 0, + 0, 0, 229, 230, 231, 0, 0, 232, 0, 0, + 0, 0, 233, 234, 0, 0, 0, 0, 235, 0, + 236, 0, 0, 0, 0, 237, 0, 238, 239, 240, + 241, 242, 0, 0, 0, 0, 243, 0, 0, 244, + 245, 246, 0, 0, 0, 247, 0, 248, 249, 0, + 250, 251, 252, 0, 253, 254, 0, 255, 256, 257, + 258, 259, 260, 261, 0, 0, 262, 263, 264, 265, + 0, 0, 266, 267, 0, 268, 269, 270, 0, 0, + 271, 0, 0, 0, 272, 273, 0, 274, 0, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 0, 283, + 0, 0, 284, 285, 286, 0, 287, 0, 0, 0, + 288, 289, 0, 0, 0, 290, 291, 292, 293, 294, + 0, 0, 0, 295, 296, 297, 0, 0, 298, 0, + 0, 0, 0, 299, 300, 0, 0, 0, 301, 0, + 302, 303, 0, 304, 305, 0, 0, 0, 306, 0, + 0, 307, 308, 309, 0, 0, 310, 0, 0, 311, + 312, 0, 0, 0, 0, 0, 313, 314, 0, 315, + 0, 316, 0, 317, 318, 0, 0, 0, 0, 0, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 0, 335, 336, + 337, 338, 0, 339, 340, 341, 342, 0, 343, 344, + 345, 0, 0, 0, 0, 346, 347, 348, 349, 350, + 351, 0, 0, 352, 353, 0, 354, 0, 355, 0, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 0, 0, 366, 0, 0, 367, 368, 369, 370, 0, + 0, 0, 371, 372, 0, 0, 0, 373, 0, 374, + 375, 376, 0, 377, 378, 379, 380, 0, 381, 382, + 0, 0, 0, 0, 0, 0, 0, 0, 383, 384, + 385, 0, 0, 386, 0, 387, 0, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 0, 0, 398, + 399, 400, 0, 401, 0, 402, 403, 404, 405, 406, + 0, 407, 408, 409, 0, 0, 410, 0, 0, 0, + 411, 412, 413, 414, 415, 0, 0, 416, 417, 418, + 419, 420, 0, 421, 422, 0, 423, 424, 425, 0, + 0, 426, 0, 427, 0, 428, 429, 0, 430, 431, + 0, 432, 0, 433, 0, 0, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 0, 446, + 447, 0, 0, 0, 448, 449, 450, 451, 0, 0, + 0, 452, 0, 0, 0, 453, 0, 454, 455, 456, + 457, 458, 459, 0, 460, 461, 462, 463, 464, 465, + 0, 0, 0, 0, 0, 0, 466, 467, 0, 468, + 0, 0, 469, 0, 0, 0, 470, 471, 472, 0, + 0, 0, 473, 0, 0, 474, 475, 0, 476, 477, + 478, 479, 480, 481, 0, 0, 482, 483, 484, 485, + 0, 486, 487, 0, 0, 488, 489, 490, 491, 0, + 0, 492, 493, 0, 494, 495, 496, 497, 0, 0, + 0, 0, 0, 498, 499, 500, 0, 0, 0, 501, + 502, 503, 504, 0, 505, 506, 0, 507, 508, 0, + 509, 510, 0, 0, 511, 0, 0, 512, 0, 513, + 0, 514, 515, 0, 0, 0, 0, 0, 0, 516, + 0, 0, 517, 0, 0, 0, 518, 519, 520, 521, + 522, 523, 524, 0, 0, 0, 0, 0, 0, 525, + 526, 0, 527, 528, 529, 0, 0, 530, 0, 0, + 0, 0, 0, 0, 160, 0, 161, 162, 163, 164, + 165, 166, 0, 0, 167, 0, 0, 0, 168, 4887, + 831, 169, 0, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 0, 179, 0, 0, 0, 180, 0, 0, + 0, 181, 0, 0, 182, 183, 184, 0, 185, 0, + 186, 187, 0, 0, 188, 0, 0, 189, 190, 0, + 191, 192, 0, 193, 194, 0, 195, 196, 197, 198, + 199, 200, 0, 201, 202, 203, 204, 205, 206, 207, + 0, 208, 209, 210, 211, 212, 213, 214, 215, 0, + 216, 217, 0, 218, 219, 220, 221, 222, 0, 223, + 0, 0, 224, 0, 0, 225, 0, 226, 0, 0, + 227, 0, 228, 0, 0, 0, 229, 230, 231, 0, + 0, 232, 0, 0, 0, 0, 233, 234, 0, 0, + 0, 0, 235, 0, 236, 0, 0, 0, 0, 237, + 0, 238, 239, 240, 241, 242, 0, 0, 0, 0, + 243, 0, 0, 244, 245, 246, 0, 0, 0, 247, + 0, 248, 249, 0, 250, 251, 252, 0, 253, 254, + 0, 255, 256, 257, 258, 259, 260, 261, 0, 0, + 262, 263, 264, 265, 0, 0, 266, 267, 0, 268, + 269, 270, 0, 0, 271, 0, 0, 0, 272, 273, + 0, 274, 0, 275, 0, 276, 277, 278, 279, 280, + 281, 282, 0, 283, 0, 0, 284, 285, 286, 0, + 287, 0, 0, 0, 288, 289, 0, 0, 0, 290, + 291, 292, 293, 294, 0, 0, 0, 295, 296, 297, + 0, 0, 298, 0, 0, 0, 0, 299, 300, 0, + 0, 0, 301, 0, 302, 303, 0, 304, 305, 0, + 0, 0, 306, 0, 0, 307, 308, 309, 0, 0, + 310, 0, 0, 311, 312, 0, 0, 0, 0, 0, + 313, 314, 0, 315, 0, 316, 0, 317, 318, 0, + 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 0, 334, 335, 336, 337, 0, 338, 339, 340, 341, - 0, 342, 343, 344, 0, 0, 0, 0, 345, 346, - 347, 348, 349, 350, 0, 0, 351, 352, 0, 353, - 0, 354, 0, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 365, 0, 0, 366, 367, - 368, 369, 0, 0, 0, 370, 371, 0, 0, 0, - 372, 0, 373, 374, 375, 0, 376, 377, 378, 379, - 0, 380, 381, 0, 0, 0, 0, 0, 0, 0, - 0, 382, 383, 384, 0, 0, 385, 0, 386, 0, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 0, 0, 397, 398, 399, 0, 400, 0, 401, 402, - 403, 404, 405, 0, 406, 407, 408, 0, 0, 409, - 0, 0, 0, 410, 411, 412, 413, 414, 0, 0, - 415, 416, 417, 418, 419, 0, 420, 421, 0, 422, - 423, 424, 0, 0, 425, 0, 426, 0, 427, 428, - 0, 429, 430, 0, 431, 0, 432, 0, 0, 433, + 334, 0, 335, 336, 337, 338, 0, 339, 340, 341, + 342, 0, 343, 344, 345, 0, 0, 0, 0, 346, + 347, 348, 349, 350, 351, 0, 0, 352, 353, 0, + 354, 0, 355, 0, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 0, 0, 366, 0, 0, 367, + 368, 369, 370, 0, 0, 0, 371, 372, 0, 0, + 0, 373, 0, 374, 375, 376, 0, 377, 378, 379, + 380, 0, 381, 382, 0, 0, 0, 0, 0, 0, + 0, 0, 383, 384, 385, 0, 0, 386, 0, 387, + 0, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 0, 0, 398, 399, 400, 0, 401, 0, 402, + 403, 404, 405, 406, 0, 407, 408, 409, 0, 0, + 410, 0, 0, 0, 411, 412, 413, 414, 415, 0, + 0, 416, 417, 418, 419, 420, 0, 421, 422, 0, + 423, 424, 425, 0, 0, 426, 0, 427, 0, 428, + 429, 0, 430, 431, 0, 432, 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 0, 445, 446, 0, 0, 0, 447, 448, 449, - 450, 0, 0, 0, 451, 0, 0, 0, 452, 0, - 453, 454, 455, 456, 457, 458, 0, 459, 460, 461, - 462, 463, 464, 0, 0, 0, 0, 0, 0, 465, - 466, 0, 467, 0, 0, 468, 0, 0, 0, 469, - 470, 471, 0, 0, 0, 472, 0, 0, 473, 474, - 0, 475, 476, 477, 478, 479, 480, 0, 0, 481, - 482, 483, 484, 0, 485, 486, 0, 0, 487, 488, - 489, 490, 0, 0, 491, 492, 0, 493, 494, 495, - 496, 0, 0, 0, 0, 0, 497, 498, 499, 0, - 0, 0, 500, 501, 502, 503, 0, 504, 505, 0, - 506, 507, 0, 508, 509, 0, 0, 510, 0, 0, - 511, 0, 512, 0, 513, 514, 0, 0, 0, 0, - 0, 0, 515, 0, 0, 516, 0, 0, 0, 517, - 518, 519, 520, 521, 522, 523, 0, 0, 0, 0, - 0, 0, 524, 525, 0, 526, 527, 528, 0, 0, - 529, 0, 0, 0, 0, 0, 0, 159, 0, 160, - 161, 162, 163, 164, 165, 0, 0, 166, 0, 0, - 0, 167, 4882, 829, 168, 0, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 0, 178, 0, 0, 0, - 179, 0, 0, 0, 180, 0, 0, 181, 182, 183, - 0, 184, 0, 185, 186, 0, 0, 187, 0, 0, - 188, 189, 0, 190, 191, 0, 192, 193, 0, 194, - 195, 196, 197, 198, 199, 0, 200, 201, 202, 203, - 204, 205, 206, 0, 207, 208, 209, 210, 211, 212, - 213, 214, 0, 215, 216, 0, 217, 218, 219, 220, - 221, 0, 222, 0, 0, 223, 0, 0, 224, 0, - 225, 0, 0, 226, 0, 227, 0, 0, 0, 228, - 229, 230, 0, 0, 231, 0, 0, 0, 0, 232, - 233, 0, 0, 0, 0, 234, 0, 235, 0, 0, - 0, 0, 236, 0, 237, 238, 239, 240, 241, 0, - 0, 0, 0, 242, 0, 0, 243, 244, 245, 0, - 0, 0, 246, 0, 247, 248, 0, 249, 250, 251, - 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, - 260, 0, 0, 261, 262, 263, 264, 0, 0, 265, - 266, 0, 267, 268, 269, 0, 0, 270, 0, 0, - 0, 271, 272, 0, 273, 0, 274, 0, 275, 276, - 277, 278, 279, 280, 281, 0, 282, 0, 0, 283, - 284, 285, 0, 286, 0, 0, 0, 287, 288, 0, - 0, 0, 289, 290, 291, 292, 293, 0, 0, 0, - 294, 295, 296, 0, 0, 297, 0, 0, 0, 0, - 298, 299, 0, 0, 0, 300, 0, 301, 302, 0, - 303, 304, 0, 0, 0, 305, 0, 0, 306, 307, - 308, 0, 0, 309, 0, 0, 310, 311, 0, 0, - 0, 0, 0, 312, 313, 0, 314, 0, 315, 0, - 316, 317, 0, 0, 0, 0, 0, 0, 318, 319, + 444, 445, 0, 446, 447, 0, 0, 0, 448, 449, + 450, 451, 0, 0, 0, 452, 0, 0, 0, 453, + 0, 454, 455, 456, 457, 458, 459, 0, 460, 461, + 462, 463, 464, 465, 0, 0, 0, 0, 0, 0, + 466, 467, 0, 468, 0, 0, 469, 0, 0, 0, + 470, 471, 472, 0, 0, 0, 473, 0, 0, 474, + 475, 0, 476, 477, 478, 479, 480, 481, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 0, 0, 488, + 489, 490, 491, 0, 0, 492, 493, 0, 494, 495, + 496, 497, 0, 0, 0, 0, 0, 498, 499, 500, + 0, 0, 0, 501, 502, 503, 504, 0, 505, 506, + 0, 507, 508, 0, 509, 510, 0, 0, 511, 0, + 0, 512, 0, 513, 0, 514, 515, 0, 0, 0, + 0, 0, 0, 516, 0, 0, 517, 0, 0, 0, + 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, + 0, 0, 0, 525, 526, 0, 527, 528, 529, 0, + 0, 530, 0, 0, 0, 0, 160, 0, 161, 162, + 163, 164, 165, 166, 0, 0, 167, 0, 0, 0, + 168, 0, 0, 169, 568, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 0, 179, 0, 0, 0, 180, + 0, 0, 0, 181, 0, 0, 182, 183, 184, 0, + 185, 0, 186, 187, 0, 0, 188, 0, 0, 189, + 190, 0, 191, 192, 0, 193, 194, 0, 195, 196, + 197, 198, 199, 200, 0, 201, 202, 203, 204, 205, + 206, 207, 0, 208, 209, 210, 211, 212, 213, 214, + 215, 0, 216, 217, 0, 218, 219, 220, 221, 222, + 0, 223, 0, 0, 224, 0, 0, 225, 0, 226, + 0, 0, 227, 0, 228, 0, 0, 0, 229, 230, + 231, 0, 0, 232, 0, 0, 0, 0, 233, 234, + 0, 0, 0, 0, 235, 0, 236, 0, 0, 0, + 0, 237, 0, 238, 239, 240, 241, 242, 0, 0, + 0, 0, 243, 0, 0, 244, 245, 246, 0, 0, + 0, 247, 0, 248, 249, 0, 250, 251, 252, 0, + 253, 254, 0, 255, 256, 257, 258, 259, 260, 261, + 0, 0, 262, 263, 652, 265, 0, 0, 266, 267, + 0, 268, 269, 270, 0, 0, 271, 0, 0, 0, + 653, 273, 0, 274, 0, 275, 0, 276, 277, 278, + 279, 280, 281, 282, 0, 283, 0, 0, 284, 285, + 286, 0, 287, 0, 0, 0, 288, 289, 0, 0, + 0, 290, 291, 292, 293, 294, 0, 0, 0, 295, + 296, 297, 0, 0, 298, 0, 0, 0, 0, 299, + 300, 0, 0, 0, 301, 0, 302, 303, 0, 304, + 305, 0, 0, 0, 306, 0, 0, 307, 308, 309, + 0, 0, 310, 0, 0, 311, 312, 0, 0, 0, + 0, 0, 313, 314, 0, 315, 0, 316, 0, 317, + 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 334, 0, 335, 336, 337, 338, 0, 339, + 340, 341, 342, 0, 343, 344, 345, 0, 0, 0, + 0, 346, 347, 348, 349, 350, 351, 0, 0, 352, + 353, 0, 354, 0, 355, 0, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 0, 0, 366, 0, + 0, 367, 368, 369, 370, 0, 0, 0, 371, 372, + 0, 0, 0, 373, 0, 374, 375, 376, 0, 377, + 378, 379, 380, 0, 381, 382, 0, 0, 0, 0, + 0, 0, 0, 0, 383, 384, 385, 0, 0, 386, + 0, 387, 0, 654, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 0, 0, 398, 399, 400, 0, 401, + 0, 402, 403, 404, 405, 406, 0, 407, 408, 409, + 0, 0, 410, 0, 0, 0, 411, 412, 413, 414, + 415, 0, 0, 416, 417, 418, 419, 420, 0, 421, + 422, 0, 423, 424, 425, 0, 0, 426, 0, 427, + 0, 428, 429, 0, 430, 431, 0, 432, 0, 433, + 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 0, 446, 447, 0, 0, 0, + 448, 449, 450, 451, 0, 0, 0, 452, 0, 0, + 0, 453, 0, 454, 455, 456, 457, 458, 459, 0, + 460, 461, 462, 463, 464, 465, 0, 0, 0, 0, + 0, 0, 466, 467, 0, 468, 0, 0, 469, 0, + 0, 0, 470, 471, 472, 0, 0, 0, 473, 0, + 0, 474, 475, 0, 476, 477, 478, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 0, + 0, 488, 489, 490, 491, 0, 0, 492, 493, 0, + 494, 495, 496, 497, 0, 0, 0, 0, 0, 498, + 499, 500, 0, 0, 0, 501, 502, 503, 504, 0, + 505, 506, 0, 507, 508, 0, 509, 510, 0, 0, + 511, 0, 0, 512, 0, 513, 0, 514, 515, 0, + 0, 0, 0, 0, 0, 516, 0, 0, 517, 0, + 0, 0, 518, 519, 520, 521, 522, 523, 524, 0, + 0, 0, 0, 0, 0, 525, 526, 0, 527, 528, + 529, 0, 0, 530, 0, 0, 0, 0, 160, 0, + 161, 162, 163, 164, 165, 166, 0, 0, 167, 0, + 0, 0, 168, 0, 0, 169, 568, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 0, 179, 0, 0, + 0, 180, 0, 0, 0, 181, 0, 0, 182, 183, + 184, 0, 185, 0, 186, 187, 0, 0, 188, 0, + 0, 189, 190, 0, 191, 192, 0, 193, 194, 0, + 195, 196, 197, 198, 199, 200, 0, 201, 202, 203, + 204, 205, 206, 207, 0, 208, 209, 210, 211, 212, + 213, 214, 215, 0, 216, 217, 0, 218, 219, 220, + 221, 222, 0, 223, 0, 0, 224, 0, 0, 225, + 0, 226, 0, 0, 227, 0, 228, 0, 0, 0, + 229, 230, 231, 0, 0, 232, 0, 0, 0, 0, + 233, 234, 0, 0, 0, 0, 235, 0, 236, 0, + 0, 0, 0, 237, 0, 238, 239, 240, 241, 242, + 0, 0, 0, 0, 243, 0, 0, 244, 245, 246, + 0, 0, 0, 247, 0, 248, 249, 0, 250, 251, + 252, 0, 253, 254, 0, 255, 256, 257, 258, 259, + 260, 261, 0, 0, 262, 263, 264, 265, 0, 0, + 266, 267, 0, 268, 269, 270, 0, 0, 271, 0, + 0, 0, 272, 273, 0, 274, 0, 275, 0, 276, + 277, 278, 279, 280, 281, 282, 0, 283, 0, 0, + 284, 285, 286, 0, 287, 0, 0, 0, 288, 289, + 0, 0, 0, 290, 291, 292, 293, 294, 0, 0, + 0, 295, 296, 297, 0, 0, 298, 0, 0, 0, + 0, 299, 300, 0, 0, 0, 301, 0, 302, 303, + 0, 304, 305, 0, 0, 0, 306, 0, 0, 307, + 308, 309, 0, 0, 310, 0, 0, 311, 312, 0, + 0, 0, 0, 0, 313, 314, 0, 315, 0, 316, + 0, 317, 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 0, 334, 335, 336, 337, 0, - 338, 339, 340, 341, 0, 342, 343, 344, 0, 0, - 0, 0, 345, 346, 347, 348, 349, 350, 0, 0, - 351, 352, 0, 353, 0, 354, 0, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 365, - 0, 0, 366, 367, 368, 369, 0, 0, 0, 370, - 371, 0, 0, 0, 372, 0, 373, 374, 375, 0, - 376, 377, 378, 379, 0, 380, 381, 0, 0, 0, - 0, 0, 0, 0, 0, 382, 383, 384, 0, 0, - 385, 0, 386, 0, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 0, 0, 397, 398, 399, 0, - 400, 0, 401, 402, 403, 404, 405, 0, 406, 407, - 408, 0, 0, 409, 0, 0, 0, 410, 411, 412, - 413, 414, 0, 0, 415, 416, 417, 418, 419, 0, - 420, 421, 0, 422, 423, 424, 0, 0, 425, 0, - 426, 0, 427, 428, 0, 429, 430, 0, 431, 0, - 432, 0, 0, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 0, 445, 446, 0, 0, - 0, 447, 448, 449, 450, 0, 0, 0, 451, 0, - 0, 0, 452, 0, 453, 454, 455, 456, 457, 458, - 0, 459, 460, 461, 462, 463, 464, 0, 0, 0, - 0, 0, 0, 465, 466, 0, 467, 0, 0, 468, - 0, 0, 0, 469, 470, 471, 0, 0, 0, 472, - 0, 0, 473, 474, 0, 475, 476, 477, 478, 479, - 480, 0, 0, 481, 482, 483, 484, 0, 485, 486, - 0, 0, 487, 488, 489, 490, 0, 0, 491, 492, - 0, 493, 494, 495, 496, 0, 0, 0, 0, 0, - 497, 498, 499, 0, 0, 0, 500, 501, 502, 503, - 0, 504, 505, 0, 506, 507, 0, 508, 509, 0, - 0, 510, 0, 0, 511, 0, 512, 0, 513, 514, - 0, 0, 0, 0, 0, 0, 515, 0, 0, 516, - 0, 0, 0, 517, 518, 519, 520, 521, 522, 523, - 0, 0, 0, 0, 0, 0, 524, 525, 0, 526, - 527, 528, 0, 0, 529, 0, 0, 0, 0, 159, - 0, 160, 161, 162, 163, 164, 165, 0, 0, 166, - 0, 0, 0, 167, 0, 0, 168, 567, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 0, 178, 0, - 0, 0, 179, 0, 0, 0, 180, 0, 0, 181, - 182, 183, 0, 184, 0, 185, 186, 0, 0, 187, - 0, 0, 188, 189, 0, 190, 191, 0, 192, 193, - 0, 194, 195, 196, 197, 198, 199, 0, 200, 201, - 202, 203, 204, 205, 206, 0, 207, 208, 209, 210, - 211, 212, 213, 214, 0, 215, 216, 0, 217, 218, - 219, 220, 221, 0, 222, 0, 0, 223, 0, 0, - 224, 0, 225, 0, 0, 226, 0, 227, 0, 0, - 0, 228, 229, 230, 0, 0, 231, 0, 0, 0, - 0, 232, 233, 0, 0, 0, 0, 234, 0, 235, - 0, 0, 0, 0, 236, 0, 237, 238, 239, 240, - 241, 0, 0, 0, 0, 242, 0, 0, 243, 244, - 245, 0, 0, 0, 246, 0, 247, 248, 0, 249, - 250, 251, 0, 252, 253, 0, 254, 255, 256, 257, - 258, 259, 260, 0, 0, 261, 262, 651, 264, 0, - 0, 265, 266, 0, 267, 268, 269, 0, 0, 270, - 0, 0, 0, 652, 272, 0, 273, 0, 274, 0, - 275, 276, 277, 278, 279, 280, 281, 0, 282, 0, - 0, 283, 284, 285, 0, 286, 0, 0, 0, 287, - 288, 0, 0, 0, 289, 290, 291, 292, 293, 0, - 0, 0, 294, 295, 296, 0, 0, 297, 0, 0, - 0, 0, 298, 299, 0, 0, 0, 300, 0, 301, - 302, 0, 303, 304, 0, 0, 0, 305, 0, 0, - 306, 307, 308, 0, 0, 309, 0, 0, 310, 311, - 0, 0, 0, 0, 0, 312, 313, 0, 314, 0, - 315, 0, 316, 317, 0, 0, 0, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 0, 334, 335, 336, - 337, 0, 338, 339, 340, 341, 0, 342, 343, 344, - 0, 0, 0, 0, 345, 346, 347, 348, 349, 350, - 0, 0, 351, 352, 0, 353, 0, 354, 0, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 365, 0, 0, 366, 367, 368, 369, 0, 0, - 0, 370, 371, 0, 0, 0, 372, 0, 373, 374, - 375, 0, 376, 377, 378, 379, 0, 380, 381, 0, - 0, 0, 0, 0, 0, 0, 0, 382, 383, 384, - 0, 0, 385, 0, 386, 0, 653, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 0, 0, 397, 398, - 399, 0, 400, 0, 401, 402, 403, 404, 405, 0, - 406, 407, 408, 0, 0, 409, 0, 0, 0, 410, - 411, 412, 413, 414, 0, 0, 415, 416, 417, 418, - 419, 0, 420, 421, 0, 422, 423, 424, 0, 0, - 425, 0, 426, 0, 427, 428, 0, 429, 430, 0, - 431, 0, 432, 0, 0, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 0, 445, 446, - 0, 0, 0, 447, 448, 449, 450, 0, 0, 0, - 451, 0, 0, 0, 452, 0, 453, 454, 455, 456, - 457, 458, 0, 459, 460, 461, 462, 463, 464, 0, - 0, 0, 0, 0, 0, 465, 466, 0, 467, 0, - 0, 468, 0, 0, 0, 469, 470, 471, 0, 0, - 0, 472, 0, 0, 473, 474, 0, 475, 476, 477, - 478, 479, 480, 0, 0, 481, 482, 483, 484, 0, - 485, 486, 0, 0, 487, 488, 489, 490, 0, 0, - 491, 492, 0, 493, 494, 495, 496, 0, 0, 0, - 0, 0, 497, 498, 499, 0, 0, 0, 500, 501, - 502, 503, 0, 504, 505, 0, 506, 507, 0, 508, - 509, 0, 0, 510, 0, 0, 511, 0, 512, 0, - 513, 514, 0, 0, 0, 0, 0, 0, 515, 0, - 0, 516, 0, 0, 0, 517, 518, 519, 520, 521, - 522, 523, 0, 0, 0, 0, 0, 0, 524, 525, - 0, 526, 527, 528, 0, 0, 529, 0, 0, 0, - 0, 159, 0, 160, 161, 162, 163, 164, 165, 0, - 0, 166, 0, 0, 0, 167, 0, 0, 168, 567, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 0, - 178, 0, 0, 0, 179, 0, 0, 0, 180, 0, - 0, 181, 182, 183, 0, 184, 0, 185, 186, 0, - 0, 187, 0, 0, 188, 189, 0, 190, 191, 0, - 192, 193, 0, 194, 195, 196, 197, 198, 199, 0, - 200, 201, 202, 203, 204, 205, 206, 0, 207, 208, - 209, 210, 211, 212, 213, 214, 0, 215, 216, 0, - 217, 218, 219, 220, 221, 0, 222, 0, 0, 223, - 0, 0, 224, 0, 225, 0, 0, 226, 0, 227, - 0, 0, 0, 228, 229, 230, 0, 0, 231, 0, - 0, 0, 0, 232, 233, 0, 0, 0, 0, 234, - 0, 235, 0, 0, 0, 0, 236, 0, 237, 238, - 239, 240, 241, 0, 0, 0, 0, 242, 0, 0, - 243, 244, 245, 0, 0, 0, 246, 0, 247, 248, - 0, 249, 250, 251, 0, 252, 253, 0, 254, 255, - 256, 257, 258, 259, 260, 0, 0, 261, 262, 263, - 264, 0, 0, 265, 266, 0, 267, 268, 269, 0, - 0, 270, 0, 0, 0, 271, 272, 0, 273, 0, - 274, 0, 275, 276, 277, 278, 279, 280, 281, 0, - 282, 0, 0, 283, 284, 285, 0, 286, 0, 0, - 0, 287, 288, 0, 0, 0, 289, 290, 291, 292, - 293, 0, 0, 0, 294, 295, 296, 0, 0, 297, - 0, 0, 0, 0, 298, 299, 0, 0, 0, 300, - 0, 301, 302, 0, 303, 304, 0, 0, 0, 305, - 0, 0, 306, 307, 308, 0, 0, 309, 0, 0, - 310, 311, 0, 0, 0, 0, 0, 312, 313, 0, - 314, 0, 315, 0, 316, 317, 0, 0, 0, 0, - 0, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, - 335, 336, 337, 0, 338, 339, 340, 341, 0, 342, - 343, 344, 0, 0, 0, 0, 345, 346, 347, 348, - 349, 350, 0, 0, 351, 352, 0, 353, 0, 354, - 0, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 365, 0, 0, 366, 367, 368, 369, - 0, 0, 0, 370, 371, 0, 0, 0, 372, 0, - 373, 374, 375, 0, 376, 377, 378, 379, 0, 380, - 381, 0, 0, 0, 0, 0, 0, 0, 0, 382, - 383, 384, 0, 0, 385, 0, 386, 0, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 0, 0, - 397, 398, 399, 0, 400, 0, 401, 402, 403, 404, - 405, 0, 406, 407, 408, 0, 0, 409, 0, 0, - 0, 410, 411, 412, 413, 414, 0, 0, 415, 416, - 417, 418, 419, 0, 420, 421, 0, 422, 423, 424, - 0, 0, 425, 0, 426, 0, 427, 428, 0, 429, - 430, 0, 431, 0, 432, 0, 0, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 0, - 445, 446, 0, 0, 0, 447, 448, 449, 450, 0, - 0, 0, 451, 0, 0, 0, 452, 0, 453, 454, - 455, 456, 457, 458, 0, 459, 460, 461, 462, 463, - 464, 0, 0, 0, 0, 0, 0, 465, 466, 0, - 467, 0, 0, 468, 0, 0, 0, 469, 470, 471, - 0, 0, 0, 472, 0, 0, 473, 474, 0, 475, - 476, 477, 478, 479, 480, 0, 0, 481, 482, 483, - 484, 0, 485, 486, 0, 0, 487, 488, 489, 490, - 0, 0, 491, 492, 0, 493, 494, 495, 496, 0, - 0, 0, 0, 0, 497, 498, 499, 0, 0, 0, - 500, 501, 502, 503, 0, 504, 505, 0, 506, 507, - 0, 508, 509, 0, 0, 510, 0, 0, 511, 0, - 512, 0, 513, 514, 0, 0, 0, 0, 0, 0, - 515, 0, 0, 516, 0, 0, 0, 517, 518, 519, - 520, 521, 522, 523, 0, 0, 0, 0, 0, 0, - 524, 525, 0, 526, 527, 528, 0, 0, 529, 0, - 0, 0, 0, 159, 0, 160, 161, 162, 163, 164, - 165, 0, 0, 166, 0, 0, 0, 167, 0, 0, - 168, 829, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 0, 178, 0, 0, 0, 179, 0, 0, 0, - 180, 0, 0, 181, 182, 183, 0, 184, 0, 185, - 186, 0, 0, 187, 0, 0, 188, 189, 0, 190, - 191, 0, 192, 193, 0, 194, 195, 196, 197, 198, - 199, 0, 200, 201, 202, 203, 204, 205, 206, 0, - 207, 208, 209, 210, 211, 212, 213, 214, 0, 215, - 216, 0, 217, 218, 219, 220, 221, 0, 222, 0, - 0, 223, 0, 0, 224, 0, 225, 0, 0, 226, - 0, 227, 0, 0, 0, 228, 229, 230, 0, 0, - 231, 0, 0, 0, 0, 232, 233, 0, 0, 0, - 0, 234, 0, 235, 0, 0, 0, 0, 236, 0, - 237, 238, 239, 240, 241, 0, 0, 0, 0, 242, - 0, 0, 243, 244, 245, 0, 0, 0, 246, 0, - 247, 248, 0, 249, 250, 251, 0, 252, 253, 0, - 254, 255, 256, 257, 258, 259, 260, 0, 0, 261, - 262, 263, 264, 0, 0, 265, 266, 0, 267, 268, - 269, 0, 0, 270, 0, 0, 0, 271, 272, 0, - 273, 0, 274, 0, 275, 276, 277, 278, 279, 280, - 281, 0, 282, 0, 0, 283, 284, 285, 0, 286, - 0, 0, 0, 287, 288, 0, 0, 0, 289, 290, - 291, 292, 293, 0, 0, 0, 294, 295, 296, 0, - 0, 297, 0, 0, 0, 0, 298, 299, 0, 0, - 0, 300, 0, 301, 302, 0, 303, 304, 0, 0, - 0, 305, 0, 0, 306, 307, 308, 0, 0, 309, - 0, 0, 310, 311, 0, 0, 0, 0, 0, 312, - 313, 0, 314, 0, 315, 0, 316, 317, 0, 0, - 0, 0, 0, 0, 318, 319, 320, 321, 322, 323, + 330, 331, 332, 333, 334, 0, 335, 336, 337, 338, + 0, 339, 340, 341, 342, 0, 343, 344, 345, 0, + 0, 0, 0, 346, 347, 348, 349, 350, 351, 0, + 0, 352, 353, 0, 354, 0, 355, 0, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 0, 0, + 366, 0, 0, 367, 368, 369, 370, 0, 0, 0, + 371, 372, 0, 0, 0, 373, 0, 374, 375, 376, + 0, 377, 378, 379, 380, 0, 381, 382, 0, 0, + 0, 0, 0, 0, 0, 0, 383, 384, 385, 0, + 0, 386, 0, 387, 0, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 0, 0, 398, 399, 400, + 0, 401, 0, 402, 403, 404, 405, 406, 0, 407, + 408, 409, 0, 0, 410, 0, 0, 0, 411, 412, + 413, 414, 415, 0, 0, 416, 417, 418, 419, 420, + 0, 421, 422, 0, 423, 424, 425, 0, 0, 426, + 0, 427, 0, 428, 429, 0, 430, 431, 0, 432, + 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 0, 446, 447, 0, + 0, 0, 448, 449, 450, 451, 0, 0, 0, 452, + 0, 0, 0, 453, 0, 454, 455, 456, 457, 458, + 459, 0, 460, 461, 462, 463, 464, 465, 0, 0, + 0, 0, 0, 0, 466, 467, 0, 468, 0, 0, + 469, 0, 0, 0, 470, 471, 472, 0, 0, 0, + 473, 0, 0, 474, 475, 0, 476, 477, 478, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 0, 0, 488, 489, 490, 491, 0, 0, 492, + 493, 0, 494, 495, 496, 497, 0, 0, 0, 0, + 0, 498, 499, 500, 0, 0, 0, 501, 502, 503, + 504, 0, 505, 506, 0, 507, 508, 0, 509, 510, + 0, 0, 511, 0, 0, 512, 0, 513, 0, 514, + 515, 0, 0, 0, 0, 0, 0, 516, 0, 0, + 517, 0, 0, 0, 518, 519, 520, 521, 522, 523, + 524, 0, 0, 0, 0, 0, 0, 525, 526, 0, + 527, 528, 529, 0, 0, 530, 0, 0, 0, 0, + 160, 0, 161, 162, 163, 164, 165, 166, 0, 0, + 167, 0, 0, 0, 168, 0, 0, 169, 831, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 0, 179, + 0, 0, 0, 180, 0, 0, 0, 181, 0, 0, + 182, 183, 184, 0, 185, 0, 186, 187, 0, 0, + 188, 0, 0, 189, 190, 0, 191, 192, 0, 193, + 194, 0, 195, 196, 197, 198, 199, 200, 0, 201, + 202, 203, 204, 205, 206, 207, 0, 208, 209, 210, + 211, 212, 213, 214, 215, 0, 216, 217, 0, 218, + 219, 220, 221, 222, 0, 223, 0, 0, 224, 0, + 0, 225, 0, 226, 0, 0, 227, 0, 228, 0, + 0, 0, 229, 230, 231, 0, 0, 232, 0, 0, + 0, 0, 233, 234, 0, 0, 0, 0, 235, 0, + 236, 0, 0, 0, 0, 237, 0, 238, 239, 240, + 241, 242, 0, 0, 0, 0, 243, 0, 0, 244, + 245, 246, 0, 0, 0, 247, 0, 248, 249, 0, + 250, 251, 252, 0, 253, 254, 0, 255, 256, 257, + 258, 259, 260, 261, 0, 0, 262, 263, 264, 265, + 0, 0, 266, 267, 0, 268, 269, 270, 0, 0, + 271, 0, 0, 0, 272, 273, 0, 274, 0, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 0, 283, + 0, 0, 284, 285, 286, 0, 287, 0, 0, 0, + 288, 289, 0, 0, 0, 290, 291, 292, 293, 294, + 0, 0, 0, 295, 296, 297, 0, 0, 298, 0, + 0, 0, 0, 299, 300, 0, 0, 0, 301, 0, + 302, 303, 0, 304, 305, 0, 0, 0, 306, 0, + 0, 307, 308, 309, 0, 0, 310, 0, 0, 311, + 312, 0, 0, 0, 0, 0, 313, 314, 0, 315, + 0, 316, 0, 317, 318, 0, 0, 0, 0, 0, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 0, 335, 336, + 337, 338, 0, 339, 340, 341, 342, 0, 343, 344, + 345, 0, 0, 0, 0, 346, 347, 348, 349, 350, + 351, 0, 0, 352, 353, 0, 354, 0, 355, 0, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 0, 0, 366, 0, 0, 367, 368, 369, 370, 0, + 0, 0, 371, 372, 0, 0, 0, 373, 0, 374, + 375, 376, 0, 377, 378, 379, 380, 0, 381, 382, + 0, 0, 0, 0, 0, 0, 0, 0, 383, 384, + 385, 0, 0, 386, 0, 387, 0, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 0, 0, 398, + 399, 400, 0, 401, 0, 402, 403, 404, 405, 406, + 0, 407, 408, 409, 0, 0, 410, 0, 0, 0, + 411, 412, 413, 414, 415, 0, 0, 416, 417, 418, + 419, 420, 0, 421, 422, 0, 423, 424, 425, 0, + 0, 426, 0, 427, 0, 428, 429, 0, 430, 431, + 0, 432, 0, 433, 0, 0, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 0, 446, + 447, 0, 0, 0, 448, 449, 450, 451, 0, 0, + 0, 452, 0, 0, 0, 453, 0, 454, 455, 456, + 457, 458, 459, 0, 460, 461, 462, 463, 464, 465, + 0, 0, 0, 0, 0, 0, 466, 467, 0, 468, + 0, 0, 469, 0, 0, 0, 470, 471, 472, 0, + 0, 0, 473, 0, 0, 474, 475, 0, 476, 477, + 478, 479, 480, 481, 0, 0, 482, 483, 484, 485, + 0, 486, 487, 0, 0, 488, 489, 490, 491, 0, + 0, 492, 493, 0, 494, 495, 496, 497, 0, 0, + 0, 0, 0, 498, 499, 500, 0, 0, 0, 501, + 502, 503, 504, 0, 505, 506, 0, 507, 508, 0, + 509, 510, 0, 0, 511, 0, 0, 512, 0, 513, + 0, 514, 515, 0, 0, 0, 0, 0, 0, 516, + 0, 0, 517, 0, 0, 0, 518, 519, 520, 521, + 522, 523, 524, 0, 0, 0, 0, 0, 0, 525, + 526, 0, 527, 528, 529, 0, 0, 530, 0, 0, + 0, 0, 160, 0, 161, 162, 163, 164, 165, 166, + 0, 0, 167, 0, 0, 0, 168, 0, 0, 169, + 3290, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 0, 179, 0, 0, 0, 180, 0, 0, 0, 181, + 0, 0, 182, 183, 184, 0, 185, 0, 186, 187, + 0, 0, 188, 0, 0, 189, 190, 0, 191, 1010, + 1011, 193, 194, 0, 195, 196, 197, 198, 199, 200, + 0, 201, 202, 203, 204, 205, 206, 207, 0, 208, + 209, 210, 211, 212, 213, 214, 215, 0, 216, 217, + 0, 218, 219, 220, 221, 222, 0, 223, 0, 0, + 224, 0, 0, 225, 0, 226, 0, 0, 227, 0, + 228, 0, 0, 0, 229, 230, 231, 0, 0, 232, + 0, 0, 0, 0, 233, 234, 0, 0, 0, 1012, + 235, 0, 236, 0, 0, 0, 0, 237, 0, 238, + 239, 240, 241, 242, 0, 0, 0, 0, 243, 0, + 0, 244, 245, 246, 0, 0, 0, 247, 0, 248, + 249, 0, 250, 251, 252, 0, 253, 254, 0, 255, + 256, 257, 258, 259, 260, 261, 0, 0, 262, 263, + 264, 265, 0, 0, 266, 267, 0, 268, 269, 270, + 0, 0, 271, 0, 0, 0, 272, 273, 0, 274, + 0, 275, 0, 276, 277, 278, 279, 280, 281, 1013, + 0, 283, 0, 0, 284, 285, 286, 0, 287, 0, + 0, 0, 288, 289, 0, 0, 0, 290, 291, 292, + 293, 294, 0, 0, 0, 295, 296, 297, 0, 0, + 298, 0, 0, 0, 0, 299, 300, 0, 0, 0, + 301, 0, 302, 303, 0, 304, 305, 0, 0, 0, + 306, 0, 0, 307, 308, 309, 0, 0, 310, 0, + 0, 311, 312, 0, 0, 0, 0, 0, 313, 314, + 0, 1014, 0, 316, 0, 317, 318, 0, 0, 0, + 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 334, 0, + 335, 336, 337, 338, 0, 339, 340, 341, 342, 0, + 343, 344, 345, 0, 0, 0, 0, 346, 347, 348, + 349, 350, 351, 0, 0, 352, 353, 0, 354, 0, + 355, 0, 356, 357, 358, 359, 360, 361, 362, 1015, + 364, 365, 0, 0, 366, 0, 0, 367, 368, 369, + 370, 0, 0, 0, 371, 372, 0, 0, 0, 373, + 0, 374, 375, 376, 0, 377, 378, 379, 380, 0, + 381, 382, 0, 0, 0, 0, 0, 0, 0, 0, + 383, 384, 385, 0, 0, 386, 0, 387, 0, 388, + 389, 1016, 391, 392, 393, 394, 395, 396, 397, 0, + 0, 398, 399, 400, 0, 401, 0, 402, 403, 404, + 405, 406, 0, 407, 408, 409, 0, 0, 410, 0, + 0, 0, 411, 412, 413, 414, 415, 0, 0, 416, + 417, 418, 419, 420, 0, 421, 422, 0, 423, 424, + 425, 0, 0, 426, 0, 427, 0, 428, 429, 0, + 430, 431, 0, 432, 0, 433, 0, 0, 1017, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 0, 446, 447, 0, 0, 0, 448, 449, 1018, 451, + 0, 0, 0, 452, 0, 0, 0, 453, 0, 454, + 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, + 464, 465, 0, 0, 0, 0, 0, 0, 466, 467, + 0, 468, 0, 0, 469, 0, 0, 0, 470, 471, + 472, 0, 0, 0, 473, 0, 0, 474, 475, 0, + 476, 477, 478, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 0, 0, 488, 489, 490, + 491, 0, 0, 492, 493, 0, 494, 495, 496, 497, + 0, 0, 0, 0, 0, 1019, 499, 500, 0, 0, + 0, 501, 502, 503, 504, 0, 505, 506, 0, 507, + 508, 0, 509, 510, 0, 0, 511, 0, 0, 512, + 0, 513, 0, 514, 515, 0, 0, 0, 0, 0, + 0, 516, 0, 0, 517, 0, 0, 0, 518, 519, + 520, 521, 522, 523, 524, 0, 0, 0, 0, 0, + 0, 525, 526, 0, 527, 528, 529, 0, 0, 530, + 0, 0, 0, 160, 0, 161, 162, 163, 164, 165, + 166, 0, 0, 167, 0, 0, 0, 168, 0, 0, + 169, 1020, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 0, 179, 0, 0, 0, 180, 0, 0, 0, + 181, 0, 0, 182, 183, 184, 0, 185, 0, 186, + 187, 0, 0, 188, 0, 0, 189, 190, 0, 191, + 192, 0, 193, 194, 0, 195, 196, 197, 198, 199, + 200, 0, 201, 202, 203, 204, 205, 206, 207, 0, + 208, 209, 210, 211, 212, 213, 214, 215, 0, 216, + 217, 0, 218, 219, 220, 221, 222, 0, 223, 0, + 0, 224, 0, 0, 225, 0, 226, 0, 0, 227, + 0, 228, 0, 0, 0, 229, 230, 231, 0, 0, + 232, 0, 0, 0, 0, 233, 234, 0, 0, 0, + 0, 235, 0, 236, 0, 0, 0, 0, 237, 0, + 238, 239, 240, 241, 242, 0, 0, 0, 0, 243, + 0, 0, 244, 245, 246, 0, 0, 0, 247, 0, + 248, 249, 0, 250, 251, 252, 0, 253, 254, 0, + 255, 256, 257, 258, 259, 260, 261, 0, 0, 262, + 263, 264, 265, 0, 0, 266, 267, 0, 268, 269, + 270, 0, 0, 271, 0, 0, 0, 272, 273, 0, + 274, 0, 275, 0, 276, 277, 278, 279, 280, 281, + 282, 0, 283, 0, 0, 284, 285, 286, 0, 287, + 0, 0, 0, 288, 289, 0, 0, 0, 290, 291, + 292, 293, 294, 0, 0, 0, 295, 296, 297, 0, + 0, 298, 0, 0, 0, 0, 299, 300, 0, 0, + 0, 301, 0, 302, 303, 0, 304, 305, 0, 0, + 0, 306, 0, 0, 307, 308, 309, 0, 0, 310, + 0, 0, 311, 312, 666, 0, 0, 0, 0, 313, + 314, 0, 315, 0, 316, 0, 317, 318, 0, 0, + 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 0, 335, 336, 337, 338, 0, 339, 340, 341, 342, + 0, 343, 344, 345, 0, 0, 0, 0, 346, 347, + 348, 349, 350, 351, 0, 0, 352, 353, 0, 354, + 0, 355, 0, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 0, 0, 366, 0, 0, 367, 368, + 369, 370, 0, 0, 0, 371, 372, 0, 0, 0, + 373, 0, 374, 375, 376, 0, 377, 378, 379, 380, + 0, 381, 382, 0, 0, 0, 0, 0, 0, 0, + 0, 383, 384, 385, 0, 0, 386, 0, 387, 0, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 0, 0, 398, 399, 400, 0, 401, 0, 402, 403, + 404, 405, 406, 0, 407, 408, 409, 0, 0, 410, + 0, 0, 0, 411, 412, 413, 414, 415, 0, 0, + 416, 417, 418, 419, 420, 0, 421, 422, 0, 423, + 424, 425, 0, 0, 426, 0, 427, 0, 428, 429, + 0, 430, 431, 0, 432, 0, 433, 0, 0, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 0, 446, 447, 0, 0, 0, 448, 449, 450, + 451, 0, 0, 0, 452, 0, 0, 0, 453, 0, + 454, 455, 456, 457, 458, 459, 0, 460, 461, 462, + 463, 464, 465, 0, 0, 0, 0, 0, 0, 466, + 467, 0, 468, 0, 0, 469, 0, 0, 0, 470, + 471, 472, 0, 0, 0, 473, 0, 0, 474, 475, + 0, 476, 477, 478, 479, 480, 481, 0, 0, 482, + 483, 484, 485, 0, 486, 487, 0, 0, 488, 489, + 490, 491, 0, 156, 492, 493, 0, 494, 495, 496, + 497, 0, 0, 0, 0, 0, 498, 499, 500, 0, + 0, 0, 501, 502, 503, 504, 0, 505, 506, 0, + 507, 508, 0, 509, 510, 0, 0, 511, 0, 0, + 512, 0, 513, 0, 514, 515, 0, 0, 0, 0, + 0, 0, 516, 0, 0, 517, 0, 0, 0, 518, + 519, 520, 521, 522, 523, 524, 0, 0, 0, 0, + 0, 0, 525, 526, 0, 527, 528, 529, 0, 0, + 530, 0, 0, 0, 160, 0, 161, 162, 163, 164, + 165, 166, 0, 0, 167, 0, 0, 0, 168, 0, + 0, 169, 1542, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 0, 179, 0, 0, 0, 180, 0, 0, + 0, 181, 0, 0, 182, 183, 184, 0, 185, 0, + 186, 187, 0, 0, 188, 0, 0, 189, 190, 0, + 191, 192, 0, 193, 194, 0, 195, 196, 197, 198, + 199, 200, 0, 201, 202, 203, 204, 205, 206, 207, + 0, 208, 209, 210, 211, 212, 213, 214, 215, 0, + 216, 217, 0, 218, 219, 220, 221, 222, 0, 223, + 0, 0, 224, 0, 0, 225, 0, 226, 0, 0, + 227, 0, 228, 0, 0, 0, 229, 230, 231, 0, + 0, 232, 0, 0, 0, 0, 233, 234, 0, 0, + 0, 0, 235, 0, 236, 0, 0, 0, 0, 237, + 0, 238, 239, 240, 241, 242, 0, 0, 0, 0, + 243, 0, 0, 244, 245, 246, 0, 0, 0, 247, + 0, 248, 249, 0, 250, 251, 252, 0, 253, 254, + 0, 255, 256, 257, 258, 259, 260, 261, 0, 0, + 262, 263, 264, 265, 0, 0, 266, 267, 0, 268, + 269, 270, 0, 0, 271, 0, 0, 0, 272, 273, + 0, 274, 0, 275, 0, 276, 277, 278, 279, 280, + 281, 282, 0, 283, 0, 0, 284, 285, 286, 0, + 287, 0, 0, 0, 288, 289, 0, 0, 0, 290, + 291, 292, 293, 294, 0, 0, 0, 295, 296, 297, + 0, 0, 298, 0, 0, 0, 0, 299, 300, 0, + 0, 0, 301, 0, 302, 303, 0, 304, 305, 0, + 0, 0, 306, 0, 0, 307, 308, 309, 0, 0, + 310, 0, 0, 311, 312, 666, 0, 0, 0, 0, + 313, 314, 0, 315, 0, 316, 0, 317, 318, 0, + 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 0, 334, 335, 336, 337, 0, 338, 339, 340, 341, - 0, 342, 343, 344, 0, 0, 0, 0, 345, 346, - 347, 348, 349, 350, 0, 0, 351, 352, 0, 353, - 0, 354, 0, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 365, 0, 0, 366, 367, - 368, 369, 0, 0, 0, 370, 371, 0, 0, 0, - 372, 0, 373, 374, 375, 0, 376, 377, 378, 379, - 0, 380, 381, 0, 0, 0, 0, 0, 0, 0, - 0, 382, 383, 384, 0, 0, 385, 0, 386, 0, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 0, 0, 397, 398, 399, 0, 400, 0, 401, 402, - 403, 404, 405, 0, 406, 407, 408, 0, 0, 409, - 0, 0, 0, 410, 411, 412, 413, 414, 0, 0, - 415, 416, 417, 418, 419, 0, 420, 421, 0, 422, - 423, 424, 0, 0, 425, 0, 426, 0, 427, 428, - 0, 429, 430, 0, 431, 0, 432, 0, 0, 433, + 334, 0, 335, 336, 337, 338, 0, 339, 340, 341, + 342, 0, 343, 344, 345, 0, 0, 0, 0, 346, + 347, 348, 349, 350, 351, 0, 0, 352, 353, 0, + 354, 0, 355, 0, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 0, 0, 366, 0, 0, 367, + 368, 369, 370, 0, 0, 0, 371, 372, 0, 0, + 0, 373, 0, 374, 375, 376, 0, 377, 378, 379, + 380, 0, 381, 382, 0, 0, 0, 0, 0, 0, + 0, 0, 383, 384, 385, 0, 0, 386, 0, 387, + 0, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 0, 0, 398, 399, 400, 0, 401, 0, 402, + 403, 404, 405, 406, 0, 407, 408, 409, 0, 0, + 410, 0, 0, 0, 411, 412, 413, 414, 415, 0, + 0, 416, 417, 418, 419, 420, 0, 421, 422, 0, + 423, 424, 425, 0, 0, 426, 0, 427, 0, 428, + 429, 0, 430, 431, 0, 432, 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 0, 445, 446, 0, 0, 0, 447, 448, 449, - 450, 0, 0, 0, 451, 0, 0, 0, 452, 0, - 453, 454, 455, 456, 457, 458, 0, 459, 460, 461, - 462, 463, 464, 0, 0, 0, 0, 0, 0, 465, - 466, 0, 467, 0, 0, 468, 0, 0, 0, 469, - 470, 471, 0, 0, 0, 472, 0, 0, 473, 474, - 0, 475, 476, 477, 478, 479, 480, 0, 0, 481, - 482, 483, 484, 0, 485, 486, 0, 0, 487, 488, - 489, 490, 0, 0, 491, 492, 0, 493, 494, 495, - 496, 0, 0, 0, 0, 0, 497, 498, 499, 0, - 0, 0, 500, 501, 502, 503, 0, 504, 505, 0, - 506, 507, 0, 508, 509, 0, 0, 510, 0, 0, - 511, 0, 512, 0, 513, 514, 0, 0, 0, 0, - 0, 0, 515, 0, 0, 516, 0, 0, 0, 517, - 518, 519, 520, 521, 522, 523, 0, 0, 0, 0, - 0, 0, 524, 525, 0, 526, 527, 528, 0, 0, - 529, 0, 0, 0, 0, 159, 0, 160, 161, 162, - 163, 164, 165, 0, 0, 166, 0, 0, 0, 167, - 0, 0, 168, 3285, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 0, 178, 0, 0, 0, 179, 0, - 0, 0, 180, 0, 0, 181, 182, 183, 0, 184, - 0, 185, 186, 0, 0, 187, 0, 0, 188, 189, - 0, 190, 1008, 1009, 192, 193, 0, 194, 195, 196, - 197, 198, 199, 0, 200, 201, 202, 203, 204, 205, - 206, 0, 207, 208, 209, 210, 211, 212, 213, 214, - 0, 215, 216, 0, 217, 218, 219, 220, 221, 0, - 222, 0, 0, 223, 0, 0, 224, 0, 225, 0, - 0, 226, 0, 227, 0, 0, 0, 228, 229, 230, - 0, 0, 231, 0, 0, 0, 0, 232, 233, 0, - 0, 0, 1010, 234, 0, 235, 0, 0, 0, 0, - 236, 0, 237, 238, 239, 240, 241, 0, 0, 0, - 0, 242, 0, 0, 243, 244, 245, 0, 0, 0, - 246, 0, 247, 248, 0, 249, 250, 251, 0, 252, - 253, 0, 254, 255, 256, 257, 258, 259, 260, 0, - 0, 261, 262, 263, 264, 0, 0, 265, 266, 0, - 267, 268, 269, 0, 0, 270, 0, 0, 0, 271, - 272, 0, 273, 0, 274, 0, 275, 276, 277, 278, - 279, 280, 1011, 0, 282, 0, 0, 283, 284, 285, - 0, 286, 0, 0, 0, 287, 288, 0, 0, 0, - 289, 290, 291, 292, 293, 0, 0, 0, 294, 295, - 296, 0, 0, 297, 0, 0, 0, 0, 298, 299, - 0, 0, 0, 300, 0, 301, 302, 0, 303, 304, - 0, 0, 0, 305, 0, 0, 306, 307, 308, 0, - 0, 309, 0, 0, 310, 311, 0, 0, 0, 0, - 0, 312, 313, 0, 1012, 0, 315, 0, 316, 317, - 0, 0, 0, 0, 0, 0, 318, 319, 320, 321, + 444, 445, 0, 446, 447, 0, 0, 0, 448, 449, + 450, 451, 0, 0, 0, 452, 0, 0, 0, 453, + 0, 454, 455, 456, 457, 458, 459, 0, 460, 461, + 462, 463, 464, 465, 0, 0, 0, 0, 0, 0, + 466, 467, 0, 468, 0, 0, 469, 0, 0, 0, + 470, 471, 472, 0, 0, 0, 473, 0, 0, 474, + 475, 0, 476, 477, 478, 479, 480, 481, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 0, 0, 488, + 489, 490, 491, 0, 156, 492, 493, 0, 494, 495, + 496, 497, 0, 0, 0, 0, 0, 498, 499, 500, + 0, 0, 0, 501, 502, 503, 504, 0, 505, 506, + 0, 507, 508, 0, 509, 510, 0, 0, 511, 0, + 0, 512, 0, 513, 0, 514, 515, 0, 0, 0, + 0, 0, 0, 516, 0, 0, 517, 0, 0, 0, + 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, + 0, 0, 0, 525, 526, 0, 527, 528, 529, 0, + 0, 530, 0, 0, 0, 160, 0, 161, 162, 163, + 164, 165, 166, 0, 0, 167, 0, 0, 0, 168, + 0, 0, 169, 1894, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 0, 179, 0, 0, 0, 180, 0, + 0, 0, 181, 0, 0, 182, 183, 184, 0, 185, + 0, 186, 187, 0, 0, 188, 0, 0, 189, 190, + 0, 191, 192, 0, 193, 194, 0, 195, 196, 197, + 198, 199, 200, 0, 201, 202, 203, 204, 205, 206, + 207, 0, 208, 209, 210, 211, 212, 213, 214, 215, + 0, 216, 217, 0, 218, 219, 220, 221, 222, 0, + 223, 0, 0, 224, 0, 0, 225, 0, 226, 0, + 0, 227, 0, 228, 0, 0, 0, 229, 230, 231, + 0, 0, 232, 0, 0, 0, 0, 233, 234, 0, + 0, 0, 0, 235, 0, 236, 0, 0, 0, 0, + 237, 0, 238, 239, 240, 241, 242, 0, 0, 0, + 0, 243, 0, 0, 244, 245, 246, 0, 0, 0, + 247, 0, 248, 249, 0, 250, 251, 252, 0, 253, + 254, 0, 255, 256, 257, 258, 259, 260, 261, 0, + 0, 262, 263, 264, 265, 0, 0, 266, 267, 0, + 268, 269, 270, 0, 0, 271, 0, 0, 0, 272, + 273, 0, 274, 0, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 0, 283, 0, 0, 284, 285, 286, + 0, 287, 0, 0, 0, 288, 289, 0, 0, 0, + 290, 291, 292, 293, 294, 0, 0, 0, 295, 296, + 297, 0, 0, 298, 0, 0, 0, 0, 299, 300, + 0, 0, 0, 301, 0, 302, 303, 0, 304, 305, + 0, 0, 0, 306, 0, 0, 307, 308, 309, 0, + 0, 310, 0, 0, 311, 312, 666, 0, 0, 0, + 0, 313, 314, 0, 315, 0, 316, 0, 317, 318, + 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 0, 335, 336, 337, 338, 0, 339, 340, + 341, 342, 0, 343, 344, 345, 0, 0, 0, 0, + 346, 347, 348, 349, 350, 351, 0, 0, 352, 353, + 0, 354, 0, 355, 0, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 365, 0, 0, 366, 0, 0, + 367, 368, 369, 370, 0, 0, 0, 371, 372, 0, + 0, 0, 373, 0, 374, 375, 376, 0, 377, 378, + 379, 380, 0, 381, 382, 0, 0, 0, 0, 0, + 0, 0, 0, 383, 384, 385, 0, 0, 386, 0, + 387, 0, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 0, 0, 398, 399, 400, 0, 401, 0, + 402, 403, 404, 405, 406, 0, 407, 408, 409, 0, + 0, 410, 0, 0, 0, 411, 412, 413, 414, 415, + 0, 0, 416, 417, 418, 419, 420, 0, 421, 422, + 0, 423, 424, 425, 0, 0, 426, 0, 427, 0, + 428, 429, 0, 430, 431, 0, 432, 0, 433, 0, + 0, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 0, 446, 447, 0, 0, 0, 448, + 449, 450, 451, 0, 0, 0, 452, 0, 0, 0, + 453, 0, 454, 455, 456, 457, 458, 459, 0, 460, + 461, 462, 463, 464, 465, 0, 0, 0, 0, 0, + 0, 466, 467, 0, 468, 0, 0, 469, 0, 0, + 0, 470, 471, 472, 0, 0, 0, 473, 0, 0, + 474, 475, 0, 476, 477, 478, 479, 480, 481, 0, + 0, 482, 483, 484, 485, 0, 486, 487, 0, 0, + 488, 489, 490, 491, 0, 156, 492, 493, 0, 494, + 495, 496, 497, 0, 0, 0, 0, 0, 498, 499, + 500, 0, 0, 0, 501, 502, 503, 504, 0, 505, + 506, 0, 507, 508, 0, 509, 510, 0, 0, 511, + 0, 0, 512, 0, 513, 0, 514, 515, 0, 0, + 0, 0, 0, 0, 516, 0, 0, 517, 0, 0, + 0, 518, 519, 520, 521, 522, 523, 524, 0, 0, + 0, 0, 0, 0, 525, 526, 0, 527, 528, 529, + 0, 0, 530, 0, 0, 0, 160, 0, 161, 162, + 163, 164, 165, 166, 0, 0, 167, 0, 0, 0, + 168, 0, 0, 169, 2621, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 0, 179, 0, 0, 0, 180, + 0, 0, 0, 181, 0, 0, 182, 183, 184, 0, + 185, 0, 186, 187, 0, 0, 188, 0, 0, 189, + 190, 0, 191, 1010, 1011, 193, 194, 0, 195, 196, + 197, 198, 199, 200, 0, 201, 202, 203, 204, 205, + 206, 207, 0, 208, 209, 210, 211, 212, 213, 214, + 215, 0, 216, 217, 0, 218, 219, 220, 221, 222, + 0, 223, 0, 0, 224, 0, 0, 225, 0, 226, + 0, 0, 227, 0, 228, 0, 0, 0, 229, 230, + 231, 0, 0, 232, 0, 0, 0, 0, 233, 234, + 0, 0, 0, 1012, 235, 0, 236, 0, 0, 0, + 0, 237, 0, 238, 239, 240, 241, 242, 0, 0, + 0, 0, 243, 0, 0, 244, 245, 246, 0, 0, + 0, 247, 0, 248, 249, 0, 250, 251, 252, 0, + 253, 254, 0, 255, 256, 257, 258, 259, 260, 261, + 0, 0, 262, 263, 264, 265, 0, 0, 266, 267, + 0, 268, 269, 270, 0, 0, 271, 0, 0, 0, + 272, 273, 0, 274, 0, 275, 0, 276, 277, 278, + 279, 280, 281, 1013, 0, 283, 0, 0, 284, 285, + 286, 0, 287, 0, 0, 0, 288, 289, 0, 0, + 0, 290, 291, 292, 293, 294, 0, 0, 0, 295, + 296, 297, 0, 0, 298, 0, 0, 0, 0, 299, + 300, 0, 0, 0, 301, 0, 302, 303, 0, 304, + 305, 0, 0, 0, 306, 0, 0, 307, 308, 309, + 0, 0, 310, 0, 0, 311, 312, 0, 0, 0, + 0, 0, 313, 314, 0, 1014, 0, 316, 0, 317, + 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 0, 334, 335, 336, 337, 0, 338, 339, - 340, 341, 0, 342, 343, 344, 0, 0, 0, 0, - 345, 346, 347, 348, 349, 350, 0, 0, 351, 352, - 0, 353, 0, 354, 0, 355, 356, 357, 358, 359, - 360, 361, 1013, 363, 364, 0, 0, 365, 0, 0, - 366, 367, 368, 369, 0, 0, 0, 370, 371, 0, - 0, 0, 372, 0, 373, 374, 375, 0, 376, 377, - 378, 379, 0, 380, 381, 0, 0, 0, 0, 0, - 0, 0, 0, 382, 383, 384, 0, 0, 385, 0, - 386, 0, 387, 388, 1014, 390, 391, 392, 393, 394, - 395, 396, 0, 0, 397, 398, 399, 0, 400, 0, - 401, 402, 403, 404, 405, 0, 406, 407, 408, 0, - 0, 409, 0, 0, 0, 410, 411, 412, 413, 414, - 0, 0, 415, 416, 417, 418, 419, 0, 420, 421, - 0, 422, 423, 424, 0, 0, 425, 0, 426, 0, - 427, 428, 0, 429, 430, 0, 431, 0, 432, 0, - 0, 1015, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 0, 445, 446, 0, 0, 0, 447, - 448, 1016, 450, 0, 0, 0, 451, 0, 0, 0, - 452, 0, 453, 454, 455, 456, 457, 458, 0, 459, - 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, - 0, 465, 466, 0, 467, 0, 0, 468, 0, 0, - 0, 469, 470, 471, 0, 0, 0, 472, 0, 0, - 473, 474, 0, 475, 476, 477, 478, 479, 480, 0, - 0, 481, 482, 483, 484, 0, 485, 486, 0, 0, - 487, 488, 489, 490, 0, 0, 491, 492, 0, 493, - 494, 495, 496, 0, 0, 0, 0, 0, 1017, 498, - 499, 0, 0, 0, 500, 501, 502, 503, 0, 504, - 505, 0, 506, 507, 0, 508, 509, 0, 0, 510, - 0, 0, 511, 0, 512, 0, 513, 514, 0, 0, - 0, 0, 0, 0, 515, 0, 0, 516, 0, 0, - 0, 517, 518, 519, 520, 521, 522, 523, 0, 0, - 0, 0, 0, 0, 524, 525, 0, 526, 527, 528, - 0, 0, 529, 0, 0, 0, 159, 0, 160, 161, - 162, 163, 164, 165, 0, 0, 166, 0, 0, 0, - 167, 0, 0, 168, 1018, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 0, 178, 0, 0, 0, 179, - 0, 0, 0, 180, 0, 0, 181, 182, 183, 0, - 184, 0, 185, 186, 0, 0, 187, 0, 0, 188, - 189, 0, 190, 191, 0, 192, 193, 0, 194, 195, - 196, 197, 198, 199, 0, 200, 201, 202, 203, 204, - 205, 206, 0, 207, 208, 209, 210, 211, 212, 213, - 214, 0, 215, 216, 0, 217, 218, 219, 220, 221, - 0, 222, 0, 0, 223, 0, 0, 224, 0, 225, - 0, 0, 226, 0, 227, 0, 0, 0, 228, 229, - 230, 0, 0, 231, 0, 0, 0, 0, 232, 233, - 0, 0, 0, 0, 234, 0, 235, 0, 0, 0, - 0, 236, 0, 237, 238, 239, 240, 241, 0, 0, - 0, 0, 242, 0, 0, 243, 244, 245, 0, 0, - 0, 246, 0, 247, 248, 0, 249, 250, 251, 0, - 252, 253, 0, 254, 255, 256, 257, 258, 259, 260, - 0, 0, 261, 262, 263, 264, 0, 0, 265, 266, - 0, 267, 268, 269, 0, 0, 270, 0, 0, 0, - 271, 272, 0, 273, 0, 274, 0, 275, 276, 277, - 278, 279, 280, 281, 0, 282, 0, 0, 283, 284, - 285, 0, 286, 0, 0, 0, 287, 288, 0, 0, - 0, 289, 290, 291, 292, 293, 0, 0, 0, 294, - 295, 296, 0, 0, 297, 0, 0, 0, 0, 298, - 299, 0, 0, 0, 300, 0, 301, 302, 0, 303, - 304, 0, 0, 0, 305, 0, 0, 306, 307, 308, - 0, 0, 309, 0, 0, 310, 311, 665, 0, 0, - 0, 0, 312, 313, 0, 314, 0, 315, 0, 316, - 317, 0, 0, 0, 0, 0, 0, 318, 319, 320, + 332, 333, 334, 0, 335, 336, 337, 338, 0, 339, + 340, 341, 342, 0, 343, 344, 345, 0, 0, 0, + 0, 346, 347, 348, 349, 350, 351, 0, 0, 352, + 353, 0, 354, 0, 355, 0, 356, 357, 358, 359, + 360, 361, 362, 1015, 364, 365, 0, 0, 366, 0, + 0, 367, 368, 369, 370, 0, 0, 0, 371, 372, + 0, 0, 0, 373, 0, 374, 375, 376, 0, 377, + 378, 379, 380, 0, 381, 382, 0, 0, 0, 0, + 0, 0, 0, 0, 383, 384, 385, 0, 0, 386, + 0, 387, 0, 388, 389, 1016, 391, 392, 393, 394, + 395, 396, 397, 0, 0, 398, 399, 400, 0, 401, + 0, 402, 403, 404, 405, 406, 0, 407, 408, 409, + 0, 0, 410, 0, 0, 0, 411, 412, 413, 414, + 415, 0, 0, 416, 417, 418, 419, 420, 0, 421, + 422, 0, 423, 424, 425, 0, 0, 426, 0, 427, + 0, 428, 429, 0, 430, 431, 0, 432, 0, 433, + 0, 0, 1017, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 0, 446, 447, 0, 0, 0, + 448, 449, 1018, 451, 0, 0, 0, 452, 0, 0, + 0, 453, 0, 454, 455, 456, 457, 458, 459, 0, + 460, 461, 462, 463, 464, 465, 0, 0, 0, 0, + 0, 0, 466, 467, 0, 468, 0, 0, 469, 0, + 0, 0, 470, 471, 472, 0, 0, 0, 473, 0, + 0, 474, 475, 0, 476, 477, 478, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 0, + 0, 488, 489, 490, 491, 0, 0, 492, 493, 0, + 494, 495, 496, 497, 0, 0, 0, 0, 0, 498, + 499, 500, 0, 0, 0, 501, 502, 503, 504, 0, + 505, 506, 0, 507, 508, 0, 509, 510, 0, 0, + 511, 0, 0, 512, 0, 513, 0, 514, 515, 0, + 0, 0, 0, 0, 0, 516, 0, 0, 517, 0, + 0, 0, 518, 519, 520, 521, 522, 523, 524, 0, + 0, 0, 0, 0, 0, 525, 526, 0, 527, 528, + 529, 0, 0, 530, 0, 0, 0, 160, 0, 161, + 162, 163, 164, 165, 166, 0, 0, 167, 0, 0, + 0, 168, 0, 0, 169, 1020, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 0, 179, 0, 0, 0, + 180, 0, 0, 0, 181, 0, 0, 182, 183, 184, + 0, 185, 0, 186, 187, 0, 0, 188, 0, 0, + 189, 190, 0, 191, 192, 0, 193, 194, 0, 195, + 196, 197, 198, 199, 200, 0, 201, 202, 203, 204, + 205, 206, 207, 0, 208, 209, 210, 211, 212, 213, + 214, 215, 1382, 216, 217, 0, 218, 219, 220, 221, + 222, 0, 223, 0, 0, 224, 0, 0, 225, 0, + 226, 0, 0, 227, 0, 228, 0, 0, 0, 229, + 230, 231, 0, 0, 232, 0, 0, 0, 0, 233, + 234, 0, 0, 0, 0, 235, 0, 236, 0, 0, + 0, 0, 237, 0, 238, 239, 240, 241, 242, 0, + 0, 0, 0, 243, 0, 0, 244, 245, 246, 0, + 0, 0, 247, 0, 248, 249, 0, 250, 251, 252, + 0, 253, 254, 0, 255, 256, 257, 258, 259, 260, + 261, 0, 0, 262, 263, 264, 265, 0, 0, 266, + 267, 0, 268, 269, 270, 0, 0, 271, 0, 0, + 0, 272, 273, 0, 274, 0, 275, 0, 276, 277, + 278, 279, 280, 281, 282, 0, 283, 0, 0, 284, + 285, 286, 0, 287, 0, 0, 0, 288, 289, 0, + 0, 0, 290, 291, 292, 293, 294, 0, 0, 0, + 295, 296, 297, 0, 0, 298, 0, 0, 0, 0, + 299, 300, 0, 0, 0, 301, 0, 302, 303, 0, + 304, 305, 0, 0, 0, 306, 0, 0, 307, 308, + 309, 0, 0, 310, 0, 0, 311, 312, 0, 0, + 0, 0, 0, 313, 314, 0, 315, 0, 316, 0, + 317, 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 0, 334, 335, 336, 337, 0, 338, - 339, 340, 341, 0, 342, 343, 344, 0, 0, 0, - 0, 345, 346, 347, 348, 349, 350, 0, 0, 351, - 352, 0, 353, 0, 354, 0, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 0, 0, 365, 0, - 0, 366, 367, 368, 369, 0, 0, 0, 370, 371, - 0, 0, 0, 372, 0, 373, 374, 375, 0, 376, - 377, 378, 379, 0, 380, 381, 0, 0, 0, 0, - 0, 0, 0, 0, 382, 383, 384, 0, 0, 385, - 0, 386, 0, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 0, 0, 397, 398, 399, 0, 400, - 0, 401, 402, 403, 404, 405, 0, 406, 407, 408, - 0, 0, 409, 0, 0, 0, 410, 411, 412, 413, - 414, 0, 0, 415, 416, 417, 418, 419, 0, 420, - 421, 0, 422, 423, 424, 0, 0, 425, 0, 426, - 0, 427, 428, 0, 429, 430, 0, 431, 0, 432, - 0, 0, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 0, 445, 446, 0, 0, 0, - 447, 448, 449, 450, 0, 0, 0, 451, 0, 0, - 0, 452, 0, 453, 454, 455, 456, 457, 458, 0, - 459, 460, 461, 462, 463, 464, 0, 0, 0, 0, - 0, 0, 465, 466, 0, 467, 0, 0, 468, 0, - 0, 0, 469, 470, 471, 0, 0, 0, 472, 0, - 0, 473, 474, 0, 475, 476, 477, 478, 479, 480, - 0, 0, 481, 482, 483, 484, 0, 485, 486, 0, - 0, 487, 488, 489, 490, 0, 156, 491, 492, 0, - 493, 494, 495, 496, 0, 0, 0, 0, 0, 497, - 498, 499, 0, 0, 0, 500, 501, 502, 503, 0, - 504, 505, 0, 506, 507, 0, 508, 509, 0, 0, - 510, 0, 0, 511, 0, 512, 0, 513, 514, 0, - 0, 0, 0, 0, 0, 515, 0, 0, 516, 0, - 0, 0, 517, 518, 519, 520, 521, 522, 523, 0, - 0, 0, 0, 0, 0, 524, 525, 0, 526, 527, - 528, 0, 0, 529, 0, 0, 0, 159, 0, 160, - 161, 162, 163, 164, 165, 0, 0, 166, 0, 0, - 0, 167, 0, 0, 168, 1539, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 0, 178, 0, 0, 0, - 179, 0, 0, 0, 180, 0, 0, 181, 182, 183, - 0, 184, 0, 185, 186, 0, 0, 187, 0, 0, - 188, 189, 0, 190, 191, 0, 192, 193, 0, 194, - 195, 196, 197, 198, 199, 0, 200, 201, 202, 203, - 204, 205, 206, 0, 207, 208, 209, 210, 211, 212, - 213, 214, 0, 215, 216, 0, 217, 218, 219, 220, - 221, 0, 222, 0, 0, 223, 0, 0, 224, 0, - 225, 0, 0, 226, 0, 227, 0, 0, 0, 228, - 229, 230, 0, 0, 231, 0, 0, 0, 0, 232, - 233, 0, 0, 0, 0, 234, 0, 235, 0, 0, - 0, 0, 236, 0, 237, 238, 239, 240, 241, 0, - 0, 0, 0, 242, 0, 0, 243, 244, 245, 0, - 0, 0, 246, 0, 247, 248, 0, 249, 250, 251, - 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, - 260, 0, 0, 261, 262, 263, 264, 0, 0, 265, - 266, 0, 267, 268, 269, 0, 0, 270, 0, 0, - 0, 271, 272, 0, 273, 0, 274, 0, 275, 276, - 277, 278, 279, 280, 281, 0, 282, 0, 0, 283, - 284, 285, 0, 286, 0, 0, 0, 287, 288, 0, - 0, 0, 289, 290, 291, 292, 293, 0, 0, 0, - 294, 295, 296, 0, 0, 297, 0, 0, 0, 0, - 298, 299, 0, 0, 0, 300, 0, 301, 302, 0, - 303, 304, 0, 0, 0, 305, 0, 0, 306, 307, - 308, 0, 0, 309, 0, 0, 310, 311, 665, 0, - 0, 0, 0, 312, 313, 0, 314, 0, 315, 0, - 316, 317, 0, 0, 0, 0, 0, 0, 318, 319, + 331, 332, 333, 334, 0, 335, 336, 337, 338, 0, + 339, 340, 341, 342, 0, 343, 344, 345, 0, 0, + 0, 0, 346, 347, 348, 349, 350, 351, 0, 0, + 352, 353, 0, 354, 0, 355, 0, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 0, 0, 366, + 0, 0, 367, 368, 369, 370, 0, 0, 0, 371, + 372, 0, 0, 0, 373, 0, 374, 375, 376, 0, + 377, 378, 379, 380, 0, 381, 382, 0, 0, 0, + 0, 0, 0, 0, 0, 383, 384, 385, 0, 0, + 386, 0, 387, 0, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 0, 0, 398, 399, 400, 0, + 401, 0, 402, 403, 404, 405, 406, 0, 407, 408, + 409, 0, 0, 410, 0, 0, 0, 411, 412, 413, + 414, 415, 0, 0, 416, 417, 418, 419, 420, 0, + 421, 422, 0, 423, 424, 425, 0, 0, 426, 0, + 427, 0, 428, 429, 0, 430, 431, 0, 432, 0, + 433, 0, 0, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 0, 446, 447, 0, 0, + 0, 448, 449, 450, 451, 0, 0, 0, 452, 0, + 0, 0, 453, 0, 454, 455, 456, 457, 458, 459, + 0, 460, 461, 462, 463, 464, 465, 0, 0, 0, + 0, 0, 0, 466, 467, 0, 468, 0, 0, 469, + 0, 0, 0, 470, 471, 472, 0, 0, 0, 473, + 0, 0, 474, 475, 0, 476, 477, 478, 479, 480, + 481, 0, 0, 482, 483, 484, 485, 0, 486, 487, + 0, 0, 488, 489, 490, 491, 0, 0, 492, 493, + 0, 494, 495, 496, 497, 0, 0, 0, 0, 0, + 498, 499, 500, 0, 0, 0, 501, 502, 503, 504, + 0, 505, 506, 0, 507, 508, 0, 509, 510, 0, + 0, 511, 0, 0, 512, 0, 513, 0, 514, 515, + 0, 0, 0, 0, 0, 0, 516, 0, 0, 517, + 0, 0, 0, 518, 519, 520, 521, 522, 523, 524, + 0, 0, 0, 0, 0, 0, 525, 526, 0, 527, + 528, 529, 0, 0, 530, 0, 0, 0, 160, 0, + 161, 162, 163, 164, 165, 166, 0, 0, 167, 0, + 0, 0, 168, 0, 0, 169, 1383, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 0, 179, 0, 0, + 0, 180, 0, 0, 0, 181, 0, 0, 182, 183, + 184, 0, 185, 0, 186, 187, 0, 0, 188, 0, + 0, 189, 190, 0, 191, 192, 0, 193, 194, 0, + 195, 196, 197, 198, 199, 200, 0, 201, 202, 203, + 204, 205, 206, 207, 0, 208, 209, 210, 211, 212, + 213, 214, 215, 0, 216, 217, 0, 218, 219, 220, + 221, 222, 0, 223, 0, 0, 224, 0, 0, 225, + 0, 226, 0, 0, 227, 0, 228, 0, 0, 0, + 229, 230, 231, 0, 0, 232, 0, 0, 0, 0, + 233, 234, 0, 0, 0, 0, 235, 0, 236, 0, + 0, 0, 0, 237, 0, 238, 239, 240, 241, 242, + 0, 0, 0, 0, 243, 0, 0, 244, 245, 246, + 0, 0, 0, 247, 0, 248, 249, 0, 250, 251, + 252, 0, 253, 254, 0, 255, 256, 257, 258, 259, + 260, 261, 0, 0, 262, 263, 264, 265, 0, 0, + 266, 267, 0, 268, 269, 270, 0, 0, 271, 0, + 0, 0, 272, 273, 0, 274, 0, 275, 0, 276, + 277, 278, 279, 280, 281, 282, 0, 283, 0, 0, + 284, 285, 286, 0, 287, 0, 0, 0, 288, 289, + 0, 0, 0, 290, 291, 292, 293, 294, 0, 0, + 0, 295, 296, 297, 0, 0, 298, 0, 0, 0, + 0, 299, 300, 0, 0, 0, 301, 0, 302, 303, + 0, 304, 305, 0, 0, 0, 306, 0, 0, 307, + 308, 309, 0, 0, 310, 0, 0, 311, 312, 0, + 0, 0, 0, 0, 313, 314, 0, 315, 0, 316, + 0, 317, 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 0, 334, 335, 336, 337, 0, - 338, 339, 340, 341, 0, 342, 343, 344, 0, 0, - 0, 0, 345, 346, 347, 348, 349, 350, 0, 0, - 351, 352, 0, 353, 0, 354, 0, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 365, - 0, 0, 366, 367, 368, 369, 0, 0, 0, 370, - 371, 0, 0, 0, 372, 0, 373, 374, 375, 0, - 376, 377, 378, 379, 0, 380, 381, 0, 0, 0, - 0, 0, 0, 0, 0, 382, 383, 384, 0, 0, - 385, 0, 386, 0, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 0, 0, 397, 398, 399, 0, - 400, 0, 401, 402, 403, 404, 405, 0, 406, 407, - 408, 0, 0, 409, 0, 0, 0, 410, 411, 412, - 413, 414, 0, 0, 415, 416, 417, 418, 419, 0, - 420, 421, 0, 422, 423, 424, 0, 0, 425, 0, - 426, 0, 427, 428, 0, 429, 430, 0, 431, 0, - 432, 0, 0, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 0, 445, 446, 0, 0, - 0, 447, 448, 449, 450, 0, 0, 0, 451, 0, - 0, 0, 452, 0, 453, 454, 455, 456, 457, 458, - 0, 459, 460, 461, 462, 463, 464, 0, 0, 0, - 0, 0, 0, 465, 466, 0, 467, 0, 0, 468, - 0, 0, 0, 469, 470, 471, 0, 0, 0, 472, - 0, 0, 473, 474, 0, 475, 476, 477, 478, 479, - 480, 0, 0, 481, 482, 483, 484, 0, 485, 486, - 0, 0, 487, 488, 489, 490, 0, 156, 491, 492, - 0, 493, 494, 495, 496, 0, 0, 0, 0, 0, - 497, 498, 499, 0, 0, 0, 500, 501, 502, 503, - 0, 504, 505, 0, 506, 507, 0, 508, 509, 0, - 0, 510, 0, 0, 511, 0, 512, 0, 513, 514, - 0, 0, 0, 0, 0, 0, 515, 0, 0, 516, - 0, 0, 0, 517, 518, 519, 520, 521, 522, 523, - 0, 0, 0, 0, 0, 0, 524, 525, 0, 526, - 527, 528, 0, 0, 529, 0, 0, 0, 159, 0, - 160, 161, 162, 163, 164, 165, 0, 0, 166, 0, - 0, 0, 167, 0, 0, 168, 1890, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 0, 178, 0, 0, - 0, 179, 0, 0, 0, 180, 0, 0, 181, 182, - 183, 0, 184, 0, 185, 186, 0, 0, 187, 0, - 0, 188, 189, 0, 190, 191, 0, 192, 193, 0, - 194, 195, 196, 197, 198, 199, 0, 200, 201, 202, - 203, 204, 205, 206, 0, 207, 208, 209, 210, 211, - 212, 213, 214, 0, 215, 216, 0, 217, 218, 219, - 220, 221, 0, 222, 0, 0, 223, 0, 0, 224, - 0, 225, 0, 0, 226, 0, 227, 0, 0, 0, - 228, 229, 230, 0, 0, 231, 0, 0, 0, 0, - 232, 233, 0, 0, 0, 0, 234, 0, 235, 0, - 0, 0, 0, 236, 0, 237, 238, 239, 240, 241, - 0, 0, 0, 0, 242, 0, 0, 243, 244, 245, - 0, 0, 0, 246, 0, 247, 248, 0, 249, 250, - 251, 0, 252, 253, 0, 254, 255, 256, 257, 258, - 259, 260, 0, 0, 261, 262, 263, 264, 0, 0, - 265, 266, 0, 267, 268, 269, 0, 0, 270, 0, - 0, 0, 271, 272, 0, 273, 0, 274, 0, 275, - 276, 277, 278, 279, 280, 281, 0, 282, 0, 0, - 283, 284, 285, 0, 286, 0, 0, 0, 287, 288, - 0, 0, 0, 289, 290, 291, 292, 293, 0, 0, - 0, 294, 295, 296, 0, 0, 297, 0, 0, 0, - 0, 298, 299, 0, 0, 0, 300, 0, 301, 302, - 0, 303, 304, 0, 0, 0, 305, 0, 0, 306, - 307, 308, 0, 0, 309, 0, 0, 310, 311, 665, - 0, 0, 0, 0, 312, 313, 0, 314, 0, 315, - 0, 316, 317, 0, 0, 0, 0, 0, 0, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 0, 334, 335, 336, 337, - 0, 338, 339, 340, 341, 0, 342, 343, 344, 0, - 0, 0, 0, 345, 346, 347, 348, 349, 350, 0, - 0, 351, 352, 0, 353, 0, 354, 0, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, - 365, 0, 0, 366, 367, 368, 369, 0, 0, 0, - 370, 371, 0, 0, 0, 372, 0, 373, 374, 375, - 0, 376, 377, 378, 379, 0, 380, 381, 0, 0, - 0, 0, 0, 0, 0, 0, 382, 383, 384, 0, - 0, 385, 0, 386, 0, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 0, 0, 397, 398, 399, - 0, 400, 0, 401, 402, 403, 404, 405, 0, 406, - 407, 408, 0, 0, 409, 0, 0, 0, 410, 411, - 412, 413, 414, 0, 0, 415, 416, 417, 418, 419, - 0, 420, 421, 0, 422, 423, 424, 0, 0, 425, - 0, 426, 0, 427, 428, 0, 429, 430, 0, 431, - 0, 432, 0, 0, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 0, 445, 446, 0, - 0, 0, 447, 448, 449, 450, 0, 0, 0, 451, - 0, 0, 0, 452, 0, 453, 454, 455, 456, 457, - 458, 0, 459, 460, 461, 462, 463, 464, 0, 0, - 0, 0, 0, 0, 465, 466, 0, 467, 0, 0, - 468, 0, 0, 0, 469, 470, 471, 0, 0, 0, - 472, 0, 0, 473, 474, 0, 475, 476, 477, 478, - 479, 480, 0, 0, 481, 482, 483, 484, 0, 485, - 486, 0, 0, 487, 488, 489, 490, 0, 156, 491, - 492, 0, 493, 494, 495, 496, 0, 0, 0, 0, - 0, 497, 498, 499, 0, 0, 0, 500, 501, 502, - 503, 0, 504, 505, 0, 506, 507, 0, 508, 509, - 0, 0, 510, 0, 0, 511, 0, 512, 0, 513, - 514, 0, 0, 0, 0, 0, 0, 515, 0, 0, - 516, 0, 0, 0, 517, 518, 519, 520, 521, 522, - 523, 0, 0, 0, 0, 0, 0, 524, 525, 0, - 526, 527, 528, 0, 0, 529, 0, 0, 0, 159, - 0, 160, 161, 162, 163, 164, 165, 0, 0, 166, - 0, 0, 0, 167, 0, 0, 168, 2616, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 0, 178, 0, - 0, 0, 179, 0, 0, 0, 180, 0, 0, 181, - 182, 183, 0, 184, 0, 185, 186, 0, 0, 187, - 0, 0, 188, 189, 0, 190, 1008, 1009, 192, 193, - 0, 194, 195, 196, 197, 198, 199, 0, 200, 201, - 202, 203, 204, 205, 206, 0, 207, 208, 209, 210, - 211, 212, 213, 214, 0, 215, 216, 0, 217, 218, - 219, 220, 221, 0, 222, 0, 0, 223, 0, 0, - 224, 0, 225, 0, 0, 226, 0, 227, 0, 0, - 0, 228, 229, 230, 0, 0, 231, 0, 0, 0, - 0, 232, 233, 0, 0, 0, 1010, 234, 0, 235, - 0, 0, 0, 0, 236, 0, 237, 238, 239, 240, - 241, 0, 0, 0, 0, 242, 0, 0, 243, 244, - 245, 0, 0, 0, 246, 0, 247, 248, 0, 249, - 250, 251, 0, 252, 253, 0, 254, 255, 256, 257, - 258, 259, 260, 0, 0, 261, 262, 263, 264, 0, - 0, 265, 266, 0, 267, 268, 269, 0, 0, 270, - 0, 0, 0, 271, 272, 0, 273, 0, 274, 0, - 275, 276, 277, 278, 279, 280, 1011, 0, 282, 0, - 0, 283, 284, 285, 0, 286, 0, 0, 0, 287, - 288, 0, 0, 0, 289, 290, 291, 292, 293, 0, - 0, 0, 294, 295, 296, 0, 0, 297, 0, 0, - 0, 0, 298, 299, 0, 0, 0, 300, 0, 301, - 302, 0, 303, 304, 0, 0, 0, 305, 0, 0, - 306, 307, 308, 0, 0, 309, 0, 0, 310, 311, - 0, 0, 0, 0, 0, 312, 313, 0, 1012, 0, - 315, 0, 316, 317, 0, 0, 0, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 0, 334, 335, 336, - 337, 0, 338, 339, 340, 341, 0, 342, 343, 344, - 0, 0, 0, 0, 345, 346, 347, 348, 349, 350, - 0, 0, 351, 352, 0, 353, 0, 354, 0, 355, - 356, 357, 358, 359, 360, 361, 1013, 363, 364, 0, - 0, 365, 0, 0, 366, 367, 368, 369, 0, 0, - 0, 370, 371, 0, 0, 0, 372, 0, 373, 374, - 375, 0, 376, 377, 378, 379, 0, 380, 381, 0, - 0, 0, 0, 0, 0, 0, 0, 382, 383, 384, - 0, 0, 385, 0, 386, 0, 387, 388, 1014, 390, - 391, 392, 393, 394, 395, 396, 0, 0, 397, 398, - 399, 0, 400, 0, 401, 402, 403, 404, 405, 0, - 406, 407, 408, 0, 0, 409, 0, 0, 0, 410, - 411, 412, 413, 414, 0, 0, 415, 416, 417, 418, - 419, 0, 420, 421, 0, 422, 423, 424, 0, 0, - 425, 0, 426, 0, 427, 428, 0, 429, 430, 0, - 431, 0, 432, 0, 0, 1015, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 0, 445, 446, - 0, 0, 0, 447, 448, 1016, 450, 0, 0, 0, - 451, 0, 0, 0, 452, 0, 453, 454, 455, 456, - 457, 458, 0, 459, 460, 461, 462, 463, 464, 0, - 0, 0, 0, 0, 0, 465, 466, 0, 467, 0, - 0, 468, 0, 0, 0, 469, 470, 471, 0, 0, - 0, 472, 0, 0, 473, 474, 0, 475, 476, 477, - 478, 479, 480, 0, 0, 481, 482, 483, 484, 0, - 485, 486, 0, 0, 487, 488, 489, 490, 0, 0, - 491, 492, 0, 493, 494, 495, 496, 0, 0, 0, - 0, 0, 497, 498, 499, 0, 0, 0, 500, 501, - 502, 503, 0, 504, 505, 0, 506, 507, 0, 508, - 509, 0, 0, 510, 0, 0, 511, 0, 512, 0, - 513, 514, 0, 0, 0, 0, 0, 0, 515, 0, - 0, 516, 0, 0, 0, 517, 518, 519, 520, 521, - 522, 523, 0, 0, 0, 0, 0, 0, 524, 525, - 0, 526, 527, 528, 0, 0, 529, 0, 0, 0, - 159, 0, 160, 161, 162, 163, 164, 165, 0, 0, - 166, 0, 0, 0, 167, 0, 0, 168, 1018, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 0, 178, - 0, 0, 0, 179, 0, 0, 0, 180, 0, 0, - 181, 182, 183, 0, 184, 0, 185, 186, 0, 0, - 187, 0, 0, 188, 189, 0, 190, 191, 0, 192, - 193, 0, 194, 195, 196, 197, 198, 199, 0, 200, - 201, 202, 203, 204, 205, 206, 0, 207, 208, 209, - 210, 211, 212, 213, 214, 1379, 215, 216, 0, 217, - 218, 219, 220, 221, 0, 222, 0, 0, 223, 0, - 0, 224, 0, 225, 0, 0, 226, 0, 227, 0, - 0, 0, 228, 229, 230, 0, 0, 231, 0, 0, - 0, 0, 232, 233, 0, 0, 0, 0, 234, 0, - 235, 0, 0, 0, 0, 236, 0, 237, 238, 239, - 240, 241, 0, 0, 0, 0, 242, 0, 0, 243, - 244, 245, 0, 0, 0, 246, 0, 247, 248, 0, - 249, 250, 251, 0, 252, 253, 0, 254, 255, 256, - 257, 258, 259, 260, 0, 0, 261, 262, 263, 264, - 0, 0, 265, 266, 0, 267, 268, 269, 0, 0, - 270, 0, 0, 0, 271, 272, 0, 273, 0, 274, - 0, 275, 276, 277, 278, 279, 280, 281, 0, 282, - 0, 0, 283, 284, 285, 0, 286, 0, 0, 0, - 287, 288, 0, 0, 0, 289, 290, 291, 292, 293, - 0, 0, 0, 294, 295, 296, 0, 0, 297, 0, - 0, 0, 0, 298, 299, 0, 0, 0, 300, 0, - 301, 302, 0, 303, 304, 0, 0, 0, 305, 0, - 0, 306, 307, 308, 0, 0, 309, 0, 0, 310, - 311, 0, 0, 0, 0, 0, 312, 313, 0, 314, - 0, 315, 0, 316, 317, 0, 0, 0, 0, 0, - 0, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 0, 334, 335, - 336, 337, 0, 338, 339, 340, 341, 0, 342, 343, - 344, 0, 0, 0, 0, 345, 346, 347, 348, 349, - 350, 0, 0, 351, 352, 0, 353, 0, 354, 0, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 0, 0, 365, 0, 0, 366, 367, 368, 369, 0, - 0, 0, 370, 371, 0, 0, 0, 372, 0, 373, - 374, 375, 0, 376, 377, 378, 379, 0, 380, 381, - 0, 0, 0, 0, 0, 0, 0, 0, 382, 383, - 384, 0, 0, 385, 0, 386, 0, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 0, 0, 397, - 398, 399, 0, 400, 0, 401, 402, 403, 404, 405, - 0, 406, 407, 408, 0, 0, 409, 0, 0, 0, - 410, 411, 412, 413, 414, 0, 0, 415, 416, 417, - 418, 419, 0, 420, 421, 0, 422, 423, 424, 0, - 0, 425, 0, 426, 0, 427, 428, 0, 429, 430, - 0, 431, 0, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 0, 445, - 446, 0, 0, 0, 447, 448, 449, 450, 0, 0, - 0, 451, 0, 0, 0, 452, 0, 453, 454, 455, - 456, 457, 458, 0, 459, 460, 461, 462, 463, 464, - 0, 0, 0, 0, 0, 0, 465, 466, 0, 467, - 0, 0, 468, 0, 0, 0, 469, 470, 471, 0, - 0, 0, 472, 0, 0, 473, 474, 0, 475, 476, - 477, 478, 479, 480, 0, 0, 481, 482, 483, 484, - 0, 485, 486, 0, 0, 487, 488, 489, 490, 0, - 0, 491, 492, 0, 493, 494, 495, 496, 0, 0, - 0, 0, 0, 497, 498, 499, 0, 0, 0, 500, - 501, 502, 503, 0, 504, 505, 0, 506, 507, 0, - 508, 509, 0, 0, 510, 0, 0, 511, 0, 512, - 0, 513, 514, 0, 0, 0, 0, 0, 0, 515, - 0, 0, 516, 0, 0, 0, 517, 518, 519, 520, - 521, 522, 523, 0, 0, 0, 0, 0, 0, 524, - 525, 0, 526, 527, 528, 0, 0, 529, 0, 0, - 0, 159, 0, 160, 161, 162, 163, 164, 165, 0, - 0, 166, 0, 0, 0, 167, 0, 0, 168, 1380, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 0, - 178, 0, 0, 0, 179, 0, 0, 0, 180, 0, - 0, 181, 182, 183, 0, 184, 0, 185, 186, 0, - 0, 187, 0, 0, 188, 189, 0, 190, 191, 0, - 192, 193, 0, 194, 195, 196, 197, 198, 199, 0, - 200, 201, 202, 203, 204, 205, 206, 0, 207, 208, - 209, 210, 211, 212, 213, 214, 0, 215, 216, 0, - 217, 218, 219, 220, 221, 0, 222, 0, 0, 223, - 0, 0, 224, 0, 225, 0, 0, 226, 0, 227, - 0, 0, 0, 228, 229, 230, 0, 0, 231, 0, - 0, 0, 0, 232, 233, 0, 0, 0, 0, 234, - 0, 235, 0, 0, 0, 0, 236, 0, 237, 238, - 239, 240, 241, 0, 0, 0, 0, 242, 0, 0, - 243, 244, 245, 0, 0, 0, 246, 0, 247, 248, - 0, 249, 250, 251, 0, 252, 253, 0, 254, 255, - 256, 257, 258, 259, 260, 0, 0, 261, 262, 263, - 264, 0, 0, 265, 266, 0, 267, 268, 269, 0, - 0, 270, 0, 0, 0, 271, 272, 0, 273, 0, - 274, 0, 275, 276, 277, 278, 279, 280, 281, 0, - 282, 0, 0, 283, 284, 285, 0, 286, 0, 0, - 0, 287, 288, 0, 0, 0, 289, 290, 291, 292, - 293, 0, 0, 0, 294, 295, 296, 0, 0, 297, - 0, 0, 0, 0, 298, 299, 0, 0, 0, 300, - 0, 301, 302, 0, 303, 304, 0, 0, 0, 305, - 0, 0, 306, 307, 308, 0, 0, 309, 0, 0, - 310, 311, 0, 0, 0, 0, 0, 312, 313, 0, - 314, 0, 315, 0, 316, 317, 0, 0, 0, 0, - 0, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, - 335, 336, 337, 0, 338, 339, 340, 341, 0, 342, - 343, 344, 0, 0, 0, 0, 345, 346, 347, 348, - 349, 350, 0, 0, 351, 352, 0, 353, 0, 354, - 0, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 365, 0, 0, 366, 367, 368, 369, - 0, 0, 0, 370, 371, 0, 0, 0, 372, 0, - 373, 374, 375, 0, 376, 377, 378, 379, 0, 380, - 381, 0, 0, 0, 0, 0, 0, 0, 0, 382, - 383, 384, 0, 0, 385, 0, 386, 0, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 0, 0, - 397, 398, 399, 0, 400, 0, 401, 402, 403, 404, - 405, 0, 406, 407, 408, 0, 0, 409, 0, 0, - 0, 410, 411, 412, 413, 414, 0, 0, 415, 416, - 417, 418, 419, 0, 420, 421, 0, 422, 423, 424, - 0, 0, 425, 0, 426, 0, 427, 428, 0, 429, - 430, 0, 431, 0, 432, 0, 0, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 0, - 445, 446, 0, 0, 0, 447, 448, 449, 450, 0, - 0, 0, 451, 0, 0, 0, 452, 0, 453, 454, - 455, 456, 457, 458, 0, 459, 460, 461, 462, 463, - 464, 0, 0, 0, 0, 0, 0, 465, 466, 0, - 467, 0, 0, 468, 0, 0, 0, 469, 470, 471, - 0, 0, 0, 472, 0, 0, 473, 474, 0, 475, - 476, 477, 478, 479, 480, 0, 0, 481, 482, 483, - 484, 0, 485, 486, 0, 0, 487, 488, 489, 490, - 0, 0, 491, 492, 0, 493, 494, 495, 496, 0, - 0, 0, 0, 0, 497, 498, 499, 0, 0, 0, - 500, 501, 502, 503, 0, 504, 505, 0, 506, 507, - 0, 508, 509, 0, 0, 510, 0, 0, 511, 0, - 512, 0, 513, 514, 0, 0, 0, 0, 0, 0, - 515, 0, 0, 516, 0, 0, 0, 517, 518, 519, - 520, 521, 522, 523, 0, 0, 0, 0, 0, 0, - 524, 525, 0, 526, 527, 528, 0, 0, 529, 0, - 0, 0, 159, 0, 160, 161, 162, 163, 164, 165, - 0, 0, 166, 0, 0, 0, 167, 0, 0, 0, - 1380, 169, 170, 171, 172, 173, 174, 175, 176, 0, - 0, 923, 0, 0, 0, 179, 0, 0, 0, 180, - 0, 0, 181, 182, 183, 0, 184, 0, 0, 0, - 0, 0, 187, 7, 0, 188, 189, 0, 190, 0, - 0, 0, 0, 0, 194, 195, 196, 924, 198, 199, - 0, 200, 201, 0, 0, 0, 0, 0, 0, 207, - 0, 209, 0, 211, 212, 213, 214, 0, 215, 216, - 0, 217, 218, 219, 0, 221, 0, 222, 0, 0, - 223, 0, 0, 224, 0, 225, 0, 0, 226, 0, - 227, 0, 0, 0, 228, 229, 230, 0, 0, 231, - 0, 0, 0, 0, 232, 0, 0, 0, 0, 0, - 234, 0, 235, 0, 0, 0, 0, 236, 0, 237, - 238, 239, 240, 241, 0, 0, 0, 0, 0, 0, - 0, 243, 244, 245, 0, 0, 0, 246, 0, 0, - 248, 0, 249, 250, 251, 0, 252, 253, 0, 254, - 255, 256, 257, 258, 0, 0, 0, 0, 261, 262, - 263, 264, 0, 0, 265, 266, 925, 267, 268, 269, - 0, 0, 0, 0, 0, 0, 0, 272, 0, 273, - 0, 274, 0, 275, 276, 277, 278, 279, 0, 281, - 0, 282, 0, 0, 0, 284, 285, 0, 0, 0, - 0, 0, 0, 288, 0, 0, 0, 289, 290, 291, - 292, 293, 26, 0, 0, 294, 295, 296, 0, 0, - 297, 0, 0, 0, 0, 298, 0, 0, 0, 0, - 300, 0, 301, 302, 0, 303, 304, 926, 0, 0, - 305, 0, 0, 0, 307, 308, 0, 0, 309, 927, - 0, 310, 311, 0, 0, 0, 0, 0, 312, 313, - 0, 314, 0, 315, 0, 316, 317, 0, 0, 0, - 0, 32, 0, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, - 334, 335, 336, 337, 0, 338, 339, 340, 341, 0, - 342, 343, 344, 0, 0, 0, 0, 345, 346, 347, - 348, 349, 350, 0, 0, 351, 352, 0, 353, 0, - 354, 0, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 0, 0, 365, 0, 0, 366, 367, 368, - 369, 0, 0, 0, 0, 371, 0, 0, 0, 372, - 0, 373, 374, 375, 0, 376, 377, 378, 928, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 383, 384, 0, 0, 0, 0, 386, 0, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 0, 0, - 0, 0, 398, 399, 0, 400, 0, 401, 402, 403, - 404, 405, 0, 406, 407, 408, 0, 0, 409, 0, - 0, 0, 410, 411, 412, 413, 414, 0, 0, 415, - 416, 417, 418, 419, 0, 420, 0, 0, 422, 0, - 424, 41, 0, 425, 0, 0, 0, 427, 0, 0, - 429, 430, 0, 431, 929, 432, 0, 0, 433, 0, - 435, 436, 437, 438, 439, 440, 441, 0, 443, 444, - 0, 445, 0, 0, 0, 0, 447, 448, 449, 0, - 0, 0, 0, 451, 0, 0, 0, 0, 0, 0, - 454, 0, 0, 457, 458, 0, 459, 0, 461, 0, - 463, 464, 0, 0, 0, 0, 0, 0, 465, 466, - 0, 467, 0, 0, 468, 0, 0, 0, 469, 0, - 471, 0, 0, 0, 472, 0, 0, 0, 474, 0, - 475, 476, 477, 478, 479, 480, 0, 0, 481, 482, - 483, 484, 0, 485, 486, 0, 0, 487, 488, 489, - 490, 0, 0, 491, 492, 0, 493, 494, 495, 496, - 0, 0, 0, 0, 0, 497, 498, 499, 0, 0, - 0, 0, 501, 502, 503, 0, 504, 505, 0, 506, - 507, 0, 0, 0, 0, 0, 510, 0, 0, 511, - 0, 0, 0, 513, 514, 0, 0, 0, 0, 0, - 0, 515, 0, 0, 516, 0, 0, 0, 517, 518, - 519, 520, 521, 522, 523, 0, 0, 60, 0, 0, - 0, 524, 0, 0, 526, 0, 528, 0, 159, 529, - 160, 161, 162, 163, 164, 165, 0, 0, 166, 0, - 0, 0, 167, 0, 0, 168, 4578, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 0, 178, 0, 0, - 0, 179, 0, 0, 0, 180, 0, 0, 181, 182, - 183, 0, 184, 0, 185, 186, 0, 0, 187, 0, - 0, 188, 189, 0, 190, 191, 0, 192, 193, 0, - 194, 195, 196, 197, 198, 199, 0, 200, 201, 202, - 203, 204, 205, 206, 0, 207, 208, 209, 210, 211, - 212, 213, 214, 0, 215, 216, 0, 217, 218, 219, - 220, 221, 0, 222, 0, 0, 223, 0, 0, 224, - 0, 225, 1122, 0, 226, 0, 227, 0, 0, 0, - 228, 229, 230, 0, 0, 231, 0, 0, 0, 0, - 232, 233, 0, 0, 0, 0, 234, 0, 235, 0, - 0, 0, 0, 236, 0, 237, 238, 239, 240, 241, - 0, 0, 0, 0, 242, 0, 0, 243, 244, 245, - 0, 0, 0, 246, 0, 247, 248, 0, 249, 250, - 251, 0, 252, 253, 0, 254, 255, 256, 257, 258, - 259, 260, 0, 0, 261, 262, 263, 264, 0, 0, - 265, 266, 0, 267, 268, 269, 0, 0, 270, 0, - 0, 0, 271, 272, 0, 273, 0, 274, 0, 275, - 276, 277, 278, 279, 280, 281, 0, 282, 0, 0, - 283, 284, 285, 0, 286, 0, 0, 0, 287, 288, - 0, 0, 0, 289, 290, 291, 292, 293, 0, 0, - 0, 294, 295, 296, 0, 0, 297, 0, 0, 0, - 0, 298, 299, 0, 0, 0, 300, 0, 301, 302, - 0, 303, 304, 0, 0, 0, 305, 0, 0, 306, - 307, 308, 0, 0, 309, 0, 0, 310, 311, 665, - 0, 0, 0, 0, 312, 313, 0, 314, 0, 315, - 0, 316, 317, 0, 0, 0, 0, 0, 0, 318, + 330, 331, 332, 333, 334, 0, 335, 336, 337, 338, + 0, 339, 340, 341, 342, 0, 343, 344, 345, 0, + 0, 0, 0, 346, 347, 348, 349, 350, 351, 0, + 0, 352, 353, 0, 354, 0, 355, 0, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 0, 0, + 366, 0, 0, 367, 368, 369, 370, 0, 0, 0, + 371, 372, 0, 0, 0, 373, 0, 374, 375, 376, + 0, 377, 378, 379, 380, 0, 381, 382, 0, 0, + 0, 0, 0, 0, 0, 0, 383, 384, 385, 0, + 0, 386, 0, 387, 0, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 0, 0, 398, 399, 400, + 0, 401, 0, 402, 403, 404, 405, 406, 0, 407, + 408, 409, 0, 0, 410, 0, 0, 0, 411, 412, + 413, 414, 415, 0, 0, 416, 417, 418, 419, 420, + 0, 421, 422, 0, 423, 424, 425, 0, 0, 426, + 0, 427, 0, 428, 429, 0, 430, 431, 0, 432, + 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 0, 446, 447, 0, + 0, 0, 448, 449, 450, 451, 0, 0, 0, 452, + 0, 0, 0, 453, 0, 454, 455, 456, 457, 458, + 459, 0, 460, 461, 462, 463, 464, 465, 0, 0, + 0, 0, 0, 0, 466, 467, 0, 468, 0, 0, + 469, 0, 0, 0, 470, 471, 472, 0, 0, 0, + 473, 0, 0, 474, 475, 0, 476, 477, 478, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 0, 0, 488, 489, 490, 491, 0, 0, 492, + 493, 0, 494, 495, 496, 497, 0, 0, 0, 0, + 0, 498, 499, 500, 0, 0, 0, 501, 502, 503, + 504, 0, 505, 506, 0, 507, 508, 0, 509, 510, + 0, 0, 511, 0, 0, 512, 0, 513, 0, 514, + 515, 0, 0, 0, 0, 0, 0, 516, 0, 0, + 517, 0, 0, 0, 518, 519, 520, 521, 522, 523, + 524, 0, 0, 0, 0, 0, 0, 525, 526, 0, + 527, 528, 529, 0, 0, 530, 0, 0, 0, 160, + 0, 161, 162, 163, 164, 165, 166, 0, 0, 167, + 0, 0, 0, 168, 0, 0, 0, 1383, 170, 171, + 172, 173, 174, 175, 176, 177, 0, 0, 925, 0, + 0, 0, 180, 0, 0, 0, 181, 0, 0, 182, + 183, 184, 0, 185, 0, 0, 0, 0, 0, 188, + 7, 0, 189, 190, 0, 191, 0, 0, 0, 0, + 0, 195, 196, 197, 926, 199, 200, 0, 201, 202, + 0, 0, 0, 0, 0, 0, 208, 0, 210, 0, + 212, 213, 214, 215, 0, 216, 217, 0, 218, 219, + 220, 0, 222, 0, 223, 0, 0, 224, 0, 0, + 225, 0, 226, 0, 0, 227, 0, 228, 0, 0, + 0, 229, 230, 231, 0, 0, 232, 0, 0, 0, + 0, 233, 0, 0, 0, 0, 0, 235, 0, 236, + 0, 0, 0, 0, 237, 0, 238, 239, 240, 241, + 242, 0, 0, 0, 0, 0, 0, 0, 244, 245, + 246, 0, 0, 0, 247, 0, 0, 249, 0, 250, + 251, 252, 0, 253, 254, 0, 255, 256, 257, 258, + 259, 0, 0, 0, 0, 262, 263, 264, 265, 0, + 0, 266, 267, 927, 268, 269, 270, 0, 0, 0, + 0, 0, 0, 0, 273, 0, 274, 0, 275, 0, + 276, 277, 278, 279, 280, 0, 282, 0, 283, 0, + 0, 0, 285, 286, 0, 0, 0, 0, 0, 0, + 289, 0, 0, 0, 290, 291, 292, 293, 294, 26, + 0, 0, 295, 296, 297, 0, 0, 298, 0, 0, + 0, 0, 299, 0, 0, 0, 0, 301, 0, 302, + 303, 0, 304, 305, 928, 0, 0, 306, 0, 0, + 0, 308, 309, 0, 0, 310, 929, 0, 311, 312, + 0, 0, 0, 0, 0, 313, 314, 0, 315, 0, + 316, 0, 317, 318, 0, 0, 0, 0, 32, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 0, 334, 335, 336, 337, - 0, 338, 339, 340, 341, 0, 342, 343, 344, 0, - 0, 0, 0, 345, 346, 347, 348, 349, 350, 0, - 0, 351, 352, 0, 353, 0, 354, 0, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, - 365, 0, 0, 366, 367, 368, 369, 0, 0, 0, - 370, 371, 0, 0, 0, 372, 0, 373, 374, 375, - 0, 376, 377, 378, 379, 0, 380, 381, 0, 0, - 0, 0, 0, 0, 0, 0, 382, 383, 384, 0, - 0, 385, 0, 386, 0, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 0, 0, 397, 398, 399, - 0, 400, 0, 401, 402, 403, 404, 405, 0, 406, - 407, 408, 0, 0, 409, 0, 0, 0, 410, 411, - 412, 413, 414, 0, 0, 415, 416, 417, 418, 419, - 0, 420, 421, 0, 422, 423, 424, 0, 0, 425, - 0, 426, 0, 427, 428, 0, 429, 430, 0, 431, - 0, 432, 0, 0, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 0, 445, 446, 0, - 0, 0, 447, 448, 449, 450, 0, 0, 0, 451, - 0, 0, 0, 452, 0, 453, 454, 455, 456, 457, - 458, 0, 459, 460, 461, 462, 463, 464, 0, 0, - 0, 0, 0, 0, 465, 466, 0, 467, 0, 0, - 468, 0, 0, 0, 469, 470, 471, 0, 0, 0, - 472, 0, 0, 473, 474, 0, 475, 476, 477, 478, - 479, 480, 0, 0, 481, 482, 483, 484, 0, 485, - 486, 0, 0, 487, 488, 489, 490, 0, 156, 491, - 492, 0, 493, 494, 495, 496, 0, 0, 0, 0, - 0, 497, 498, 499, 0, 0, 0, 500, 501, 502, - 503, 0, 504, 505, 0, 506, 507, 0, 508, 509, - 0, 0, 510, 0, 0, 511, 0, 512, 0, 513, - 514, 0, 0, 0, 0, 0, 0, 515, 0, 0, - 516, 0, 0, 0, 517, 518, 519, 520, 521, 522, - 523, 0, 0, 0, 0, 0, 0, 524, 525, 0, - 526, 527, 528, 0, 159, 529, 160, 161, 162, 163, - 164, 165, 0, 0, 166, 0, 0, 0, 167, 0, - 1281, 168, 0, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 0, 178, 0, 0, 0, 179, 0, 0, - 0, 180, 0, 0, 181, 182, 183, 0, 184, 0, - 185, 186, 0, 0, 187, 0, 0, 188, 189, 0, - 190, 191, 0, 192, 193, 0, 194, 195, 196, 197, - 198, 199, 0, 200, 201, 202, 203, 204, 205, 206, - 0, 207, 208, 209, 210, 211, 212, 213, 214, 0, - 215, 216, 0, 217, 218, 219, 220, 221, 0, 222, - 0, 0, 223, 0, 0, 224, 0, 225, 0, 0, - 226, 0, 227, 0, 0, 0, 228, 229, 230, 0, - 0, 231, 0, 0, 0, 0, 232, 233, 0, 0, - 0, 0, 234, 0, 235, 0, 0, 0, 0, 236, - 0, 237, 238, 239, 240, 241, 0, 0, 0, 0, - 242, 0, 0, 243, 244, 245, 0, 0, 0, 246, - 0, 247, 248, 0, 249, 250, 251, 0, 252, 253, - 0, 254, 255, 256, 257, 258, 259, 260, 0, 0, - 261, 262, 263, 264, 0, 0, 265, 266, 0, 267, - 268, 269, 0, 0, 270, 0, 0, 0, 271, 272, - 0, 273, 0, 274, 0, 275, 276, 277, 278, 279, - 280, 281, 0, 282, 0, 0, 283, 284, 285, 0, - 286, 0, 0, 0, 287, 288, 0, 0, 0, 289, - 290, 291, 292, 293, 0, 0, 0, 294, 295, 296, - 0, 0, 297, 0, 0, 0, 0, 298, 299, 0, - 0, 0, 300, 0, 301, 302, 0, 303, 304, 0, - 0, 0, 305, 0, 0, 306, 307, 308, 0, 0, - 309, 0, 0, 310, 311, 0, 0, 0, 0, 0, - 312, 313, 0, 314, 0, 315, 0, 316, 317, 0, - 0, 0, 0, 0, 0, 318, 319, 320, 321, 322, + 329, 330, 331, 332, 333, 334, 0, 335, 336, 337, + 338, 0, 339, 340, 341, 342, 0, 343, 344, 345, + 0, 0, 0, 0, 346, 347, 348, 349, 350, 351, + 0, 0, 352, 353, 0, 354, 0, 355, 0, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 0, + 0, 366, 0, 0, 367, 368, 369, 370, 0, 0, + 0, 0, 372, 0, 0, 0, 373, 0, 374, 375, + 376, 0, 377, 378, 379, 930, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 384, 385, + 0, 0, 0, 0, 387, 0, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 0, 0, 0, 0, 399, + 400, 0, 401, 0, 402, 403, 404, 405, 406, 0, + 407, 408, 409, 0, 0, 410, 0, 0, 0, 411, + 412, 413, 414, 415, 0, 0, 416, 417, 418, 419, + 420, 0, 421, 0, 0, 423, 0, 425, 41, 0, + 426, 0, 0, 0, 428, 0, 0, 430, 431, 0, + 432, 931, 433, 0, 0, 434, 0, 436, 437, 438, + 439, 440, 441, 442, 0, 444, 445, 0, 446, 0, + 0, 0, 0, 448, 449, 450, 0, 0, 0, 0, + 452, 0, 0, 0, 0, 0, 0, 455, 0, 0, + 458, 459, 0, 460, 0, 462, 0, 464, 465, 0, + 0, 0, 0, 0, 0, 466, 467, 0, 468, 0, + 0, 469, 0, 0, 0, 470, 0, 472, 0, 0, + 0, 473, 0, 0, 0, 475, 0, 476, 477, 478, + 479, 480, 481, 0, 0, 482, 483, 484, 485, 0, + 486, 487, 0, 0, 488, 489, 490, 491, 0, 0, + 492, 493, 0, 494, 495, 496, 497, 0, 0, 0, + 0, 0, 498, 499, 500, 0, 0, 0, 0, 502, + 503, 504, 0, 505, 506, 0, 507, 508, 0, 0, + 0, 0, 0, 511, 0, 0, 512, 0, 0, 0, + 514, 515, 0, 0, 0, 0, 0, 0, 516, 0, + 0, 517, 0, 0, 0, 518, 519, 520, 521, 522, + 523, 524, 0, 0, 60, 0, 0, 0, 525, 0, + 0, 527, 0, 529, 0, 160, 530, 161, 162, 163, + 164, 165, 166, 0, 0, 167, 0, 0, 0, 168, + 0, 0, 169, 4583, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 0, 179, 0, 0, 0, 180, 0, + 0, 0, 181, 0, 0, 182, 183, 184, 0, 185, + 0, 186, 187, 0, 0, 188, 0, 0, 189, 190, + 0, 191, 192, 0, 193, 194, 0, 195, 196, 197, + 198, 199, 200, 0, 201, 202, 203, 204, 205, 206, + 207, 0, 208, 209, 210, 211, 212, 213, 214, 215, + 0, 216, 217, 0, 218, 219, 220, 221, 222, 0, + 223, 0, 0, 224, 0, 0, 225, 0, 226, 1124, + 0, 227, 0, 228, 0, 0, 0, 229, 230, 231, + 0, 0, 232, 0, 0, 0, 0, 233, 234, 0, + 0, 0, 0, 235, 0, 236, 0, 0, 0, 0, + 237, 0, 238, 239, 240, 241, 242, 0, 0, 0, + 0, 243, 0, 0, 244, 245, 246, 0, 0, 0, + 247, 0, 248, 249, 0, 250, 251, 252, 0, 253, + 254, 0, 255, 256, 257, 258, 259, 260, 261, 0, + 0, 262, 263, 264, 265, 0, 0, 266, 267, 0, + 268, 269, 270, 0, 0, 271, 0, 0, 0, 272, + 273, 0, 274, 0, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 0, 283, 0, 0, 284, 285, 286, + 0, 287, 0, 0, 0, 288, 289, 0, 0, 0, + 290, 291, 292, 293, 294, 0, 0, 0, 295, 296, + 297, 0, 0, 298, 0, 0, 0, 0, 299, 300, + 0, 0, 0, 301, 0, 302, 303, 0, 304, 305, + 0, 0, 0, 306, 0, 0, 307, 308, 309, 0, + 0, 310, 0, 0, 311, 312, 666, 0, 0, 0, + 0, 313, 314, 0, 315, 0, 316, 0, 317, 318, + 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 0, 334, 335, 336, 337, 0, 338, 339, 340, - 341, 0, 342, 343, 344, 0, 0, 0, 0, 345, - 346, 347, 348, 349, 350, 0, 0, 351, 352, 0, - 353, 0, 354, 0, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 0, 0, 365, 0, 0, 366, - 367, 368, 369, 0, 0, 0, 370, 371, 0, 0, - 0, 372, 0, 373, 374, 375, 0, 376, 377, 378, - 379, 0, 380, 381, 0, 0, 0, 0, 0, 0, - 0, 0, 382, 383, 384, 0, 0, 385, 0, 386, - 0, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 0, 0, 397, 398, 399, 0, 400, 0, 401, - 402, 403, 404, 405, 0, 406, 407, 408, 0, 0, - 409, 0, 0, 0, 410, 411, 412, 413, 414, 0, - 0, 415, 416, 417, 418, 419, 0, 420, 421, 0, - 422, 423, 424, 0, 0, 425, 0, 426, 0, 427, - 428, 0, 429, 430, 0, 431, 0, 432, 0, 0, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 0, 445, 446, 0, 0, 0, 447, 448, - 449, 450, 0, 0, 0, 451, 0, 0, 0, 452, - 0, 453, 454, 455, 456, 457, 458, 0, 459, 460, - 461, 462, 463, 464, 0, 0, 0, 0, 0, 0, - 465, 466, 0, 467, 0, 0, 468, 0, 0, 0, - 469, 470, 471, 0, 0, 0, 472, 0, 0, 473, - 474, 0, 475, 476, 477, 478, 479, 480, 0, 0, - 481, 482, 483, 484, 0, 485, 486, 0, 0, 487, - 488, 489, 490, 0, 0, 491, 492, 0, 493, 494, - 495, 496, 0, 0, 0, 0, 0, 497, 498, 499, - 0, 0, 0, 500, 501, 502, 503, 0, 504, 505, - 0, 506, 507, 0, 508, 509, 0, 0, 510, 0, - 0, 511, 0, 512, 0, 513, 514, 0, 0, 0, - 0, 0, 0, 515, 0, 0, 516, 0, 0, 0, - 517, 518, 519, 520, 521, 522, 523, 0, 0, 0, - 0, 0, 0, 524, 525, 0, 526, 527, 528, 0, - 159, 529, 160, 161, 162, 163, 164, 165, 0, 0, - 166, 2345, 0, 0, 167, 0, 0, 168, 0, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 0, 178, - 0, 0, 0, 179, 0, 0, 0, 180, 0, 0, - 181, 182, 183, 0, 184, 0, 185, 186, 0, 0, - 187, 0, 0, 188, 189, 0, 190, 191, 0, 192, - 193, 0, 194, 195, 196, 197, 198, 199, 0, 200, - 201, 202, 203, 204, 205, 206, 0, 207, 208, 209, - 210, 211, 212, 213, 214, 0, 215, 216, 0, 217, - 218, 219, 220, 221, 0, 222, 0, 0, 223, 0, - 0, 224, 0, 225, 0, 0, 226, 0, 227, 0, - 0, 0, 228, 229, 230, 0, 0, 231, 0, 0, - 0, 0, 232, 233, 0, 0, 0, 0, 234, 0, - 235, 0, 0, 0, 0, 236, 0, 237, 238, 239, - 240, 241, 0, 0, 0, 0, 242, 0, 0, 243, - 244, 245, 0, 0, 0, 246, 0, 247, 248, 0, - 249, 250, 251, 0, 252, 253, 0, 254, 255, 256, - 257, 258, 259, 260, 0, 0, 261, 262, 263, 264, - 0, 0, 265, 266, 0, 267, 268, 269, 0, 0, - 270, 0, 0, 0, 271, 272, 0, 273, 0, 274, - 0, 275, 276, 277, 278, 279, 280, 281, 0, 282, - 0, 0, 283, 284, 285, 0, 286, 0, 0, 0, - 287, 288, 0, 0, 0, 289, 290, 291, 292, 293, - 0, 0, 0, 294, 295, 296, 0, 0, 297, 0, - 0, 0, 0, 298, 299, 0, 0, 0, 300, 0, - 301, 302, 0, 303, 304, 0, 0, 0, 305, 0, - 0, 306, 307, 308, 0, 0, 309, 0, 0, 310, - 311, 0, 0, 0, 0, 0, 312, 313, 0, 314, - 0, 315, 0, 316, 317, 0, 0, 0, 0, 0, - 0, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 0, 334, 335, - 336, 337, 0, 338, 339, 340, 341, 0, 342, 343, - 344, 0, 0, 0, 0, 345, 346, 347, 348, 349, - 350, 0, 0, 351, 352, 0, 353, 0, 354, 0, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 0, 0, 365, 0, 0, 366, 367, 368, 369, 0, - 0, 0, 370, 371, 0, 0, 0, 372, 0, 373, - 374, 375, 0, 376, 377, 378, 379, 0, 380, 381, - 0, 0, 0, 0, 0, 0, 0, 0, 382, 383, - 384, 0, 0, 385, 0, 386, 0, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 0, 0, 397, - 398, 399, 0, 400, 0, 401, 402, 403, 404, 405, - 0, 406, 407, 408, 0, 0, 409, 0, 0, 0, - 410, 411, 412, 413, 414, 0, 0, 415, 416, 417, - 418, 419, 0, 420, 421, 0, 422, 423, 424, 0, - 0, 425, 0, 426, 0, 427, 428, 0, 429, 430, - 0, 431, 0, 432, 0, 0, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 0, 445, - 446, 0, 0, 0, 447, 448, 449, 450, 0, 0, - 0, 451, 0, 0, 0, 452, 0, 453, 454, 455, - 456, 457, 458, 0, 459, 460, 461, 462, 463, 464, - 0, 0, 0, 0, 0, 0, 465, 466, 0, 467, - 0, 0, 468, 0, 0, 0, 469, 470, 471, 0, - 0, 0, 472, 0, 0, 473, 474, 0, 475, 476, - 477, 478, 479, 480, 0, 0, 481, 482, 483, 484, - 0, 485, 486, 0, 0, 487, 488, 489, 490, 0, - 0, 491, 492, 0, 493, 494, 495, 496, 0, 0, - 0, 0, 0, 497, 498, 499, 0, 0, 0, 500, - 501, 502, 503, 0, 504, 505, 0, 506, 507, 0, - 508, 509, 0, 0, 510, 0, 0, 511, 0, 512, - 0, 513, 514, 0, 0, 0, 0, 0, 0, 515, - 0, 0, 516, 0, 0, 0, 517, 518, 519, 520, - 521, 522, 523, 0, 0, 0, 0, 0, 0, 524, - 525, 0, 526, 527, 528, 0, 159, 529, 160, 161, - 162, 163, 164, 165, 0, 0, 166, 3119, 0, 0, - 167, 0, 0, 168, 0, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 0, 178, 0, 0, 0, 179, - 0, 0, 0, 180, 0, 0, 181, 182, 183, 0, - 184, 0, 185, 186, 0, 0, 187, 0, 0, 188, - 189, 0, 190, 191, 0, 192, 193, 0, 194, 195, - 196, 197, 198, 199, 0, 200, 201, 202, 203, 204, - 205, 206, 0, 207, 208, 209, 210, 211, 212, 213, - 214, 0, 215, 216, 0, 217, 218, 219, 220, 221, - 0, 222, 0, 0, 223, 0, 0, 224, 0, 225, - 0, 0, 226, 0, 227, 0, 0, 0, 228, 229, - 230, 0, 0, 231, 0, 0, 0, 0, 232, 233, - 0, 0, 0, 0, 234, 0, 235, 0, 0, 0, - 0, 236, 0, 237, 238, 239, 240, 241, 0, 0, - 0, 0, 242, 0, 0, 243, 244, 245, 0, 0, - 0, 246, 0, 247, 248, 0, 249, 250, 251, 0, - 252, 253, 0, 254, 255, 256, 257, 258, 259, 260, - 0, 0, 261, 262, 263, 264, 0, 0, 265, 266, - 0, 267, 268, 269, 0, 0, 270, 0, 0, 0, - 271, 272, 0, 273, 0, 274, 0, 275, 276, 277, - 278, 279, 280, 281, 0, 282, 0, 0, 283, 284, - 285, 0, 286, 0, 0, 0, 287, 288, 0, 0, - 0, 289, 290, 291, 292, 293, 0, 0, 0, 294, - 295, 296, 0, 0, 297, 0, 0, 0, 0, 298, - 299, 0, 0, 0, 300, 0, 301, 302, 0, 303, - 304, 0, 0, 0, 305, 0, 0, 306, 307, 308, - 0, 0, 309, 0, 0, 310, 311, 0, 0, 0, - 0, 0, 312, 313, 0, 314, 0, 315, 0, 316, - 317, 0, 0, 0, 0, 0, 0, 318, 319, 320, + 333, 334, 0, 335, 336, 337, 338, 0, 339, 340, + 341, 342, 0, 343, 344, 345, 0, 0, 0, 0, + 346, 347, 348, 349, 350, 351, 0, 0, 352, 353, + 0, 354, 0, 355, 0, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 365, 0, 0, 366, 0, 0, + 367, 368, 369, 370, 0, 0, 0, 371, 372, 0, + 0, 0, 373, 0, 374, 375, 376, 0, 377, 378, + 379, 380, 0, 381, 382, 0, 0, 0, 0, 0, + 0, 0, 0, 383, 384, 385, 0, 0, 386, 0, + 387, 0, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 0, 0, 398, 399, 400, 0, 401, 0, + 402, 403, 404, 405, 406, 0, 407, 408, 409, 0, + 0, 410, 0, 0, 0, 411, 412, 413, 414, 415, + 0, 0, 416, 417, 418, 419, 420, 0, 421, 422, + 0, 423, 424, 425, 0, 0, 426, 0, 427, 0, + 428, 429, 0, 430, 431, 0, 432, 0, 433, 0, + 0, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 0, 446, 447, 0, 0, 0, 448, + 449, 450, 451, 0, 0, 0, 452, 0, 0, 0, + 453, 0, 454, 455, 456, 457, 458, 459, 0, 460, + 461, 462, 463, 464, 465, 0, 0, 0, 0, 0, + 0, 466, 467, 0, 468, 0, 0, 469, 0, 0, + 0, 470, 471, 472, 0, 0, 0, 473, 0, 0, + 474, 475, 0, 476, 477, 478, 479, 480, 481, 0, + 0, 482, 483, 484, 485, 0, 486, 487, 0, 0, + 488, 489, 490, 491, 0, 156, 492, 493, 0, 494, + 495, 496, 497, 0, 0, 0, 0, 0, 498, 499, + 500, 0, 0, 0, 501, 502, 503, 504, 0, 505, + 506, 0, 507, 508, 0, 509, 510, 0, 0, 511, + 0, 0, 512, 0, 513, 0, 514, 515, 0, 0, + 0, 0, 0, 0, 516, 0, 0, 517, 0, 0, + 0, 518, 519, 520, 521, 522, 523, 524, 0, 0, + 0, 0, 0, 0, 525, 526, 0, 527, 528, 529, + 0, 160, 530, 161, 162, 163, 164, 165, 166, 0, + 0, 167, 0, 0, 0, 168, 0, 1284, 169, 0, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 0, + 179, 0, 0, 0, 180, 0, 0, 0, 181, 0, + 0, 182, 183, 184, 0, 185, 0, 186, 187, 0, + 0, 188, 0, 0, 189, 190, 0, 191, 192, 0, + 193, 194, 0, 195, 196, 197, 198, 199, 200, 0, + 201, 202, 203, 204, 205, 206, 207, 0, 208, 209, + 210, 211, 212, 213, 214, 215, 0, 216, 217, 0, + 218, 219, 220, 221, 222, 0, 223, 0, 0, 224, + 0, 0, 225, 0, 226, 0, 0, 227, 0, 228, + 0, 0, 0, 229, 230, 231, 0, 0, 232, 0, + 0, 0, 0, 233, 234, 0, 0, 0, 0, 235, + 0, 236, 0, 0, 0, 0, 237, 0, 238, 239, + 240, 241, 242, 0, 0, 0, 0, 243, 0, 0, + 244, 245, 246, 0, 0, 0, 247, 0, 248, 249, + 0, 250, 251, 252, 0, 253, 254, 0, 255, 256, + 257, 258, 259, 260, 261, 0, 0, 262, 263, 264, + 265, 0, 0, 266, 267, 0, 268, 269, 270, 0, + 0, 271, 0, 0, 0, 272, 273, 0, 274, 0, + 275, 0, 276, 277, 278, 279, 280, 281, 282, 0, + 283, 0, 0, 284, 285, 286, 0, 287, 0, 0, + 0, 288, 289, 0, 0, 0, 290, 291, 292, 293, + 294, 0, 0, 0, 295, 296, 297, 0, 0, 298, + 0, 0, 0, 0, 299, 300, 0, 0, 0, 301, + 0, 302, 303, 0, 304, 305, 0, 0, 0, 306, + 0, 0, 307, 308, 309, 0, 0, 310, 0, 0, + 311, 312, 0, 0, 0, 0, 0, 313, 314, 0, + 315, 0, 316, 0, 317, 318, 0, 0, 0, 0, + 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 0, 335, + 336, 337, 338, 0, 339, 340, 341, 342, 0, 343, + 344, 345, 0, 0, 0, 0, 346, 347, 348, 349, + 350, 351, 0, 0, 352, 353, 0, 354, 0, 355, + 0, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 0, 0, 366, 0, 0, 367, 368, 369, 370, + 0, 0, 0, 371, 372, 0, 0, 0, 373, 0, + 374, 375, 376, 0, 377, 378, 379, 380, 0, 381, + 382, 0, 0, 0, 0, 0, 0, 0, 0, 383, + 384, 385, 0, 0, 386, 0, 387, 0, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 0, 0, + 398, 399, 400, 0, 401, 0, 402, 403, 404, 405, + 406, 0, 407, 408, 409, 0, 0, 410, 0, 0, + 0, 411, 412, 413, 414, 415, 0, 0, 416, 417, + 418, 419, 420, 0, 421, 422, 0, 423, 424, 425, + 0, 0, 426, 0, 427, 0, 428, 429, 0, 430, + 431, 0, 432, 0, 433, 0, 0, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 0, + 446, 447, 0, 0, 0, 448, 449, 450, 451, 0, + 0, 0, 452, 0, 0, 0, 453, 0, 454, 455, + 456, 457, 458, 459, 0, 460, 461, 462, 463, 464, + 465, 0, 0, 0, 0, 0, 0, 466, 467, 0, + 468, 0, 0, 469, 0, 0, 0, 470, 471, 472, + 0, 0, 0, 473, 0, 0, 474, 475, 0, 476, + 477, 478, 479, 480, 481, 0, 0, 482, 483, 484, + 485, 0, 486, 487, 0, 0, 488, 489, 490, 491, + 0, 0, 492, 493, 0, 494, 495, 496, 497, 0, + 0, 0, 0, 0, 498, 499, 500, 0, 0, 0, + 501, 502, 503, 504, 0, 505, 506, 0, 507, 508, + 0, 509, 510, 0, 0, 511, 0, 0, 512, 0, + 513, 0, 514, 515, 0, 0, 0, 0, 0, 0, + 516, 0, 0, 517, 0, 0, 0, 518, 519, 520, + 521, 522, 523, 524, 0, 0, 0, 0, 0, 0, + 525, 526, 0, 527, 528, 529, 0, 160, 530, 161, + 162, 163, 164, 165, 166, 0, 0, 167, 2350, 0, + 0, 168, 0, 0, 169, 0, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 0, 179, 0, 0, 0, + 180, 0, 0, 0, 181, 0, 0, 182, 183, 184, + 0, 185, 0, 186, 187, 0, 0, 188, 0, 0, + 189, 190, 0, 191, 192, 0, 193, 194, 0, 195, + 196, 197, 198, 199, 200, 0, 201, 202, 203, 204, + 205, 206, 207, 0, 208, 209, 210, 211, 212, 213, + 214, 215, 0, 216, 217, 0, 218, 219, 220, 221, + 222, 0, 223, 0, 0, 224, 0, 0, 225, 0, + 226, 0, 0, 227, 0, 228, 0, 0, 0, 229, + 230, 231, 0, 0, 232, 0, 0, 0, 0, 233, + 234, 0, 0, 0, 0, 235, 0, 236, 0, 0, + 0, 0, 237, 0, 238, 239, 240, 241, 242, 0, + 0, 0, 0, 243, 0, 0, 244, 245, 246, 0, + 0, 0, 247, 0, 248, 249, 0, 250, 251, 252, + 0, 253, 254, 0, 255, 256, 257, 258, 259, 260, + 261, 0, 0, 262, 263, 264, 265, 0, 0, 266, + 267, 0, 268, 269, 270, 0, 0, 271, 0, 0, + 0, 272, 273, 0, 274, 0, 275, 0, 276, 277, + 278, 279, 280, 281, 282, 0, 283, 0, 0, 284, + 285, 286, 0, 287, 0, 0, 0, 288, 289, 0, + 0, 0, 290, 291, 292, 293, 294, 0, 0, 0, + 295, 296, 297, 0, 0, 298, 0, 0, 0, 0, + 299, 300, 0, 0, 0, 301, 0, 302, 303, 0, + 304, 305, 0, 0, 0, 306, 0, 0, 307, 308, + 309, 0, 0, 310, 0, 0, 311, 312, 0, 0, + 0, 0, 0, 313, 314, 0, 315, 0, 316, 0, + 317, 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 0, 334, 335, 336, 337, 0, 338, - 339, 340, 341, 0, 342, 343, 344, 0, 0, 0, - 0, 345, 346, 347, 348, 349, 350, 0, 0, 351, - 352, 0, 353, 0, 354, 0, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 0, 0, 365, 0, - 0, 366, 367, 368, 369, 0, 0, 0, 370, 371, - 0, 0, 0, 372, 0, 373, 374, 375, 0, 376, - 377, 378, 379, 0, 380, 381, 0, 0, 0, 0, - 0, 0, 0, 0, 382, 383, 384, 0, 0, 385, - 0, 386, 0, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 0, 0, 397, 398, 399, 0, 400, - 0, 401, 402, 403, 404, 405, 0, 406, 407, 408, - 0, 0, 409, 0, 0, 0, 410, 411, 412, 413, - 414, 0, 0, 415, 416, 417, 418, 419, 0, 420, - 421, 0, 422, 423, 424, 0, 0, 425, 0, 426, - 0, 427, 428, 0, 429, 430, 0, 431, 0, 432, - 0, 0, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 0, 445, 446, 0, 0, 0, - 447, 448, 449, 450, 0, 0, 0, 451, 0, 0, - 0, 452, 0, 453, 454, 455, 456, 457, 458, 0, - 459, 460, 461, 462, 463, 464, 0, 0, 0, 0, - 0, 0, 465, 466, 0, 467, 0, 0, 468, 0, - 0, 0, 469, 470, 471, 0, 0, 0, 472, 0, - 0, 473, 474, 0, 475, 476, 477, 478, 479, 480, - 0, 0, 481, 482, 483, 484, 0, 485, 486, 0, - 0, 487, 488, 489, 490, 0, 0, 491, 492, 0, - 493, 494, 495, 496, 0, 0, 0, 0, 0, 497, - 498, 499, 0, 0, 0, 500, 501, 502, 503, 0, - 504, 505, 0, 506, 507, 0, 508, 509, 0, 0, - 510, 0, 0, 511, 0, 512, 0, 513, 514, 0, - 0, 0, 0, 0, 0, 515, 0, 0, 516, 0, - 0, 0, 517, 518, 519, 520, 521, 522, 523, 0, - 0, 0, 0, 0, 0, 524, 525, 0, 526, 527, - 528, 0, 159, 529, 160, 161, 162, 163, 164, 165, - 0, 0, 166, 3481, 0, 0, 167, 0, 0, 168, - 0, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 0, 178, 0, 0, 0, 179, 0, 0, 0, 180, - 0, 0, 181, 182, 183, 0, 184, 0, 185, 186, - 0, 0, 187, 0, 0, 188, 189, 0, 190, 191, - 0, 192, 193, 0, 194, 195, 196, 197, 198, 199, - 0, 200, 201, 202, 203, 204, 205, 206, 0, 207, - 208, 209, 210, 211, 212, 213, 214, 0, 215, 216, - 0, 217, 218, 219, 220, 221, 0, 222, 0, 0, - 223, 0, 0, 224, 0, 225, 0, 0, 226, 0, - 227, 0, 0, 0, 228, 229, 230, 0, 0, 231, - 0, 0, 0, 0, 232, 233, 0, 0, 0, 0, - 234, 0, 235, 0, 0, 0, 0, 236, 0, 237, - 238, 239, 240, 241, 0, 0, 0, 0, 242, 0, - 0, 243, 244, 245, 0, 0, 0, 246, 0, 247, - 248, 0, 249, 250, 251, 0, 252, 253, 0, 254, - 255, 256, 257, 258, 259, 260, 0, 0, 261, 262, - 263, 264, 0, 0, 265, 266, 0, 267, 268, 269, - 0, 0, 270, 0, 0, 0, 271, 272, 0, 273, - 0, 274, 0, 275, 276, 277, 278, 279, 280, 281, - 0, 282, 0, 0, 283, 284, 285, 0, 286, 0, - 0, 0, 287, 288, 0, 0, 0, 289, 290, 291, - 292, 293, 0, 0, 0, 294, 295, 296, 0, 0, - 297, 0, 0, 0, 0, 298, 299, 0, 0, 0, - 300, 0, 301, 302, 0, 303, 304, 0, 0, 0, - 305, 0, 0, 306, 307, 308, 0, 0, 309, 0, - 0, 310, 311, 0, 0, 0, 0, 0, 312, 313, - 0, 314, 0, 315, 0, 316, 317, 0, 0, 0, - 0, 0, 0, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 0, - 334, 335, 336, 337, 0, 338, 339, 340, 341, 0, - 342, 343, 344, 0, 0, 0, 0, 345, 346, 347, - 348, 349, 350, 0, 0, 351, 352, 0, 353, 0, - 354, 0, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 0, 0, 365, 0, 0, 366, 367, 368, - 369, 0, 0, 0, 370, 371, 0, 0, 0, 372, - 0, 373, 374, 375, 0, 376, 377, 378, 379, 0, - 380, 381, 0, 0, 0, 0, 0, 0, 0, 0, - 382, 383, 384, 0, 0, 385, 0, 386, 0, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 0, - 0, 397, 398, 399, 0, 400, 0, 401, 402, 403, - 404, 405, 0, 406, 407, 408, 0, 0, 409, 0, - 0, 0, 410, 411, 412, 413, 414, 0, 0, 415, - 416, 417, 418, 419, 0, 420, 421, 0, 422, 423, - 424, 0, 0, 425, 0, 426, 0, 427, 428, 0, - 429, 430, 0, 431, 0, 432, 0, 0, 433, 434, + 331, 332, 333, 334, 0, 335, 336, 337, 338, 0, + 339, 340, 341, 342, 0, 343, 344, 345, 0, 0, + 0, 0, 346, 347, 348, 349, 350, 351, 0, 0, + 352, 353, 0, 354, 0, 355, 0, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 0, 0, 366, + 0, 0, 367, 368, 369, 370, 0, 0, 0, 371, + 372, 0, 0, 0, 373, 0, 374, 375, 376, 0, + 377, 378, 379, 380, 0, 381, 382, 0, 0, 0, + 0, 0, 0, 0, 0, 383, 384, 385, 0, 0, + 386, 0, 387, 0, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 0, 0, 398, 399, 400, 0, + 401, 0, 402, 403, 404, 405, 406, 0, 407, 408, + 409, 0, 0, 410, 0, 0, 0, 411, 412, 413, + 414, 415, 0, 0, 416, 417, 418, 419, 420, 0, + 421, 422, 0, 423, 424, 425, 0, 0, 426, 0, + 427, 0, 428, 429, 0, 430, 431, 0, 432, 0, + 433, 0, 0, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 0, 446, 447, 0, 0, + 0, 448, 449, 450, 451, 0, 0, 0, 452, 0, + 0, 0, 453, 0, 454, 455, 456, 457, 458, 459, + 0, 460, 461, 462, 463, 464, 465, 0, 0, 0, + 0, 0, 0, 466, 467, 0, 468, 0, 0, 469, + 0, 0, 0, 470, 471, 472, 0, 0, 0, 473, + 0, 0, 474, 475, 0, 476, 477, 478, 479, 480, + 481, 0, 0, 482, 483, 484, 485, 0, 486, 487, + 0, 0, 488, 489, 490, 491, 0, 0, 492, 493, + 0, 494, 495, 496, 497, 0, 0, 0, 0, 0, + 498, 499, 500, 0, 0, 0, 501, 502, 503, 504, + 0, 505, 506, 0, 507, 508, 0, 509, 510, 0, + 0, 511, 0, 0, 512, 0, 513, 0, 514, 515, + 0, 0, 0, 0, 0, 0, 516, 0, 0, 517, + 0, 0, 0, 518, 519, 520, 521, 522, 523, 524, + 0, 0, 0, 0, 0, 0, 525, 526, 0, 527, + 528, 529, 0, 160, 530, 161, 162, 163, 164, 165, + 166, 0, 0, 167, 3124, 0, 0, 168, 0, 0, + 169, 0, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 0, 179, 0, 0, 0, 180, 0, 0, 0, + 181, 0, 0, 182, 183, 184, 0, 185, 0, 186, + 187, 0, 0, 188, 0, 0, 189, 190, 0, 191, + 192, 0, 193, 194, 0, 195, 196, 197, 198, 199, + 200, 0, 201, 202, 203, 204, 205, 206, 207, 0, + 208, 209, 210, 211, 212, 213, 214, 215, 0, 216, + 217, 0, 218, 219, 220, 221, 222, 0, 223, 0, + 0, 224, 0, 0, 225, 0, 226, 0, 0, 227, + 0, 228, 0, 0, 0, 229, 230, 231, 0, 0, + 232, 0, 0, 0, 0, 233, 234, 0, 0, 0, + 0, 235, 0, 236, 0, 0, 0, 0, 237, 0, + 238, 239, 240, 241, 242, 0, 0, 0, 0, 243, + 0, 0, 244, 245, 246, 0, 0, 0, 247, 0, + 248, 249, 0, 250, 251, 252, 0, 253, 254, 0, + 255, 256, 257, 258, 259, 260, 261, 0, 0, 262, + 263, 264, 265, 0, 0, 266, 267, 0, 268, 269, + 270, 0, 0, 271, 0, 0, 0, 272, 273, 0, + 274, 0, 275, 0, 276, 277, 278, 279, 280, 281, + 282, 0, 283, 0, 0, 284, 285, 286, 0, 287, + 0, 0, 0, 288, 289, 0, 0, 0, 290, 291, + 292, 293, 294, 0, 0, 0, 295, 296, 297, 0, + 0, 298, 0, 0, 0, 0, 299, 300, 0, 0, + 0, 301, 0, 302, 303, 0, 304, 305, 0, 0, + 0, 306, 0, 0, 307, 308, 309, 0, 0, 310, + 0, 0, 311, 312, 0, 0, 0, 0, 0, 313, + 314, 0, 315, 0, 316, 0, 317, 318, 0, 0, + 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 0, 335, 336, 337, 338, 0, 339, 340, 341, 342, + 0, 343, 344, 345, 0, 0, 0, 0, 346, 347, + 348, 349, 350, 351, 0, 0, 352, 353, 0, 354, + 0, 355, 0, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 0, 0, 366, 0, 0, 367, 368, + 369, 370, 0, 0, 0, 371, 372, 0, 0, 0, + 373, 0, 374, 375, 376, 0, 377, 378, 379, 380, + 0, 381, 382, 0, 0, 0, 0, 0, 0, 0, + 0, 383, 384, 385, 0, 0, 386, 0, 387, 0, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 0, 0, 398, 399, 400, 0, 401, 0, 402, 403, + 404, 405, 406, 0, 407, 408, 409, 0, 0, 410, + 0, 0, 0, 411, 412, 413, 414, 415, 0, 0, + 416, 417, 418, 419, 420, 0, 421, 422, 0, 423, + 424, 425, 0, 0, 426, 0, 427, 0, 428, 429, + 0, 430, 431, 0, 432, 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 0, 445, 446, 0, 0, 0, 447, 448, 449, 450, - 0, 0, 0, 451, 0, 0, 0, 452, 0, 453, - 454, 455, 456, 457, 458, 0, 459, 460, 461, 462, - 463, 464, 0, 0, 0, 0, 0, 0, 465, 466, - 0, 467, 0, 0, 468, 0, 0, 0, 469, 470, - 471, 0, 0, 0, 472, 0, 0, 473, 474, 0, - 475, 476, 477, 478, 479, 480, 0, 0, 481, 482, - 483, 484, 0, 485, 486, 0, 0, 487, 488, 489, - 490, 0, 0, 491, 492, 0, 493, 494, 495, 496, - 0, 0, 0, 0, 0, 497, 498, 499, 0, 0, - 0, 500, 501, 502, 503, 0, 504, 505, 0, 506, - 507, 0, 508, 509, 0, 0, 510, 0, 0, 511, - 0, 512, 0, 513, 514, 0, 0, 0, 0, 0, - 0, 515, 0, 0, 516, 0, 0, 0, 517, 518, - 519, 520, 521, 522, 523, 0, 0, 0, 0, 0, - 0, 524, 525, 0, 526, 527, 528, 0, 159, 529, - 160, 161, 162, 163, 164, 165, 0, 0, 166, 3887, - 0, 0, 167, 0, 0, 168, 0, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 0, 178, 0, 0, - 1526, 179, 0, 0, 0, 180, 0, 0, 181, 182, - 183, 0, 184, 0, 185, 186, 0, 0, 187, 0, - 0, 188, 189, 0, 190, 191, 0, 192, 193, 0, - 194, 195, 196, 197, 198, 199, 0, 200, 201, 202, - 203, 204, 205, 206, 0, 207, 208, 209, 210, 211, - 212, 213, 214, 0, 215, 216, 0, 217, 218, 219, - 220, 221, 0, 222, 0, 0, 223, 0, 0, 224, - 0, 225, 0, 0, 226, 0, 227, 0, 0, 0, - 228, 229, 230, 0, 0, 231, 0, 0, 0, 0, - 232, 233, 0, 0, 0, 1527, 234, 0, 235, 0, - 0, 0, 0, 236, 0, 237, 238, 239, 240, 241, - 0, 0, 0, 0, 242, 0, 0, 243, 244, 245, - 0, 0, 0, 246, 0, 247, 248, 0, 249, 250, - 251, 0, 252, 253, 0, 254, 255, 256, 257, 258, - 259, 260, 0, 0, 261, 262, 263, 264, 0, 0, - 265, 266, 0, 267, 268, 269, 0, 0, 270, 0, - 0, 0, 271, 272, 0, 273, 0, 274, 0, 275, - 276, 277, 278, 279, 280, 281, 0, 282, 0, 0, - 283, 284, 285, 0, 286, 0, 0, 0, 287, 288, - 0, 0, 0, 289, 290, 291, 292, 293, 0, 0, - 0, 294, 295, 296, 0, 0, 297, 0, 0, 0, - 0, 298, 299, 0, 0, 0, 300, 0, 301, 302, - 0, 303, 304, 0, 0, 0, 305, 0, 0, 306, - 307, 308, 0, 0, 309, 0, 0, 310, 311, 665, - 0, 0, 0, 0, 312, 313, 0, 314, 0, 315, - 0, 316, 317, 0, 0, 0, 0, 0, 0, 318, + 445, 0, 446, 447, 0, 0, 0, 448, 449, 450, + 451, 0, 0, 0, 452, 0, 0, 0, 453, 0, + 454, 455, 456, 457, 458, 459, 0, 460, 461, 462, + 463, 464, 465, 0, 0, 0, 0, 0, 0, 466, + 467, 0, 468, 0, 0, 469, 0, 0, 0, 470, + 471, 472, 0, 0, 0, 473, 0, 0, 474, 475, + 0, 476, 477, 478, 479, 480, 481, 0, 0, 482, + 483, 484, 485, 0, 486, 487, 0, 0, 488, 489, + 490, 491, 0, 0, 492, 493, 0, 494, 495, 496, + 497, 0, 0, 0, 0, 0, 498, 499, 500, 0, + 0, 0, 501, 502, 503, 504, 0, 505, 506, 0, + 507, 508, 0, 509, 510, 0, 0, 511, 0, 0, + 512, 0, 513, 0, 514, 515, 0, 0, 0, 0, + 0, 0, 516, 0, 0, 517, 0, 0, 0, 518, + 519, 520, 521, 522, 523, 524, 0, 0, 0, 0, + 0, 0, 525, 526, 0, 527, 528, 529, 0, 160, + 530, 161, 162, 163, 164, 165, 166, 0, 0, 167, + 3486, 0, 0, 168, 0, 0, 169, 0, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 0, 179, 0, + 0, 0, 180, 0, 0, 0, 181, 0, 0, 182, + 183, 184, 0, 185, 0, 186, 187, 0, 0, 188, + 0, 0, 189, 190, 0, 191, 192, 0, 193, 194, + 0, 195, 196, 197, 198, 199, 200, 0, 201, 202, + 203, 204, 205, 206, 207, 0, 208, 209, 210, 211, + 212, 213, 214, 215, 0, 216, 217, 0, 218, 219, + 220, 221, 222, 0, 223, 0, 0, 224, 0, 0, + 225, 0, 226, 0, 0, 227, 0, 228, 0, 0, + 0, 229, 230, 231, 0, 0, 232, 0, 0, 0, + 0, 233, 234, 0, 0, 0, 0, 235, 0, 236, + 0, 0, 0, 0, 237, 0, 238, 239, 240, 241, + 242, 0, 0, 0, 0, 243, 0, 0, 244, 245, + 246, 0, 0, 0, 247, 0, 248, 249, 0, 250, + 251, 252, 0, 253, 254, 0, 255, 256, 257, 258, + 259, 260, 261, 0, 0, 262, 263, 264, 265, 0, + 0, 266, 267, 0, 268, 269, 270, 0, 0, 271, + 0, 0, 0, 272, 273, 0, 274, 0, 275, 0, + 276, 277, 278, 279, 280, 281, 282, 0, 283, 0, + 0, 284, 285, 286, 0, 287, 0, 0, 0, 288, + 289, 0, 0, 0, 290, 291, 292, 293, 294, 0, + 0, 0, 295, 296, 297, 0, 0, 298, 0, 0, + 0, 0, 299, 300, 0, 0, 0, 301, 0, 302, + 303, 0, 304, 305, 0, 0, 0, 306, 0, 0, + 307, 308, 309, 0, 0, 310, 0, 0, 311, 312, + 0, 0, 0, 0, 0, 313, 314, 0, 315, 0, + 316, 0, 317, 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 0, 334, 335, 336, 337, - 0, 338, 339, 340, 341, 0, 342, 343, 344, 0, - 0, 0, 0, 345, 346, 347, 348, 349, 350, 0, - 0, 351, 352, 0, 353, 0, 354, 0, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 0, 0, - 365, 0, 0, 366, 367, 368, 369, 0, 0, 0, - 370, 371, 0, 0, 0, 372, 0, 373, 374, 375, - 0, 376, 377, 378, 379, 0, 380, 381, 0, 0, - 0, 0, 0, 0, 0, 0, 382, 383, 384, 0, - 0, 385, 0, 386, 0, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 0, 0, 397, 398, 399, - 0, 400, 0, 401, 402, 403, 404, 405, 0, 406, - 407, 408, 0, 0, 409, 0, 0, 0, 410, 411, - 412, 413, 414, 0, 0, 415, 416, 417, 418, 419, - 0, 420, 421, 0, 422, 423, 424, 0, 0, 425, - 0, 426, 0, 427, 428, 0, 429, 430, 0, 431, - 0, 432, 0, 0, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 0, 445, 446, 0, - 0, 0, 447, 448, 449, 450, 0, 0, 1528, 451, - 0, 0, 0, 452, 0, 453, 454, 455, 456, 457, - 458, 0, 459, 460, 461, 462, 463, 464, 0, 0, - 0, 0, 0, 0, 465, 466, 0, 467, 0, 0, - 468, 0, 0, 0, 469, 470, 471, 0, 0, 0, - 472, 0, 0, 473, 474, 0, 475, 476, 477, 478, - 479, 480, 0, 0, 481, 482, 483, 484, 0, 485, - 486, 0, 0, 487, 488, 489, 490, 0, 156, 491, - 492, 0, 493, 494, 495, 496, 0, 0, 0, 0, - 0, 497, 498, 499, 0, 0, 0, 500, 501, 502, - 503, 0, 504, 505, 0, 506, 507, 0, 508, 509, - 0, 0, 510, 0, 0, 511, 0, 512, 0, 513, - 514, 0, 0, 0, 0, 0, 0, 515, 0, 0, - 516, 0, 0, 0, 517, 518, 519, 520, 521, 522, - 523, 0, 0, 0, 0, 0, 0, 524, 525, 0, - 526, 527, 528, 0, 0, 529, 0, 159, 1529, 160, - 161, 162, 163, 164, 165, 871, 872, 166, 0, 0, - 0, 167, 0, 0, 168, 0, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 0, 178, 0, 0, 0, - 179, 0, 0, 0, 180, 0, 0, 181, 182, 183, - 0, 184, 0, 185, 186, 0, 0, 187, 0, 0, - 188, 189, 0, 190, 191, 0, 192, 193, 0, 194, - 195, 196, 197, 198, 199, 0, 200, 201, 202, 203, - 204, 205, 206, 0, 207, 208, 209, 210, 211, 212, - 213, 214, 0, 215, 216, 0, 217, 218, 219, 220, - 221, 0, 222, 0, 0, 223, 873, 0, 224, 0, - 225, 0, 874, 226, 0, 227, 0, 0, 0, 228, - 229, 230, 0, 0, 231, 0, 0, 0, 0, 232, - 233, 0, 0, 0, 0, 234, 0, 235, 875, 0, - 0, 0, 236, 0, 237, 238, 239, 240, 241, 0, - 0, 0, 0, 242, 876, 0, 243, 244, 245, 0, - 0, 0, 246, 0, 247, 248, 0, 249, 250, 251, - 0, 252, 253, 0, 254, 255, 877, 257, 258, 259, - 878, 0, 0, 261, 262, 263, 264, 0, 0, 265, - 266, 0, 879, 268, 269, 0, 0, 270, 0, 0, - 0, 271, 272, 0, 273, 0, 274, 0, 275, 276, - 277, 278, 279, 280, 281, 880, 282, 0, 0, 283, - 284, 285, 0, 286, 0, 0, 0, 287, 288, 0, - 0, 0, 289, 290, 291, 292, 293, 0, 0, 0, - 294, 295, 296, 881, 0, 297, 0, 0, 0, 882, - 298, 299, 0, 0, 0, 300, 0, 301, 302, 0, - 303, 304, 0, 0, 0, 305, 0, 0, 306, 307, - 308, 0, 0, 309, 0, 0, 310, 311, 665, 0, - 0, 0, 0, 312, 313, 0, 314, 0, 315, 883, - 316, 317, 0, 0, 0, 0, 0, 0, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 0, 334, 335, 336, 337, 0, - 338, 339, 340, 341, 0, 342, 343, 344, 0, 0, - 0, 0, 345, 346, 347, 348, 349, 350, 0, 0, - 351, 352, 0, 353, 0, 354, 0, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 365, - 0, 0, 366, 367, 368, 369, 0, 0, 0, 370, - 371, 0, 0, 0, 372, 0, 373, 374, 375, 0, - 376, 377, 378, 379, 0, 380, 381, 0, 0, 0, - 0, 0, 0, 0, 0, 382, 383, 384, 0, 0, - 385, 0, 386, 0, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 0, 0, 397, 398, 399, 0, - 400, 0, 884, 402, 403, 404, 885, 0, 406, 407, - 408, 0, 0, 409, 0, 0, 0, 410, 411, 412, - 413, 414, 886, 0, 415, 416, 417, 418, 419, 0, - 887, 421, 0, 422, 423, 424, 0, 0, 888, 0, - 426, 0, 427, 428, 0, 429, 430, 0, 431, 0, - 432, 0, 0, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 0, 445, 446, 889, 0, - 0, 447, 448, 449, 450, 0, 0, 0, 451, 0, - 0, 890, 891, 0, 453, 454, 455, 456, 457, 458, - 0, 459, 460, 461, 462, 463, 464, 0, 0, 0, - 0, 0, 0, 465, 466, 0, 467, 0, 0, 468, - 0, 0, 0, 469, 470, 471, 0, 0, 0, 472, - 0, 0, 473, 474, 0, 475, 476, 477, 478, 479, - 480, 0, 0, 892, 482, 483, 484, 0, 485, 486, - 0, 0, 487, 488, 489, 490, 0, 156, 491, 492, - 0, 493, 494, 495, 496, 0, 0, 0, 0, 0, - 497, 498, 499, 893, 0, 0, 500, 501, 502, 503, - 0, 504, 505, 0, 506, 507, 0, 508, 509, 0, - 0, 510, 0, 0, 511, 894, 512, 895, 513, 514, - 0, 0, 0, 0, 0, 0, 515, 0, 0, 516, - 0, 0, 0, 517, 518, 519, 520, 521, 522, 523, - 0, 0, 0, 0, 0, 0, 524, 525, 0, 526, - 527, 528, 0, 159, 529, 977, 161, 162, 163, 164, - 165, 978, 872, 166, 0, 0, 0, 167, 0, 0, - 168, 0, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 0, 178, 0, 0, 0, 179, 0, 0, 0, - 180, 0, 0, 181, 182, 183, 0, 184, 0, 185, - 186, 0, 0, 187, 0, 0, 188, 189, 0, 190, - 191, 0, 192, 193, 0, 194, 195, 196, 197, 198, - 199, 0, 200, 201, 202, 203, 204, 205, 206, 0, - 207, 208, 209, 210, 211, 212, 213, 214, 0, 215, - 216, 0, 217, 218, 219, 220, 221, 0, 222, 0, - 0, 223, 873, 0, 224, 0, 225, 0, 874, 226, - 0, 227, 0, 0, 0, 228, 229, 230, 0, 0, - 231, 0, 0, 0, 0, 232, 233, 0, 0, 0, - 0, 234, 0, 235, 875, 0, 0, 0, 236, 0, - 237, 238, 239, 240, 241, 0, 0, 0, 0, 242, - 876, 0, 243, 244, 245, 0, 0, 0, 246, 0, - 247, 248, 0, 249, 250, 251, 0, 252, 253, 0, - 254, 255, 877, 257, 258, 259, 878, 0, 0, 261, - 262, 263, 264, 0, 0, 265, 266, 0, 879, 268, - 269, 0, 0, 270, 0, 0, 0, 271, 272, 0, - 273, 0, 274, 0, 275, 276, 277, 278, 279, 280, - 281, 880, 282, 0, 0, 283, 284, 285, 0, 286, - 0, 0, 0, 287, 288, 0, 0, 0, 289, 290, - 291, 292, 293, 0, 0, 0, 294, 295, 296, 881, - 0, 297, 0, 0, 0, 882, 298, 299, 0, 0, - 0, 300, 0, 301, 302, 0, 303, 304, 0, 0, - 0, 305, 0, 0, 306, 307, 308, 0, 0, 309, - 0, 0, 310, 311, 665, 0, 0, 0, 0, 312, - 313, 0, 314, 0, 315, 883, 316, 317, 0, 0, - 0, 0, 0, 0, 318, 319, 320, 321, 322, 323, + 329, 330, 331, 332, 333, 334, 0, 335, 336, 337, + 338, 0, 339, 340, 341, 342, 0, 343, 344, 345, + 0, 0, 0, 0, 346, 347, 348, 349, 350, 351, + 0, 0, 352, 353, 0, 354, 0, 355, 0, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 0, + 0, 366, 0, 0, 367, 368, 369, 370, 0, 0, + 0, 371, 372, 0, 0, 0, 373, 0, 374, 375, + 376, 0, 377, 378, 379, 380, 0, 381, 382, 0, + 0, 0, 0, 0, 0, 0, 0, 383, 384, 385, + 0, 0, 386, 0, 387, 0, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 0, 0, 398, 399, + 400, 0, 401, 0, 402, 403, 404, 405, 406, 0, + 407, 408, 409, 0, 0, 410, 0, 0, 0, 411, + 412, 413, 414, 415, 0, 0, 416, 417, 418, 419, + 420, 0, 421, 422, 0, 423, 424, 425, 0, 0, + 426, 0, 427, 0, 428, 429, 0, 430, 431, 0, + 432, 0, 433, 0, 0, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 0, 446, 447, + 0, 0, 0, 448, 449, 450, 451, 0, 0, 0, + 452, 0, 0, 0, 453, 0, 454, 455, 456, 457, + 458, 459, 0, 460, 461, 462, 463, 464, 465, 0, + 0, 0, 0, 0, 0, 466, 467, 0, 468, 0, + 0, 469, 0, 0, 0, 470, 471, 472, 0, 0, + 0, 473, 0, 0, 474, 475, 0, 476, 477, 478, + 479, 480, 481, 0, 0, 482, 483, 484, 485, 0, + 486, 487, 0, 0, 488, 489, 490, 491, 0, 0, + 492, 493, 0, 494, 495, 496, 497, 0, 0, 0, + 0, 0, 498, 499, 500, 0, 0, 0, 501, 502, + 503, 504, 0, 505, 506, 0, 507, 508, 0, 509, + 510, 0, 0, 511, 0, 0, 512, 0, 513, 0, + 514, 515, 0, 0, 0, 0, 0, 0, 516, 0, + 0, 517, 0, 0, 0, 518, 519, 520, 521, 522, + 523, 524, 0, 0, 0, 0, 0, 0, 525, 526, + 0, 527, 528, 529, 0, 160, 530, 161, 162, 163, + 164, 165, 166, 0, 0, 167, 3892, 0, 0, 168, + 0, 0, 169, 0, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 0, 179, 0, 0, 1529, 180, 0, + 0, 0, 181, 0, 0, 182, 183, 184, 0, 185, + 0, 186, 187, 0, 0, 188, 0, 0, 189, 190, + 0, 191, 192, 0, 193, 194, 0, 195, 196, 197, + 198, 199, 200, 0, 201, 202, 203, 204, 205, 206, + 207, 0, 208, 209, 210, 211, 212, 213, 214, 215, + 0, 216, 217, 0, 218, 219, 220, 221, 222, 0, + 223, 0, 0, 224, 0, 0, 225, 0, 226, 0, + 0, 227, 0, 228, 0, 0, 0, 229, 230, 231, + 0, 0, 232, 0, 0, 0, 0, 233, 234, 0, + 0, 0, 1530, 235, 0, 236, 0, 0, 0, 0, + 237, 0, 238, 239, 240, 241, 242, 0, 0, 0, + 0, 243, 0, 0, 244, 245, 246, 0, 0, 0, + 247, 0, 248, 249, 0, 250, 251, 252, 0, 253, + 254, 0, 255, 256, 257, 258, 259, 260, 261, 0, + 0, 262, 263, 264, 265, 0, 0, 266, 267, 0, + 268, 269, 270, 0, 0, 271, 0, 0, 0, 272, + 273, 0, 274, 0, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 0, 283, 0, 0, 284, 285, 286, + 0, 287, 0, 0, 0, 288, 289, 0, 0, 0, + 290, 291, 292, 293, 294, 0, 0, 0, 295, 296, + 297, 0, 0, 298, 0, 0, 0, 0, 299, 300, + 0, 0, 0, 301, 0, 302, 303, 0, 304, 305, + 0, 0, 0, 306, 0, 0, 307, 308, 309, 0, + 0, 310, 0, 0, 311, 312, 666, 0, 0, 0, + 0, 313, 314, 0, 315, 0, 316, 0, 317, 318, + 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 0, 335, 336, 337, 338, 0, 339, 340, + 341, 342, 0, 343, 344, 345, 0, 0, 0, 0, + 346, 347, 348, 349, 350, 351, 0, 0, 352, 353, + 0, 354, 0, 355, 0, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 365, 0, 0, 366, 0, 0, + 367, 368, 369, 370, 0, 0, 0, 371, 372, 0, + 0, 0, 373, 0, 374, 375, 376, 0, 377, 378, + 379, 380, 0, 381, 382, 0, 0, 0, 0, 0, + 0, 0, 0, 383, 384, 385, 0, 0, 386, 0, + 387, 0, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 0, 0, 398, 399, 400, 0, 401, 0, + 402, 403, 404, 405, 406, 0, 407, 408, 409, 0, + 0, 410, 0, 0, 0, 411, 412, 413, 414, 415, + 0, 0, 416, 417, 418, 419, 420, 0, 421, 422, + 0, 423, 424, 425, 0, 0, 426, 0, 427, 0, + 428, 429, 0, 430, 431, 0, 432, 0, 433, 0, + 0, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 0, 446, 447, 0, 0, 0, 448, + 449, 450, 451, 0, 0, 1531, 452, 0, 0, 0, + 453, 0, 454, 455, 456, 457, 458, 459, 0, 460, + 461, 462, 463, 464, 465, 0, 0, 0, 0, 0, + 0, 466, 467, 0, 468, 0, 0, 469, 0, 0, + 0, 470, 471, 472, 0, 0, 0, 473, 0, 0, + 474, 475, 0, 476, 477, 478, 479, 480, 481, 0, + 0, 482, 483, 484, 485, 0, 486, 487, 0, 0, + 488, 489, 490, 491, 0, 156, 492, 493, 0, 494, + 495, 496, 497, 0, 0, 0, 0, 0, 498, 499, + 500, 0, 0, 0, 501, 502, 503, 504, 0, 505, + 506, 0, 507, 508, 0, 509, 510, 0, 0, 511, + 0, 0, 512, 0, 513, 0, 514, 515, 0, 0, + 0, 0, 0, 0, 516, 0, 0, 517, 0, 0, + 0, 518, 519, 520, 521, 522, 523, 524, 0, 0, + 0, 0, 0, 0, 525, 526, 0, 527, 528, 529, + 0, 0, 530, 0, 160, 1532, 161, 162, 163, 164, + 165, 166, 873, 874, 167, 0, 0, 0, 168, 0, + 0, 169, 0, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 0, 179, 0, 0, 0, 180, 0, 0, + 0, 181, 0, 0, 182, 183, 184, 0, 185, 0, + 186, 187, 0, 0, 188, 0, 0, 189, 190, 0, + 191, 192, 0, 193, 194, 0, 195, 196, 197, 198, + 199, 200, 0, 201, 202, 203, 204, 205, 206, 207, + 0, 208, 209, 210, 211, 212, 213, 214, 215, 0, + 216, 217, 0, 218, 219, 220, 221, 222, 0, 223, + 0, 0, 224, 875, 0, 225, 0, 226, 0, 876, + 227, 0, 228, 0, 0, 0, 229, 230, 231, 0, + 0, 232, 0, 0, 0, 0, 233, 234, 0, 0, + 0, 0, 235, 0, 236, 877, 0, 0, 0, 237, + 0, 238, 239, 240, 241, 242, 0, 0, 0, 0, + 243, 878, 0, 244, 245, 246, 0, 0, 0, 247, + 0, 248, 249, 0, 250, 251, 252, 0, 253, 254, + 0, 255, 256, 879, 258, 259, 260, 880, 0, 0, + 262, 263, 264, 265, 0, 0, 266, 267, 0, 881, + 269, 270, 0, 0, 271, 0, 0, 0, 272, 273, + 0, 274, 0, 275, 0, 276, 277, 278, 279, 280, + 281, 282, 882, 283, 0, 0, 284, 285, 286, 0, + 287, 0, 0, 0, 288, 289, 0, 0, 0, 290, + 291, 292, 293, 294, 0, 0, 0, 295, 296, 297, + 883, 0, 298, 0, 0, 0, 884, 299, 300, 0, + 0, 0, 301, 0, 302, 303, 0, 304, 305, 0, + 0, 0, 306, 0, 0, 307, 308, 309, 0, 0, + 310, 0, 0, 311, 312, 666, 0, 0, 0, 0, + 313, 314, 0, 315, 0, 316, 885, 317, 318, 0, + 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 0, 334, 335, 336, 337, 0, 338, 339, 340, 341, - 0, 342, 343, 344, 0, 0, 0, 0, 345, 346, - 347, 348, 349, 350, 0, 0, 351, 352, 0, 353, - 0, 354, 0, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 365, 0, 0, 366, 367, - 368, 369, 0, 0, 0, 370, 371, 0, 0, 0, - 372, 0, 373, 374, 375, 0, 376, 377, 378, 379, - 0, 380, 381, 0, 0, 0, 0, 0, 0, 0, - 0, 382, 383, 384, 0, 0, 385, 0, 386, 0, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 0, 0, 397, 398, 399, 0, 400, 0, 884, 402, - 403, 404, 979, 0, 406, 407, 408, 0, 0, 409, - 0, 0, 0, 410, 411, 412, 413, 414, 886, 0, - 415, 416, 417, 418, 419, 0, 887, 421, 0, 422, - 423, 424, 0, 0, 888, 0, 426, 0, 427, 428, - 0, 429, 430, 0, 431, 0, 432, 0, 0, 433, + 334, 0, 335, 336, 337, 338, 0, 339, 340, 341, + 342, 0, 343, 344, 345, 0, 0, 0, 0, 346, + 347, 348, 349, 350, 351, 0, 0, 352, 353, 0, + 354, 0, 355, 0, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 0, 0, 366, 0, 0, 367, + 368, 369, 370, 0, 0, 0, 371, 372, 0, 0, + 0, 373, 0, 374, 375, 376, 0, 377, 378, 379, + 380, 0, 381, 382, 0, 0, 0, 0, 0, 0, + 0, 0, 383, 384, 385, 0, 0, 386, 0, 387, + 0, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 0, 0, 398, 399, 400, 0, 401, 0, 886, + 403, 404, 405, 887, 0, 407, 408, 409, 0, 0, + 410, 0, 0, 0, 411, 412, 413, 414, 415, 888, + 0, 416, 417, 418, 419, 420, 0, 889, 422, 0, + 423, 424, 425, 0, 0, 890, 0, 427, 0, 428, + 429, 0, 430, 431, 0, 432, 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 0, 445, 446, 889, 0, 0, 447, 448, 449, - 450, 0, 0, 0, 451, 0, 0, 890, 891, 0, - 453, 454, 455, 456, 457, 458, 0, 459, 460, 461, - 462, 463, 464, 0, 0, 0, 0, 0, 0, 465, - 466, 0, 467, 0, 0, 468, 0, 0, 0, 469, - 470, 471, 0, 0, 0, 472, 0, 0, 473, 474, - 0, 475, 476, 477, 478, 479, 480, 0, 0, 892, - 482, 483, 484, 0, 485, 486, 0, 0, 487, 488, - 489, 490, 0, 156, 491, 492, 0, 493, 494, 495, - 496, 0, 0, 0, 0, 0, 497, 498, 499, 893, - 0, 0, 500, 501, 502, 503, 0, 504, 505, 0, - 506, 507, 0, 508, 509, 0, 0, 510, 0, 0, - 511, 894, 512, 895, 513, 514, 0, 0, 0, 0, - 0, 0, 515, 0, 0, 516, 0, 0, 0, 517, - 518, 519, 520, 521, 522, 523, 0, 0, 0, 0, - 0, 0, 524, 525, 0, 526, 527, 528, 0, 159, - 529, 160, 161, 162, 163, 164, 165, 0, 0, 166, - 0, 0, 0, 167, 0, 0, 168, 0, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 0, 178, 0, - 0, 0, 179, 0, 0, 0, 180, 0, 0, 181, - 182, 183, 0, 184, 0, 185, 186, 0, 0, 187, - 0, 0, 188, 189, 0, 190, 191, 0, 192, 193, - 0, 194, 195, 196, 197, 198, 199, 0, 200, 201, - 202, 203, 204, 205, 206, 0, 207, 208, 209, 210, - 211, 212, 213, 214, 0, 215, 216, 0, 217, 218, - 219, 220, 221, 0, 222, 0, 0, 223, 0, 0, - 224, 0, 225, 0, 0, 226, 0, 227, 0, 0, - 0, 228, 229, 230, 0, 0, 231, 0, 0, 0, - 0, 232, 233, 2594, 0, 0, 0, 234, 0, 235, - 0, 0, 0, 0, 236, 0, 237, 238, 239, 240, - 241, 0, 0, 0, 0, 242, 0, 0, 243, 244, - 245, 0, 0, 0, 246, 0, 247, 248, 0, 249, - 250, 251, 0, 252, 253, 0, 254, 255, 256, 257, - 258, 259, 260, 0, 0, 261, 262, 263, 264, 0, - 0, 265, 266, 0, 267, 268, 269, 2595, 0, 270, - 0, 0, 0, 271, 272, 0, 273, 0, 274, 0, - 275, 276, 277, 278, 279, 280, 281, 0, 282, 0, - 0, 283, 284, 285, 0, 286, 2596, 0, 0, 287, - 288, 0, 0, 0, 289, 290, 291, 292, 293, 0, - 0, 0, 294, 295, 296, 0, 0, 297, 0, 0, - 0, 0, 298, 299, 0, 0, 0, 300, 0, 301, - 302, 0, 303, 304, 0, 0, 0, 305, 0, 0, - 306, 307, 308, 0, 0, 309, 0, 0, 310, 311, - 0, 0, 0, 0, 0, 312, 313, 0, 314, 0, - 315, 0, 316, 317, 0, 0, 2597, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 0, 334, 335, 336, - 337, 0, 338, 339, 340, 341, 0, 342, 343, 344, - 0, 0, 0, 0, 345, 346, 347, 348, 349, 350, - 0, 0, 351, 352, 0, 353, 0, 354, 0, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 365, 0, 0, 366, 367, 368, 369, 152, 153, - 0, 370, 371, 0, 0, 2598, 372, 0, 373, 374, - 375, 0, 376, 377, 378, 379, 0, 380, 381, 0, - 0, 0, 0, 0, 0, 0, 0, 382, 383, 384, - 0, 0, 385, 0, 386, 0, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 0, 0, 397, 398, - 399, 0, 400, 0, 401, 402, 403, 404, 405, 0, - 406, 407, 408, 0, 0, 409, 0, 0, 0, 410, - 411, 412, 413, 414, 0, 0, 415, 416, 417, 418, - 419, 0, 420, 421, 0, 422, 423, 424, 0, 0, - 425, 0, 426, 0, 427, 428, 0, 429, 430, 0, - 431, 0, 432, 0, 0, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 0, 445, 446, - 0, 0, 0, 447, 448, 449, 450, 0, 0, 0, - 451, 0, 0, 0, 452, 0, 453, 454, 455, 456, - 457, 458, 0, 459, 460, 461, 462, 463, 464, 0, - 0, 4430, 595, 4431, 0, 465, 466, 0, 467, 0, - 0, 468, 0, 0, 0, 469, 470, 471, 0, 0, - 0, 472, 0, 0, 473, 474, 0, 475, 476, 477, - 478, 479, 480, 0, 0, 481, 482, 483, 484, 0, - 485, 486, 0, 0, 487, 488, 489, 490, 0, 0, - 491, 492, 0, 493, 494, 495, 496, 0, 0, 0, - 0, 0, 497, 498, 499, 0, 0, 0, 500, 501, - 502, 503, 2599, 504, 505, 0, 506, 507, 0, 508, - 509, 0, 0, 510, 0, 0, 511, 0, 512, 0, - 513, 514, 0, 0, 0, 0, 0, 0, 515, 0, - 0, 516, 0, 0, 0, 517, 518, 519, 520, 521, - 522, 523, 0, 0, 0, 0, 0, 0, 524, 525, - 0, 526, 527, 528, 0, 159, 529, 160, 161, 162, - 163, 164, 165, 0, 0, 166, 0, 0, 0, 167, - 0, 0, 168, 0, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 0, 178, 0, 0, 0, 179, 0, - 0, 0, 180, 0, 0, 181, 182, 183, 0, 184, - 0, 185, 186, 0, 0, 187, 0, 0, 188, 189, - 0, 190, 191, 0, 192, 193, 0, 194, 195, 196, - 197, 198, 199, 0, 200, 201, 202, 203, 204, 205, - 206, 0, 207, 208, 209, 210, 211, 212, 213, 214, - 0, 215, 216, 0, 217, 218, 219, 220, 221, 0, - 222, 0, 0, 223, 0, 0, 224, 0, 225, 0, - 0, 226, 0, 227, 0, 0, 0, 228, 229, 230, - 0, 0, 231, 0, 0, 0, 0, 232, 233, 1774, - 0, 0, 3705, 234, 0, 235, 0, 0, 0, 0, - 236, 0, 237, 238, 239, 240, 241, 0, 0, 0, - 0, 242, 0, 0, 243, 244, 245, 0, 0, 0, - 246, 0, 247, 248, 0, 249, 250, 251, 0, 252, - 253, 0, 254, 255, 256, 257, 258, 259, 260, 0, - 0, 261, 262, 263, 264, 0, 0, 265, 266, 0, - 267, 268, 269, 1775, 0, 270, 0, 0, 0, 271, - 272, 0, 273, 0, 274, 0, 275, 276, 277, 278, - 279, 280, 281, 0, 282, 0, 0, 283, 284, 285, - 0, 286, 3189, 0, 0, 287, 288, 0, 0, 0, - 289, 290, 291, 292, 293, 0, 0, 0, 294, 295, - 296, 0, 0, 297, 0, 0, 0, 0, 298, 299, - 0, 0, 0, 300, 0, 301, 302, 0, 303, 304, - 0, 0, 0, 305, 0, 0, 306, 307, 308, 0, - 0, 309, 0, 0, 310, 311, 0, 0, 0, 0, - 0, 312, 313, 0, 314, 0, 315, 0, 316, 317, - 0, 0, 3190, 0, 0, 0, 318, 319, 320, 321, + 444, 445, 0, 446, 447, 891, 0, 0, 448, 449, + 450, 451, 0, 0, 0, 452, 0, 0, 892, 893, + 0, 454, 455, 456, 457, 458, 459, 0, 460, 461, + 462, 463, 464, 465, 0, 0, 0, 0, 0, 0, + 466, 467, 0, 468, 0, 0, 469, 0, 0, 0, + 470, 471, 472, 0, 0, 0, 473, 0, 0, 474, + 475, 0, 476, 477, 478, 479, 480, 481, 0, 0, + 894, 483, 484, 485, 0, 486, 487, 0, 0, 488, + 489, 490, 491, 0, 156, 492, 493, 0, 494, 495, + 496, 497, 0, 0, 0, 0, 0, 498, 499, 500, + 895, 0, 0, 501, 502, 503, 504, 0, 505, 506, + 0, 507, 508, 0, 509, 510, 0, 0, 511, 0, + 0, 512, 896, 513, 897, 514, 515, 0, 0, 0, + 0, 0, 0, 516, 0, 0, 517, 0, 0, 0, + 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, + 0, 0, 0, 525, 526, 0, 527, 528, 529, 0, + 160, 530, 979, 162, 163, 164, 165, 166, 980, 874, + 167, 0, 0, 0, 168, 0, 0, 169, 0, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 0, 179, + 0, 0, 0, 180, 0, 0, 0, 181, 0, 0, + 182, 183, 184, 0, 185, 0, 186, 187, 0, 0, + 188, 0, 0, 189, 190, 0, 191, 192, 0, 193, + 194, 0, 195, 196, 197, 198, 199, 200, 0, 201, + 202, 203, 204, 205, 206, 207, 0, 208, 209, 210, + 211, 212, 213, 214, 215, 0, 216, 217, 0, 218, + 219, 220, 221, 222, 0, 223, 0, 0, 224, 875, + 0, 225, 0, 226, 0, 876, 227, 0, 228, 0, + 0, 0, 229, 230, 231, 0, 0, 232, 0, 0, + 0, 0, 233, 234, 0, 0, 0, 0, 235, 0, + 236, 877, 0, 0, 0, 237, 0, 238, 239, 240, + 241, 242, 0, 0, 0, 0, 243, 878, 0, 244, + 245, 246, 0, 0, 0, 247, 0, 248, 249, 0, + 250, 251, 252, 0, 253, 254, 0, 255, 256, 879, + 258, 259, 260, 880, 0, 0, 262, 263, 264, 265, + 0, 0, 266, 267, 0, 881, 269, 270, 0, 0, + 271, 0, 0, 0, 272, 273, 0, 274, 0, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 882, 283, + 0, 0, 284, 285, 286, 0, 287, 0, 0, 0, + 288, 289, 0, 0, 0, 290, 291, 292, 293, 294, + 0, 0, 0, 295, 296, 297, 883, 0, 298, 0, + 0, 0, 884, 299, 300, 0, 0, 0, 301, 0, + 302, 303, 0, 304, 305, 0, 0, 0, 306, 0, + 0, 307, 308, 309, 0, 0, 310, 0, 0, 311, + 312, 666, 0, 0, 0, 0, 313, 314, 0, 315, + 0, 316, 885, 317, 318, 0, 0, 0, 0, 0, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 0, 335, 336, + 337, 338, 0, 339, 340, 341, 342, 0, 343, 344, + 345, 0, 0, 0, 0, 346, 347, 348, 349, 350, + 351, 0, 0, 352, 353, 0, 354, 0, 355, 0, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 0, 0, 366, 0, 0, 367, 368, 369, 370, 0, + 0, 0, 371, 372, 0, 0, 0, 373, 0, 374, + 375, 376, 0, 377, 378, 379, 380, 0, 381, 382, + 0, 0, 0, 0, 0, 0, 0, 0, 383, 384, + 385, 0, 0, 386, 0, 387, 0, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 0, 0, 398, + 399, 400, 0, 401, 0, 886, 403, 404, 405, 981, + 0, 407, 408, 409, 0, 0, 410, 0, 0, 0, + 411, 412, 413, 414, 415, 888, 0, 416, 417, 418, + 419, 420, 0, 889, 422, 0, 423, 424, 425, 0, + 0, 890, 0, 427, 0, 428, 429, 0, 430, 431, + 0, 432, 0, 433, 0, 0, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 0, 446, + 447, 891, 0, 0, 448, 449, 450, 451, 0, 0, + 0, 452, 0, 0, 892, 893, 0, 454, 455, 456, + 457, 458, 459, 0, 460, 461, 462, 463, 464, 465, + 0, 0, 0, 0, 0, 0, 466, 467, 0, 468, + 0, 0, 469, 0, 0, 0, 470, 471, 472, 0, + 0, 0, 473, 0, 0, 474, 475, 0, 476, 477, + 478, 479, 480, 481, 0, 0, 894, 483, 484, 485, + 0, 486, 487, 0, 0, 488, 489, 490, 491, 0, + 156, 492, 493, 0, 494, 495, 496, 497, 0, 0, + 0, 0, 0, 498, 499, 500, 895, 0, 0, 501, + 502, 503, 504, 0, 505, 506, 0, 507, 508, 0, + 509, 510, 0, 0, 511, 0, 0, 512, 896, 513, + 897, 514, 515, 0, 0, 0, 0, 0, 0, 516, + 0, 0, 517, 0, 0, 0, 518, 519, 520, 521, + 522, 523, 524, 0, 0, 0, 0, 0, 0, 525, + 526, 0, 527, 528, 529, 0, 160, 530, 161, 162, + 163, 164, 165, 166, 0, 0, 167, 0, 0, 0, + 168, 0, 0, 169, 0, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 0, 179, 0, 0, 0, 180, + 0, 0, 0, 181, 0, 0, 182, 183, 184, 0, + 185, 0, 186, 187, 0, 0, 188, 0, 0, 189, + 190, 0, 191, 192, 0, 193, 194, 0, 195, 196, + 197, 198, 199, 200, 0, 201, 202, 203, 204, 205, + 206, 207, 0, 208, 209, 210, 211, 212, 213, 214, + 215, 0, 216, 217, 0, 218, 219, 220, 221, 222, + 0, 223, 0, 0, 224, 0, 0, 225, 0, 226, + 0, 0, 227, 0, 228, 0, 0, 0, 229, 230, + 231, 0, 0, 232, 0, 0, 0, 0, 233, 234, + 2599, 0, 0, 0, 235, 0, 236, 0, 0, 0, + 0, 237, 0, 238, 239, 240, 241, 242, 0, 0, + 0, 0, 243, 0, 0, 244, 245, 246, 0, 0, + 0, 247, 0, 248, 249, 0, 250, 251, 252, 0, + 253, 254, 0, 255, 256, 257, 258, 259, 260, 261, + 0, 0, 262, 263, 264, 265, 0, 0, 266, 267, + 0, 268, 269, 270, 2600, 0, 271, 0, 0, 0, + 272, 273, 0, 274, 0, 275, 0, 276, 277, 278, + 279, 280, 281, 282, 0, 283, 0, 0, 284, 285, + 286, 0, 287, 2601, 0, 0, 288, 289, 0, 0, + 0, 290, 291, 292, 293, 294, 0, 0, 0, 295, + 296, 297, 0, 0, 298, 0, 0, 0, 0, 299, + 300, 0, 0, 0, 301, 0, 302, 303, 0, 304, + 305, 0, 0, 0, 306, 0, 0, 307, 308, 309, + 0, 0, 310, 0, 0, 311, 312, 0, 0, 0, + 0, 0, 313, 314, 0, 315, 0, 316, 0, 317, + 318, 0, 0, 2602, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 0, 334, 335, 336, 337, 0, 338, 339, - 340, 341, 0, 342, 343, 344, 0, 0, 0, 0, - 345, 346, 347, 348, 349, 350, 0, 0, 351, 352, - 0, 353, 0, 354, 0, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 365, 0, 0, - 366, 367, 368, 369, 0, 0, 0, 370, 371, 0, - 0, 3191, 372, 0, 373, 374, 375, 0, 376, 377, - 378, 379, 0, 380, 381, 0, 0, 0, 0, 0, - 0, 0, 0, 382, 383, 384, 0, 0, 385, 0, - 386, 0, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 0, 0, 397, 398, 399, 0, 400, 0, - 401, 402, 403, 404, 405, 0, 406, 407, 408, 0, - 0, 409, 0, 0, 0, 410, 411, 412, 413, 414, - 0, 0, 415, 416, 417, 418, 419, 0, 420, 421, - 0, 422, 423, 424, 0, 0, 425, 0, 426, 0, - 427, 428, 0, 429, 430, 0, 431, 0, 432, 0, - 0, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 0, 445, 446, 0, 0, 0, 447, - 448, 449, 450, 0, 0, 0, 451, 0, 0, 0, - 452, 0, 453, 454, 455, 456, 457, 458, 0, 459, - 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, - 0, 465, 466, 0, 467, 0, 0, 468, 0, 0, - 0, 469, 470, 471, 0, 0, 0, 472, 0, 0, - 473, 474, 0, 475, 476, 477, 478, 479, 480, 0, - 0, 481, 482, 483, 484, 0, 485, 486, 0, 0, - 487, 488, 489, 490, 0, 156, 491, 492, 0, 493, - 494, 495, 496, 0, 0, 0, 0, 0, 497, 498, - 499, 0, 0, 0, 500, 501, 502, 503, 3192, 504, - 505, 0, 506, 507, 0, 508, 509, 0, 0, 510, - 0, 0, 511, 0, 512, 0, 513, 514, 0, 0, - 0, 0, 0, 0, 515, 0, 0, 516, 0, 0, - 0, 517, 518, 519, 520, 521, 522, 523, 0, 0, - 0, 0, 0, 0, 524, 525, 0, 526, 527, 528, - 0, 159, 529, 160, 161, 162, 163, 164, 165, 0, - 0, 166, 0, 0, 0, 167, 0, 0, 168, 0, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 0, - 178, 0, 0, 0, 179, 0, 0, 0, 180, 0, - 0, 181, 182, 183, 0, 184, 0, 185, 186, 0, - 0, 187, 0, 0, 188, 189, 0, 190, 191, 0, - 192, 193, 0, 194, 195, 196, 197, 198, 199, 0, - 200, 201, 202, 203, 204, 205, 206, 0, 207, 208, - 209, 210, 211, 212, 213, 214, 0, 215, 216, 0, - 217, 218, 219, 220, 221, 0, 222, 0, 0, 223, - 0, 0, 224, 0, 225, 0, 0, 226, 0, 227, - 0, 0, 0, 228, 229, 230, 0, 0, 231, 0, - 0, 0, 0, 232, 233, 1774, 0, 0, 4669, 234, - 0, 235, 0, 0, 0, 0, 236, 0, 237, 238, - 239, 240, 241, 0, 0, 0, 0, 242, 0, 0, - 243, 244, 245, 0, 0, 0, 246, 0, 247, 248, - 0, 249, 250, 251, 0, 252, 253, 0, 254, 255, - 256, 257, 258, 259, 260, 0, 0, 261, 262, 263, - 264, 0, 0, 265, 266, 0, 267, 268, 269, 1775, - 0, 270, 0, 0, 0, 271, 272, 0, 273, 0, - 274, 0, 275, 276, 277, 278, 279, 280, 281, 0, - 282, 0, 0, 283, 284, 285, 0, 286, 3189, 0, - 0, 287, 288, 0, 0, 0, 289, 290, 291, 292, - 293, 0, 0, 0, 294, 295, 296, 0, 0, 297, - 0, 0, 0, 0, 298, 299, 0, 0, 0, 300, - 0, 301, 302, 0, 303, 304, 0, 0, 0, 305, - 0, 0, 306, 307, 308, 0, 0, 309, 0, 0, - 310, 311, 0, 0, 0, 0, 0, 312, 313, 0, - 314, 0, 315, 0, 316, 317, 0, 0, 3190, 0, - 0, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, - 335, 336, 337, 0, 338, 339, 340, 341, 0, 342, - 343, 344, 0, 0, 0, 0, 345, 346, 347, 348, - 349, 350, 0, 0, 351, 352, 0, 353, 0, 354, - 0, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 365, 0, 0, 366, 367, 368, 369, - 0, 0, 0, 370, 371, 0, 0, 3191, 372, 0, - 373, 374, 375, 0, 376, 377, 378, 379, 0, 380, - 381, 0, 0, 0, 0, 0, 0, 0, 0, 382, - 383, 384, 0, 0, 385, 0, 386, 0, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 0, 0, - 397, 398, 399, 0, 400, 0, 401, 402, 403, 404, - 405, 0, 406, 407, 408, 0, 0, 409, 0, 0, - 0, 410, 411, 412, 413, 414, 0, 0, 415, 416, - 417, 418, 419, 0, 420, 421, 0, 422, 423, 424, - 0, 0, 425, 0, 426, 0, 427, 428, 0, 429, - 430, 0, 431, 0, 432, 0, 0, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 0, - 445, 446, 0, 0, 0, 447, 448, 449, 450, 0, - 0, 0, 451, 0, 0, 0, 452, 0, 453, 454, - 455, 456, 457, 458, 0, 459, 460, 461, 462, 463, - 464, 0, 0, 0, 0, 0, 0, 465, 466, 0, - 467, 0, 0, 468, 0, 0, 0, 469, 470, 471, - 0, 0, 0, 472, 0, 0, 473, 474, 0, 475, - 476, 477, 478, 479, 480, 0, 0, 481, 482, 483, - 484, 0, 485, 486, 0, 0, 487, 488, 489, 490, - 0, 156, 491, 492, 0, 493, 494, 495, 496, 0, - 0, 0, 0, 0, 497, 498, 499, 0, 0, 0, - 500, 501, 502, 503, 3192, 504, 505, 0, 506, 507, - 0, 508, 509, 0, 0, 510, 0, 0, 511, 0, - 512, 0, 513, 514, 0, 0, 0, 0, 0, 0, - 515, 0, 0, 516, 0, 0, 0, 517, 518, 519, - 520, 521, 522, 523, 0, 0, 0, 0, 0, 0, - 524, 525, 0, 526, 527, 528, 0, 159, 529, 160, - 161, 162, 163, 164, 165, 0, 0, 166, 0, 0, - 0, 167, 0, 0, 168, 0, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 0, 178, 0, 0, 0, - 179, 0, 0, 0, 180, 0, 0, 181, 182, 183, - 0, 184, 0, 185, 186, 0, 0, 187, 0, 0, - 188, 189, 0, 190, 191, 0, 192, 193, 0, 194, - 195, 196, 197, 198, 199, 0, 200, 201, 202, 203, - 204, 205, 206, 0, 207, 208, 209, 210, 211, 212, - 213, 214, 0, 215, 216, 0, 217, 218, 219, 220, - 221, 0, 222, 0, 0, 223, 0, 0, 224, 0, - 225, 0, 0, 226, 0, 227, 0, 0, 0, 228, - 229, 230, 0, 0, 231, 0, 0, 0, 0, 232, - 233, 1774, 0, 0, 4738, 234, 0, 235, 0, 0, - 0, 0, 236, 0, 237, 238, 239, 240, 241, 0, - 0, 0, 0, 242, 0, 0, 243, 244, 245, 0, - 0, 0, 246, 0, 247, 248, 0, 249, 250, 251, - 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, - 260, 0, 0, 261, 262, 263, 264, 0, 0, 265, - 266, 0, 267, 268, 269, 1775, 0, 270, 0, 0, - 0, 271, 272, 0, 273, 0, 274, 0, 275, 276, - 277, 278, 279, 280, 281, 0, 282, 0, 0, 283, - 284, 285, 0, 286, 3189, 0, 0, 287, 288, 0, - 0, 0, 289, 290, 291, 292, 293, 0, 0, 0, - 294, 295, 296, 0, 0, 297, 0, 0, 0, 0, - 298, 299, 0, 0, 0, 300, 0, 301, 302, 0, - 303, 304, 0, 0, 0, 305, 0, 0, 306, 307, - 308, 0, 0, 309, 0, 0, 310, 311, 0, 0, - 0, 0, 0, 312, 313, 0, 314, 0, 315, 0, - 316, 317, 0, 0, 3190, 0, 0, 0, 318, 319, + 332, 333, 334, 0, 335, 336, 337, 338, 0, 339, + 340, 341, 342, 0, 343, 344, 345, 0, 0, 0, + 0, 346, 347, 348, 349, 350, 351, 0, 0, 352, + 353, 0, 354, 0, 355, 0, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 0, 0, 366, 0, + 0, 367, 368, 369, 370, 152, 153, 0, 371, 372, + 0, 0, 2603, 373, 0, 374, 375, 376, 0, 377, + 378, 379, 380, 0, 381, 382, 0, 0, 0, 0, + 0, 0, 0, 0, 383, 384, 385, 0, 0, 386, + 0, 387, 0, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 0, 0, 398, 399, 400, 0, 401, + 0, 402, 403, 404, 405, 406, 0, 407, 408, 409, + 0, 0, 410, 0, 0, 0, 411, 412, 413, 414, + 415, 0, 0, 416, 417, 418, 419, 420, 0, 421, + 422, 0, 423, 424, 425, 0, 0, 426, 0, 427, + 0, 428, 429, 0, 430, 431, 0, 432, 0, 433, + 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 0, 446, 447, 0, 0, 0, + 448, 449, 450, 451, 0, 0, 0, 452, 0, 0, + 0, 453, 0, 454, 455, 456, 457, 458, 459, 0, + 460, 461, 462, 463, 464, 465, 0, 0, 4435, 596, + 4436, 0, 466, 467, 0, 468, 0, 0, 469, 0, + 0, 0, 470, 471, 472, 0, 0, 0, 473, 0, + 0, 474, 475, 0, 476, 477, 478, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 0, + 0, 488, 489, 490, 491, 0, 0, 492, 493, 0, + 494, 495, 496, 497, 0, 0, 0, 0, 0, 498, + 499, 500, 0, 0, 0, 501, 502, 503, 504, 2604, + 505, 506, 0, 507, 508, 0, 509, 510, 0, 0, + 511, 0, 0, 512, 0, 513, 0, 514, 515, 0, + 0, 0, 0, 0, 0, 516, 0, 0, 517, 0, + 0, 0, 518, 519, 520, 521, 522, 523, 524, 0, + 0, 0, 0, 0, 0, 525, 526, 0, 527, 528, + 529, 0, 160, 530, 161, 162, 163, 164, 165, 166, + 0, 0, 167, 0, 0, 0, 168, 0, 0, 169, + 0, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 0, 179, 0, 0, 0, 180, 0, 0, 0, 181, + 0, 0, 182, 183, 184, 0, 185, 0, 186, 187, + 0, 0, 188, 0, 0, 189, 190, 0, 191, 192, + 0, 193, 194, 0, 195, 196, 197, 198, 199, 200, + 0, 201, 202, 203, 204, 205, 206, 207, 0, 208, + 209, 210, 211, 212, 213, 214, 215, 0, 216, 217, + 0, 218, 219, 220, 221, 222, 0, 223, 0, 0, + 224, 0, 0, 225, 0, 226, 0, 0, 227, 0, + 228, 0, 0, 0, 229, 230, 231, 0, 0, 232, + 0, 0, 0, 0, 233, 234, 1778, 0, 0, 3710, + 235, 0, 236, 0, 0, 0, 0, 237, 0, 238, + 239, 240, 241, 242, 0, 0, 0, 0, 243, 0, + 0, 244, 245, 246, 0, 0, 0, 247, 0, 248, + 249, 0, 250, 251, 252, 0, 253, 254, 0, 255, + 256, 257, 258, 259, 260, 261, 0, 0, 262, 263, + 264, 265, 0, 0, 266, 267, 0, 268, 269, 270, + 1779, 0, 271, 0, 0, 0, 272, 273, 0, 274, + 0, 275, 0, 276, 277, 278, 279, 280, 281, 282, + 0, 283, 0, 0, 284, 285, 286, 0, 287, 3194, + 0, 0, 288, 289, 0, 0, 0, 290, 291, 292, + 293, 294, 0, 0, 0, 295, 296, 297, 0, 0, + 298, 0, 0, 0, 0, 299, 300, 0, 0, 0, + 301, 0, 302, 303, 0, 304, 305, 0, 0, 0, + 306, 0, 0, 307, 308, 309, 0, 0, 310, 0, + 0, 311, 312, 0, 0, 0, 0, 0, 313, 314, + 0, 315, 0, 316, 0, 317, 318, 0, 0, 3195, + 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 334, 0, + 335, 336, 337, 338, 0, 339, 340, 341, 342, 0, + 343, 344, 345, 0, 0, 0, 0, 346, 347, 348, + 349, 350, 351, 0, 0, 352, 353, 0, 354, 0, + 355, 0, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 0, 0, 366, 0, 0, 367, 368, 369, + 370, 0, 0, 0, 371, 372, 0, 0, 3196, 373, + 0, 374, 375, 376, 0, 377, 378, 379, 380, 0, + 381, 382, 0, 0, 0, 0, 0, 0, 0, 0, + 383, 384, 385, 0, 0, 386, 0, 387, 0, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, + 0, 398, 399, 400, 0, 401, 0, 402, 403, 404, + 405, 406, 0, 407, 408, 409, 0, 0, 410, 0, + 0, 0, 411, 412, 413, 414, 415, 0, 0, 416, + 417, 418, 419, 420, 0, 421, 422, 0, 423, 424, + 425, 0, 0, 426, 0, 427, 0, 428, 429, 0, + 430, 431, 0, 432, 0, 433, 0, 0, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 0, 446, 447, 0, 0, 0, 448, 449, 450, 451, + 0, 0, 0, 452, 0, 0, 0, 453, 0, 454, + 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, + 464, 465, 0, 0, 0, 0, 0, 0, 466, 467, + 0, 468, 0, 0, 469, 0, 0, 0, 470, 471, + 472, 0, 0, 0, 473, 0, 0, 474, 475, 0, + 476, 477, 478, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 0, 0, 488, 489, 490, + 491, 0, 156, 492, 493, 0, 494, 495, 496, 497, + 0, 0, 0, 0, 0, 498, 499, 500, 0, 0, + 0, 501, 502, 503, 504, 3197, 505, 506, 0, 507, + 508, 0, 509, 510, 0, 0, 511, 0, 0, 512, + 0, 513, 0, 514, 515, 0, 0, 0, 0, 0, + 0, 516, 0, 0, 517, 0, 0, 0, 518, 519, + 520, 521, 522, 523, 524, 0, 0, 0, 0, 0, + 0, 525, 526, 0, 527, 528, 529, 0, 160, 530, + 161, 162, 163, 164, 165, 166, 0, 0, 167, 0, + 0, 0, 168, 0, 0, 169, 0, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 0, 179, 0, 0, + 0, 180, 0, 0, 0, 181, 0, 0, 182, 183, + 184, 0, 185, 0, 186, 187, 0, 0, 188, 0, + 0, 189, 190, 0, 191, 192, 0, 193, 194, 0, + 195, 196, 197, 198, 199, 200, 0, 201, 202, 203, + 204, 205, 206, 207, 0, 208, 209, 210, 211, 212, + 213, 214, 215, 0, 216, 217, 0, 218, 219, 220, + 221, 222, 0, 223, 0, 0, 224, 0, 0, 225, + 0, 226, 0, 0, 227, 0, 228, 0, 0, 0, + 229, 230, 231, 0, 0, 232, 0, 0, 0, 0, + 233, 234, 1778, 0, 0, 4674, 235, 0, 236, 0, + 0, 0, 0, 237, 0, 238, 239, 240, 241, 242, + 0, 0, 0, 0, 243, 0, 0, 244, 245, 246, + 0, 0, 0, 247, 0, 248, 249, 0, 250, 251, + 252, 0, 253, 254, 0, 255, 256, 257, 258, 259, + 260, 261, 0, 0, 262, 263, 264, 265, 0, 0, + 266, 267, 0, 268, 269, 270, 1779, 0, 271, 0, + 0, 0, 272, 273, 0, 274, 0, 275, 0, 276, + 277, 278, 279, 280, 281, 282, 0, 283, 0, 0, + 284, 285, 286, 0, 287, 3194, 0, 0, 288, 289, + 0, 0, 0, 290, 291, 292, 293, 294, 0, 0, + 0, 295, 296, 297, 0, 0, 298, 0, 0, 0, + 0, 299, 300, 0, 0, 0, 301, 0, 302, 303, + 0, 304, 305, 0, 0, 0, 306, 0, 0, 307, + 308, 309, 0, 0, 310, 0, 0, 311, 312, 0, + 0, 0, 0, 0, 313, 314, 0, 315, 0, 316, + 0, 317, 318, 0, 0, 3195, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 0, 334, 335, 336, 337, 0, - 338, 339, 340, 341, 0, 342, 343, 344, 0, 0, - 0, 0, 345, 346, 347, 348, 349, 350, 0, 0, - 351, 352, 0, 353, 0, 354, 0, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 365, - 0, 0, 366, 367, 368, 369, 0, 0, 0, 370, - 371, 0, 0, 3191, 372, 0, 373, 374, 375, 0, - 376, 377, 378, 379, 0, 380, 381, 0, 0, 0, - 0, 0, 0, 0, 0, 382, 383, 384, 0, 0, - 385, 0, 386, 0, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 0, 0, 397, 398, 399, 0, - 400, 0, 401, 402, 403, 404, 405, 0, 406, 407, - 408, 0, 0, 409, 0, 0, 0, 410, 411, 412, - 413, 414, 0, 0, 415, 416, 417, 418, 419, 0, - 420, 421, 0, 422, 423, 424, 0, 0, 425, 0, - 426, 0, 427, 428, 0, 429, 430, 0, 431, 0, - 432, 0, 0, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 0, 445, 446, 0, 0, - 0, 447, 448, 449, 450, 0, 0, 0, 451, 0, - 0, 0, 452, 0, 453, 454, 455, 456, 457, 458, - 0, 459, 460, 461, 462, 463, 464, 0, 0, 0, - 0, 0, 0, 465, 466, 0, 467, 0, 0, 468, - 0, 0, 0, 469, 470, 471, 0, 0, 0, 472, - 0, 0, 473, 474, 0, 475, 476, 477, 478, 479, - 480, 0, 0, 481, 482, 483, 484, 0, 485, 486, - 0, 0, 487, 488, 489, 490, 0, 156, 491, 492, - 0, 493, 494, 495, 496, 0, 0, 0, 0, 0, - 497, 498, 499, 0, 0, 0, 500, 501, 502, 503, - 3192, 504, 505, 0, 506, 507, 0, 508, 509, 0, - 0, 510, 0, 0, 511, 0, 512, 0, 513, 514, - 0, 0, 0, 0, 0, 0, 515, 0, 0, 516, - 0, 0, 0, 517, 518, 519, 520, 521, 522, 523, - 0, 0, 0, 0, 0, 0, 524, 525, 0, 526, - 527, 528, 0, 159, 529, 160, 161, 162, 163, 164, - 165, 0, 0, 166, 0, 0, 0, 167, 0, 0, - 168, 0, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 0, 178, 0, 0, 0, 179, 0, 0, 0, - 180, 0, 0, 181, 182, 183, 0, 184, 0, 185, - 186, 0, 0, 187, 0, 0, 188, 189, 0, 190, - 191, 0, 192, 193, 0, 194, 195, 196, 197, 198, - 199, 0, 200, 201, 202, 203, 204, 205, 206, 0, - 207, 208, 209, 210, 211, 212, 213, 214, 0, 215, - 216, 0, 217, 218, 219, 220, 221, 0, 222, 0, - 0, 223, 0, 0, 224, 0, 225, 1122, 874, 226, - 0, 227, 0, 0, 0, 228, 229, 230, 0, 0, - 231, 0, 0, 0, 0, 232, 233, 0, 0, 0, - 0, 234, 0, 235, 0, 0, 0, 0, 236, 0, - 237, 238, 239, 240, 241, 0, 0, 0, 0, 242, - 0, 0, 243, 244, 245, 0, 0, 0, 246, 0, - 247, 248, 0, 249, 250, 251, 0, 252, 253, 0, - 254, 255, 256, 257, 258, 259, 260, 0, 0, 261, - 262, 263, 264, 0, 0, 265, 266, 0, 267, 268, - 269, 0, 0, 270, 0, 0, 0, 271, 272, 0, - 273, 0, 274, 0, 275, 276, 277, 278, 279, 280, - 281, 0, 282, 0, 0, 283, 284, 285, 0, 286, - 0, 0, 0, 287, 288, 0, 0, 0, 289, 290, - 291, 292, 293, 0, 0, 0, 294, 295, 296, 0, - 0, 297, 0, 0, 0, 0, 298, 299, 0, 0, - 0, 300, 0, 301, 302, 0, 303, 304, 0, 0, - 0, 305, 0, 0, 306, 307, 308, 0, 0, 309, - 0, 0, 310, 311, 665, 0, 0, 0, 0, 312, - 313, 0, 314, 0, 315, 0, 316, 317, 0, 0, - 0, 0, 0, 0, 318, 319, 320, 321, 322, 323, + 330, 331, 332, 333, 334, 0, 335, 336, 337, 338, + 0, 339, 340, 341, 342, 0, 343, 344, 345, 0, + 0, 0, 0, 346, 347, 348, 349, 350, 351, 0, + 0, 352, 353, 0, 354, 0, 355, 0, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 0, 0, + 366, 0, 0, 367, 368, 369, 370, 0, 0, 0, + 371, 372, 0, 0, 3196, 373, 0, 374, 375, 376, + 0, 377, 378, 379, 380, 0, 381, 382, 0, 0, + 0, 0, 0, 0, 0, 0, 383, 384, 385, 0, + 0, 386, 0, 387, 0, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 0, 0, 398, 399, 400, + 0, 401, 0, 402, 403, 404, 405, 406, 0, 407, + 408, 409, 0, 0, 410, 0, 0, 0, 411, 412, + 413, 414, 415, 0, 0, 416, 417, 418, 419, 420, + 0, 421, 422, 0, 423, 424, 425, 0, 0, 426, + 0, 427, 0, 428, 429, 0, 430, 431, 0, 432, + 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 0, 446, 447, 0, + 0, 0, 448, 449, 450, 451, 0, 0, 0, 452, + 0, 0, 0, 453, 0, 454, 455, 456, 457, 458, + 459, 0, 460, 461, 462, 463, 464, 465, 0, 0, + 0, 0, 0, 0, 466, 467, 0, 468, 0, 0, + 469, 0, 0, 0, 470, 471, 472, 0, 0, 0, + 473, 0, 0, 474, 475, 0, 476, 477, 478, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 0, 0, 488, 489, 490, 491, 0, 156, 492, + 493, 0, 494, 495, 496, 497, 0, 0, 0, 0, + 0, 498, 499, 500, 0, 0, 0, 501, 502, 503, + 504, 3197, 505, 506, 0, 507, 508, 0, 509, 510, + 0, 0, 511, 0, 0, 512, 0, 513, 0, 514, + 515, 0, 0, 0, 0, 0, 0, 516, 0, 0, + 517, 0, 0, 0, 518, 519, 520, 521, 522, 523, + 524, 0, 0, 0, 0, 0, 0, 525, 526, 0, + 527, 528, 529, 0, 160, 530, 161, 162, 163, 164, + 165, 166, 0, 0, 167, 0, 0, 0, 168, 0, + 0, 169, 0, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 0, 179, 0, 0, 0, 180, 0, 0, + 0, 181, 0, 0, 182, 183, 184, 0, 185, 0, + 186, 187, 0, 0, 188, 0, 0, 189, 190, 0, + 191, 192, 0, 193, 194, 0, 195, 196, 197, 198, + 199, 200, 0, 201, 202, 203, 204, 205, 206, 207, + 0, 208, 209, 210, 211, 212, 213, 214, 215, 0, + 216, 217, 0, 218, 219, 220, 221, 222, 0, 223, + 0, 0, 224, 0, 0, 225, 0, 226, 0, 0, + 227, 0, 228, 0, 0, 0, 229, 230, 231, 0, + 0, 232, 0, 0, 0, 0, 233, 234, 1778, 0, + 0, 4743, 235, 0, 236, 0, 0, 0, 0, 237, + 0, 238, 239, 240, 241, 242, 0, 0, 0, 0, + 243, 0, 0, 244, 245, 246, 0, 0, 0, 247, + 0, 248, 249, 0, 250, 251, 252, 0, 253, 254, + 0, 255, 256, 257, 258, 259, 260, 261, 0, 0, + 262, 263, 264, 265, 0, 0, 266, 267, 0, 268, + 269, 270, 1779, 0, 271, 0, 0, 0, 272, 273, + 0, 274, 0, 275, 0, 276, 277, 278, 279, 280, + 281, 282, 0, 283, 0, 0, 284, 285, 286, 0, + 287, 3194, 0, 0, 288, 289, 0, 0, 0, 290, + 291, 292, 293, 294, 0, 0, 0, 295, 296, 297, + 0, 0, 298, 0, 0, 0, 0, 299, 300, 0, + 0, 0, 301, 0, 302, 303, 0, 304, 305, 0, + 0, 0, 306, 0, 0, 307, 308, 309, 0, 0, + 310, 0, 0, 311, 312, 0, 0, 0, 0, 0, + 313, 314, 0, 315, 0, 316, 0, 317, 318, 0, + 0, 3195, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 0, 334, 335, 336, 337, 0, 338, 339, 340, 341, - 0, 342, 343, 344, 0, 0, 0, 0, 345, 346, - 347, 348, 349, 350, 0, 0, 351, 352, 0, 353, - 0, 354, 0, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 365, 0, 0, 366, 367, - 368, 369, 0, 0, 0, 370, 371, 0, 0, 0, - 372, 0, 373, 374, 375, 0, 376, 377, 378, 379, - 0, 380, 381, 0, 0, 0, 0, 0, 0, 0, - 0, 382, 383, 384, 0, 0, 385, 0, 386, 0, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 0, 0, 397, 398, 399, 0, 400, 0, 401, 402, - 403, 404, 405, 0, 406, 407, 408, 0, 0, 409, - 0, 0, 0, 410, 411, 412, 413, 414, 0, 0, - 415, 416, 417, 418, 419, 0, 420, 421, 0, 422, - 423, 424, 0, 0, 425, 0, 426, 0, 427, 428, - 0, 429, 430, 0, 431, 0, 432, 0, 0, 433, + 334, 0, 335, 336, 337, 338, 0, 339, 340, 341, + 342, 0, 343, 344, 345, 0, 0, 0, 0, 346, + 347, 348, 349, 350, 351, 0, 0, 352, 353, 0, + 354, 0, 355, 0, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 0, 0, 366, 0, 0, 367, + 368, 369, 370, 0, 0, 0, 371, 372, 0, 0, + 3196, 373, 0, 374, 375, 376, 0, 377, 378, 379, + 380, 0, 381, 382, 0, 0, 0, 0, 0, 0, + 0, 0, 383, 384, 385, 0, 0, 386, 0, 387, + 0, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 0, 0, 398, 399, 400, 0, 401, 0, 402, + 403, 404, 405, 406, 0, 407, 408, 409, 0, 0, + 410, 0, 0, 0, 411, 412, 413, 414, 415, 0, + 0, 416, 417, 418, 419, 420, 0, 421, 422, 0, + 423, 424, 425, 0, 0, 426, 0, 427, 0, 428, + 429, 0, 430, 431, 0, 432, 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 0, 445, 446, 0, 0, 0, 447, 448, 449, - 450, 0, 0, 0, 451, 0, 0, 0, 452, 0, - 453, 454, 455, 456, 457, 458, 0, 459, 460, 461, - 462, 463, 464, 0, 0, 0, 0, 0, 0, 465, - 466, 0, 467, 0, 0, 468, 0, 0, 0, 469, - 470, 471, 0, 0, 0, 472, 0, 0, 473, 474, - 0, 475, 476, 477, 478, 479, 480, 0, 0, 481, - 482, 483, 484, 0, 485, 486, 0, 0, 487, 488, - 489, 490, 0, 156, 491, 492, 0, 493, 494, 495, - 496, 0, 0, 0, 0, 0, 497, 498, 499, 0, - 0, 0, 500, 501, 502, 503, 0, 504, 505, 0, - 506, 507, 0, 508, 509, 0, 0, 510, 0, 0, - 511, 0, 512, 0, 513, 514, 0, 0, 0, 0, - 0, 0, 515, 0, 0, 516, 0, 0, 0, 517, - 518, 519, 520, 521, 522, 523, 0, 0, 0, 0, - 0, 0, 524, 525, 0, 526, 527, 528, 0, 159, - 529, 160, 161, 162, 163, 164, 165, 0, 0, 166, - 0, 0, 0, 167, 0, 0, 168, 0, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 0, 178, 0, - 0, 1541, 179, 0, 0, 0, 180, 0, 0, 181, - 182, 183, 0, 184, 0, 185, 186, 0, 0, 187, - 0, 0, 188, 189, 0, 190, 191, 0, 192, 193, - 0, 194, 195, 196, 197, 198, 199, 0, 200, 201, - 202, 203, 204, 205, 206, 0, 207, 208, 209, 210, - 211, 212, 213, 214, 0, 215, 216, 0, 217, 218, - 219, 220, 221, 0, 222, 0, 0, 223, 0, 0, - 224, 0, 225, 0, 0, 226, 0, 227, 0, 0, - 0, 228, 229, 230, 0, 0, 231, 0, 0, 0, - 0, 232, 233, 0, 0, 0, 1542, 234, 0, 235, - 0, 0, 0, 0, 236, 0, 237, 238, 239, 240, - 241, 0, 0, 0, 0, 242, 0, 0, 243, 244, - 245, 0, 0, 0, 246, 0, 247, 248, 0, 249, - 250, 251, 0, 252, 253, 0, 254, 255, 256, 257, - 258, 259, 260, 0, 0, 261, 262, 263, 264, 0, - 0, 265, 266, 0, 267, 268, 269, 0, 0, 270, - 0, 0, 0, 271, 272, 0, 273, 0, 274, 0, - 275, 276, 277, 278, 279, 280, 281, 0, 282, 0, - 0, 283, 284, 285, 0, 286, 0, 0, 0, 287, - 288, 0, 0, 0, 289, 290, 291, 292, 293, 0, - 0, 0, 294, 295, 296, 0, 0, 297, 0, 0, - 0, 0, 298, 299, 0, 0, 0, 300, 0, 301, - 302, 0, 303, 304, 0, 0, 0, 305, 0, 0, - 306, 307, 308, 0, 0, 309, 0, 0, 310, 311, - 665, 0, 0, 0, 0, 312, 313, 0, 314, 0, - 315, 0, 316, 317, 0, 0, 0, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 0, 334, 335, 336, - 337, 0, 338, 339, 340, 341, 0, 342, 343, 344, - 0, 0, 0, 0, 345, 346, 347, 348, 349, 350, - 0, 0, 351, 352, 0, 353, 0, 354, 0, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 365, 0, 0, 366, 367, 368, 369, 0, 0, - 0, 370, 371, 0, 0, 0, 372, 0, 373, 374, - 375, 0, 376, 377, 378, 379, 0, 380, 381, 0, - 0, 0, 0, 0, 0, 0, 0, 382, 383, 384, - 0, 0, 385, 0, 386, 0, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 0, 0, 397, 398, - 399, 0, 400, 0, 401, 402, 403, 404, 405, 0, - 406, 407, 408, 0, 0, 409, 0, 0, 0, 410, - 411, 412, 413, 414, 0, 0, 415, 416, 417, 418, - 419, 0, 420, 421, 0, 422, 423, 424, 0, 0, - 425, 0, 426, 0, 427, 428, 0, 429, 430, 0, - 431, 0, 432, 0, 0, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 0, 445, 446, - 0, 0, 0, 447, 448, 449, 450, 0, 0, 0, - 451, 0, 0, 0, 452, 0, 453, 454, 455, 456, - 457, 458, 0, 459, 460, 461, 462, 463, 464, 0, - 0, 0, 0, 0, 0, 465, 466, 0, 467, 0, - 0, 468, 0, 0, 0, 469, 470, 471, 0, 0, - 0, 472, 0, 0, 473, 474, 0, 475, 476, 477, - 478, 479, 480, 0, 0, 481, 482, 483, 484, 0, - 485, 486, 0, 0, 487, 488, 489, 490, 0, 156, - 491, 492, 0, 493, 494, 495, 496, 0, 0, 0, - 0, 0, 497, 498, 499, 0, 0, 0, 500, 501, - 502, 503, 0, 504, 505, 0, 506, 507, 0, 508, - 509, 0, 0, 510, 0, 0, 511, 0, 512, 0, - 513, 514, 0, 0, 0, 0, 0, 0, 515, 0, - 0, 516, 0, 0, 0, 517, 518, 519, 520, 521, - 522, 523, 0, 0, 0, 0, 0, 0, 524, 525, - 0, 526, 527, 528, 0, 159, 529, 160, 161, 162, - 163, 164, 165, 0, 0, 166, 0, 0, 0, 167, - 0, 0, 168, 0, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 0, 178, 0, 0, 0, 179, 1084, - 0, 0, 180, 0, 0, 181, 182, 183, 0, 184, - 0, 185, 186, 0, 0, 187, 0, 0, 188, 189, - 0, 190, 191, 0, 192, 193, 0, 194, 195, 196, - 197, 198, 199, 0, 200, 201, 202, 203, 204, 205, - 206, 0, 207, 208, 209, 210, 211, 212, 213, 214, - 0, 215, 216, 0, 217, 218, 219, 220, 221, 0, - 222, 0, 0, 223, 0, 0, 224, 0, 225, 0, - 0, 226, 0, 227, 0, 0, 0, 228, 229, 230, - 0, 0, 231, 0, 0, 0, 0, 232, 233, 0, - 0, 0, 0, 234, 0, 235, 0, 0, 0, 0, - 236, 0, 237, 238, 239, 240, 241, 0, 0, 0, - 0, 242, 0, 0, 243, 244, 245, 0, 0, 0, - 246, 0, 247, 248, 0, 249, 250, 251, 0, 252, - 253, 0, 254, 255, 256, 257, 258, 259, 260, 0, - 0, 261, 262, 263, 264, 0, 0, 265, 266, 0, - 267, 268, 269, 0, 0, 270, 0, 0, 0, 271, - 272, 0, 273, 0, 274, 0, 275, 276, 277, 278, - 279, 280, 281, 0, 282, 0, 0, 283, 284, 285, - 0, 286, 1085, 1086, 0, 287, 288, 0, 0, 0, - 289, 290, 291, 292, 293, 0, 0, 0, 294, 295, - 296, 0, 0, 297, 0, 0, 0, 0, 298, 299, - 0, 0, 0, 300, 0, 301, 302, 0, 303, 304, - 0, 0, 0, 305, 0, 0, 306, 307, 308, 0, - 0, 309, 0, 0, 310, 311, 0, 0, 0, 0, - 0, 312, 313, 0, 314, 0, 315, 0, 316, 317, - 0, 0, 0, 0, 0, 0, 318, 319, 320, 321, + 444, 445, 0, 446, 447, 0, 0, 0, 448, 449, + 450, 451, 0, 0, 0, 452, 0, 0, 0, 453, + 0, 454, 455, 456, 457, 458, 459, 0, 460, 461, + 462, 463, 464, 465, 0, 0, 0, 0, 0, 0, + 466, 467, 0, 468, 0, 0, 469, 0, 0, 0, + 470, 471, 472, 0, 0, 0, 473, 0, 0, 474, + 475, 0, 476, 477, 478, 479, 480, 481, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 0, 0, 488, + 489, 490, 491, 0, 156, 492, 493, 0, 494, 495, + 496, 497, 0, 0, 0, 0, 0, 498, 499, 500, + 0, 0, 0, 501, 502, 503, 504, 3197, 505, 506, + 0, 507, 508, 0, 509, 510, 0, 0, 511, 0, + 0, 512, 0, 513, 0, 514, 515, 0, 0, 0, + 0, 0, 0, 516, 0, 0, 517, 0, 0, 0, + 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, + 0, 0, 0, 525, 526, 0, 527, 528, 529, 0, + 160, 530, 161, 162, 163, 164, 165, 166, 0, 0, + 167, 0, 0, 0, 168, 0, 0, 169, 0, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 0, 179, + 0, 0, 0, 180, 0, 0, 0, 181, 0, 0, + 182, 183, 184, 0, 185, 0, 186, 187, 0, 0, + 188, 0, 0, 189, 190, 0, 191, 192, 0, 193, + 194, 0, 195, 196, 197, 198, 199, 200, 0, 201, + 202, 203, 204, 205, 206, 207, 0, 208, 209, 210, + 211, 212, 213, 214, 215, 0, 216, 217, 0, 218, + 219, 220, 221, 222, 0, 223, 0, 0, 224, 0, + 0, 225, 0, 226, 1124, 876, 227, 0, 228, 0, + 0, 0, 229, 230, 231, 0, 0, 232, 0, 0, + 0, 0, 233, 234, 0, 0, 0, 0, 235, 0, + 236, 0, 0, 0, 0, 237, 0, 238, 239, 240, + 241, 242, 0, 0, 0, 0, 243, 0, 0, 244, + 245, 246, 0, 0, 0, 247, 0, 248, 249, 0, + 250, 251, 252, 0, 253, 254, 0, 255, 256, 257, + 258, 259, 260, 261, 0, 0, 262, 263, 264, 265, + 0, 0, 266, 267, 0, 268, 269, 270, 0, 0, + 271, 0, 0, 0, 272, 273, 0, 274, 0, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 0, 283, + 0, 0, 284, 285, 286, 0, 287, 0, 0, 0, + 288, 289, 0, 0, 0, 290, 291, 292, 293, 294, + 0, 0, 0, 295, 296, 297, 0, 0, 298, 0, + 0, 0, 0, 299, 300, 0, 0, 0, 301, 0, + 302, 303, 0, 304, 305, 0, 0, 0, 306, 0, + 0, 307, 308, 309, 0, 0, 310, 0, 0, 311, + 312, 666, 0, 0, 0, 0, 313, 314, 0, 315, + 0, 316, 0, 317, 318, 0, 0, 0, 0, 0, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 0, 335, 336, + 337, 338, 0, 339, 340, 341, 342, 0, 343, 344, + 345, 0, 0, 0, 0, 346, 347, 348, 349, 350, + 351, 0, 0, 352, 353, 0, 354, 0, 355, 0, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 0, 0, 366, 0, 0, 367, 368, 369, 370, 0, + 0, 0, 371, 372, 0, 0, 0, 373, 0, 374, + 375, 376, 0, 377, 378, 379, 380, 0, 381, 382, + 0, 0, 0, 0, 0, 0, 0, 0, 383, 384, + 385, 0, 0, 386, 0, 387, 0, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 0, 0, 398, + 399, 400, 0, 401, 0, 402, 403, 404, 405, 406, + 0, 407, 408, 409, 0, 0, 410, 0, 0, 0, + 411, 412, 413, 414, 415, 0, 0, 416, 417, 418, + 419, 420, 0, 421, 422, 0, 423, 424, 425, 0, + 0, 426, 0, 427, 0, 428, 429, 0, 430, 431, + 0, 432, 0, 433, 0, 0, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 0, 446, + 447, 0, 0, 0, 448, 449, 450, 451, 0, 0, + 0, 452, 0, 0, 0, 453, 0, 454, 455, 456, + 457, 458, 459, 0, 460, 461, 462, 463, 464, 465, + 0, 0, 0, 0, 0, 0, 466, 467, 0, 468, + 0, 0, 469, 0, 0, 0, 470, 471, 472, 0, + 0, 0, 473, 0, 0, 474, 475, 0, 476, 477, + 478, 479, 480, 481, 0, 0, 482, 483, 484, 485, + 0, 486, 487, 0, 0, 488, 489, 490, 491, 0, + 156, 492, 493, 0, 494, 495, 496, 497, 0, 0, + 0, 0, 0, 498, 499, 500, 0, 0, 0, 501, + 502, 503, 504, 0, 505, 506, 0, 507, 508, 0, + 509, 510, 0, 0, 511, 0, 0, 512, 0, 513, + 0, 514, 515, 0, 0, 0, 0, 0, 0, 516, + 0, 0, 517, 0, 0, 0, 518, 519, 520, 521, + 522, 523, 524, 0, 0, 0, 0, 0, 0, 525, + 526, 0, 527, 528, 529, 0, 160, 530, 161, 162, + 163, 164, 165, 166, 0, 0, 167, 0, 0, 0, + 168, 0, 0, 169, 0, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 0, 179, 0, 0, 1544, 180, + 0, 0, 0, 181, 0, 0, 182, 183, 184, 0, + 185, 0, 186, 187, 0, 0, 188, 0, 0, 189, + 190, 0, 191, 192, 0, 193, 194, 0, 195, 196, + 197, 198, 199, 200, 0, 201, 202, 203, 204, 205, + 206, 207, 0, 208, 209, 210, 211, 212, 213, 214, + 215, 0, 216, 217, 0, 218, 219, 220, 221, 222, + 0, 223, 0, 0, 224, 0, 0, 225, 0, 226, + 0, 0, 227, 0, 228, 0, 0, 0, 229, 230, + 231, 0, 0, 232, 0, 0, 0, 0, 233, 234, + 0, 0, 0, 1545, 235, 0, 236, 0, 0, 0, + 0, 237, 0, 238, 239, 240, 241, 242, 0, 0, + 0, 0, 243, 0, 0, 244, 245, 246, 0, 0, + 0, 247, 0, 248, 249, 0, 250, 251, 252, 0, + 253, 254, 0, 255, 256, 257, 258, 259, 260, 261, + 0, 0, 262, 263, 264, 265, 0, 0, 266, 267, + 0, 268, 269, 270, 0, 0, 271, 0, 0, 0, + 272, 273, 0, 274, 0, 275, 0, 276, 277, 278, + 279, 280, 281, 282, 0, 283, 0, 0, 284, 285, + 286, 0, 287, 0, 0, 0, 288, 289, 0, 0, + 0, 290, 291, 292, 293, 294, 0, 0, 0, 295, + 296, 297, 0, 0, 298, 0, 0, 0, 0, 299, + 300, 0, 0, 0, 301, 0, 302, 303, 0, 304, + 305, 0, 0, 0, 306, 0, 0, 307, 308, 309, + 0, 0, 310, 0, 0, 311, 312, 666, 0, 0, + 0, 0, 313, 314, 0, 315, 0, 316, 0, 317, + 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 0, 334, 335, 336, 337, 0, 338, 339, - 340, 341, 0, 342, 343, 344, 0, 0, 0, 0, - 345, 346, 347, 348, 349, 350, 0, 0, 351, 352, - 0, 353, 0, 354, 0, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 365, 0, 0, - 366, 367, 368, 369, 0, 0, 0, 370, 371, 0, - 0, 0, 372, 0, 373, 374, 375, 0, 376, 377, - 378, 379, 0, 380, 381, 0, 0, 0, 0, 0, - 0, 0, 0, 382, 383, 384, 0, 0, 385, 0, - 386, 0, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 0, 0, 397, 398, 399, 0, 400, 0, - 401, 402, 403, 404, 405, 0, 406, 407, 408, 0, - 0, 409, 0, 0, 0, 410, 411, 412, 413, 414, - 0, 0, 415, 416, 417, 418, 419, 0, 420, 421, - 0, 422, 423, 424, 0, 0, 425, 0, 426, 0, - 427, 428, 0, 429, 430, 0, 431, 0, 432, 0, - 0, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 0, 445, 446, 0, 0, 0, 447, - 448, 449, 450, 0, 0, 0, 451, 0, 0, 0, - 452, 0, 453, 454, 455, 456, 457, 458, 0, 459, - 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, - 0, 465, 466, 0, 467, 0, 0, 468, 0, 0, - 0, 469, 470, 471, 0, 0, 0, 472, 0, 0, - 473, 474, 0, 475, 476, 477, 478, 479, 480, 0, - 0, 481, 482, 483, 484, 0, 485, 486, 0, 0, - 487, 488, 489, 490, 0, 1087, 491, 492, 0, 493, - 494, 495, 496, 0, 0, 0, 0, 0, 497, 498, - 499, 0, 0, 0, 500, 501, 502, 503, 0, 504, - 505, 0, 506, 507, 0, 508, 509, 0, 0, 510, - 0, 0, 511, 0, 512, 0, 513, 514, 0, 0, - 0, 0, 0, 0, 515, 0, 0, 516, 0, 0, - 0, 517, 518, 519, 520, 521, 522, 523, 0, 0, - 0, 0, 0, 0, 524, 525, 0, 526, 527, 528, - 0, 159, 529, 160, 161, 162, 163, 164, 165, 0, - 0, 166, 0, 0, 0, 167, 0, 0, 168, 0, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 0, - 178, 0, 0, 0, 179, 0, 0, 0, 180, 0, - 0, 181, 182, 183, 0, 184, 0, 185, 186, 0, - 0, 187, 0, 0, 188, 189, 0, 190, 191, 0, - 192, 193, 0, 194, 195, 196, 197, 198, 199, 0, - 200, 201, 202, 203, 204, 205, 206, 0, 207, 208, - 209, 210, 211, 212, 213, 214, 0, 215, 216, 0, - 217, 218, 219, 220, 221, 0, 222, 0, 0, 223, - 0, 0, 224, 0, 225, 0, 0, 226, 0, 227, - 0, 0, 0, 228, 229, 230, 0, 0, 231, 0, - 0, 0, 0, 232, 233, 0, 0, 0, 0, 234, - 0, 235, 0, 0, 0, 0, 236, 0, 237, 238, - 239, 240, 241, 0, 0, 0, 0, 242, 0, 0, - 243, 244, 245, 0, 0, 0, 246, 0, 247, 248, - 0, 249, 250, 251, 0, 252, 253, 0, 254, 255, - 256, 257, 258, 259, 260, 0, 0, 261, 262, 263, - 264, 0, 0, 265, 266, 0, 267, 268, 269, 0, - 0, 270, 0, 0, 0, 271, 272, 0, 273, 0, - 274, 0, 275, 276, 277, 278, 279, 280, 281, 0, - 282, 0, 0, 283, 284, 285, 0, 286, 0, 0, - 0, 287, 288, 0, 0, 0, 289, 290, 291, 292, - 293, 0, 0, 0, 294, 295, 296, 0, 0, 297, - 0, 0, 0, 0, 298, 299, 0, 0, 0, 300, - 0, 301, 302, 0, 303, 304, 0, 0, 0, 305, - 0, 0, 306, 307, 308, 0, 0, 309, 0, 0, - 310, 311, 0, 0, 0, 0, 0, 312, 313, 0, - 314, 0, 315, 0, 316, 317, 0, 0, 2081, 0, - 0, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, - 335, 336, 337, 0, 338, 339, 340, 341, 0, 342, - 343, 344, 0, 0, 0, 0, 345, 346, 347, 348, - 349, 350, 0, 0, 351, 352, 0, 353, 0, 354, - 0, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 365, 0, 0, 366, 367, 368, 369, - 0, 0, 0, 370, 371, 0, 0, 2082, 372, 0, - 373, 374, 375, 0, 376, 377, 378, 379, 0, 380, - 381, 0, 0, 0, 0, 0, 0, 0, 0, 382, - 383, 384, 0, 783, 385, 0, 386, 0, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 0, 0, - 397, 398, 399, 0, 400, 0, 401, 402, 403, 404, - 405, 0, 406, 407, 408, 0, 0, 409, 0, 0, - 0, 410, 411, 412, 413, 414, 0, 0, 415, 416, - 417, 418, 419, 0, 420, 421, 0, 422, 423, 424, - 0, 0, 425, 0, 426, 0, 427, 428, 0, 429, - 430, 0, 431, 0, 432, 0, 0, 433, 434, 435, - 436, 2083, 438, 439, 440, 441, 442, 443, 444, 0, - 445, 446, 0, 0, 0, 447, 448, 449, 450, 0, - 0, 0, 451, 0, 0, 0, 452, 0, 453, 454, - 455, 456, 457, 458, 0, 459, 460, 461, 462, 463, - 464, 0, 0, 0, 0, 0, 0, 465, 466, 0, - 467, 0, 0, 468, 0, 0, 0, 469, 470, 471, - 0, 0, 0, 472, 0, 0, 473, 474, 0, 475, - 476, 477, 478, 479, 480, 0, 0, 481, 482, 483, - 484, 0, 485, 486, 0, 0, 487, 488, 489, 490, - 0, 0, 491, 492, 0, 493, 494, 495, 496, 0, - 0, 0, 0, 0, 497, 498, 499, 0, 0, 0, - 500, 501, 502, 503, 2084, 504, 505, 0, 506, 507, - 0, 508, 509, 0, 0, 510, 0, 0, 511, 0, - 512, 0, 513, 514, 0, 0, 0, 0, 0, 0, - 515, 0, 0, 516, 0, 0, 0, 517, 518, 519, - 520, 521, 522, 523, 0, 0, 0, 0, 0, 0, - 524, 525, 0, 526, 527, 528, 0, 159, 529, 160, - 161, 162, 163, 164, 165, 0, 0, 166, 0, 0, - 0, 167, 0, 0, 168, 0, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 0, 178, 0, 0, 0, - 179, 0, 0, 0, 180, 0, 0, 181, 182, 183, - 0, 184, 0, 185, 186, 0, 0, 187, 0, 0, - 188, 189, 0, 190, 191, 0, 192, 193, 0, 194, - 195, 196, 197, 198, 199, 0, 200, 201, 202, 203, - 204, 205, 206, 0, 207, 208, 209, 210, 211, 212, - 213, 214, 0, 215, 216, 0, 217, 218, 219, 220, - 221, 0, 222, 0, 0, 223, 0, 0, 224, 0, - 225, 0, 0, 226, 0, 227, 0, 0, 0, 228, - 229, 230, 0, 0, 231, 0, 0, 0, 0, 232, - 233, 0, 0, 0, 0, 234, 0, 235, 0, 0, - 0, 0, 236, 0, 237, 238, 239, 240, 241, 0, - 0, 0, 0, 242, 0, 0, 243, 244, 245, 0, - 0, 0, 246, 0, 247, 248, 0, 249, 250, 251, - 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, - 260, 0, 0, 261, 262, 263, 264, 0, 0, 265, - 266, 0, 267, 268, 269, 0, 0, 270, 0, 0, - 0, 271, 272, 0, 273, 0, 274, 0, 275, 276, - 277, 278, 279, 280, 281, 0, 282, 0, 0, 283, - 284, 285, 0, 286, 0, 0, 0, 287, 288, 0, - 0, 0, 289, 290, 291, 292, 293, 0, 0, 0, - 294, 295, 296, 0, 0, 297, 0, 0, 0, 0, - 298, 299, 0, 0, 0, 300, 0, 301, 302, 0, - 303, 304, 0, 0, 0, 305, 0, 0, 306, 307, - 308, 0, 0, 309, 0, 0, 310, 311, 0, 0, - 0, 0, 0, 312, 313, 0, 314, 0, 315, 0, - 316, 317, 0, 0, 2081, 0, 0, 0, 318, 319, + 332, 333, 334, 0, 335, 336, 337, 338, 0, 339, + 340, 341, 342, 0, 343, 344, 345, 0, 0, 0, + 0, 346, 347, 348, 349, 350, 351, 0, 0, 352, + 353, 0, 354, 0, 355, 0, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 0, 0, 366, 0, + 0, 367, 368, 369, 370, 0, 0, 0, 371, 372, + 0, 0, 0, 373, 0, 374, 375, 376, 0, 377, + 378, 379, 380, 0, 381, 382, 0, 0, 0, 0, + 0, 0, 0, 0, 383, 384, 385, 0, 0, 386, + 0, 387, 0, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 0, 0, 398, 399, 400, 0, 401, + 0, 402, 403, 404, 405, 406, 0, 407, 408, 409, + 0, 0, 410, 0, 0, 0, 411, 412, 413, 414, + 415, 0, 0, 416, 417, 418, 419, 420, 0, 421, + 422, 0, 423, 424, 425, 0, 0, 426, 0, 427, + 0, 428, 429, 0, 430, 431, 0, 432, 0, 433, + 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 0, 446, 447, 0, 0, 0, + 448, 449, 450, 451, 0, 0, 0, 452, 0, 0, + 0, 453, 0, 454, 455, 456, 457, 458, 459, 0, + 460, 461, 462, 463, 464, 465, 0, 0, 0, 0, + 0, 0, 466, 467, 0, 468, 0, 0, 469, 0, + 0, 0, 470, 471, 472, 0, 0, 0, 473, 0, + 0, 474, 475, 0, 476, 477, 478, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 0, + 0, 488, 489, 490, 491, 0, 156, 492, 493, 0, + 494, 495, 496, 497, 0, 0, 0, 0, 0, 498, + 499, 500, 0, 0, 0, 501, 502, 503, 504, 0, + 505, 506, 0, 507, 508, 0, 509, 510, 0, 0, + 511, 0, 0, 512, 0, 513, 0, 514, 515, 0, + 0, 0, 0, 0, 0, 516, 0, 0, 517, 0, + 0, 0, 518, 519, 520, 521, 522, 523, 524, 0, + 0, 0, 0, 0, 0, 525, 526, 0, 527, 528, + 529, 0, 160, 530, 161, 162, 163, 164, 165, 166, + 0, 0, 167, 0, 0, 0, 168, 0, 0, 169, + 0, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 0, 179, 0, 0, 0, 180, 1086, 0, 0, 181, + 0, 0, 182, 183, 184, 0, 185, 0, 186, 187, + 0, 0, 188, 0, 0, 189, 190, 0, 191, 192, + 0, 193, 194, 0, 195, 196, 197, 198, 199, 200, + 0, 201, 202, 203, 204, 205, 206, 207, 0, 208, + 209, 210, 211, 212, 213, 214, 215, 0, 216, 217, + 0, 218, 219, 220, 221, 222, 0, 223, 0, 0, + 224, 0, 0, 225, 0, 226, 0, 0, 227, 0, + 228, 0, 0, 0, 229, 230, 231, 0, 0, 232, + 0, 0, 0, 0, 233, 234, 0, 0, 0, 0, + 235, 0, 236, 0, 0, 0, 0, 237, 0, 238, + 239, 240, 241, 242, 0, 0, 0, 0, 243, 0, + 0, 244, 245, 246, 0, 0, 0, 247, 0, 248, + 249, 0, 250, 251, 252, 0, 253, 254, 0, 255, + 256, 257, 258, 259, 260, 261, 0, 0, 262, 263, + 264, 265, 0, 0, 266, 267, 0, 268, 269, 270, + 0, 0, 271, 0, 0, 0, 272, 273, 0, 274, + 0, 275, 0, 276, 277, 278, 279, 280, 281, 282, + 0, 283, 0, 0, 284, 285, 286, 0, 287, 1087, + 1088, 0, 288, 289, 0, 0, 0, 290, 291, 292, + 293, 294, 0, 0, 0, 295, 296, 297, 0, 0, + 298, 0, 0, 0, 0, 299, 300, 0, 0, 0, + 301, 0, 302, 303, 0, 304, 305, 0, 0, 0, + 306, 0, 0, 307, 308, 309, 0, 0, 310, 0, + 0, 311, 312, 0, 0, 0, 0, 0, 313, 314, + 0, 315, 0, 316, 0, 317, 318, 0, 0, 0, + 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 334, 0, + 335, 336, 337, 338, 0, 339, 340, 341, 342, 0, + 343, 344, 345, 0, 0, 0, 0, 346, 347, 348, + 349, 350, 351, 0, 0, 352, 353, 0, 354, 0, + 355, 0, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 0, 0, 366, 0, 0, 367, 368, 369, + 370, 0, 0, 0, 371, 372, 0, 0, 0, 373, + 0, 374, 375, 376, 0, 377, 378, 379, 380, 0, + 381, 382, 0, 0, 0, 0, 0, 0, 0, 0, + 383, 384, 385, 0, 0, 386, 0, 387, 0, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, + 0, 398, 399, 400, 0, 401, 0, 402, 403, 404, + 405, 406, 0, 407, 408, 409, 0, 0, 410, 0, + 0, 0, 411, 412, 413, 414, 415, 0, 0, 416, + 417, 418, 419, 420, 0, 421, 422, 0, 423, 424, + 425, 0, 0, 426, 0, 427, 0, 428, 429, 0, + 430, 431, 0, 432, 0, 433, 0, 0, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 0, 446, 447, 0, 0, 0, 448, 449, 450, 451, + 0, 0, 0, 452, 0, 0, 0, 453, 0, 454, + 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, + 464, 465, 0, 0, 0, 0, 0, 0, 466, 467, + 0, 468, 0, 0, 469, 0, 0, 0, 470, 471, + 472, 0, 0, 0, 473, 0, 0, 474, 475, 0, + 476, 477, 478, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 0, 0, 488, 489, 490, + 491, 0, 1089, 492, 493, 0, 494, 495, 496, 497, + 0, 0, 0, 0, 0, 498, 499, 500, 0, 0, + 0, 501, 502, 503, 504, 0, 505, 506, 0, 507, + 508, 0, 509, 510, 0, 0, 511, 0, 0, 512, + 0, 513, 0, 514, 515, 0, 0, 0, 0, 0, + 0, 516, 0, 0, 517, 0, 0, 0, 518, 519, + 520, 521, 522, 523, 524, 0, 0, 0, 0, 0, + 0, 525, 526, 0, 527, 528, 529, 0, 160, 530, + 161, 162, 163, 164, 165, 166, 0, 0, 167, 0, + 0, 0, 168, 0, 0, 169, 0, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 0, 179, 0, 0, + 0, 180, 0, 0, 0, 181, 0, 0, 182, 183, + 184, 0, 185, 0, 186, 187, 0, 0, 188, 0, + 0, 189, 190, 0, 191, 192, 0, 193, 194, 0, + 195, 196, 197, 198, 199, 200, 0, 201, 202, 203, + 204, 205, 206, 207, 0, 208, 209, 210, 211, 212, + 213, 214, 215, 0, 216, 217, 0, 218, 219, 220, + 221, 222, 0, 223, 0, 0, 224, 0, 0, 225, + 0, 226, 0, 0, 227, 0, 228, 0, 0, 0, + 229, 230, 231, 0, 0, 232, 0, 0, 0, 0, + 233, 234, 0, 0, 0, 0, 235, 0, 236, 0, + 0, 0, 0, 237, 0, 238, 239, 240, 241, 242, + 0, 0, 0, 0, 243, 0, 0, 244, 245, 246, + 0, 0, 0, 247, 0, 248, 249, 0, 250, 251, + 252, 0, 253, 254, 0, 255, 256, 257, 258, 259, + 260, 261, 0, 0, 262, 263, 264, 265, 0, 0, + 266, 267, 0, 268, 269, 270, 0, 0, 271, 0, + 0, 0, 272, 273, 0, 274, 0, 275, 0, 276, + 277, 278, 279, 280, 281, 282, 0, 283, 0, 0, + 284, 285, 286, 0, 287, 0, 0, 0, 288, 289, + 0, 0, 0, 290, 291, 292, 293, 294, 0, 0, + 0, 295, 296, 297, 0, 0, 298, 0, 0, 0, + 0, 299, 300, 0, 0, 0, 301, 0, 302, 303, + 0, 304, 305, 0, 0, 0, 306, 0, 0, 307, + 308, 309, 0, 0, 310, 0, 0, 311, 312, 0, + 0, 0, 0, 0, 313, 314, 0, 315, 0, 316, + 0, 317, 318, 0, 0, 2085, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 0, 334, 335, 336, 337, 0, - 338, 339, 340, 341, 0, 342, 343, 344, 0, 0, - 0, 0, 345, 346, 347, 348, 349, 350, 0, 0, - 351, 352, 0, 353, 0, 354, 0, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 365, - 0, 0, 366, 367, 368, 369, 0, 0, 0, 370, - 371, 0, 0, 2082, 372, 0, 373, 374, 375, 0, - 376, 377, 378, 379, 0, 380, 381, 0, 0, 0, - 0, 0, 0, 0, 0, 382, 383, 384, 0, 783, - 385, 0, 386, 0, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 0, 0, 397, 398, 399, 0, - 400, 0, 401, 402, 403, 404, 405, 0, 406, 407, - 408, 0, 0, 409, 0, 0, 0, 410, 411, 412, - 413, 414, 0, 0, 415, 416, 417, 418, 419, 0, - 420, 421, 0, 422, 423, 424, 0, 0, 425, 0, - 426, 0, 427, 428, 0, 429, 430, 0, 431, 0, - 432, 0, 0, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 0, 445, 446, 0, 0, - 0, 447, 448, 449, 450, 0, 0, 0, 451, 0, - 0, 0, 452, 0, 453, 454, 455, 456, 457, 458, - 0, 459, 460, 461, 462, 463, 464, 0, 0, 0, - 0, 0, 0, 465, 466, 0, 467, 0, 0, 468, - 0, 0, 0, 469, 470, 471, 0, 0, 0, 472, - 0, 0, 473, 474, 0, 475, 476, 477, 478, 479, - 480, 0, 0, 481, 482, 483, 484, 0, 485, 486, - 0, 0, 487, 488, 489, 490, 0, 0, 491, 492, - 0, 493, 494, 495, 496, 0, 0, 0, 0, 0, - 497, 498, 499, 0, 0, 0, 500, 501, 502, 503, - 2084, 504, 505, 0, 506, 507, 0, 508, 509, 0, - 0, 510, 0, 0, 511, 0, 512, 0, 513, 514, - 0, 0, 0, 0, 0, 0, 515, 0, 0, 516, - 0, 0, 0, 517, 518, 519, 520, 521, 522, 523, - 0, 0, 0, 0, 0, 0, 524, 525, 0, 526, - 527, 528, 0, 159, 529, 160, 161, 162, 163, 164, - 165, 0, 0, 166, 0, 0, 0, 167, 0, 0, - 168, 0, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 0, 178, 0, 0, 1526, 179, 0, 0, 0, - 180, 0, 0, 181, 182, 183, 0, 184, 0, 185, - 186, 0, 0, 187, 0, 0, 188, 189, 0, 190, - 191, 0, 192, 193, 0, 194, 195, 196, 197, 198, - 199, 0, 200, 201, 202, 203, 204, 205, 206, 0, - 207, 208, 209, 210, 211, 212, 213, 214, 0, 215, - 216, 0, 217, 218, 219, 220, 221, 0, 222, 0, - 0, 223, 0, 0, 224, 0, 225, 0, 0, 226, - 0, 227, 0, 0, 0, 228, 229, 230, 0, 0, - 231, 0, 0, 0, 0, 232, 233, 0, 0, 0, - 1527, 234, 0, 235, 0, 0, 0, 0, 236, 0, - 237, 238, 239, 240, 241, 0, 0, 0, 0, 242, - 0, 0, 243, 244, 245, 0, 0, 0, 246, 0, - 247, 248, 0, 249, 250, 251, 0, 252, 253, 0, - 254, 255, 256, 257, 258, 259, 260, 0, 0, 261, - 262, 263, 264, 0, 0, 265, 266, 0, 267, 268, - 269, 0, 0, 270, 0, 0, 0, 271, 272, 0, - 273, 0, 274, 0, 275, 276, 277, 278, 279, 280, - 281, 0, 282, 0, 0, 283, 284, 285, 0, 286, - 0, 0, 0, 287, 288, 0, 0, 0, 289, 290, - 291, 292, 293, 0, 0, 0, 294, 295, 296, 0, - 0, 297, 0, 0, 0, 0, 298, 299, 0, 0, - 0, 300, 0, 301, 302, 0, 303, 304, 0, 0, - 0, 305, 0, 0, 306, 307, 308, 0, 0, 309, - 0, 0, 310, 311, 665, 0, 0, 0, 0, 312, - 313, 0, 314, 0, 315, 0, 316, 317, 0, 0, - 0, 0, 0, 0, 318, 319, 320, 321, 322, 323, + 330, 331, 332, 333, 334, 0, 335, 336, 337, 338, + 0, 339, 340, 341, 342, 0, 343, 344, 345, 0, + 0, 0, 0, 346, 347, 348, 349, 350, 351, 0, + 0, 352, 353, 0, 354, 0, 355, 0, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 0, 0, + 366, 0, 0, 367, 368, 369, 370, 0, 0, 0, + 371, 372, 0, 0, 2086, 373, 0, 374, 375, 376, + 0, 377, 378, 379, 380, 0, 381, 382, 0, 0, + 0, 0, 0, 0, 0, 0, 383, 384, 385, 0, + 785, 386, 0, 387, 0, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 0, 0, 398, 399, 400, + 0, 401, 0, 402, 403, 404, 405, 406, 0, 407, + 408, 409, 0, 0, 410, 0, 0, 0, 411, 412, + 413, 414, 415, 0, 0, 416, 417, 418, 419, 420, + 0, 421, 422, 0, 423, 424, 425, 0, 0, 426, + 0, 427, 0, 428, 429, 0, 430, 431, 0, 432, + 0, 433, 0, 0, 434, 435, 436, 437, 2087, 439, + 440, 441, 442, 443, 444, 445, 0, 446, 447, 0, + 0, 0, 448, 449, 450, 451, 0, 0, 0, 452, + 0, 0, 0, 453, 0, 454, 455, 456, 457, 458, + 459, 0, 460, 461, 462, 463, 464, 465, 0, 0, + 0, 0, 0, 0, 466, 467, 0, 468, 0, 0, + 469, 0, 0, 0, 470, 471, 472, 0, 0, 0, + 473, 0, 0, 474, 475, 0, 476, 477, 478, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 0, 0, 488, 489, 490, 491, 0, 0, 492, + 493, 0, 494, 495, 496, 497, 0, 0, 0, 0, + 0, 498, 499, 500, 0, 0, 0, 501, 502, 503, + 504, 2088, 505, 506, 0, 507, 508, 0, 509, 510, + 0, 0, 511, 0, 0, 512, 0, 513, 0, 514, + 515, 0, 0, 0, 0, 0, 0, 516, 0, 0, + 517, 0, 0, 0, 518, 519, 520, 521, 522, 523, + 524, 0, 0, 0, 0, 0, 0, 525, 526, 0, + 527, 528, 529, 0, 160, 530, 161, 162, 163, 164, + 165, 166, 0, 0, 167, 0, 0, 0, 168, 0, + 0, 169, 0, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 0, 179, 0, 0, 0, 180, 0, 0, + 0, 181, 0, 0, 182, 183, 184, 0, 185, 0, + 186, 187, 0, 0, 188, 0, 0, 189, 190, 0, + 191, 192, 0, 193, 194, 0, 195, 196, 197, 198, + 199, 200, 0, 201, 202, 203, 204, 205, 206, 207, + 0, 208, 209, 210, 211, 212, 213, 214, 215, 0, + 216, 217, 0, 218, 219, 220, 221, 222, 0, 223, + 0, 0, 224, 0, 0, 225, 0, 226, 0, 0, + 227, 0, 228, 0, 0, 0, 229, 230, 231, 0, + 0, 232, 0, 0, 0, 0, 233, 234, 0, 0, + 0, 0, 235, 0, 236, 0, 0, 0, 0, 237, + 0, 238, 239, 240, 241, 242, 0, 0, 0, 0, + 243, 0, 0, 244, 245, 246, 0, 0, 0, 247, + 0, 248, 249, 0, 250, 251, 252, 0, 253, 254, + 0, 255, 256, 257, 258, 259, 260, 261, 0, 0, + 262, 263, 264, 265, 0, 0, 266, 267, 0, 268, + 269, 270, 0, 0, 271, 0, 0, 0, 272, 273, + 0, 274, 0, 275, 0, 276, 277, 278, 279, 280, + 281, 282, 0, 283, 0, 0, 284, 285, 286, 0, + 287, 0, 0, 0, 288, 289, 0, 0, 0, 290, + 291, 292, 293, 294, 0, 0, 0, 295, 296, 297, + 0, 0, 298, 0, 0, 0, 0, 299, 300, 0, + 0, 0, 301, 0, 302, 303, 0, 304, 305, 0, + 0, 0, 306, 0, 0, 307, 308, 309, 0, 0, + 310, 0, 0, 311, 312, 0, 0, 0, 0, 0, + 313, 314, 0, 315, 0, 316, 0, 317, 318, 0, + 0, 2085, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 0, 334, 335, 336, 337, 0, 338, 339, 340, 341, - 0, 342, 343, 344, 0, 0, 0, 0, 345, 346, - 347, 348, 349, 350, 0, 0, 351, 352, 0, 353, - 0, 354, 0, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 365, 0, 0, 366, 367, - 368, 369, 0, 0, 0, 370, 371, 0, 0, 0, - 372, 0, 373, 374, 375, 0, 376, 377, 378, 379, - 0, 380, 381, 0, 0, 0, 0, 0, 0, 0, - 0, 382, 383, 384, 0, 0, 385, 0, 386, 0, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 0, 0, 397, 398, 399, 0, 400, 0, 401, 402, - 403, 404, 405, 0, 406, 407, 408, 0, 0, 409, - 0, 0, 0, 410, 411, 412, 413, 414, 0, 0, - 415, 416, 417, 418, 419, 0, 420, 421, 0, 422, - 423, 424, 0, 0, 425, 0, 426, 0, 427, 428, - 0, 429, 430, 0, 431, 0, 432, 0, 0, 433, + 334, 0, 335, 336, 337, 338, 0, 339, 340, 341, + 342, 0, 343, 344, 345, 0, 0, 0, 0, 346, + 347, 348, 349, 350, 351, 0, 0, 352, 353, 0, + 354, 0, 355, 0, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 0, 0, 366, 0, 0, 367, + 368, 369, 370, 0, 0, 0, 371, 372, 0, 0, + 2086, 373, 0, 374, 375, 376, 0, 377, 378, 379, + 380, 0, 381, 382, 0, 0, 0, 0, 0, 0, + 0, 0, 383, 384, 385, 0, 785, 386, 0, 387, + 0, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 0, 0, 398, 399, 400, 0, 401, 0, 402, + 403, 404, 405, 406, 0, 407, 408, 409, 0, 0, + 410, 0, 0, 0, 411, 412, 413, 414, 415, 0, + 0, 416, 417, 418, 419, 420, 0, 421, 422, 0, + 423, 424, 425, 0, 0, 426, 0, 427, 0, 428, + 429, 0, 430, 431, 0, 432, 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 0, 445, 446, 0, 0, 0, 447, 448, 449, - 450, 0, 0, 0, 451, 0, 0, 0, 452, 0, - 453, 454, 455, 456, 457, 458, 0, 459, 460, 461, - 462, 463, 464, 0, 0, 0, 0, 0, 0, 465, - 466, 0, 467, 0, 0, 468, 0, 0, 0, 469, - 470, 471, 0, 0, 0, 472, 0, 0, 473, 474, - 0, 475, 476, 477, 478, 479, 480, 0, 0, 481, - 482, 483, 484, 0, 485, 486, 0, 0, 487, 488, - 489, 490, 0, 156, 491, 492, 0, 493, 494, 495, - 496, 0, 0, 0, 0, 0, 497, 498, 499, 0, - 0, 0, 500, 501, 502, 503, 0, 504, 505, 0, - 506, 507, 0, 508, 509, 0, 0, 510, 0, 0, - 511, 0, 512, 0, 513, 514, 0, 0, 0, 0, - 0, 0, 515, 0, 0, 516, 0, 0, 0, 517, - 518, 519, 520, 521, 522, 523, 0, 0, 0, 0, - 0, 0, 524, 525, 0, 526, 527, 528, 0, 159, - 529, 160, 161, 162, 163, 164, 165, 0, 0, 166, - 0, 0, 0, 167, 0, 0, 168, 0, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 0, 178, 0, - 0, 0, 179, 0, 0, 0, 180, 0, 0, 181, - 182, 183, 0, 184, 0, 185, 186, 0, 0, 187, - 0, 0, 188, 189, 0, 190, 191, 0, 192, 193, - 0, 194, 195, 196, 197, 198, 199, 0, 200, 201, - 202, 203, 204, 205, 206, 0, 207, 208, 209, 210, - 211, 212, 213, 214, 0, 215, 216, 0, 217, 218, - 219, 220, 221, 0, 222, 0, 0, 223, 0, 0, - 224, 0, 225, 0, 0, 226, 0, 227, 0, 0, - 0, 228, 229, 230, 0, 0, 231, 0, 0, 0, - 0, 232, 233, 0, 0, 0, 0, 234, 0, 235, - 0, 0, 0, 0, 236, 0, 237, 238, 239, 240, - 241, 0, 0, 0, 0, 242, 0, 0, 243, 244, - 245, 0, 0, 0, 246, 0, 247, 248, 0, 249, - 250, 251, 0, 252, 253, 0, 254, 255, 256, 257, - 258, 259, 260, 0, 0, 261, 262, 263, 264, 0, - 0, 265, 266, 0, 267, 268, 269, 0, 0, 270, - 0, 0, 0, 271, 272, 0, 273, 0, 274, 0, - 275, 276, 277, 278, 279, 280, 281, 0, 282, 0, - 0, 283, 284, 285, 0, 286, 0, 0, 0, 287, - 288, 0, 0, 0, 289, 290, 291, 292, 293, 0, - 0, 0, 294, 295, 296, 0, 0, 297, 0, 0, - 0, 0, 298, 299, 0, 0, 0, 300, 0, 301, - 302, 0, 303, 304, 0, 0, 0, 305, 0, 0, - 306, 307, 308, 0, 0, 309, 0, 0, 310, 311, - 0, 0, 0, 0, 0, 312, 313, 0, 314, 0, - 315, 0, 316, 317, 0, 0, 2081, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 0, 334, 335, 336, - 337, 0, 338, 339, 340, 341, 0, 342, 343, 344, - 0, 0, 0, 0, 345, 346, 347, 348, 349, 350, - 0, 0, 351, 352, 0, 353, 0, 354, 0, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 365, 0, 0, 366, 367, 368, 369, 0, 0, - 0, 370, 371, 0, 0, 2082, 372, 0, 373, 374, - 375, 0, 376, 377, 378, 379, 0, 380, 381, 0, - 0, 0, 0, 0, 0, 0, 0, 382, 383, 384, - 0, 783, 385, 0, 386, 0, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 0, 0, 397, 398, - 399, 0, 400, 0, 401, 402, 403, 404, 405, 0, - 406, 407, 408, 0, 0, 409, 0, 0, 0, 410, - 411, 412, 413, 414, 0, 0, 415, 416, 417, 418, - 419, 0, 420, 421, 0, 422, 423, 424, 0, 0, - 425, 0, 426, 0, 427, 428, 0, 429, 430, 0, - 431, 0, 432, 0, 0, 433, 434, 435, 436, 4263, - 438, 439, 440, 441, 442, 443, 444, 0, 445, 446, - 0, 0, 0, 447, 448, 449, 450, 0, 0, 0, - 451, 0, 0, 0, 452, 0, 453, 454, 455, 456, - 457, 458, 0, 459, 460, 461, 462, 463, 464, 0, - 0, 0, 0, 0, 0, 465, 466, 0, 467, 0, - 0, 468, 0, 0, 0, 469, 470, 471, 0, 0, - 0, 472, 0, 0, 473, 474, 0, 475, 476, 477, - 478, 479, 480, 0, 0, 481, 482, 483, 484, 0, - 485, 486, 0, 0, 487, 488, 489, 490, 0, 0, - 491, 492, 0, 493, 494, 495, 496, 0, 0, 0, - 0, 0, 497, 498, 499, 0, 0, 0, 500, 501, - 502, 503, 2084, 504, 505, 0, 506, 507, 0, 508, - 509, 0, 0, 510, 0, 0, 511, 0, 512, 0, - 513, 514, 0, 0, 0, 0, 0, 0, 515, 0, - 0, 516, 0, 0, 0, 517, 518, 519, 520, 521, - 522, 523, 0, 0, 0, 0, 0, 0, 524, 525, - 0, 526, 527, 528, 0, 159, 529, 160, 161, 162, - 163, 164, 165, 0, 0, 166, 0, 0, 0, 167, - 0, 0, 168, 0, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 0, 178, 0, 0, 0, 179, 0, - 0, 0, 180, 0, 0, 181, 182, 183, 0, 184, - 0, 185, 186, 0, 0, 187, 0, 0, 188, 189, - 0, 190, 191, 0, 192, 193, 0, 194, 195, 196, - 197, 198, 199, 0, 200, 201, 202, 203, 204, 205, - 206, 0, 207, 208, 209, 210, 211, 212, 213, 214, - 0, 215, 216, 0, 217, 218, 219, 220, 221, 0, - 222, 0, 0, 223, 0, 0, 224, 0, 225, 1122, - 0, 226, 0, 227, 0, 0, 0, 228, 229, 230, - 0, 0, 231, 0, 0, 0, 0, 232, 233, 0, - 0, 0, 0, 234, 0, 235, 0, 0, 0, 0, - 236, 0, 237, 238, 239, 240, 241, 0, 0, 0, - 0, 242, 0, 0, 243, 244, 245, 0, 0, 0, - 246, 0, 247, 248, 0, 249, 250, 251, 0, 252, - 253, 0, 254, 255, 256, 257, 258, 259, 260, 0, - 0, 261, 262, 263, 264, 0, 0, 265, 266, 0, - 267, 268, 269, 0, 0, 270, 0, 0, 0, 271, - 272, 0, 273, 0, 274, 0, 275, 276, 277, 278, - 279, 280, 281, 0, 282, 0, 0, 283, 284, 285, - 0, 286, 0, 0, 0, 287, 288, 0, 0, 0, - 289, 290, 291, 292, 293, 0, 0, 0, 294, 295, - 296, 0, 0, 297, 0, 0, 0, 0, 298, 299, - 0, 0, 0, 300, 0, 301, 302, 0, 303, 304, - 0, 0, 0, 305, 0, 0, 306, 307, 308, 0, - 0, 309, 0, 0, 310, 311, 665, 0, 0, 0, - 0, 312, 313, 0, 314, 0, 315, 0, 316, 317, - 0, 0, 0, 0, 0, 0, 318, 319, 320, 321, + 444, 445, 0, 446, 447, 0, 0, 0, 448, 449, + 450, 451, 0, 0, 0, 452, 0, 0, 0, 453, + 0, 454, 455, 456, 457, 458, 459, 0, 460, 461, + 462, 463, 464, 465, 0, 0, 0, 0, 0, 0, + 466, 467, 0, 468, 0, 0, 469, 0, 0, 0, + 470, 471, 472, 0, 0, 0, 473, 0, 0, 474, + 475, 0, 476, 477, 478, 479, 480, 481, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 0, 0, 488, + 489, 490, 491, 0, 0, 492, 493, 0, 494, 495, + 496, 497, 0, 0, 0, 0, 0, 498, 499, 500, + 0, 0, 0, 501, 502, 503, 504, 2088, 505, 506, + 0, 507, 508, 0, 509, 510, 0, 0, 511, 0, + 0, 512, 0, 513, 0, 514, 515, 0, 0, 0, + 0, 0, 0, 516, 0, 0, 517, 0, 0, 0, + 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, + 0, 0, 0, 525, 526, 0, 527, 528, 529, 0, + 160, 530, 161, 162, 163, 164, 165, 166, 0, 0, + 167, 0, 0, 0, 168, 0, 0, 169, 0, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 0, 179, + 0, 0, 1529, 180, 0, 0, 0, 181, 0, 0, + 182, 183, 184, 0, 185, 0, 186, 187, 0, 0, + 188, 0, 0, 189, 190, 0, 191, 192, 0, 193, + 194, 0, 195, 196, 197, 198, 199, 200, 0, 201, + 202, 203, 204, 205, 206, 207, 0, 208, 209, 210, + 211, 212, 213, 214, 215, 0, 216, 217, 0, 218, + 219, 220, 221, 222, 0, 223, 0, 0, 224, 0, + 0, 225, 0, 226, 0, 0, 227, 0, 228, 0, + 0, 0, 229, 230, 231, 0, 0, 232, 0, 0, + 0, 0, 233, 234, 0, 0, 0, 1530, 235, 0, + 236, 0, 0, 0, 0, 237, 0, 238, 239, 240, + 241, 242, 0, 0, 0, 0, 243, 0, 0, 244, + 245, 246, 0, 0, 0, 247, 0, 248, 249, 0, + 250, 251, 252, 0, 253, 254, 0, 255, 256, 257, + 258, 259, 260, 261, 0, 0, 262, 263, 264, 265, + 0, 0, 266, 267, 0, 268, 269, 270, 0, 0, + 271, 0, 0, 0, 272, 273, 0, 274, 0, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 0, 283, + 0, 0, 284, 285, 286, 0, 287, 0, 0, 0, + 288, 289, 0, 0, 0, 290, 291, 292, 293, 294, + 0, 0, 0, 295, 296, 297, 0, 0, 298, 0, + 0, 0, 0, 299, 300, 0, 0, 0, 301, 0, + 302, 303, 0, 304, 305, 0, 0, 0, 306, 0, + 0, 307, 308, 309, 0, 0, 310, 0, 0, 311, + 312, 666, 0, 0, 0, 0, 313, 314, 0, 315, + 0, 316, 0, 317, 318, 0, 0, 0, 0, 0, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 0, 335, 336, + 337, 338, 0, 339, 340, 341, 342, 0, 343, 344, + 345, 0, 0, 0, 0, 346, 347, 348, 349, 350, + 351, 0, 0, 352, 353, 0, 354, 0, 355, 0, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 0, 0, 366, 0, 0, 367, 368, 369, 370, 0, + 0, 0, 371, 372, 0, 0, 0, 373, 0, 374, + 375, 376, 0, 377, 378, 379, 380, 0, 381, 382, + 0, 0, 0, 0, 0, 0, 0, 0, 383, 384, + 385, 0, 0, 386, 0, 387, 0, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 0, 0, 398, + 399, 400, 0, 401, 0, 402, 403, 404, 405, 406, + 0, 407, 408, 409, 0, 0, 410, 0, 0, 0, + 411, 412, 413, 414, 415, 0, 0, 416, 417, 418, + 419, 420, 0, 421, 422, 0, 423, 424, 425, 0, + 0, 426, 0, 427, 0, 428, 429, 0, 430, 431, + 0, 432, 0, 433, 0, 0, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 0, 446, + 447, 0, 0, 0, 448, 449, 450, 451, 0, 0, + 0, 452, 0, 0, 0, 453, 0, 454, 455, 456, + 457, 458, 459, 0, 460, 461, 462, 463, 464, 465, + 0, 0, 0, 0, 0, 0, 466, 467, 0, 468, + 0, 0, 469, 0, 0, 0, 470, 471, 472, 0, + 0, 0, 473, 0, 0, 474, 475, 0, 476, 477, + 478, 479, 480, 481, 0, 0, 482, 483, 484, 485, + 0, 486, 487, 0, 0, 488, 489, 490, 491, 0, + 156, 492, 493, 0, 494, 495, 496, 497, 0, 0, + 0, 0, 0, 498, 499, 500, 0, 0, 0, 501, + 502, 503, 504, 0, 505, 506, 0, 507, 508, 0, + 509, 510, 0, 0, 511, 0, 0, 512, 0, 513, + 0, 514, 515, 0, 0, 0, 0, 0, 0, 516, + 0, 0, 517, 0, 0, 0, 518, 519, 520, 521, + 522, 523, 524, 0, 0, 0, 0, 0, 0, 525, + 526, 0, 527, 528, 529, 0, 160, 530, 161, 162, + 163, 164, 165, 166, 0, 0, 167, 0, 0, 0, + 168, 0, 0, 169, 0, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 0, 179, 0, 0, 0, 180, + 0, 0, 0, 181, 0, 0, 182, 183, 184, 0, + 185, 0, 186, 187, 0, 0, 188, 0, 0, 189, + 190, 0, 191, 192, 0, 193, 194, 0, 195, 196, + 197, 198, 199, 200, 0, 201, 202, 203, 204, 205, + 206, 207, 0, 208, 209, 210, 211, 212, 213, 214, + 215, 0, 216, 217, 0, 218, 219, 220, 221, 222, + 0, 223, 0, 0, 224, 0, 0, 225, 0, 226, + 0, 0, 227, 0, 228, 0, 0, 0, 229, 230, + 231, 0, 0, 232, 0, 0, 0, 0, 233, 234, + 0, 0, 0, 0, 235, 0, 236, 0, 0, 0, + 0, 237, 0, 238, 239, 240, 241, 242, 0, 0, + 0, 0, 243, 0, 0, 244, 245, 246, 0, 0, + 0, 247, 0, 248, 249, 0, 250, 251, 252, 0, + 253, 254, 0, 255, 256, 257, 258, 259, 260, 261, + 0, 0, 262, 263, 264, 265, 0, 0, 266, 267, + 0, 268, 269, 270, 0, 0, 271, 0, 0, 0, + 272, 273, 0, 274, 0, 275, 0, 276, 277, 278, + 279, 280, 281, 282, 0, 283, 0, 0, 284, 285, + 286, 0, 287, 0, 0, 0, 288, 289, 0, 0, + 0, 290, 291, 292, 293, 294, 0, 0, 0, 295, + 296, 297, 0, 0, 298, 0, 0, 0, 0, 299, + 300, 0, 0, 0, 301, 0, 302, 303, 0, 304, + 305, 0, 0, 0, 306, 0, 0, 307, 308, 309, + 0, 0, 310, 0, 0, 311, 312, 0, 0, 0, + 0, 0, 313, 314, 0, 315, 0, 316, 0, 317, + 318, 0, 0, 2085, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 0, 334, 335, 336, 337, 0, 338, 339, - 340, 341, 0, 342, 343, 344, 0, 0, 0, 0, - 345, 346, 347, 348, 349, 350, 0, 0, 351, 352, - 0, 353, 0, 354, 0, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 365, 0, 0, - 366, 367, 368, 369, 0, 0, 0, 370, 371, 0, - 0, 0, 372, 0, 373, 374, 375, 0, 376, 377, - 378, 379, 0, 380, 381, 0, 0, 0, 0, 0, - 0, 0, 0, 382, 383, 384, 0, 0, 385, 0, - 386, 0, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 0, 0, 397, 398, 399, 0, 400, 0, - 401, 402, 403, 404, 405, 0, 406, 407, 408, 0, - 0, 409, 0, 0, 0, 410, 411, 412, 413, 414, - 0, 0, 415, 416, 417, 418, 419, 0, 420, 421, - 0, 422, 423, 424, 0, 0, 425, 0, 426, 0, - 427, 428, 0, 429, 430, 0, 431, 0, 432, 0, - 0, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 0, 445, 446, 0, 0, 0, 447, - 448, 449, 450, 0, 0, 0, 451, 0, 0, 0, - 452, 0, 453, 454, 455, 456, 457, 458, 0, 459, - 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, - 0, 465, 466, 0, 467, 0, 0, 468, 0, 0, - 0, 469, 470, 471, 0, 0, 0, 472, 0, 0, - 473, 474, 0, 475, 476, 477, 478, 479, 480, 0, - 0, 481, 482, 483, 484, 0, 485, 486, 0, 0, - 487, 488, 489, 490, 0, 156, 491, 492, 0, 493, - 494, 495, 496, 0, 0, 0, 0, 0, 497, 498, - 499, 0, 0, 0, 500, 501, 502, 503, 0, 504, - 505, 0, 506, 507, 0, 508, 509, 0, 0, 510, - 0, 0, 511, 0, 512, 0, 513, 514, 0, 0, - 0, 0, 0, 0, 515, 0, 0, 516, 0, 0, - 0, 517, 518, 519, 520, 521, 522, 523, 0, 0, - 0, 0, 0, 0, 524, 525, 0, 526, 527, 528, - 0, 159, 529, 160, 161, 162, 163, 164, 165, 1564, - 0, 166, 0, 0, 0, 167, 0, 0, 168, 0, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 0, - 178, 0, 0, 0, 179, 0, 0, 0, 180, 0, - 0, 181, 182, 183, 0, 184, 0, 185, 186, 0, - 0, 187, 0, 0, 188, 189, 0, 190, 191, 0, - 192, 193, 0, 194, 195, 196, 197, 198, 199, 0, - 200, 201, 202, 203, 204, 205, 206, 0, 207, 208, - 209, 210, 211, 212, 213, 214, 0, 215, 216, 0, - 217, 218, 219, 220, 221, 0, 222, 0, 0, 223, - 0, 0, 224, 0, 225, 0, 0, 226, 0, 227, - 0, 0, 0, 228, 229, 230, 0, 0, 231, 0, - 0, 0, 0, 232, 233, 0, 0, 0, 0, 234, - 0, 235, 0, 0, 0, 0, 236, 0, 237, 238, - 239, 240, 241, 0, 0, 0, 0, 242, 0, 0, - 243, 244, 245, 0, 0, 0, 246, 0, 247, 248, - 0, 249, 250, 251, 0, 252, 253, 0, 254, 255, - 256, 257, 258, 259, 260, 0, 0, 261, 262, 263, - 264, 0, 0, 265, 266, 0, 267, 268, 269, 0, - 0, 270, 0, 0, 0, 271, 272, 0, 273, 0, - 274, 0, 275, 276, 277, 278, 279, 280, 281, 0, - 282, 0, 0, 283, 284, 285, 0, 286, 0, 0, - 0, 287, 288, 0, 0, 0, 289, 290, 291, 292, - 293, 0, 0, 0, 294, 295, 296, 0, 0, 297, - 0, 0, 0, 0, 298, 299, 0, 0, 0, 300, - 0, 301, 302, 0, 303, 304, 0, 0, 0, 305, - 0, 0, 306, 307, 308, 0, 0, 309, 0, 0, - 310, 311, 665, 0, 0, 0, 0, 312, 313, 0, - 314, 0, 315, 0, 316, 317, 0, 0, 0, 0, - 0, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, - 335, 336, 337, 0, 338, 339, 340, 341, 0, 342, - 343, 344, 0, 0, 0, 0, 345, 346, 347, 348, - 349, 350, 0, 0, 351, 352, 0, 353, 0, 354, - 0, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 365, 0, 0, 366, 367, 368, 369, - 0, 0, 0, 370, 371, 0, 0, 0, 372, 0, - 373, 374, 375, 0, 376, 377, 378, 379, 0, 380, - 381, 0, 0, 0, 0, 0, 0, 0, 0, 382, - 383, 384, 0, 0, 385, 0, 386, 0, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 0, 0, - 397, 398, 399, 0, 400, 0, 401, 402, 403, 404, - 405, 0, 406, 407, 408, 0, 0, 409, 0, 0, - 0, 410, 411, 412, 413, 414, 0, 0, 415, 416, - 417, 418, 419, 0, 420, 421, 0, 422, 423, 424, - 0, 0, 425, 0, 426, 0, 427, 428, 0, 429, - 430, 0, 431, 0, 432, 0, 0, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 0, - 445, 446, 0, 0, 0, 447, 448, 449, 450, 0, - 0, 0, 451, 0, 0, 0, 452, 0, 453, 454, - 455, 456, 457, 458, 0, 459, 460, 461, 462, 463, - 464, 0, 0, 0, 0, 0, 0, 465, 466, 0, - 467, 0, 0, 468, 0, 0, 0, 469, 470, 471, - 0, 0, 0, 472, 0, 0, 473, 474, 0, 475, - 476, 477, 478, 479, 480, 0, 0, 481, 482, 483, - 484, 0, 485, 486, 0, 0, 487, 488, 489, 490, - 0, 156, 491, 492, 0, 493, 494, 495, 496, 0, - 0, 0, 0, 0, 497, 498, 499, 0, 0, 0, - 500, 501, 502, 503, 0, 504, 505, 0, 506, 507, - 0, 508, 509, 0, 0, 510, 0, 0, 511, 0, - 512, 0, 513, 514, 0, 0, 0, 0, 0, 0, - 515, 0, 0, 516, 0, 0, 0, 517, 518, 519, - 520, 521, 522, 523, 0, 0, 0, 0, 0, 0, - 524, 525, 0, 526, 527, 528, 0, 159, 529, 160, - 161, 162, 163, 164, 165, 0, 0, 166, 0, 0, - 0, 167, 0, 0, 168, 0, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 0, 178, 0, 0, 0, - 179, 0, 0, 0, 180, 0, 0, 181, 182, 183, - 0, 184, 0, 185, 186, 0, 0, 187, 0, 0, - 188, 189, 0, 190, 191, 0, 192, 193, 0, 194, - 195, 196, 197, 198, 199, 0, 200, 201, 202, 203, - 204, 205, 206, 0, 207, 208, 209, 210, 211, 212, - 213, 214, 0, 215, 216, 0, 217, 218, 219, 220, - 221, 0, 222, 0, 0, 223, 0, 0, 224, 0, - 225, 0, 874, 226, 0, 227, 0, 0, 0, 228, - 229, 230, 0, 0, 231, 0, 0, 0, 0, 232, - 233, 0, 0, 0, 0, 234, 0, 235, 0, 0, - 0, 0, 236, 0, 237, 238, 239, 240, 241, 0, - 0, 0, 0, 242, 0, 0, 243, 244, 245, 0, - 0, 0, 246, 0, 247, 248, 0, 249, 250, 251, - 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, - 260, 0, 0, 261, 262, 263, 264, 0, 0, 265, - 266, 0, 267, 268, 269, 0, 0, 270, 0, 0, - 0, 271, 272, 0, 273, 0, 274, 0, 275, 276, - 277, 278, 279, 280, 281, 0, 282, 0, 0, 283, - 284, 285, 0, 286, 0, 0, 0, 287, 288, 0, - 0, 0, 289, 290, 291, 292, 293, 0, 0, 0, - 294, 295, 296, 0, 0, 297, 0, 0, 0, 0, - 298, 299, 0, 0, 0, 300, 0, 301, 302, 0, - 303, 304, 0, 0, 0, 305, 0, 0, 306, 307, - 308, 0, 0, 309, 0, 0, 310, 311, 665, 0, - 0, 0, 0, 312, 313, 0, 314, 0, 315, 0, - 316, 317, 0, 0, 0, 0, 0, 0, 318, 319, + 332, 333, 334, 0, 335, 336, 337, 338, 0, 339, + 340, 341, 342, 0, 343, 344, 345, 0, 0, 0, + 0, 346, 347, 348, 349, 350, 351, 0, 0, 352, + 353, 0, 354, 0, 355, 0, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 0, 0, 366, 0, + 0, 367, 368, 369, 370, 0, 0, 0, 371, 372, + 0, 0, 2086, 373, 0, 374, 375, 376, 0, 377, + 378, 379, 380, 0, 381, 382, 0, 0, 0, 0, + 0, 0, 0, 0, 383, 384, 385, 0, 785, 386, + 0, 387, 0, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 0, 0, 398, 399, 400, 0, 401, + 0, 402, 403, 404, 405, 406, 0, 407, 408, 409, + 0, 0, 410, 0, 0, 0, 411, 412, 413, 414, + 415, 0, 0, 416, 417, 418, 419, 420, 0, 421, + 422, 0, 423, 424, 425, 0, 0, 426, 0, 427, + 0, 428, 429, 0, 430, 431, 0, 432, 0, 433, + 0, 0, 434, 435, 436, 437, 4268, 439, 440, 441, + 442, 443, 444, 445, 0, 446, 447, 0, 0, 0, + 448, 449, 450, 451, 0, 0, 0, 452, 0, 0, + 0, 453, 0, 454, 455, 456, 457, 458, 459, 0, + 460, 461, 462, 463, 464, 465, 0, 0, 0, 0, + 0, 0, 466, 467, 0, 468, 0, 0, 469, 0, + 0, 0, 470, 471, 472, 0, 0, 0, 473, 0, + 0, 474, 475, 0, 476, 477, 478, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 0, + 0, 488, 489, 490, 491, 0, 0, 492, 493, 0, + 494, 495, 496, 497, 0, 0, 0, 0, 0, 498, + 499, 500, 0, 0, 0, 501, 502, 503, 504, 2088, + 505, 506, 0, 507, 508, 0, 509, 510, 0, 0, + 511, 0, 0, 512, 0, 513, 0, 514, 515, 0, + 0, 0, 0, 0, 0, 516, 0, 0, 517, 0, + 0, 0, 518, 519, 520, 521, 522, 523, 524, 0, + 0, 0, 0, 0, 0, 525, 526, 0, 527, 528, + 529, 0, 160, 530, 161, 162, 163, 164, 165, 166, + 0, 0, 167, 0, 0, 0, 168, 0, 0, 169, + 0, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 0, 179, 0, 0, 0, 180, 0, 0, 0, 181, + 0, 0, 182, 183, 184, 0, 185, 0, 186, 187, + 0, 0, 188, 0, 0, 189, 190, 0, 191, 192, + 0, 193, 194, 0, 195, 196, 197, 198, 199, 200, + 0, 201, 202, 203, 204, 205, 206, 207, 0, 208, + 209, 210, 211, 212, 213, 214, 215, 0, 216, 217, + 0, 218, 219, 220, 221, 222, 0, 223, 0, 0, + 224, 0, 0, 225, 0, 226, 1124, 0, 227, 0, + 228, 0, 0, 0, 229, 230, 231, 0, 0, 232, + 0, 0, 0, 0, 233, 234, 0, 0, 0, 0, + 235, 0, 236, 0, 0, 0, 0, 237, 0, 238, + 239, 240, 241, 242, 0, 0, 0, 0, 243, 0, + 0, 244, 245, 246, 0, 0, 0, 247, 0, 248, + 249, 0, 250, 251, 252, 0, 253, 254, 0, 255, + 256, 257, 258, 259, 260, 261, 0, 0, 262, 263, + 264, 265, 0, 0, 266, 267, 0, 268, 269, 270, + 0, 0, 271, 0, 0, 0, 272, 273, 0, 274, + 0, 275, 0, 276, 277, 278, 279, 280, 281, 282, + 0, 283, 0, 0, 284, 285, 286, 0, 287, 0, + 0, 0, 288, 289, 0, 0, 0, 290, 291, 292, + 293, 294, 0, 0, 0, 295, 296, 297, 0, 0, + 298, 0, 0, 0, 0, 299, 300, 0, 0, 0, + 301, 0, 302, 303, 0, 304, 305, 0, 0, 0, + 306, 0, 0, 307, 308, 309, 0, 0, 310, 0, + 0, 311, 312, 666, 0, 0, 0, 0, 313, 314, + 0, 315, 0, 316, 0, 317, 318, 0, 0, 0, + 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 334, 0, + 335, 336, 337, 338, 0, 339, 340, 341, 342, 0, + 343, 344, 345, 0, 0, 0, 0, 346, 347, 348, + 349, 350, 351, 0, 0, 352, 353, 0, 354, 0, + 355, 0, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 0, 0, 366, 0, 0, 367, 368, 369, + 370, 0, 0, 0, 371, 372, 0, 0, 0, 373, + 0, 374, 375, 376, 0, 377, 378, 379, 380, 0, + 381, 382, 0, 0, 0, 0, 0, 0, 0, 0, + 383, 384, 385, 0, 0, 386, 0, 387, 0, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, + 0, 398, 399, 400, 0, 401, 0, 402, 403, 404, + 405, 406, 0, 407, 408, 409, 0, 0, 410, 0, + 0, 0, 411, 412, 413, 414, 415, 0, 0, 416, + 417, 418, 419, 420, 0, 421, 422, 0, 423, 424, + 425, 0, 0, 426, 0, 427, 0, 428, 429, 0, + 430, 431, 0, 432, 0, 433, 0, 0, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 0, 446, 447, 0, 0, 0, 448, 449, 450, 451, + 0, 0, 0, 452, 0, 0, 0, 453, 0, 454, + 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, + 464, 465, 0, 0, 0, 0, 0, 0, 466, 467, + 0, 468, 0, 0, 469, 0, 0, 0, 470, 471, + 472, 0, 0, 0, 473, 0, 0, 474, 475, 0, + 476, 477, 478, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 0, 0, 488, 489, 490, + 491, 0, 156, 492, 493, 0, 494, 495, 496, 497, + 0, 0, 0, 0, 0, 498, 499, 500, 0, 0, + 0, 501, 502, 503, 504, 0, 505, 506, 0, 507, + 508, 0, 509, 510, 0, 0, 511, 0, 0, 512, + 0, 513, 0, 514, 515, 0, 0, 0, 0, 0, + 0, 516, 0, 0, 517, 0, 0, 0, 518, 519, + 520, 521, 522, 523, 524, 0, 0, 0, 0, 0, + 0, 525, 526, 0, 527, 528, 529, 0, 160, 530, + 161, 162, 163, 164, 165, 166, 1567, 0, 167, 0, + 0, 0, 168, 0, 0, 169, 0, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 0, 179, 0, 0, + 0, 180, 0, 0, 0, 181, 0, 0, 182, 183, + 184, 0, 185, 0, 186, 187, 0, 0, 188, 0, + 0, 189, 190, 0, 191, 192, 0, 193, 194, 0, + 195, 196, 197, 198, 199, 200, 0, 201, 202, 203, + 204, 205, 206, 207, 0, 208, 209, 210, 211, 212, + 213, 214, 215, 0, 216, 217, 0, 218, 219, 220, + 221, 222, 0, 223, 0, 0, 224, 0, 0, 225, + 0, 226, 0, 0, 227, 0, 228, 0, 0, 0, + 229, 230, 231, 0, 0, 232, 0, 0, 0, 0, + 233, 234, 0, 0, 0, 0, 235, 0, 236, 0, + 0, 0, 0, 237, 0, 238, 239, 240, 241, 242, + 0, 0, 0, 0, 243, 0, 0, 244, 245, 246, + 0, 0, 0, 247, 0, 248, 249, 0, 250, 251, + 252, 0, 253, 254, 0, 255, 256, 257, 258, 259, + 260, 261, 0, 0, 262, 263, 264, 265, 0, 0, + 266, 267, 0, 268, 269, 270, 0, 0, 271, 0, + 0, 0, 272, 273, 0, 274, 0, 275, 0, 276, + 277, 278, 279, 280, 281, 282, 0, 283, 0, 0, + 284, 285, 286, 0, 287, 0, 0, 0, 288, 289, + 0, 0, 0, 290, 291, 292, 293, 294, 0, 0, + 0, 295, 296, 297, 0, 0, 298, 0, 0, 0, + 0, 299, 300, 0, 0, 0, 301, 0, 302, 303, + 0, 304, 305, 0, 0, 0, 306, 0, 0, 307, + 308, 309, 0, 0, 310, 0, 0, 311, 312, 666, + 0, 0, 0, 0, 313, 314, 0, 315, 0, 316, + 0, 317, 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 0, 334, 335, 336, 337, 0, - 338, 339, 340, 341, 0, 342, 343, 344, 0, 0, - 0, 0, 345, 346, 347, 348, 349, 350, 0, 0, - 351, 352, 0, 353, 0, 354, 0, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 365, - 0, 0, 366, 367, 368, 369, 0, 0, 0, 370, - 371, 0, 0, 0, 372, 0, 373, 374, 375, 0, - 376, 377, 378, 379, 0, 380, 381, 0, 0, 0, - 0, 0, 0, 0, 0, 382, 383, 384, 0, 0, - 385, 0, 386, 0, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 0, 0, 397, 398, 399, 0, - 400, 0, 401, 402, 403, 404, 405, 0, 406, 407, - 408, 0, 0, 409, 0, 0, 0, 410, 411, 412, - 413, 414, 0, 0, 415, 416, 417, 418, 419, 0, - 420, 421, 0, 422, 423, 424, 0, 0, 425, 0, - 426, 0, 427, 428, 0, 429, 430, 0, 431, 0, - 432, 0, 0, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 0, 445, 446, 0, 0, - 0, 447, 448, 449, 450, 0, 0, 0, 451, 0, - 0, 0, 452, 0, 453, 454, 455, 456, 457, 458, - 0, 459, 460, 461, 462, 463, 464, 0, 0, 0, - 0, 0, 0, 465, 466, 0, 467, 0, 0, 468, - 0, 0, 0, 469, 470, 471, 0, 0, 0, 472, - 0, 0, 473, 474, 0, 475, 476, 477, 478, 479, - 480, 0, 0, 481, 482, 483, 484, 0, 485, 486, - 0, 0, 487, 488, 489, 490, 0, 156, 491, 492, - 0, 493, 494, 495, 496, 0, 0, 0, 0, 0, - 497, 498, 499, 0, 0, 0, 500, 501, 502, 503, - 0, 504, 505, 0, 506, 507, 0, 508, 509, 0, - 0, 510, 0, 0, 511, 0, 512, 0, 513, 514, - 0, 0, 0, 0, 0, 0, 515, 0, 0, 516, - 0, 0, 0, 517, 518, 519, 520, 521, 522, 523, - 0, 0, 0, 0, 0, 0, 524, 525, 0, 526, - 527, 528, 0, 159, 529, 160, 161, 162, 163, 164, - 165, 0, 0, 166, 0, 0, 0, 167, 0, 0, - 168, 0, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 0, 178, 0, 0, 0, 179, 0, 0, 0, - 180, 0, 0, 181, 182, 183, 0, 184, 0, 185, - 186, 0, 0, 187, 0, 0, 188, 189, 0, 190, - 191, 0, 192, 193, 0, 194, 195, 196, 197, 198, - 199, 0, 200, 201, 202, 203, 204, 205, 206, 0, - 207, 208, 209, 210, 211, 212, 213, 214, 0, 215, - 216, 0, 217, 218, 219, 220, 221, 0, 222, 0, - 0, 223, 0, 0, 224, 0, 225, 0, 0, 226, - 0, 227, 0, 0, 0, 228, 229, 230, 0, 0, - 231, 0, 0, 0, 0, 232, 233, 0, 0, 0, - 2654, 234, 0, 235, 0, 0, 0, 0, 236, 0, - 237, 238, 239, 240, 241, 0, 0, 0, 0, 242, - 0, 0, 243, 244, 245, 0, 0, 0, 246, 0, - 247, 248, 0, 249, 250, 251, 0, 252, 253, 0, - 254, 255, 256, 257, 258, 259, 260, 0, 0, 261, - 262, 263, 264, 0, 0, 265, 266, 0, 267, 268, - 269, 0, 0, 270, 0, 0, 0, 271, 272, 0, - 273, 0, 274, 0, 275, 276, 277, 278, 279, 280, - 281, 0, 282, 0, 0, 283, 284, 285, 0, 286, - 0, 0, 0, 287, 288, 0, 0, 0, 289, 290, - 291, 292, 293, 0, 0, 0, 294, 295, 296, 0, - 0, 297, 0, 0, 0, 0, 298, 299, 0, 0, - 0, 300, 0, 301, 302, 0, 303, 304, 0, 0, - 0, 305, 0, 0, 306, 307, 308, 0, 0, 309, - 0, 0, 310, 311, 665, 0, 0, 0, 0, 312, - 313, 0, 314, 0, 315, 0, 316, 317, 0, 0, - 0, 0, 0, 0, 318, 319, 320, 321, 322, 323, + 330, 331, 332, 333, 334, 0, 335, 336, 337, 338, + 0, 339, 340, 341, 342, 0, 343, 344, 345, 0, + 0, 0, 0, 346, 347, 348, 349, 350, 351, 0, + 0, 352, 353, 0, 354, 0, 355, 0, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 0, 0, + 366, 0, 0, 367, 368, 369, 370, 0, 0, 0, + 371, 372, 0, 0, 0, 373, 0, 374, 375, 376, + 0, 377, 378, 379, 380, 0, 381, 382, 0, 0, + 0, 0, 0, 0, 0, 0, 383, 384, 385, 0, + 0, 386, 0, 387, 0, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 0, 0, 398, 399, 400, + 0, 401, 0, 402, 403, 404, 405, 406, 0, 407, + 408, 409, 0, 0, 410, 0, 0, 0, 411, 412, + 413, 414, 415, 0, 0, 416, 417, 418, 419, 420, + 0, 421, 422, 0, 423, 424, 425, 0, 0, 426, + 0, 427, 0, 428, 429, 0, 430, 431, 0, 432, + 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 0, 446, 447, 0, + 0, 0, 448, 449, 450, 451, 0, 0, 0, 452, + 0, 0, 0, 453, 0, 454, 455, 456, 457, 458, + 459, 0, 460, 461, 462, 463, 464, 465, 0, 0, + 0, 0, 0, 0, 466, 467, 0, 468, 0, 0, + 469, 0, 0, 0, 470, 471, 472, 0, 0, 0, + 473, 0, 0, 474, 475, 0, 476, 477, 478, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 0, 0, 488, 489, 490, 491, 0, 156, 492, + 493, 0, 494, 495, 496, 497, 0, 0, 0, 0, + 0, 498, 499, 500, 0, 0, 0, 501, 502, 503, + 504, 0, 505, 506, 0, 507, 508, 0, 509, 510, + 0, 0, 511, 0, 0, 512, 0, 513, 0, 514, + 515, 0, 0, 0, 0, 0, 0, 516, 0, 0, + 517, 0, 0, 0, 518, 519, 520, 521, 522, 523, + 524, 0, 0, 0, 0, 0, 0, 525, 526, 0, + 527, 528, 529, 0, 160, 530, 161, 162, 163, 164, + 165, 166, 0, 0, 167, 0, 0, 0, 168, 0, + 0, 169, 0, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 0, 179, 0, 0, 0, 180, 0, 0, + 0, 181, 0, 0, 182, 183, 184, 0, 185, 0, + 186, 187, 0, 0, 188, 0, 0, 189, 190, 0, + 191, 192, 0, 193, 194, 0, 195, 196, 197, 198, + 199, 200, 0, 201, 202, 203, 204, 205, 206, 207, + 0, 208, 209, 210, 211, 212, 213, 214, 215, 0, + 216, 217, 0, 218, 219, 220, 221, 222, 0, 223, + 0, 0, 224, 0, 0, 225, 0, 226, 0, 876, + 227, 0, 228, 0, 0, 0, 229, 230, 231, 0, + 0, 232, 0, 0, 0, 0, 233, 234, 0, 0, + 0, 0, 235, 0, 236, 0, 0, 0, 0, 237, + 0, 238, 239, 240, 241, 242, 0, 0, 0, 0, + 243, 0, 0, 244, 245, 246, 0, 0, 0, 247, + 0, 248, 249, 0, 250, 251, 252, 0, 253, 254, + 0, 255, 256, 257, 258, 259, 260, 261, 0, 0, + 262, 263, 264, 265, 0, 0, 266, 267, 0, 268, + 269, 270, 0, 0, 271, 0, 0, 0, 272, 273, + 0, 274, 0, 275, 0, 276, 277, 278, 279, 280, + 281, 282, 0, 283, 0, 0, 284, 285, 286, 0, + 287, 0, 0, 0, 288, 289, 0, 0, 0, 290, + 291, 292, 293, 294, 0, 0, 0, 295, 296, 297, + 0, 0, 298, 0, 0, 0, 0, 299, 300, 0, + 0, 0, 301, 0, 302, 303, 0, 304, 305, 0, + 0, 0, 306, 0, 0, 307, 308, 309, 0, 0, + 310, 0, 0, 311, 312, 666, 0, 0, 0, 0, + 313, 314, 0, 315, 0, 316, 0, 317, 318, 0, + 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 0, 334, 335, 336, 337, 0, 338, 339, 340, 341, - 0, 342, 343, 344, 0, 0, 0, 0, 345, 346, - 347, 348, 349, 350, 0, 0, 351, 352, 0, 353, - 0, 354, 0, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 365, 0, 0, 366, 367, - 368, 369, 0, 0, 0, 370, 371, 0, 0, 0, - 372, 0, 373, 374, 375, 0, 376, 377, 378, 379, - 0, 380, 381, 0, 0, 0, 0, 0, 0, 0, - 0, 382, 383, 384, 0, 0, 385, 0, 386, 0, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 0, 0, 397, 398, 399, 0, 400, 0, 401, 402, - 403, 404, 405, 0, 406, 407, 408, 0, 0, 409, - 0, 0, 0, 410, 411, 412, 413, 414, 0, 0, - 415, 416, 417, 418, 419, 0, 420, 421, 0, 422, - 423, 424, 0, 0, 425, 0, 426, 0, 427, 428, - 0, 429, 430, 0, 431, 0, 432, 0, 0, 433, + 334, 0, 335, 336, 337, 338, 0, 339, 340, 341, + 342, 0, 343, 344, 345, 0, 0, 0, 0, 346, + 347, 348, 349, 350, 351, 0, 0, 352, 353, 0, + 354, 0, 355, 0, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 0, 0, 366, 0, 0, 367, + 368, 369, 370, 0, 0, 0, 371, 372, 0, 0, + 0, 373, 0, 374, 375, 376, 0, 377, 378, 379, + 380, 0, 381, 382, 0, 0, 0, 0, 0, 0, + 0, 0, 383, 384, 385, 0, 0, 386, 0, 387, + 0, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 0, 0, 398, 399, 400, 0, 401, 0, 402, + 403, 404, 405, 406, 0, 407, 408, 409, 0, 0, + 410, 0, 0, 0, 411, 412, 413, 414, 415, 0, + 0, 416, 417, 418, 419, 420, 0, 421, 422, 0, + 423, 424, 425, 0, 0, 426, 0, 427, 0, 428, + 429, 0, 430, 431, 0, 432, 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 0, 445, 446, 0, 0, 0, 447, 448, 449, - 450, 0, 0, 0, 451, 0, 0, 0, 452, 0, - 453, 454, 455, 456, 457, 458, 0, 459, 460, 461, - 462, 463, 464, 0, 0, 0, 0, 0, 0, 465, - 466, 0, 467, 0, 0, 468, 0, 0, 0, 469, - 470, 471, 0, 0, 0, 472, 0, 0, 473, 474, - 0, 475, 476, 477, 478, 479, 480, 0, 0, 481, - 482, 483, 484, 0, 485, 486, 0, 0, 487, 488, - 489, 490, 0, 156, 491, 492, 0, 493, 494, 495, - 496, 0, 0, 0, 0, 0, 497, 498, 499, 0, - 0, 0, 500, 501, 502, 503, 0, 504, 505, 0, - 506, 507, 0, 508, 509, 0, 0, 510, 0, 0, - 511, 0, 512, 0, 513, 514, 0, 0, 0, 0, - 0, 0, 515, 0, 0, 516, 0, 0, 0, 517, - 518, 519, 520, 521, 522, 523, 0, 0, 0, 0, - 0, 0, 524, 525, 0, 526, 527, 528, 0, 159, - 529, 160, 161, 162, 163, 164, 165, 0, 0, 166, - 0, 0, 0, 167, 0, 0, 168, 0, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 0, 178, 0, - 0, 1526, 179, 0, 0, 0, 180, 0, 0, 181, - 182, 183, 0, 184, 0, 185, 186, 0, 0, 187, - 0, 0, 188, 189, 0, 190, 191, 0, 192, 193, - 0, 194, 195, 196, 197, 198, 199, 0, 200, 201, - 202, 203, 204, 205, 206, 0, 207, 208, 209, 210, - 211, 212, 213, 214, 0, 215, 216, 0, 217, 218, - 219, 220, 221, 0, 222, 0, 0, 223, 0, 0, - 224, 0, 225, 0, 0, 226, 0, 227, 0, 0, - 0, 228, 229, 230, 0, 0, 231, 0, 0, 0, - 0, 232, 233, 0, 0, 0, 0, 234, 0, 235, - 0, 0, 0, 0, 236, 0, 237, 238, 239, 240, - 241, 0, 0, 0, 0, 242, 0, 0, 243, 244, - 245, 0, 0, 0, 246, 0, 247, 248, 0, 249, - 250, 251, 0, 252, 253, 0, 254, 255, 256, 257, - 258, 259, 260, 0, 0, 261, 262, 263, 264, 0, - 0, 265, 266, 0, 267, 268, 269, 0, 0, 270, - 0, 0, 0, 271, 272, 0, 273, 0, 274, 0, - 275, 276, 277, 278, 279, 280, 281, 0, 282, 0, - 0, 283, 284, 285, 0, 286, 0, 0, 0, 287, - 288, 0, 0, 0, 289, 290, 291, 292, 293, 0, - 0, 0, 294, 295, 296, 0, 0, 297, 0, 0, - 0, 0, 298, 299, 0, 0, 0, 300, 0, 301, - 302, 0, 303, 304, 0, 0, 0, 305, 0, 0, - 306, 307, 308, 0, 0, 309, 0, 0, 310, 311, - 665, 0, 0, 0, 0, 312, 313, 0, 314, 0, - 315, 0, 316, 317, 0, 0, 0, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 0, 334, 335, 336, - 337, 0, 338, 339, 340, 341, 0, 342, 343, 344, - 0, 0, 0, 0, 345, 346, 347, 348, 349, 350, - 0, 0, 351, 352, 0, 353, 0, 354, 0, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 365, 0, 0, 366, 367, 368, 369, 0, 0, - 0, 370, 371, 0, 0, 0, 372, 0, 373, 374, - 375, 0, 376, 377, 378, 379, 0, 380, 381, 0, - 0, 0, 0, 0, 0, 0, 0, 382, 383, 384, - 0, 0, 385, 0, 386, 0, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 0, 0, 397, 398, - 399, 0, 400, 0, 401, 402, 403, 404, 405, 0, - 406, 407, 408, 0, 0, 409, 0, 0, 0, 410, - 411, 412, 413, 414, 0, 0, 415, 416, 417, 418, - 419, 0, 420, 421, 0, 422, 423, 424, 0, 0, - 425, 0, 426, 0, 427, 428, 0, 429, 430, 0, - 431, 0, 432, 0, 0, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 0, 445, 446, - 0, 0, 0, 447, 448, 449, 450, 0, 0, 0, - 451, 0, 0, 0, 452, 0, 453, 454, 455, 456, - 457, 458, 0, 459, 460, 461, 462, 463, 464, 0, - 0, 0, 0, 0, 0, 465, 466, 0, 467, 0, - 0, 468, 0, 0, 0, 469, 470, 471, 0, 0, - 0, 472, 0, 0, 473, 474, 0, 475, 476, 477, - 478, 479, 480, 0, 0, 481, 482, 483, 484, 0, - 485, 486, 0, 0, 487, 488, 489, 490, 0, 156, - 491, 492, 0, 493, 494, 495, 496, 0, 0, 0, - 0, 0, 497, 498, 499, 0, 0, 0, 500, 501, - 502, 503, 0, 504, 505, 0, 506, 507, 0, 508, - 509, 0, 0, 510, 0, 0, 511, 0, 512, 0, - 513, 514, 0, 0, 0, 0, 0, 0, 515, 0, - 0, 516, 0, 0, 0, 517, 518, 519, 520, 521, - 522, 523, 0, 0, 0, 0, 0, 0, 524, 525, - 0, 526, 527, 528, 0, 159, 529, 160, 161, 162, - 163, 164, 165, 0, 0, 166, 0, 0, 0, 167, - 0, 0, 168, 0, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 0, 178, 0, 0, 0, 179, 0, - 0, 0, 180, 0, 0, 181, 182, 183, 0, 184, - 0, 185, 186, 0, 0, 187, 0, 0, 188, 189, - 0, 190, 191, 0, 192, 193, 0, 194, 195, 196, - 197, 198, 199, 0, 200, 201, 202, 203, 204, 205, - 206, 0, 207, 208, 209, 210, 211, 212, 213, 214, - 0, 215, 216, 0, 217, 218, 219, 220, 221, 0, - 222, 0, 0, 223, 0, 0, 224, 0, 225, 0, - 0, 226, 0, 227, 0, 0, 0, 228, 229, 230, - 0, 0, 231, 0, 0, 0, 0, 232, 233, 0, - 0, 0, 0, 234, 0, 235, 0, 0, 0, 0, - 236, 0, 237, 238, 239, 240, 241, 0, 0, 0, - 0, 242, 0, 0, 243, 244, 245, 0, 0, 0, - 246, 0, 247, 248, 0, 249, 250, 251, 0, 252, - 253, 0, 254, 255, 256, 257, 258, 259, 260, 0, - 0, 261, 262, 263, 264, 0, 0, 265, 266, 0, - 267, 268, 269, 0, 0, 270, 0, 0, 0, 271, - 272, 0, 273, 0, 274, 0, 275, 276, 277, 278, - 279, 280, 281, 0, 282, 0, 0, 283, 284, 285, - 0, 286, 0, 0, 0, 287, 288, 0, 0, 0, - 289, 290, 291, 292, 293, 0, 0, 0, 294, 295, - 296, 0, 0, 297, 0, 0, 0, 0, 298, 299, - 0, 0, 0, 300, 0, 301, 302, 0, 303, 304, - 0, 0, 0, 305, 0, 0, 306, 307, 308, 0, - 0, 309, 0, 0, 310, 311, 665, 0, 0, 0, - 0, 312, 313, 0, 314, 0, 315, 0, 316, 317, - 0, 0, 0, 0, 0, 0, 318, 319, 320, 321, + 444, 445, 0, 446, 447, 0, 0, 0, 448, 449, + 450, 451, 0, 0, 0, 452, 0, 0, 0, 453, + 0, 454, 455, 456, 457, 458, 459, 0, 460, 461, + 462, 463, 464, 465, 0, 0, 0, 0, 0, 0, + 466, 467, 0, 468, 0, 0, 469, 0, 0, 0, + 470, 471, 472, 0, 0, 0, 473, 0, 0, 474, + 475, 0, 476, 477, 478, 479, 480, 481, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 0, 0, 488, + 489, 490, 491, 0, 156, 492, 493, 0, 494, 495, + 496, 497, 0, 0, 0, 0, 0, 498, 499, 500, + 0, 0, 0, 501, 502, 503, 504, 0, 505, 506, + 0, 507, 508, 0, 509, 510, 0, 0, 511, 0, + 0, 512, 0, 513, 0, 514, 515, 0, 0, 0, + 0, 0, 0, 516, 0, 0, 517, 0, 0, 0, + 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, + 0, 0, 0, 525, 526, 0, 527, 528, 529, 0, + 160, 530, 161, 162, 163, 164, 165, 166, 0, 0, + 167, 0, 0, 0, 168, 0, 0, 169, 0, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 0, 179, + 0, 0, 0, 180, 0, 0, 0, 181, 0, 0, + 182, 183, 184, 0, 185, 0, 186, 187, 0, 0, + 188, 0, 0, 189, 190, 0, 191, 192, 0, 193, + 194, 0, 195, 196, 197, 198, 199, 200, 0, 201, + 202, 203, 204, 205, 206, 207, 0, 208, 209, 210, + 211, 212, 213, 214, 215, 0, 216, 217, 0, 218, + 219, 220, 221, 222, 0, 223, 0, 0, 224, 0, + 0, 225, 0, 226, 0, 0, 227, 0, 228, 0, + 0, 0, 229, 230, 231, 0, 0, 232, 0, 0, + 0, 0, 233, 234, 0, 0, 0, 2659, 235, 0, + 236, 0, 0, 0, 0, 237, 0, 238, 239, 240, + 241, 242, 0, 0, 0, 0, 243, 0, 0, 244, + 245, 246, 0, 0, 0, 247, 0, 248, 249, 0, + 250, 251, 252, 0, 253, 254, 0, 255, 256, 257, + 258, 259, 260, 261, 0, 0, 262, 263, 264, 265, + 0, 0, 266, 267, 0, 268, 269, 270, 0, 0, + 271, 0, 0, 0, 272, 273, 0, 274, 0, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 0, 283, + 0, 0, 284, 285, 286, 0, 287, 0, 0, 0, + 288, 289, 0, 0, 0, 290, 291, 292, 293, 294, + 0, 0, 0, 295, 296, 297, 0, 0, 298, 0, + 0, 0, 0, 299, 300, 0, 0, 0, 301, 0, + 302, 303, 0, 304, 305, 0, 0, 0, 306, 0, + 0, 307, 308, 309, 0, 0, 310, 0, 0, 311, + 312, 666, 0, 0, 0, 0, 313, 314, 0, 315, + 0, 316, 0, 317, 318, 0, 0, 0, 0, 0, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 0, 335, 336, + 337, 338, 0, 339, 340, 341, 342, 0, 343, 344, + 345, 0, 0, 0, 0, 346, 347, 348, 349, 350, + 351, 0, 0, 352, 353, 0, 354, 0, 355, 0, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 0, 0, 366, 0, 0, 367, 368, 369, 370, 0, + 0, 0, 371, 372, 0, 0, 0, 373, 0, 374, + 375, 376, 0, 377, 378, 379, 380, 0, 381, 382, + 0, 0, 0, 0, 0, 0, 0, 0, 383, 384, + 385, 0, 0, 386, 0, 387, 0, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 0, 0, 398, + 399, 400, 0, 401, 0, 402, 403, 404, 405, 406, + 0, 407, 408, 409, 0, 0, 410, 0, 0, 0, + 411, 412, 413, 414, 415, 0, 0, 416, 417, 418, + 419, 420, 0, 421, 422, 0, 423, 424, 425, 0, + 0, 426, 0, 427, 0, 428, 429, 0, 430, 431, + 0, 432, 0, 433, 0, 0, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 0, 446, + 447, 0, 0, 0, 448, 449, 450, 451, 0, 0, + 0, 452, 0, 0, 0, 453, 0, 454, 455, 456, + 457, 458, 459, 0, 460, 461, 462, 463, 464, 465, + 0, 0, 0, 0, 0, 0, 466, 467, 0, 468, + 0, 0, 469, 0, 0, 0, 470, 471, 472, 0, + 0, 0, 473, 0, 0, 474, 475, 0, 476, 477, + 478, 479, 480, 481, 0, 0, 482, 483, 484, 485, + 0, 486, 487, 0, 0, 488, 489, 490, 491, 0, + 156, 492, 493, 0, 494, 495, 496, 497, 0, 0, + 0, 0, 0, 498, 499, 500, 0, 0, 0, 501, + 502, 503, 504, 0, 505, 506, 0, 507, 508, 0, + 509, 510, 0, 0, 511, 0, 0, 512, 0, 513, + 0, 514, 515, 0, 0, 0, 0, 0, 0, 516, + 0, 0, 517, 0, 0, 0, 518, 519, 520, 521, + 522, 523, 524, 0, 0, 0, 0, 0, 0, 525, + 526, 0, 527, 528, 529, 0, 160, 530, 161, 162, + 163, 164, 165, 166, 0, 0, 167, 0, 0, 0, + 168, 0, 0, 169, 0, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 0, 179, 0, 0, 1529, 180, + 0, 0, 0, 181, 0, 0, 182, 183, 184, 0, + 185, 0, 186, 187, 0, 0, 188, 0, 0, 189, + 190, 0, 191, 192, 0, 193, 194, 0, 195, 196, + 197, 198, 199, 200, 0, 201, 202, 203, 204, 205, + 206, 207, 0, 208, 209, 210, 211, 212, 213, 214, + 215, 0, 216, 217, 0, 218, 219, 220, 221, 222, + 0, 223, 0, 0, 224, 0, 0, 225, 0, 226, + 0, 0, 227, 0, 228, 0, 0, 0, 229, 230, + 231, 0, 0, 232, 0, 0, 0, 0, 233, 234, + 0, 0, 0, 0, 235, 0, 236, 0, 0, 0, + 0, 237, 0, 238, 239, 240, 241, 242, 0, 0, + 0, 0, 243, 0, 0, 244, 245, 246, 0, 0, + 0, 247, 0, 248, 249, 0, 250, 251, 252, 0, + 253, 254, 0, 255, 256, 257, 258, 259, 260, 261, + 0, 0, 262, 263, 264, 265, 0, 0, 266, 267, + 0, 268, 269, 270, 0, 0, 271, 0, 0, 0, + 272, 273, 0, 274, 0, 275, 0, 276, 277, 278, + 279, 280, 281, 282, 0, 283, 0, 0, 284, 285, + 286, 0, 287, 0, 0, 0, 288, 289, 0, 0, + 0, 290, 291, 292, 293, 294, 0, 0, 0, 295, + 296, 297, 0, 0, 298, 0, 0, 0, 0, 299, + 300, 0, 0, 0, 301, 0, 302, 303, 0, 304, + 305, 0, 0, 0, 306, 0, 0, 307, 308, 309, + 0, 0, 310, 0, 0, 311, 312, 666, 0, 0, + 0, 0, 313, 314, 0, 315, 0, 316, 0, 317, + 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 0, 334, 335, 336, 337, 0, 338, 339, - 340, 341, 0, 342, 343, 344, 0, 0, 0, 0, - 345, 346, 347, 348, 349, 350, 0, 0, 351, 352, - 0, 353, 0, 354, 0, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 365, 0, 0, - 366, 367, 368, 369, 0, 0, 0, 370, 371, 0, - 0, 0, 372, 0, 373, 374, 375, 0, 376, 377, - 378, 379, 0, 380, 381, 0, 0, 0, 0, 0, - 0, 0, 0, 382, 383, 384, 0, 0, 385, 0, - 386, 0, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 0, 0, 397, 398, 399, 0, 400, 0, - 401, 402, 403, 404, 405, 0, 406, 407, 408, 0, - 0, 409, 0, 0, 0, 410, 411, 412, 413, 414, - 0, 0, 415, 416, 417, 418, 419, 0, 420, 421, - 0, 422, 423, 424, 0, 0, 425, 0, 426, 0, - 427, 428, 0, 429, 430, 0, 431, 0, 432, 0, - 0, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 0, 445, 446, 0, 0, 0, 447, - 448, 449, 450, 0, 0, 0, 451, 0, 0, 0, - 452, 0, 453, 454, 455, 456, 457, 458, 0, 459, - 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, - 0, 465, 466, 0, 467, 0, 0, 468, 0, 0, - 0, 469, 470, 471, 0, 0, 0, 472, 0, 0, - 473, 474, 0, 475, 476, 477, 478, 479, 480, 0, - 0, 481, 482, 483, 484, 0, 485, 486, 0, 0, - 487, 488, 489, 490, 0, 156, 491, 492, 0, 493, - 494, 495, 496, 0, 0, 0, 0, 0, 497, 498, - 499, 0, 0, 0, 500, 501, 502, 503, 0, 504, - 505, 0, 506, 507, 0, 508, 509, 0, 0, 510, - 0, 0, 511, 0, 512, 0, 513, 514, 0, 0, - 0, 0, 0, 0, 515, 0, 0, 516, 0, 0, - 0, 517, 518, 519, 520, 521, 522, 523, 0, 0, - 0, 0, 0, 0, 524, 525, 0, 526, 527, 528, - 0, 159, 529, 160, 161, 162, 163, 164, 165, 0, - 0, 166, 0, 0, 0, 167, 3115, 0, 168, 0, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 0, - 178, 0, 0, 0, 179, 0, 0, 0, 180, 0, - 0, 181, 182, 183, 0, 184, 0, 185, 186, 0, - 0, 187, 0, 0, 188, 189, 0, 190, 191, 0, - 192, 193, 0, 194, 195, 196, 197, 198, 199, 0, - 200, 201, 202, 203, 204, 205, 206, 0, 207, 208, - 209, 210, 211, 212, 213, 214, 0, 215, 216, 0, - 217, 218, 219, 220, 221, 0, 222, 0, 0, 223, - 0, 0, 224, 0, 225, 0, 0, 226, 0, 227, - 0, 0, 0, 228, 229, 230, 0, 0, 231, 0, - 0, 0, 0, 232, 233, 0, 0, 0, 0, 234, - 0, 235, 0, 0, 0, 0, 236, 0, 237, 238, - 239, 240, 241, 0, 0, 0, 0, 242, 0, 0, - 243, 244, 245, 0, 0, 0, 246, 0, 247, 248, - 0, 249, 250, 251, 0, 252, 253, 0, 254, 255, - 256, 257, 258, 259, 260, 0, 0, 261, 262, 263, - 264, 0, 0, 265, 266, 0, 267, 268, 269, 0, - 0, 270, 0, 0, 0, 271, 272, 0, 273, 0, - 274, 0, 275, 276, 277, 278, 279, 280, 281, 0, - 282, 0, 0, 283, 284, 285, 0, 286, 0, 0, - 0, 287, 288, 0, 0, 0, 289, 290, 291, 292, - 293, 0, 0, 0, 294, 295, 296, 0, 0, 297, - 0, 0, 0, 0, 298, 299, 0, 0, 0, 300, - 0, 301, 302, 0, 303, 304, 0, 0, 0, 305, - 0, 0, 306, 307, 308, 0, 0, 309, 0, 0, - 310, 311, 0, 0, 0, 0, 0, 312, 313, 0, - 314, 0, 315, 0, 316, 317, 0, 0, 0, 0, - 0, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, - 335, 336, 337, 0, 338, 339, 340, 341, 0, 342, - 343, 344, 0, 0, 0, 0, 345, 346, 347, 348, - 349, 350, 0, 0, 351, 352, 0, 353, 0, 354, - 0, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 365, 0, 0, 366, 367, 368, 369, - 0, 0, 0, 370, 371, 0, 0, 0, 372, 0, - 373, 374, 375, 0, 376, 377, 378, 379, 0, 380, - 381, 0, 0, 0, 0, 0, 0, 0, 0, 382, - 383, 384, 0, 0, 385, 0, 386, 0, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 0, 0, - 397, 398, 399, 0, 400, 0, 401, 402, 403, 404, - 405, 0, 406, 407, 408, 0, 0, 409, 0, 0, - 0, 410, 411, 412, 413, 414, 0, 0, 415, 416, - 417, 418, 419, 0, 420, 421, 0, 422, 423, 424, - 0, 0, 425, 0, 426, 0, 427, 428, 0, 429, - 430, 0, 431, 0, 432, 0, 0, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 0, - 445, 446, 0, 0, 0, 447, 448, 449, 450, 0, - 0, 0, 451, 0, 0, 0, 452, 0, 453, 454, - 455, 456, 457, 458, 0, 459, 460, 461, 462, 463, - 464, 0, 0, 0, 0, 0, 0, 465, 466, 0, - 467, 0, 0, 468, 0, 0, 0, 469, 470, 471, - 0, 0, 0, 472, 0, 0, 473, 474, 0, 475, - 476, 477, 478, 479, 480, 0, 0, 481, 482, 483, - 484, 0, 485, 486, 0, 0, 487, 488, 489, 490, - 0, 156, 491, 492, 0, 493, 494, 495, 496, 0, - 0, 0, 0, 0, 497, 498, 499, 0, 0, 0, - 500, 501, 502, 503, 0, 504, 505, 0, 506, 507, - 0, 508, 509, 0, 0, 510, 0, 0, 511, 0, - 512, 0, 513, 514, 0, 0, 0, 0, 0, 0, - 515, 0, 0, 516, 0, 0, 0, 517, 518, 519, - 520, 521, 522, 523, 0, 0, 0, 0, 0, 0, - 524, 525, 0, 526, 527, 528, 0, 159, 529, 160, - 161, 162, 163, 164, 165, 0, 0, 166, 0, 0, - 0, 167, 0, 0, 168, 0, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 0, 178, 0, 0, 0, - 179, 0, 0, 0, 180, 0, 0, 181, 182, 183, - 0, 184, 0, 185, 186, 0, 0, 187, 0, 0, - 188, 189, 0, 190, 191, 0, 192, 193, 0, 194, - 195, 196, 197, 198, 199, 0, 200, 201, 202, 203, - 204, 205, 206, 0, 207, 208, 209, 210, 211, 212, - 213, 214, 0, 215, 216, 0, 217, 218, 219, 220, - 221, 3299, 222, 0, 0, 223, 0, 0, 224, 0, - 225, 0, 0, 226, 0, 227, 0, 0, 0, 228, - 229, 230, 0, 0, 231, 0, 0, 0, 0, 232, - 233, 0, 0, 0, 0, 234, 0, 235, 0, 0, - 0, 0, 236, 0, 237, 238, 239, 240, 241, 0, - 0, 0, 0, 242, 0, 0, 243, 244, 245, 0, - 0, 0, 246, 0, 247, 248, 0, 249, 250, 251, - 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, - 260, 0, 3300, 261, 262, 263, 264, 0, 0, 265, - 266, 0, 267, 268, 269, 0, 0, 270, 0, 0, - 0, 271, 272, 0, 273, 0, 274, 0, 275, 276, - 277, 278, 279, 280, 281, 0, 282, 0, 0, 283, - 284, 285, 0, 286, 0, 0, 0, 287, 288, 0, - 0, 0, 289, 290, 291, 292, 293, 0, 0, 0, - 294, 295, 296, 0, 0, 297, 0, 0, 0, 0, - 298, 299, 0, 0, 0, 300, 0, 301, 302, 0, - 303, 304, 0, 0, 0, 305, 0, 0, 306, 307, - 308, 0, 0, 309, 0, 0, 310, 311, 0, 0, - 0, 0, 0, 312, 313, 0, 314, 0, 315, 0, - 316, 317, 0, 0, 0, 0, 0, 0, 318, 319, + 332, 333, 334, 0, 335, 336, 337, 338, 0, 339, + 340, 341, 342, 0, 343, 344, 345, 0, 0, 0, + 0, 346, 347, 348, 349, 350, 351, 0, 0, 352, + 353, 0, 354, 0, 355, 0, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 0, 0, 366, 0, + 0, 367, 368, 369, 370, 0, 0, 0, 371, 372, + 0, 0, 0, 373, 0, 374, 375, 376, 0, 377, + 378, 379, 380, 0, 381, 382, 0, 0, 0, 0, + 0, 0, 0, 0, 383, 384, 385, 0, 0, 386, + 0, 387, 0, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 0, 0, 398, 399, 400, 0, 401, + 0, 402, 403, 404, 405, 406, 0, 407, 408, 409, + 0, 0, 410, 0, 0, 0, 411, 412, 413, 414, + 415, 0, 0, 416, 417, 418, 419, 420, 0, 421, + 422, 0, 423, 424, 425, 0, 0, 426, 0, 427, + 0, 428, 429, 0, 430, 431, 0, 432, 0, 433, + 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 0, 446, 447, 0, 0, 0, + 448, 449, 450, 451, 0, 0, 0, 452, 0, 0, + 0, 453, 0, 454, 455, 456, 457, 458, 459, 0, + 460, 461, 462, 463, 464, 465, 0, 0, 0, 0, + 0, 0, 466, 467, 0, 468, 0, 0, 469, 0, + 0, 0, 470, 471, 472, 0, 0, 0, 473, 0, + 0, 474, 475, 0, 476, 477, 478, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 0, + 0, 488, 489, 490, 491, 0, 156, 492, 493, 0, + 494, 495, 496, 497, 0, 0, 0, 0, 0, 498, + 499, 500, 0, 0, 0, 501, 502, 503, 504, 0, + 505, 506, 0, 507, 508, 0, 509, 510, 0, 0, + 511, 0, 0, 512, 0, 513, 0, 514, 515, 0, + 0, 0, 0, 0, 0, 516, 0, 0, 517, 0, + 0, 0, 518, 519, 520, 521, 522, 523, 524, 0, + 0, 0, 0, 0, 0, 525, 526, 0, 527, 528, + 529, 0, 160, 530, 161, 162, 163, 164, 165, 166, + 0, 0, 167, 0, 0, 0, 168, 0, 0, 169, + 0, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 0, 179, 0, 0, 0, 180, 0, 0, 0, 181, + 0, 0, 182, 183, 184, 0, 185, 0, 186, 187, + 0, 0, 188, 0, 0, 189, 190, 0, 191, 192, + 0, 193, 194, 0, 195, 196, 197, 198, 199, 200, + 0, 201, 202, 203, 204, 205, 206, 207, 0, 208, + 209, 210, 211, 212, 213, 214, 215, 0, 216, 217, + 0, 218, 219, 220, 221, 222, 0, 223, 0, 0, + 224, 0, 0, 225, 0, 226, 0, 0, 227, 0, + 228, 0, 0, 0, 229, 230, 231, 0, 0, 232, + 0, 0, 0, 0, 233, 234, 0, 0, 0, 0, + 235, 0, 236, 0, 0, 0, 0, 237, 0, 238, + 239, 240, 241, 242, 0, 0, 0, 0, 243, 0, + 0, 244, 245, 246, 0, 0, 0, 247, 0, 248, + 249, 0, 250, 251, 252, 0, 253, 254, 0, 255, + 256, 257, 258, 259, 260, 261, 0, 0, 262, 263, + 264, 265, 0, 0, 266, 267, 0, 268, 269, 270, + 0, 0, 271, 0, 0, 0, 272, 273, 0, 274, + 0, 275, 0, 276, 277, 278, 279, 280, 281, 282, + 0, 283, 0, 0, 284, 285, 286, 0, 287, 0, + 0, 0, 288, 289, 0, 0, 0, 290, 291, 292, + 293, 294, 0, 0, 0, 295, 296, 297, 0, 0, + 298, 0, 0, 0, 0, 299, 300, 0, 0, 0, + 301, 0, 302, 303, 0, 304, 305, 0, 0, 0, + 306, 0, 0, 307, 308, 309, 0, 0, 310, 0, + 0, 311, 312, 666, 0, 0, 0, 0, 313, 314, + 0, 315, 0, 316, 0, 317, 318, 0, 0, 0, + 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 334, 0, + 335, 336, 337, 338, 0, 339, 340, 341, 342, 0, + 343, 344, 345, 0, 0, 0, 0, 346, 347, 348, + 349, 350, 351, 0, 0, 352, 353, 0, 354, 0, + 355, 0, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 0, 0, 366, 0, 0, 367, 368, 369, + 370, 0, 0, 0, 371, 372, 0, 0, 0, 373, + 0, 374, 375, 376, 0, 377, 378, 379, 380, 0, + 381, 382, 0, 0, 0, 0, 0, 0, 0, 0, + 383, 384, 385, 0, 0, 386, 0, 387, 0, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, + 0, 398, 399, 400, 0, 401, 0, 402, 403, 404, + 405, 406, 0, 407, 408, 409, 0, 0, 410, 0, + 0, 0, 411, 412, 413, 414, 415, 0, 0, 416, + 417, 418, 419, 420, 0, 421, 422, 0, 423, 424, + 425, 0, 0, 426, 0, 427, 0, 428, 429, 0, + 430, 431, 0, 432, 0, 433, 0, 0, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 0, 446, 447, 0, 0, 0, 448, 449, 450, 451, + 0, 0, 0, 452, 0, 0, 0, 453, 0, 454, + 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, + 464, 465, 0, 0, 0, 0, 0, 0, 466, 467, + 0, 468, 0, 0, 469, 0, 0, 0, 470, 471, + 472, 0, 0, 0, 473, 0, 0, 474, 475, 0, + 476, 477, 478, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 0, 0, 488, 489, 490, + 491, 0, 156, 492, 493, 0, 494, 495, 496, 497, + 0, 0, 0, 0, 0, 498, 499, 500, 0, 0, + 0, 501, 502, 503, 504, 0, 505, 506, 0, 507, + 508, 0, 509, 510, 0, 0, 511, 0, 0, 512, + 0, 513, 0, 514, 515, 0, 0, 0, 0, 0, + 0, 516, 0, 0, 517, 0, 0, 0, 518, 519, + 520, 521, 522, 523, 524, 0, 0, 0, 0, 0, + 0, 525, 526, 0, 527, 528, 529, 0, 160, 530, + 161, 162, 163, 164, 165, 166, 0, 0, 167, 0, + 0, 0, 168, 3120, 0, 169, 0, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 0, 179, 0, 0, + 0, 180, 0, 0, 0, 181, 0, 0, 182, 183, + 184, 0, 185, 0, 186, 187, 0, 0, 188, 0, + 0, 189, 190, 0, 191, 192, 0, 193, 194, 0, + 195, 196, 197, 198, 199, 200, 0, 201, 202, 203, + 204, 205, 206, 207, 0, 208, 209, 210, 211, 212, + 213, 214, 215, 0, 216, 217, 0, 218, 219, 220, + 221, 222, 0, 223, 0, 0, 224, 0, 0, 225, + 0, 226, 0, 0, 227, 0, 228, 0, 0, 0, + 229, 230, 231, 0, 0, 232, 0, 0, 0, 0, + 233, 234, 0, 0, 0, 0, 235, 0, 236, 0, + 0, 0, 0, 237, 0, 238, 239, 240, 241, 242, + 0, 0, 0, 0, 243, 0, 0, 244, 245, 246, + 0, 0, 0, 247, 0, 248, 249, 0, 250, 251, + 252, 0, 253, 254, 0, 255, 256, 257, 258, 259, + 260, 261, 0, 0, 262, 263, 264, 265, 0, 0, + 266, 267, 0, 268, 269, 270, 0, 0, 271, 0, + 0, 0, 272, 273, 0, 274, 0, 275, 0, 276, + 277, 278, 279, 280, 281, 282, 0, 283, 0, 0, + 284, 285, 286, 0, 287, 0, 0, 0, 288, 289, + 0, 0, 0, 290, 291, 292, 293, 294, 0, 0, + 0, 295, 296, 297, 0, 0, 298, 0, 0, 0, + 0, 299, 300, 0, 0, 0, 301, 0, 302, 303, + 0, 304, 305, 0, 0, 0, 306, 0, 0, 307, + 308, 309, 0, 0, 310, 0, 0, 311, 312, 0, + 0, 0, 0, 0, 313, 314, 0, 315, 0, 316, + 0, 317, 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 0, 334, 335, 336, 337, 0, - 338, 339, 340, 341, 0, 342, 343, 344, 0, 0, - 0, 0, 345, 346, 347, 348, 349, 350, 0, 0, - 351, 352, 0, 353, 0, 354, 0, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 365, - 0, 0, 366, 367, 368, 369, 0, 0, 0, 370, - 371, 0, 0, 0, 372, 0, 373, 374, 375, 0, - 376, 377, 378, 379, 0, 380, 381, 0, 0, 0, - 0, 0, 0, 0, 0, 382, 383, 384, 0, 0, - 385, 0, 386, 0, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 0, 0, 397, 398, 399, 0, - 400, 0, 401, 402, 403, 404, 405, 0, 406, 407, - 408, 0, 0, 409, 0, 0, 0, 410, 411, 412, - 413, 414, 0, 0, 415, 416, 417, 418, 419, 0, - 420, 421, 0, 422, 423, 424, 0, 0, 425, 0, - 426, 0, 427, 428, 0, 429, 430, 0, 431, 0, - 432, 0, 0, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 0, 445, 446, 0, 0, - 0, 447, 448, 449, 450, 0, 0, 0, 451, 0, - 0, 0, 452, 0, 453, 454, 455, 456, 457, 458, - 0, 459, 460, 461, 462, 463, 464, 0, 0, 0, - 0, 0, 0, 465, 466, 0, 467, 0, 0, 468, - 0, 0, 0, 469, 470, 471, 0, 0, 0, 472, - 0, 0, 473, 474, 0, 475, 476, 477, 478, 479, - 480, 0, 0, 481, 482, 483, 484, 0, 485, 486, - 0, 0, 487, 488, 489, 490, 0, 0, 491, 492, - 0, 493, 494, 495, 496, 0, 0, 0, 0, 0, - 497, 498, 499, 0, 0, 0, 500, 501, 502, 503, - 0, 504, 505, 0, 506, 507, 0, 508, 509, 0, - 0, 510, 0, 0, 511, 0, 512, 0, 513, 514, - 0, 0, 0, 0, 0, 0, 515, 0, 0, 516, - 0, 0, 0, 517, 518, 519, 520, 521, 522, 523, - 0, 0, 0, 0, 0, 0, 524, 525, 0, 526, - 527, 528, 0, 159, 529, 160, 161, 162, 163, 164, - 165, 0, 0, 166, 0, 0, 0, 167, 0, 0, - 168, 0, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 0, 178, 0, 0, 0, 179, 0, 0, 0, - 180, 0, 0, 181, 182, 183, 0, 184, 0, 185, - 186, 0, 0, 187, 0, 0, 188, 189, 0, 190, - 191, 0, 192, 193, 0, 194, 195, 196, 197, 198, - 199, 0, 200, 201, 202, 203, 204, 205, 206, 0, - 207, 208, 209, 210, 211, 212, 213, 214, 0, 215, - 216, 0, 217, 218, 219, 220, 221, 0, 222, 0, - 0, 223, 0, 0, 224, 0, 225, 0, 0, 226, - 0, 227, 0, 0, 0, 228, 229, 230, 0, 0, - 231, 0, 0, 0, 0, 232, 233, 0, 0, 0, - 0, 234, 0, 235, 0, 0, 0, 0, 236, 0, - 237, 238, 239, 240, 241, 0, 0, 0, 0, 242, - 0, 0, 243, 244, 245, 0, 0, 0, 246, 0, - 247, 248, 0, 249, 250, 251, 0, 252, 253, 0, - 254, 255, 256, 257, 258, 259, 260, 0, 0, 261, - 262, 263, 264, 0, 0, 265, 266, 0, 267, 268, - 269, 0, 0, 270, 0, 0, 0, 271, 272, 0, - 273, 0, 274, 0, 275, 276, 277, 278, 279, 280, - 281, 0, 282, 0, 0, 283, 284, 285, 0, 286, - 0, 0, 0, 287, 288, 0, 0, 0, 289, 290, - 291, 292, 293, 0, 0, 0, 294, 295, 296, 0, - 0, 297, 0, 0, 0, 0, 298, 299, 0, 0, - 0, 300, 0, 301, 302, 0, 303, 304, 0, 0, - 0, 305, 0, 0, 306, 307, 308, 0, 0, 309, - 0, 0, 310, 311, 0, 0, 0, 0, 0, 312, - 313, 0, 314, 0, 315, 0, 316, 317, 0, 0, - 0, 0, 0, 0, 318, 319, 320, 321, 322, 323, + 330, 331, 332, 333, 334, 0, 335, 336, 337, 338, + 0, 339, 340, 341, 342, 0, 343, 344, 345, 0, + 0, 0, 0, 346, 347, 348, 349, 350, 351, 0, + 0, 352, 353, 0, 354, 0, 355, 0, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 0, 0, + 366, 0, 0, 367, 368, 369, 370, 0, 0, 0, + 371, 372, 0, 0, 0, 373, 0, 374, 375, 376, + 0, 377, 378, 379, 380, 0, 381, 382, 0, 0, + 0, 0, 0, 0, 0, 0, 383, 384, 385, 0, + 0, 386, 0, 387, 0, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 0, 0, 398, 399, 400, + 0, 401, 0, 402, 403, 404, 405, 406, 0, 407, + 408, 409, 0, 0, 410, 0, 0, 0, 411, 412, + 413, 414, 415, 0, 0, 416, 417, 418, 419, 420, + 0, 421, 422, 0, 423, 424, 425, 0, 0, 426, + 0, 427, 0, 428, 429, 0, 430, 431, 0, 432, + 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 0, 446, 447, 0, + 0, 0, 448, 449, 450, 451, 0, 0, 0, 452, + 0, 0, 0, 453, 0, 454, 455, 456, 457, 458, + 459, 0, 460, 461, 462, 463, 464, 465, 0, 0, + 0, 0, 0, 0, 466, 467, 0, 468, 0, 0, + 469, 0, 0, 0, 470, 471, 472, 0, 0, 0, + 473, 0, 0, 474, 475, 0, 476, 477, 478, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 0, 0, 488, 489, 490, 491, 0, 156, 492, + 493, 0, 494, 495, 496, 497, 0, 0, 0, 0, + 0, 498, 499, 500, 0, 0, 0, 501, 502, 503, + 504, 0, 505, 506, 0, 507, 508, 0, 509, 510, + 0, 0, 511, 0, 0, 512, 0, 513, 0, 514, + 515, 0, 0, 0, 0, 0, 0, 516, 0, 0, + 517, 0, 0, 0, 518, 519, 520, 521, 522, 523, + 524, 0, 0, 0, 0, 0, 0, 525, 526, 0, + 527, 528, 529, 0, 160, 530, 161, 162, 163, 164, + 165, 166, 0, 0, 167, 0, 0, 0, 168, 0, + 0, 169, 0, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 0, 179, 0, 0, 0, 180, 0, 0, + 0, 181, 0, 0, 182, 183, 184, 0, 185, 0, + 186, 187, 0, 0, 188, 0, 0, 189, 190, 0, + 191, 192, 0, 193, 194, 0, 195, 196, 197, 198, + 199, 200, 0, 201, 202, 203, 204, 205, 206, 207, + 0, 208, 209, 210, 211, 212, 213, 214, 215, 0, + 216, 217, 0, 218, 219, 220, 221, 222, 3304, 223, + 0, 0, 224, 0, 0, 225, 0, 226, 0, 0, + 227, 0, 228, 0, 0, 0, 229, 230, 231, 0, + 0, 232, 0, 0, 0, 0, 233, 234, 0, 0, + 0, 0, 235, 0, 236, 0, 0, 0, 0, 237, + 0, 238, 239, 240, 241, 242, 0, 0, 0, 0, + 243, 0, 0, 244, 245, 246, 0, 0, 0, 247, + 0, 248, 249, 0, 250, 251, 252, 0, 253, 254, + 0, 255, 256, 257, 258, 259, 260, 261, 0, 3305, + 262, 263, 264, 265, 0, 0, 266, 267, 0, 268, + 269, 270, 0, 0, 271, 0, 0, 0, 272, 273, + 0, 274, 0, 275, 0, 276, 277, 278, 279, 280, + 281, 282, 0, 283, 0, 0, 284, 285, 286, 0, + 287, 0, 0, 0, 288, 289, 0, 0, 0, 290, + 291, 292, 293, 294, 0, 0, 0, 295, 296, 297, + 0, 0, 298, 0, 0, 0, 0, 299, 300, 0, + 0, 0, 301, 0, 302, 303, 0, 304, 305, 0, + 0, 0, 306, 0, 0, 307, 308, 309, 0, 0, + 310, 0, 0, 311, 312, 0, 0, 0, 0, 0, + 313, 314, 0, 315, 0, 316, 0, 317, 318, 0, + 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 0, 334, 335, 336, 337, 0, 338, 339, 340, 341, - 0, 342, 343, 344, 0, 0, 0, 0, 345, 346, - 347, 348, 349, 350, 0, 0, 351, 352, 0, 353, - 0, 354, 0, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 365, 0, 0, 366, 367, - 368, 369, 0, 0, 0, 370, 371, 0, 0, 0, - 372, 0, 373, 374, 375, 0, 376, 377, 378, 379, - 0, 380, 381, 0, 0, 0, 0, 0, 0, 0, - 0, 382, 383, 384, 0, 0, 385, 0, 386, 0, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 0, 0, 397, 398, 399, 0, 400, 0, 401, 402, - 403, 404, 405, 0, 406, 407, 408, 0, 0, 409, - 0, 0, 0, 410, 411, 412, 413, 414, 0, 0, - 415, 416, 417, 418, 419, 0, 420, 421, 0, 422, - 423, 424, 0, 0, 425, 0, 426, 0, 427, 428, - 0, 429, 430, 0, 431, 0, 432, 0, 0, 433, + 334, 0, 335, 336, 337, 338, 0, 339, 340, 341, + 342, 0, 343, 344, 345, 0, 0, 0, 0, 346, + 347, 348, 349, 350, 351, 0, 0, 352, 353, 0, + 354, 0, 355, 0, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 0, 0, 366, 0, 0, 367, + 368, 369, 370, 0, 0, 0, 371, 372, 0, 0, + 0, 373, 0, 374, 375, 376, 0, 377, 378, 379, + 380, 0, 381, 382, 0, 0, 0, 0, 0, 0, + 0, 0, 383, 384, 385, 0, 0, 386, 0, 387, + 0, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 0, 0, 398, 399, 400, 0, 401, 0, 402, + 403, 404, 405, 406, 0, 407, 408, 409, 0, 0, + 410, 0, 0, 0, 411, 412, 413, 414, 415, 0, + 0, 416, 417, 418, 419, 420, 0, 421, 422, 0, + 423, 424, 425, 0, 0, 426, 0, 427, 0, 428, + 429, 0, 430, 431, 0, 432, 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 0, 445, 446, 0, 0, 0, 447, 448, 449, - 450, 0, 0, 0, 451, 0, 0, 0, 452, 0, - 453, 454, 455, 456, 457, 458, 0, 459, 460, 461, - 462, 463, 464, 0, 0, 0, 595, 0, 0, 465, - 466, 0, 467, 0, 0, 468, 0, 0, 0, 469, - 470, 471, 0, 0, 0, 472, 0, 0, 473, 474, - 0, 475, 476, 477, 478, 479, 480, 0, 0, 481, - 482, 483, 484, 0, 485, 486, 0, 0, 487, 488, - 489, 490, 0, 0, 491, 492, 0, 493, 494, 495, - 496, 0, 0, 0, 0, 0, 497, 498, 499, 0, - 0, 0, 500, 501, 502, 503, 0, 504, 505, 0, - 506, 507, 0, 508, 509, 0, 0, 510, 0, 0, - 511, 0, 512, 0, 513, 514, 0, 0, 0, 0, - 0, 0, 515, 0, 0, 516, 0, 0, 0, 517, - 518, 519, 520, 521, 522, 523, 0, 0, 0, 0, - 0, 0, 524, 525, 0, 526, 527, 528, 0, 159, - 529, 160, 161, 162, 163, 164, 165, 0, 0, 166, - 0, 0, 0, 167, 0, 0, 168, 0, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 0, 178, 0, - 0, 0, 179, 0, 0, 0, 180, 0, 0, 181, - 182, 183, 0, 184, 0, 185, 186, 0, 0, 187, - 0, 0, 188, 189, 0, 190, 191, 0, 192, 193, - 0, 194, 195, 196, 197, 198, 199, 0, 200, 201, - 202, 203, 204, 205, 206, 0, 207, 208, 209, 210, - 211, 212, 213, 214, 0, 215, 216, 0, 217, 218, - 219, 220, 221, 0, 222, 0, 0, 223, 0, 0, - 224, 0, 225, 0, 0, 226, 0, 227, 0, 0, - 0, 228, 229, 230, 0, 0, 231, 0, 0, 0, - 0, 232, 233, 0, 0, 0, 0, 234, 0, 235, - 0, 0, 0, 0, 236, 0, 237, 238, 239, 240, - 241, 0, 0, 0, 0, 242, 0, 0, 243, 244, - 245, 0, 0, 0, 246, 0, 247, 248, 0, 249, - 250, 251, 0, 252, 253, 0, 254, 255, 256, 257, - 258, 259, 260, 0, 0, 261, 262, 263, 264, 0, - 0, 265, 266, 0, 267, 268, 269, 0, 0, 270, - 0, 0, 0, 271, 272, 1181, 273, 0, 274, 0, - 275, 276, 277, 278, 279, 280, 281, 0, 282, 0, - 0, 283, 284, 285, 0, 286, 0, 0, 0, 287, - 288, 0, 0, 0, 289, 290, 291, 292, 293, 0, - 0, 0, 294, 295, 296, 0, 0, 297, 0, 0, - 0, 0, 298, 299, 0, 0, 0, 300, 0, 301, - 302, 0, 303, 304, 0, 0, 0, 305, 0, 0, - 306, 307, 308, 0, 0, 309, 0, 0, 310, 311, - 0, 0, 0, 0, 0, 312, 313, 0, 314, 0, - 315, 0, 316, 317, 0, 0, 0, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 0, 334, 335, 336, - 337, 0, 338, 339, 340, 341, 0, 342, 343, 344, - 0, 0, 0, 0, 345, 346, 347, 348, 349, 350, - 0, 0, 351, 352, 0, 353, 0, 354, 0, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 365, 0, 0, 366, 367, 368, 369, 0, 0, - 0, 370, 371, 0, 0, 0, 372, 0, 373, 374, - 375, 0, 376, 377, 378, 379, 0, 380, 381, 0, - 0, 0, 0, 0, 0, 0, 0, 382, 383, 384, - 0, 0, 385, 0, 386, 0, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 0, 0, 397, 398, - 399, 0, 400, 0, 401, 402, 403, 404, 405, 0, - 406, 407, 408, 0, 0, 409, 0, 0, 0, 410, - 411, 412, 413, 414, 0, 0, 415, 416, 417, 418, - 419, 0, 420, 421, 0, 422, 423, 424, 0, 0, - 425, 0, 426, 0, 427, 428, 0, 429, 430, 0, - 431, 0, 432, 0, 0, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 0, 445, 446, - 0, 0, 0, 447, 448, 449, 450, 0, 0, 0, - 451, 0, 0, 0, 452, 0, 453, 454, 455, 456, - 457, 458, 0, 459, 460, 461, 462, 463, 464, 0, - 0, 0, 0, 0, 0, 465, 466, 0, 467, 0, - 0, 468, 0, 0, 0, 469, 470, 471, 0, 0, - 0, 472, 0, 0, 473, 474, 0, 475, 476, 477, - 478, 479, 480, 0, 0, 481, 482, 483, 484, 0, - 485, 486, 0, 0, 487, 488, 489, 490, 0, 0, - 491, 492, 0, 493, 494, 495, 496, 0, 0, 0, - 0, 0, 497, 498, 499, 0, 0, 0, 500, 501, - 502, 503, 0, 504, 505, 0, 506, 507, 0, 508, - 509, 0, 0, 510, 0, 0, 511, 0, 512, 0, - 513, 514, 0, 0, 0, 0, 0, 0, 515, 0, - 0, 516, 0, 0, 0, 517, 518, 519, 520, 521, - 522, 523, 0, 0, 0, 0, 0, 0, 524, 525, - 0, 526, 527, 528, 0, 159, 529, 160, 161, 162, - 163, 164, 165, 0, 0, 166, 0, 0, 0, 167, - 0, 0, 168, 0, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 0, 178, 0, 0, 0, 179, 0, - 0, 0, 180, 0, 0, 181, 182, 183, 0, 184, - 0, 185, 186, 0, 0, 187, 0, 0, 188, 189, - 0, 190, 191, 0, 192, 193, 0, 194, 195, 196, - 197, 198, 199, 0, 200, 201, 202, 203, 204, 205, - 206, 0, 207, 208, 209, 210, 211, 212, 213, 214, - 0, 215, 216, 0, 217, 218, 219, 220, 221, 0, - 222, 0, 0, 223, 0, 0, 224, 0, 225, 0, - 0, 226, 0, 227, 0, 0, 0, 228, 229, 230, - 0, 0, 231, 0, 0, 0, 0, 232, 233, 0, - 0, 0, 1519, 234, 0, 235, 0, 0, 0, 0, - 236, 0, 237, 238, 239, 240, 241, 0, 0, 0, - 0, 242, 0, 0, 243, 244, 245, 0, 0, 0, - 246, 0, 247, 248, 0, 249, 250, 251, 0, 252, - 253, 0, 254, 255, 256, 257, 258, 259, 260, 0, - 0, 261, 262, 263, 264, 0, 0, 265, 266, 0, - 267, 268, 269, 0, 0, 270, 0, 0, 0, 271, - 272, 0, 273, 0, 274, 0, 275, 276, 277, 278, - 279, 280, 281, 0, 282, 0, 0, 283, 284, 285, - 0, 286, 0, 0, 0, 287, 288, 0, 0, 0, - 289, 290, 291, 292, 293, 0, 0, 0, 294, 295, - 296, 0, 0, 297, 0, 0, 0, 0, 298, 299, - 0, 0, 0, 300, 0, 301, 302, 0, 303, 304, - 0, 0, 0, 305, 0, 0, 306, 307, 308, 0, - 0, 309, 0, 0, 310, 311, 0, 0, 0, 0, - 0, 312, 313, 0, 314, 0, 315, 0, 316, 317, - 0, 0, 0, 0, 0, 0, 318, 319, 320, 321, + 444, 445, 0, 446, 447, 0, 0, 0, 448, 449, + 450, 451, 0, 0, 0, 452, 0, 0, 0, 453, + 0, 454, 455, 456, 457, 458, 459, 0, 460, 461, + 462, 463, 464, 465, 0, 0, 0, 0, 0, 0, + 466, 467, 0, 468, 0, 0, 469, 0, 0, 0, + 470, 471, 472, 0, 0, 0, 473, 0, 0, 474, + 475, 0, 476, 477, 478, 479, 480, 481, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 0, 0, 488, + 489, 490, 491, 0, 0, 492, 493, 0, 494, 495, + 496, 497, 0, 0, 0, 0, 0, 498, 499, 500, + 0, 0, 0, 501, 502, 503, 504, 0, 505, 506, + 0, 507, 508, 0, 509, 510, 0, 0, 511, 0, + 0, 512, 0, 513, 0, 514, 515, 0, 0, 0, + 0, 0, 0, 516, 0, 0, 517, 0, 0, 0, + 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, + 0, 0, 0, 525, 526, 0, 527, 528, 529, 0, + 160, 530, 161, 162, 163, 164, 165, 166, 0, 0, + 167, 0, 0, 0, 168, 0, 0, 169, 0, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 0, 179, + 0, 0, 0, 180, 0, 0, 0, 181, 0, 0, + 182, 183, 184, 0, 185, 0, 186, 187, 0, 0, + 188, 0, 0, 189, 190, 0, 191, 192, 0, 193, + 194, 0, 195, 196, 197, 198, 199, 200, 0, 201, + 202, 203, 204, 205, 206, 207, 0, 208, 209, 210, + 211, 212, 213, 214, 215, 0, 216, 217, 0, 218, + 219, 220, 221, 222, 0, 223, 0, 0, 224, 0, + 0, 225, 0, 226, 0, 0, 227, 0, 228, 0, + 0, 0, 229, 230, 231, 0, 0, 232, 0, 0, + 0, 0, 233, 234, 0, 0, 0, 0, 235, 0, + 236, 0, 0, 0, 0, 237, 0, 238, 239, 240, + 241, 242, 0, 0, 0, 0, 243, 0, 0, 244, + 245, 246, 0, 0, 0, 247, 0, 248, 249, 0, + 250, 251, 252, 0, 253, 254, 0, 255, 256, 257, + 258, 259, 260, 261, 0, 0, 262, 263, 264, 265, + 0, 0, 266, 267, 0, 268, 269, 270, 0, 0, + 271, 0, 0, 0, 272, 273, 0, 274, 0, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 0, 283, + 0, 0, 284, 285, 286, 0, 287, 0, 0, 0, + 288, 289, 0, 0, 0, 290, 291, 292, 293, 294, + 0, 0, 0, 295, 296, 297, 0, 0, 298, 0, + 0, 0, 0, 299, 300, 0, 0, 0, 301, 0, + 302, 303, 0, 304, 305, 0, 0, 0, 306, 0, + 0, 307, 308, 309, 0, 0, 310, 0, 0, 311, + 312, 0, 0, 0, 0, 0, 313, 314, 0, 315, + 0, 316, 0, 317, 318, 0, 0, 0, 0, 0, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 0, 335, 336, + 337, 338, 0, 339, 340, 341, 342, 0, 343, 344, + 345, 0, 0, 0, 0, 346, 347, 348, 349, 350, + 351, 0, 0, 352, 353, 0, 354, 0, 355, 0, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 0, 0, 366, 0, 0, 367, 368, 369, 370, 0, + 0, 0, 371, 372, 0, 0, 0, 373, 0, 374, + 375, 376, 0, 377, 378, 379, 380, 0, 381, 382, + 0, 0, 0, 0, 0, 0, 0, 0, 383, 384, + 385, 0, 0, 386, 0, 387, 0, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 0, 0, 398, + 399, 400, 0, 401, 0, 402, 403, 404, 405, 406, + 0, 407, 408, 409, 0, 0, 410, 0, 0, 0, + 411, 412, 413, 414, 415, 0, 0, 416, 417, 418, + 419, 420, 0, 421, 422, 0, 423, 424, 425, 0, + 0, 426, 0, 427, 0, 428, 429, 0, 430, 431, + 0, 432, 0, 433, 0, 0, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 0, 446, + 447, 0, 0, 0, 448, 449, 450, 451, 0, 0, + 0, 452, 0, 0, 0, 453, 0, 454, 455, 456, + 457, 458, 459, 0, 460, 461, 462, 463, 464, 465, + 0, 0, 0, 596, 0, 0, 466, 467, 0, 468, + 0, 0, 469, 0, 0, 0, 470, 471, 472, 0, + 0, 0, 473, 0, 0, 474, 475, 0, 476, 477, + 478, 479, 480, 481, 0, 0, 482, 483, 484, 485, + 0, 486, 487, 0, 0, 488, 489, 490, 491, 0, + 0, 492, 493, 0, 494, 495, 496, 497, 0, 0, + 0, 0, 0, 498, 499, 500, 0, 0, 0, 501, + 502, 503, 504, 0, 505, 506, 0, 507, 508, 0, + 509, 510, 0, 0, 511, 0, 0, 512, 0, 513, + 0, 514, 515, 0, 0, 0, 0, 0, 0, 516, + 0, 0, 517, 0, 0, 0, 518, 519, 520, 521, + 522, 523, 524, 0, 0, 0, 0, 0, 0, 525, + 526, 0, 527, 528, 529, 0, 160, 530, 161, 162, + 163, 164, 165, 166, 0, 0, 167, 0, 0, 0, + 168, 0, 0, 169, 0, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 0, 179, 0, 0, 0, 180, + 0, 0, 0, 181, 0, 0, 182, 183, 184, 0, + 185, 0, 186, 187, 0, 0, 188, 0, 0, 189, + 190, 0, 191, 192, 0, 193, 194, 0, 195, 196, + 197, 198, 199, 200, 0, 201, 202, 203, 204, 205, + 206, 207, 0, 208, 209, 210, 211, 212, 213, 214, + 215, 0, 216, 217, 0, 218, 219, 220, 221, 222, + 0, 223, 0, 0, 224, 0, 0, 225, 0, 226, + 0, 0, 227, 0, 228, 0, 0, 0, 229, 230, + 231, 0, 0, 232, 0, 0, 0, 0, 233, 234, + 0, 0, 0, 0, 235, 0, 236, 0, 0, 0, + 0, 237, 0, 238, 239, 240, 241, 242, 0, 0, + 0, 0, 243, 0, 0, 244, 245, 246, 0, 0, + 0, 247, 0, 248, 249, 0, 250, 251, 252, 0, + 253, 254, 0, 255, 256, 257, 258, 259, 260, 261, + 0, 0, 262, 263, 264, 265, 0, 0, 266, 267, + 0, 268, 269, 270, 0, 0, 271, 0, 0, 0, + 272, 273, 1184, 274, 0, 275, 0, 276, 277, 278, + 279, 280, 281, 282, 0, 283, 0, 0, 284, 285, + 286, 0, 287, 0, 0, 0, 288, 289, 0, 0, + 0, 290, 291, 292, 293, 294, 0, 0, 0, 295, + 296, 297, 0, 0, 298, 0, 0, 0, 0, 299, + 300, 0, 0, 0, 301, 0, 302, 303, 0, 304, + 305, 0, 0, 0, 306, 0, 0, 307, 308, 309, + 0, 0, 310, 0, 0, 311, 312, 0, 0, 0, + 0, 0, 313, 314, 0, 315, 0, 316, 0, 317, + 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 0, 334, 335, 336, 337, 0, 338, 339, - 340, 341, 0, 342, 343, 344, 0, 0, 0, 0, - 345, 346, 347, 348, 349, 350, 0, 0, 351, 352, - 0, 353, 0, 354, 0, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 365, 0, 0, - 366, 367, 368, 369, 0, 0, 0, 370, 371, 0, - 0, 0, 372, 0, 373, 374, 375, 0, 376, 377, - 378, 379, 0, 380, 381, 0, 0, 0, 0, 0, - 0, 0, 0, 382, 383, 384, 0, 0, 385, 0, - 386, 0, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 0, 0, 397, 398, 399, 0, 400, 0, - 401, 402, 403, 404, 405, 0, 406, 407, 408, 0, - 0, 409, 0, 0, 0, 410, 411, 412, 413, 414, - 0, 0, 415, 416, 417, 418, 419, 0, 420, 421, - 0, 422, 423, 424, 0, 0, 425, 0, 426, 0, - 427, 428, 0, 429, 430, 0, 431, 0, 432, 0, - 0, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 0, 445, 446, 0, 0, 0, 447, - 448, 449, 450, 0, 0, 0, 451, 0, 0, 0, - 452, 0, 453, 454, 455, 456, 457, 458, 0, 459, - 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, - 0, 465, 466, 0, 467, 0, 0, 468, 0, 0, - 0, 469, 470, 471, 0, 0, 0, 472, 0, 0, - 473, 474, 0, 475, 476, 477, 478, 479, 480, 0, - 0, 481, 482, 483, 484, 0, 485, 486, 0, 0, - 487, 488, 489, 490, 0, 0, 491, 492, 0, 493, - 494, 495, 496, 0, 0, 0, 0, 0, 497, 498, - 499, 0, 0, 0, 500, 501, 502, 503, 0, 504, - 505, 0, 506, 507, 0, 508, 509, 0, 0, 510, - 0, 0, 511, 0, 512, 0, 513, 514, 0, 0, - 0, 0, 0, 0, 515, 0, 0, 516, 0, 0, - 0, 517, 518, 519, 520, 521, 522, 523, 0, 0, - 0, 0, 0, 0, 524, 525, 0, 526, 527, 528, - 0, 159, 529, 160, 161, 162, 163, 164, 165, 0, - 0, 166, 0, 0, 0, 167, 0, 0, 168, 0, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 0, - 178, 0, 0, 0, 179, 0, 0, 0, 180, 0, - 0, 181, 182, 183, 0, 184, 0, 185, 186, 0, - 0, 187, 0, 0, 188, 189, 0, 190, 191, 0, - 192, 193, 0, 194, 195, 196, 197, 198, 199, 0, - 200, 201, 202, 203, 204, 205, 206, 0, 207, 208, - 209, 210, 211, 212, 213, 214, 0, 215, 216, 0, - 217, 218, 219, 220, 221, 0, 222, 0, 0, 223, - 0, 0, 224, 0, 225, 0, 0, 226, 0, 227, - 0, 0, 0, 228, 229, 230, 0, 0, 231, 0, - 0, 0, 0, 232, 233, 0, 0, 0, 1519, 234, - 0, 235, 0, 0, 0, 0, 236, 0, 237, 238, - 239, 240, 241, 0, 0, 0, 0, 242, 0, 0, - 243, 244, 245, 0, 0, 0, 246, 0, 247, 248, - 0, 249, 250, 251, 0, 252, 253, 0, 254, 255, - 256, 257, 258, 259, 260, 0, 0, 261, 262, 263, - 264, 0, 0, 265, 266, 0, 267, 268, 269, 0, - 0, 270, 0, 0, 0, 271, 272, 0, 273, 0, - 274, 0, 275, 276, 277, 278, 279, 280, 281, 0, - 282, 0, 0, 283, 284, 285, 0, 286, 0, 0, - 0, 287, 288, 0, 0, 0, 289, 290, 291, 292, - 293, 0, 0, 0, 294, 295, 296, 0, 0, 297, - 0, 0, 0, 0, 298, 299, 0, 0, 0, 300, - 0, 301, 302, 0, 303, 304, 0, 0, 0, 305, - 0, 0, 306, 307, 308, 0, 0, 309, 0, 0, - 310, 311, 0, 0, 0, 0, 0, 312, 313, 0, - 314, 0, 315, 0, 316, 317, 0, 0, 0, 0, - 0, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, - 335, 336, 337, 0, 338, 339, 340, 341, 0, 342, - 343, 344, 0, 0, 0, 0, 345, 346, 347, 348, - 349, 350, 0, 0, 351, 352, 0, 353, 0, 354, - 0, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 365, 0, 0, 366, 367, 368, 369, - 0, 0, 0, 370, 371, 0, 0, 0, 372, 0, - 373, 374, 375, 0, 376, 377, 378, 379, 0, 380, - 381, 0, 0, 0, 0, 0, 0, 0, 0, 382, - 383, 384, 0, 0, 385, 0, 386, 0, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 0, 0, - 397, 398, 399, 0, 400, 0, 401, 402, 403, 404, - 405, 0, 406, 407, 408, 0, 0, 409, 0, 0, - 0, 410, 411, 412, 413, 414, 0, 0, 415, 416, - 417, 418, 419, 0, 420, 421, 0, 422, 423, 424, - 0, 0, 425, 0, 426, 0, 427, 428, 0, 429, - 430, 0, 431, 0, 432, 0, 0, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 0, - 445, 446, 0, 0, 0, 447, 448, 449, 450, 0, - 0, 0, 451, 0, 0, 0, 452, 0, 453, 454, - 455, 456, 457, 458, 0, 459, 460, 461, 462, 463, - 464, 0, 0, 0, 0, 0, 0, 465, 466, 0, - 467, 0, 0, 468, 0, 0, 0, 469, 470, 471, - 0, 0, 0, 472, 0, 0, 473, 474, 0, 475, - 476, 477, 478, 479, 480, 0, 0, 481, 482, 483, - 484, 0, 485, 486, 0, 0, 487, 488, 489, 490, - 0, 0, 491, 492, 0, 493, 494, 495, 496, 0, - 0, 0, 0, 0, 2135, 498, 499, 0, 0, 0, - 500, 501, 502, 503, 0, 504, 505, 0, 506, 507, - 0, 508, 509, 0, 0, 510, 0, 0, 511, 0, - 512, 0, 513, 514, 0, 0, 0, 0, 0, 0, - 515, 0, 0, 516, 0, 0, 0, 517, 518, 519, - 520, 521, 522, 523, 0, 0, 0, 0, 0, 0, - 524, 525, 0, 526, 527, 528, 0, 159, 529, 160, - 161, 162, 163, 164, 165, 0, 0, 166, 0, 0, - 0, 167, 0, 0, 168, 0, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 0, 178, 0, 0, 0, - 179, 0, 0, 0, 180, 0, 0, 181, 182, 183, - 0, 184, 0, 185, 186, 0, 0, 187, 0, 0, - 188, 189, 0, 190, 191, 0, 192, 193, 0, 194, - 195, 196, 197, 198, 199, 0, 200, 201, 202, 203, - 204, 205, 206, 0, 207, 208, 209, 210, 211, 212, - 213, 214, 0, 215, 216, 0, 217, 218, 219, 220, - 221, 0, 222, 0, 0, 223, 0, 0, 224, 0, - 225, 0, 0, 226, 0, 227, 0, 0, 0, 228, - 229, 230, 0, 0, 231, 0, 0, 0, 0, 232, - 233, 0, 0, 0, 2273, 234, 0, 235, 0, 0, - 0, 0, 236, 0, 237, 238, 239, 240, 241, 0, - 0, 0, 0, 242, 0, 0, 243, 244, 245, 0, - 0, 0, 246, 0, 247, 248, 0, 249, 250, 251, - 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, - 260, 0, 0, 261, 262, 263, 264, 0, 0, 265, - 266, 0, 267, 268, 269, 0, 0, 270, 0, 0, - 0, 271, 272, 0, 273, 0, 274, 0, 275, 276, - 277, 278, 279, 280, 281, 0, 282, 0, 0, 283, - 284, 285, 0, 286, 0, 0, 0, 287, 288, 0, - 0, 0, 289, 290, 291, 292, 293, 0, 0, 0, - 294, 295, 296, 0, 0, 297, 0, 0, 0, 0, - 298, 299, 0, 0, 0, 300, 0, 301, 302, 0, - 303, 304, 0, 0, 0, 305, 0, 0, 306, 307, - 308, 0, 0, 309, 0, 0, 310, 311, 0, 0, - 0, 0, 0, 312, 313, 0, 314, 0, 315, 0, - 316, 317, 0, 0, 0, 0, 0, 0, 318, 319, + 332, 333, 334, 0, 335, 336, 337, 338, 0, 339, + 340, 341, 342, 0, 343, 344, 345, 0, 0, 0, + 0, 346, 347, 348, 349, 350, 351, 0, 0, 352, + 353, 0, 354, 0, 355, 0, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 0, 0, 366, 0, + 0, 367, 368, 369, 370, 0, 0, 0, 371, 372, + 0, 0, 0, 373, 0, 374, 375, 376, 0, 377, + 378, 379, 380, 0, 381, 382, 0, 0, 0, 0, + 0, 0, 0, 0, 383, 384, 385, 0, 0, 386, + 0, 387, 0, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 0, 0, 398, 399, 400, 0, 401, + 0, 402, 403, 404, 405, 406, 0, 407, 408, 409, + 0, 0, 410, 0, 0, 0, 411, 412, 413, 414, + 415, 0, 0, 416, 417, 418, 419, 420, 0, 421, + 422, 0, 423, 424, 425, 0, 0, 426, 0, 427, + 0, 428, 429, 0, 430, 431, 0, 432, 0, 433, + 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 0, 446, 447, 0, 0, 0, + 448, 449, 450, 451, 0, 0, 0, 452, 0, 0, + 0, 453, 0, 454, 455, 456, 457, 458, 459, 0, + 460, 461, 462, 463, 464, 465, 0, 0, 0, 0, + 0, 0, 466, 467, 0, 468, 0, 0, 469, 0, + 0, 0, 470, 471, 472, 0, 0, 0, 473, 0, + 0, 474, 475, 0, 476, 477, 478, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 0, + 0, 488, 489, 490, 491, 0, 0, 492, 493, 0, + 494, 495, 496, 497, 0, 0, 0, 0, 0, 498, + 499, 500, 0, 0, 0, 501, 502, 503, 504, 0, + 505, 506, 0, 507, 508, 0, 509, 510, 0, 0, + 511, 0, 0, 512, 0, 513, 0, 514, 515, 0, + 0, 0, 0, 0, 0, 516, 0, 0, 517, 0, + 0, 0, 518, 519, 520, 521, 522, 523, 524, 0, + 0, 0, 0, 0, 0, 525, 526, 0, 527, 528, + 529, 0, 160, 530, 161, 162, 163, 164, 165, 166, + 0, 0, 167, 0, 0, 0, 168, 0, 0, 169, + 0, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 0, 179, 0, 0, 0, 180, 0, 0, 0, 181, + 0, 0, 182, 183, 184, 0, 185, 0, 186, 187, + 0, 0, 188, 0, 0, 189, 190, 0, 191, 192, + 0, 193, 194, 0, 195, 196, 197, 198, 199, 200, + 0, 201, 202, 203, 204, 205, 206, 207, 0, 208, + 209, 210, 211, 212, 213, 214, 215, 0, 216, 217, + 0, 218, 219, 220, 221, 222, 0, 223, 0, 0, + 224, 0, 0, 225, 0, 226, 0, 0, 227, 0, + 228, 0, 0, 0, 229, 230, 231, 0, 0, 232, + 0, 0, 0, 0, 233, 234, 0, 0, 0, 1522, + 235, 0, 236, 0, 0, 0, 0, 237, 0, 238, + 239, 240, 241, 242, 0, 0, 0, 0, 243, 0, + 0, 244, 245, 246, 0, 0, 0, 247, 0, 248, + 249, 0, 250, 251, 252, 0, 253, 254, 0, 255, + 256, 257, 258, 259, 260, 261, 0, 0, 262, 263, + 264, 265, 0, 0, 266, 267, 0, 268, 269, 270, + 0, 0, 271, 0, 0, 0, 272, 273, 0, 274, + 0, 275, 0, 276, 277, 278, 279, 280, 281, 282, + 0, 283, 0, 0, 284, 285, 286, 0, 287, 0, + 0, 0, 288, 289, 0, 0, 0, 290, 291, 292, + 293, 294, 0, 0, 0, 295, 296, 297, 0, 0, + 298, 0, 0, 0, 0, 299, 300, 0, 0, 0, + 301, 0, 302, 303, 0, 304, 305, 0, 0, 0, + 306, 0, 0, 307, 308, 309, 0, 0, 310, 0, + 0, 311, 312, 0, 0, 0, 0, 0, 313, 314, + 0, 315, 0, 316, 0, 317, 318, 0, 0, 0, + 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 334, 0, + 335, 336, 337, 338, 0, 339, 340, 341, 342, 0, + 343, 344, 345, 0, 0, 0, 0, 346, 347, 348, + 349, 350, 351, 0, 0, 352, 353, 0, 354, 0, + 355, 0, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 0, 0, 366, 0, 0, 367, 368, 369, + 370, 0, 0, 0, 371, 372, 0, 0, 0, 373, + 0, 374, 375, 376, 0, 377, 378, 379, 380, 0, + 381, 382, 0, 0, 0, 0, 0, 0, 0, 0, + 383, 384, 385, 0, 0, 386, 0, 387, 0, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, + 0, 398, 399, 400, 0, 401, 0, 402, 403, 404, + 405, 406, 0, 407, 408, 409, 0, 0, 410, 0, + 0, 0, 411, 412, 413, 414, 415, 0, 0, 416, + 417, 418, 419, 420, 0, 421, 422, 0, 423, 424, + 425, 0, 0, 426, 0, 427, 0, 428, 429, 0, + 430, 431, 0, 432, 0, 433, 0, 0, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 0, 446, 447, 0, 0, 0, 448, 449, 450, 451, + 0, 0, 0, 452, 0, 0, 0, 453, 0, 454, + 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, + 464, 465, 0, 0, 0, 0, 0, 0, 466, 467, + 0, 468, 0, 0, 469, 0, 0, 0, 470, 471, + 472, 0, 0, 0, 473, 0, 0, 474, 475, 0, + 476, 477, 478, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 0, 0, 488, 489, 490, + 491, 0, 0, 492, 493, 0, 494, 495, 496, 497, + 0, 0, 0, 0, 0, 498, 499, 500, 0, 0, + 0, 501, 502, 503, 504, 0, 505, 506, 0, 507, + 508, 0, 509, 510, 0, 0, 511, 0, 0, 512, + 0, 513, 0, 514, 515, 0, 0, 0, 0, 0, + 0, 516, 0, 0, 517, 0, 0, 0, 518, 519, + 520, 521, 522, 523, 524, 0, 0, 0, 0, 0, + 0, 525, 526, 0, 527, 528, 529, 0, 160, 530, + 161, 162, 163, 164, 165, 166, 0, 0, 167, 0, + 0, 0, 168, 0, 0, 169, 0, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 0, 179, 0, 0, + 0, 180, 0, 0, 0, 181, 0, 0, 182, 183, + 184, 0, 185, 0, 186, 187, 0, 0, 188, 0, + 0, 189, 190, 0, 191, 192, 0, 193, 194, 0, + 195, 196, 197, 198, 199, 200, 0, 201, 202, 203, + 204, 205, 206, 207, 0, 208, 209, 210, 211, 212, + 213, 214, 215, 0, 216, 217, 0, 218, 219, 220, + 221, 222, 0, 223, 0, 0, 224, 0, 0, 225, + 0, 226, 0, 0, 227, 0, 228, 0, 0, 0, + 229, 230, 231, 0, 0, 232, 0, 0, 0, 0, + 233, 234, 0, 0, 0, 1522, 235, 0, 236, 0, + 0, 0, 0, 237, 0, 238, 239, 240, 241, 242, + 0, 0, 0, 0, 243, 0, 0, 244, 245, 246, + 0, 0, 0, 247, 0, 248, 249, 0, 250, 251, + 252, 0, 253, 254, 0, 255, 256, 257, 258, 259, + 260, 261, 0, 0, 262, 263, 264, 265, 0, 0, + 266, 267, 0, 268, 269, 270, 0, 0, 271, 0, + 0, 0, 272, 273, 0, 274, 0, 275, 0, 276, + 277, 278, 279, 280, 281, 282, 0, 283, 0, 0, + 284, 285, 286, 0, 287, 0, 0, 0, 288, 289, + 0, 0, 0, 290, 291, 292, 293, 294, 0, 0, + 0, 295, 296, 297, 0, 0, 298, 0, 0, 0, + 0, 299, 300, 0, 0, 0, 301, 0, 302, 303, + 0, 304, 305, 0, 0, 0, 306, 0, 0, 307, + 308, 309, 0, 0, 310, 0, 0, 311, 312, 0, + 0, 0, 0, 0, 313, 314, 0, 315, 0, 316, + 0, 317, 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 0, 334, 335, 336, 337, 0, - 338, 339, 340, 341, 0, 342, 343, 344, 0, 0, - 0, 0, 345, 346, 347, 348, 349, 350, 0, 0, - 351, 352, 0, 353, 0, 354, 0, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 365, - 0, 0, 366, 367, 368, 369, 0, 0, 0, 370, - 371, 0, 0, 0, 372, 0, 373, 374, 375, 0, - 376, 377, 378, 379, 0, 380, 381, 0, 0, 0, - 0, 0, 0, 0, 0, 382, 383, 384, 0, 0, - 385, 0, 386, 0, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 0, 0, 397, 398, 399, 0, - 400, 0, 401, 402, 403, 404, 405, 0, 406, 407, - 408, 0, 0, 409, 0, 0, 0, 410, 411, 412, - 413, 414, 0, 0, 415, 416, 417, 418, 419, 0, - 420, 421, 0, 422, 423, 424, 0, 0, 425, 0, - 426, 0, 427, 428, 0, 429, 430, 0, 431, 0, - 432, 0, 0, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 0, 445, 446, 0, 0, - 0, 447, 448, 449, 450, 0, 0, 0, 451, 0, - 0, 0, 452, 0, 453, 454, 455, 456, 457, 458, - 0, 459, 460, 461, 462, 463, 464, 0, 0, 0, - 0, 0, 0, 465, 466, 0, 467, 0, 0, 468, - 0, 0, 0, 469, 470, 471, 0, 0, 0, 472, - 0, 0, 473, 474, 0, 475, 476, 477, 478, 479, - 480, 0, 0, 481, 482, 483, 484, 0, 485, 486, - 0, 0, 487, 488, 489, 490, 0, 0, 491, 492, - 0, 493, 494, 495, 496, 0, 0, 0, 0, 0, - 497, 498, 499, 0, 0, 0, 500, 501, 502, 503, - 0, 504, 505, 0, 506, 507, 0, 508, 509, 0, - 0, 510, 0, 0, 511, 0, 512, 0, 513, 514, - 0, 0, 0, 0, 0, 0, 515, 0, 0, 516, - 0, 0, 0, 517, 518, 519, 520, 521, 522, 523, - 0, 0, 0, 0, 0, 0, 524, 525, 0, 526, - 527, 528, 0, 159, 529, 160, 161, 162, 163, 164, - 165, 0, 0, 166, 0, 0, 0, 167, 0, 0, - 168, 0, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 0, 178, 0, 0, 0, 179, 0, 0, 0, - 180, 0, 0, 181, 182, 183, 0, 184, 0, 185, - 186, 0, 0, 187, 0, 0, 188, 189, 0, 190, - 191, 0, 192, 193, 0, 194, 195, 196, 197, 198, - 199, 0, 200, 201, 202, 203, 204, 205, 206, 0, - 207, 208, 209, 210, 211, 212, 213, 214, 0, 215, - 216, 0, 217, 218, 219, 220, 221, 0, 222, 0, - 0, 223, 0, 0, 224, 0, 225, 0, 0, 226, - 0, 227, 0, 0, 0, 228, 229, 230, 0, 0, - 231, 0, 0, 0, 0, 232, 233, 0, 0, 0, - 0, 234, 0, 235, 0, 0, 0, 0, 236, 0, - 237, 238, 239, 240, 241, 0, 0, 0, 0, 242, - 0, 0, 243, 244, 245, 0, 0, 0, 246, 0, - 247, 248, 0, 249, 250, 251, 0, 252, 253, 0, - 254, 255, 256, 257, 258, 259, 260, 0, 0, 261, - 262, 263, 264, 0, 0, 265, 266, 0, 267, 268, - 269, 0, 0, 270, 0, 0, 0, 271, 272, 0, - 273, 0, 274, 0, 275, 276, 277, 278, 279, 280, - 281, 0, 282, 0, 0, 283, 284, 285, 0, 286, - 0, 0, 0, 287, 288, 0, 0, 0, 289, 290, - 291, 292, 293, 0, 0, 0, 294, 295, 296, 0, - 0, 297, 0, 0, 0, 0, 298, 299, 0, 0, - 0, 300, 0, 301, 302, 0, 303, 304, 0, 0, - 0, 305, 0, 0, 306, 307, 308, 0, 0, 309, - 0, 0, 310, 311, 0, 0, 0, 0, 0, 312, - 313, 0, 314, 0, 315, 0, 316, 317, 0, 0, - 0, 0, 0, 0, 318, 319, 320, 321, 322, 323, + 330, 331, 332, 333, 334, 0, 335, 336, 337, 338, + 0, 339, 340, 341, 342, 0, 343, 344, 345, 0, + 0, 0, 0, 346, 347, 348, 349, 350, 351, 0, + 0, 352, 353, 0, 354, 0, 355, 0, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 0, 0, + 366, 0, 0, 367, 368, 369, 370, 0, 0, 0, + 371, 372, 0, 0, 0, 373, 0, 374, 375, 376, + 0, 377, 378, 379, 380, 0, 381, 382, 0, 0, + 0, 0, 0, 0, 0, 0, 383, 384, 385, 0, + 0, 386, 0, 387, 0, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 0, 0, 398, 399, 400, + 0, 401, 0, 402, 403, 404, 405, 406, 0, 407, + 408, 409, 0, 0, 410, 0, 0, 0, 411, 412, + 413, 414, 415, 0, 0, 416, 417, 418, 419, 420, + 0, 421, 422, 0, 423, 424, 425, 0, 0, 426, + 0, 427, 0, 428, 429, 0, 430, 431, 0, 432, + 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 0, 446, 447, 0, + 0, 0, 448, 449, 450, 451, 0, 0, 0, 452, + 0, 0, 0, 453, 0, 454, 455, 456, 457, 458, + 459, 0, 460, 461, 462, 463, 464, 465, 0, 0, + 0, 0, 0, 0, 466, 467, 0, 468, 0, 0, + 469, 0, 0, 0, 470, 471, 472, 0, 0, 0, + 473, 0, 0, 474, 475, 0, 476, 477, 478, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 0, 0, 488, 489, 490, 491, 0, 0, 492, + 493, 0, 494, 495, 496, 497, 0, 0, 0, 0, + 0, 2139, 499, 500, 0, 0, 0, 501, 502, 503, + 504, 0, 505, 506, 0, 507, 508, 0, 509, 510, + 0, 0, 511, 0, 0, 512, 0, 513, 0, 514, + 515, 0, 0, 0, 0, 0, 0, 516, 0, 0, + 517, 0, 0, 0, 518, 519, 520, 521, 522, 523, + 524, 0, 0, 0, 0, 0, 0, 525, 526, 0, + 527, 528, 529, 0, 160, 530, 161, 162, 163, 164, + 165, 166, 0, 0, 167, 0, 0, 0, 168, 0, + 0, 169, 0, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 0, 179, 0, 0, 0, 180, 0, 0, + 0, 181, 0, 0, 182, 183, 184, 0, 185, 0, + 186, 187, 0, 0, 188, 0, 0, 189, 190, 0, + 191, 192, 0, 193, 194, 0, 195, 196, 197, 198, + 199, 200, 0, 201, 202, 203, 204, 205, 206, 207, + 0, 208, 209, 210, 211, 212, 213, 214, 215, 0, + 216, 217, 0, 218, 219, 220, 221, 222, 0, 223, + 0, 0, 224, 0, 0, 225, 0, 226, 0, 0, + 227, 0, 228, 0, 0, 0, 229, 230, 231, 0, + 0, 232, 0, 0, 0, 0, 233, 234, 0, 0, + 0, 2278, 235, 0, 236, 0, 0, 0, 0, 237, + 0, 238, 239, 240, 241, 242, 0, 0, 0, 0, + 243, 0, 0, 244, 245, 246, 0, 0, 0, 247, + 0, 248, 249, 0, 250, 251, 252, 0, 253, 254, + 0, 255, 256, 257, 258, 259, 260, 261, 0, 0, + 262, 263, 264, 265, 0, 0, 266, 267, 0, 268, + 269, 270, 0, 0, 271, 0, 0, 0, 272, 273, + 0, 274, 0, 275, 0, 276, 277, 278, 279, 280, + 281, 282, 0, 283, 0, 0, 284, 285, 286, 0, + 287, 0, 0, 0, 288, 289, 0, 0, 0, 290, + 291, 292, 293, 294, 0, 0, 0, 295, 296, 297, + 0, 0, 298, 0, 0, 0, 0, 299, 300, 0, + 0, 0, 301, 0, 302, 303, 0, 304, 305, 0, + 0, 0, 306, 0, 0, 307, 308, 309, 0, 0, + 310, 0, 0, 311, 312, 0, 0, 0, 0, 0, + 313, 314, 0, 315, 0, 316, 0, 317, 318, 0, + 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 0, 334, 335, 336, 337, 0, 338, 339, 340, 341, - 0, 342, 343, 344, 0, 0, 0, 0, 345, 346, - 347, 348, 349, 350, 0, 0, 351, 352, 0, 353, - 0, 354, 0, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 365, 0, 0, 366, 367, - 368, 369, 0, 0, 0, 370, 371, 0, 0, 0, - 372, 0, 373, 374, 375, 0, 376, 377, 378, 379, - 0, 380, 381, 0, 0, 0, 0, 0, 0, 0, - 0, 382, 383, 384, 0, 0, 385, 0, 386, 0, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 0, 0, 397, 398, 399, 3308, 400, 0, 401, 402, - 403, 404, 405, 0, 406, 407, 408, 0, 0, 409, - 0, 0, 0, 410, 411, 412, 413, 414, 0, 0, - 415, 416, 417, 418, 419, 0, 420, 421, 0, 422, - 423, 424, 0, 0, 425, 0, 426, 0, 427, 428, - 0, 429, 430, 0, 431, 0, 432, 0, 0, 433, + 334, 0, 335, 336, 337, 338, 0, 339, 340, 341, + 342, 0, 343, 344, 345, 0, 0, 0, 0, 346, + 347, 348, 349, 350, 351, 0, 0, 352, 353, 0, + 354, 0, 355, 0, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 0, 0, 366, 0, 0, 367, + 368, 369, 370, 0, 0, 0, 371, 372, 0, 0, + 0, 373, 0, 374, 375, 376, 0, 377, 378, 379, + 380, 0, 381, 382, 0, 0, 0, 0, 0, 0, + 0, 0, 383, 384, 385, 0, 0, 386, 0, 387, + 0, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 0, 0, 398, 399, 400, 0, 401, 0, 402, + 403, 404, 405, 406, 0, 407, 408, 409, 0, 0, + 410, 0, 0, 0, 411, 412, 413, 414, 415, 0, + 0, 416, 417, 418, 419, 420, 0, 421, 422, 0, + 423, 424, 425, 0, 0, 426, 0, 427, 0, 428, + 429, 0, 430, 431, 0, 432, 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 0, 445, 446, 0, 0, 0, 447, 448, 449, - 450, 0, 0, 0, 451, 0, 0, 0, 452, 0, - 453, 454, 455, 456, 457, 458, 0, 459, 460, 461, - 462, 463, 464, 0, 0, 0, 0, 0, 0, 465, - 466, 0, 467, 0, 0, 468, 0, 0, 0, 469, - 470, 471, 0, 0, 0, 472, 0, 0, 473, 474, - 0, 475, 476, 477, 478, 479, 480, 0, 0, 481, - 482, 483, 484, 0, 485, 486, 0, 0, 487, 488, - 489, 490, 0, 0, 491, 492, 0, 493, 494, 495, - 496, 0, 0, 0, 0, 0, 497, 498, 499, 0, - 0, 0, 500, 501, 502, 503, 0, 504, 505, 0, - 506, 507, 0, 508, 509, 0, 0, 510, 0, 0, - 511, 0, 512, 0, 513, 514, 0, 0, 0, 0, - 0, 0, 515, 0, 0, 516, 0, 0, 0, 517, - 518, 519, 520, 521, 522, 523, 0, 0, 0, 0, - 0, 0, 524, 525, 0, 526, 527, 528, 0, 159, - 529, 160, 161, 162, 163, 164, 165, 0, 0, 166, - 0, 0, 0, 167, 0, 0, 168, 0, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 0, 178, 0, - 0, 0, 179, 0, 0, 0, 180, 0, 0, 181, - 182, 183, 0, 184, 0, 185, 186, 0, 0, 187, - 0, 0, 188, 189, 0, 190, 191, 0, 192, 193, - 0, 194, 195, 196, 197, 198, 199, 0, 200, 201, - 202, 203, 204, 205, 206, 0, 207, 208, 209, 210, - 211, 212, 213, 214, 0, 215, 216, 0, 217, 218, - 219, 220, 221, 0, 222, 0, 0, 223, 0, 0, - 224, 0, 225, 0, 0, 226, 0, 227, 0, 0, - 0, 228, 229, 230, 0, 0, 231, 0, 0, 0, - 0, 232, 233, 0, 0, 0, 0, 234, 0, 235, - 0, 0, 0, 0, 236, 0, 237, 238, 239, 240, - 241, 0, 0, 0, 0, 242, 0, 0, 243, 244, - 245, 0, 0, 0, 246, 0, 247, 248, 0, 249, - 250, 251, 0, 252, 253, 0, 254, 255, 256, 257, - 258, 259, 260, 0, 0, 261, 262, 263, 264, 0, - 0, 265, 266, 0, 267, 268, 269, 0, 0, 270, - 0, 0, 0, 271, 272, 0, 273, 0, 274, 0, - 275, 276, 277, 278, 279, 280, 281, 0, 282, 0, - 0, 283, 284, 285, 0, 286, 0, 0, 0, 287, - 288, 0, 0, 0, 289, 290, 291, 292, 293, 0, - 0, 0, 294, 295, 296, 0, 0, 297, 0, 0, - 0, 0, 298, 299, 0, 0, 0, 300, 0, 301, - 302, 0, 303, 304, 0, 0, 0, 305, 0, 0, - 306, 307, 308, 0, 0, 309, 0, 0, 310, 311, - 0, 0, 0, 0, 0, 312, 313, 0, 314, 0, - 315, 0, 316, 317, 0, 0, 0, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 0, 334, 335, 336, - 337, 0, 338, 339, 340, 341, 0, 342, 343, 344, - 0, 0, 0, 0, 345, 346, 347, 348, 349, 350, - 0, 0, 351, 352, 0, 353, 0, 354, 0, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 365, 0, 0, 366, 367, 368, 369, 0, 0, - 0, 370, 371, 0, 0, 0, 372, 0, 373, 374, - 375, 0, 376, 377, 378, 379, 0, 380, 381, 0, - 0, 0, 0, 0, 0, 0, 0, 382, 383, 384, - 0, 0, 385, 0, 386, 0, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 0, 0, 397, 398, - 399, 0, 400, 0, 401, 402, 403, 404, 405, 0, - 406, 407, 408, 0, 0, 409, 0, 0, 0, 410, - 411, 412, 413, 414, 0, 0, 415, 416, 417, 418, - 419, 0, 420, 421, 0, 422, 423, 424, 0, 0, - 425, 0, 426, 0, 427, 428, 0, 429, 430, 0, - 431, 0, 432, 0, 0, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 0, 445, 446, - 0, 0, 0, 447, 448, 449, 450, 0, 0, 0, - 451, 0, 0, 0, 452, 0, 453, 454, 455, 456, - 457, 458, 0, 459, 460, 461, 462, 463, 464, 0, - 0, 0, 0, 0, 0, 465, 466, 0, 467, 0, - 0, 468, 0, 0, 0, 469, 470, 471, 0, 0, - 0, 472, 0, 0, 473, 474, 0, 475, 476, 477, - 478, 479, 480, 0, 0, 481, 482, 483, 484, 0, - 485, 486, 0, 0, 487, 488, 489, 490, 0, 156, - 491, 492, 0, 493, 494, 495, 496, 0, 0, 0, - 0, 0, 497, 498, 499, 0, 0, 0, 500, 501, - 502, 503, 0, 504, 505, 0, 506, 507, 0, 508, - 509, 0, 0, 510, 0, 0, 511, 0, 512, 0, - 513, 514, 0, 0, 0, 0, 0, 0, 515, 0, - 0, 516, 0, 0, 0, 517, 518, 519, 520, 521, - 522, 523, 0, 0, 0, 0, 0, 0, 524, 525, - 0, 526, 527, 528, 0, 159, 529, 160, 161, 162, - 163, 164, 165, 0, 0, 166, 0, 0, 0, 167, - 0, 0, 168, 0, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 0, 178, 0, 0, 0, 179, 0, - 0, 0, 180, 0, 0, 181, 182, 183, 0, 184, - 0, 185, 186, 0, 0, 187, 0, 0, 188, 189, - 0, 190, 191, 0, 192, 193, 0, 194, 195, 196, - 197, 198, 199, 0, 200, 201, 202, 203, 204, 205, - 206, 0, 207, 208, 209, 210, 211, 212, 213, 214, - 0, 215, 216, 0, 217, 218, 219, 220, 221, 0, - 222, 0, 0, 223, 0, 0, 224, 0, 225, 0, - 0, 226, 0, 227, 0, 0, 0, 228, 229, 230, - 0, 0, 231, 0, 0, 0, 0, 232, 233, 0, - 0, 0, 3621, 234, 0, 235, 0, 0, 0, 0, - 236, 0, 237, 238, 239, 240, 241, 0, 0, 0, - 0, 242, 0, 0, 243, 244, 245, 0, 0, 0, - 246, 0, 247, 248, 0, 249, 250, 251, 0, 252, - 253, 0, 254, 255, 256, 257, 258, 259, 260, 0, - 0, 261, 262, 263, 264, 0, 0, 265, 266, 0, - 267, 268, 269, 0, 0, 270, 0, 0, 0, 271, - 272, 0, 273, 0, 274, 0, 275, 276, 277, 278, - 279, 280, 281, 0, 282, 0, 0, 283, 284, 285, - 0, 286, 0, 0, 0, 287, 288, 0, 0, 0, - 289, 290, 291, 292, 293, 0, 0, 0, 294, 295, - 296, 0, 0, 297, 0, 0, 0, 0, 298, 299, - 0, 0, 0, 300, 0, 301, 302, 0, 303, 304, - 0, 0, 0, 305, 0, 0, 306, 307, 308, 0, - 0, 309, 0, 0, 310, 311, 0, 0, 0, 0, - 0, 312, 313, 0, 314, 0, 315, 0, 316, 317, - 0, 0, 0, 0, 0, 0, 318, 319, 320, 321, + 444, 445, 0, 446, 447, 0, 0, 0, 448, 449, + 450, 451, 0, 0, 0, 452, 0, 0, 0, 453, + 0, 454, 455, 456, 457, 458, 459, 0, 460, 461, + 462, 463, 464, 465, 0, 0, 0, 0, 0, 0, + 466, 467, 0, 468, 0, 0, 469, 0, 0, 0, + 470, 471, 472, 0, 0, 0, 473, 0, 0, 474, + 475, 0, 476, 477, 478, 479, 480, 481, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 0, 0, 488, + 489, 490, 491, 0, 0, 492, 493, 0, 494, 495, + 496, 497, 0, 0, 0, 0, 0, 498, 499, 500, + 0, 0, 0, 501, 502, 503, 504, 0, 505, 506, + 0, 507, 508, 0, 509, 510, 0, 0, 511, 0, + 0, 512, 0, 513, 0, 514, 515, 0, 0, 0, + 0, 0, 0, 516, 0, 0, 517, 0, 0, 0, + 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, + 0, 0, 0, 525, 526, 0, 527, 528, 529, 0, + 160, 530, 161, 162, 163, 164, 165, 166, 0, 0, + 167, 0, 0, 0, 168, 0, 0, 169, 0, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 0, 179, + 0, 0, 0, 180, 0, 0, 0, 181, 0, 0, + 182, 183, 184, 0, 185, 0, 186, 187, 0, 0, + 188, 0, 0, 189, 190, 0, 191, 192, 0, 193, + 194, 0, 195, 196, 197, 198, 199, 200, 0, 201, + 202, 203, 204, 205, 206, 207, 0, 208, 209, 210, + 211, 212, 213, 214, 215, 0, 216, 217, 0, 218, + 219, 220, 221, 222, 0, 223, 0, 0, 224, 0, + 0, 225, 0, 226, 0, 0, 227, 0, 228, 0, + 0, 0, 229, 230, 231, 0, 0, 232, 0, 0, + 0, 0, 233, 234, 0, 0, 0, 0, 235, 0, + 236, 0, 0, 0, 0, 237, 0, 238, 239, 240, + 241, 242, 0, 0, 0, 0, 243, 0, 0, 244, + 245, 246, 0, 0, 0, 247, 0, 248, 249, 0, + 250, 251, 252, 0, 253, 254, 0, 255, 256, 257, + 258, 259, 260, 261, 0, 0, 262, 263, 264, 265, + 0, 0, 266, 267, 0, 268, 269, 270, 0, 0, + 271, 0, 0, 0, 272, 273, 0, 274, 0, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 0, 283, + 0, 0, 284, 285, 286, 0, 287, 0, 0, 0, + 288, 289, 0, 0, 0, 290, 291, 292, 293, 294, + 0, 0, 0, 295, 296, 297, 0, 0, 298, 0, + 0, 0, 0, 299, 300, 0, 0, 0, 301, 0, + 302, 303, 0, 304, 305, 0, 0, 0, 306, 0, + 0, 307, 308, 309, 0, 0, 310, 0, 0, 311, + 312, 0, 0, 0, 0, 0, 313, 314, 0, 315, + 0, 316, 0, 317, 318, 0, 0, 0, 0, 0, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 0, 335, 336, + 337, 338, 0, 339, 340, 341, 342, 0, 343, 344, + 345, 0, 0, 0, 0, 346, 347, 348, 349, 350, + 351, 0, 0, 352, 353, 0, 354, 0, 355, 0, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 0, 0, 366, 0, 0, 367, 368, 369, 370, 0, + 0, 0, 371, 372, 0, 0, 0, 373, 0, 374, + 375, 376, 0, 377, 378, 379, 380, 0, 381, 382, + 0, 0, 0, 0, 0, 0, 0, 0, 383, 384, + 385, 0, 0, 386, 0, 387, 0, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 0, 0, 398, + 399, 400, 3313, 401, 0, 402, 403, 404, 405, 406, + 0, 407, 408, 409, 0, 0, 410, 0, 0, 0, + 411, 412, 413, 414, 415, 0, 0, 416, 417, 418, + 419, 420, 0, 421, 422, 0, 423, 424, 425, 0, + 0, 426, 0, 427, 0, 428, 429, 0, 430, 431, + 0, 432, 0, 433, 0, 0, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 0, 446, + 447, 0, 0, 0, 448, 449, 450, 451, 0, 0, + 0, 452, 0, 0, 0, 453, 0, 454, 455, 456, + 457, 458, 459, 0, 460, 461, 462, 463, 464, 465, + 0, 0, 0, 0, 0, 0, 466, 467, 0, 468, + 0, 0, 469, 0, 0, 0, 470, 471, 472, 0, + 0, 0, 473, 0, 0, 474, 475, 0, 476, 477, + 478, 479, 480, 481, 0, 0, 482, 483, 484, 485, + 0, 486, 487, 0, 0, 488, 489, 490, 491, 0, + 0, 492, 493, 0, 494, 495, 496, 497, 0, 0, + 0, 0, 0, 498, 499, 500, 0, 0, 0, 501, + 502, 503, 504, 0, 505, 506, 0, 507, 508, 0, + 509, 510, 0, 0, 511, 0, 0, 512, 0, 513, + 0, 514, 515, 0, 0, 0, 0, 0, 0, 516, + 0, 0, 517, 0, 0, 0, 518, 519, 520, 521, + 522, 523, 524, 0, 0, 0, 0, 0, 0, 525, + 526, 0, 527, 528, 529, 0, 160, 530, 161, 162, + 163, 164, 165, 166, 0, 0, 167, 0, 0, 0, + 168, 0, 0, 169, 0, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 0, 179, 0, 0, 0, 180, + 0, 0, 0, 181, 0, 0, 182, 183, 184, 0, + 185, 0, 186, 187, 0, 0, 188, 0, 0, 189, + 190, 0, 191, 192, 0, 193, 194, 0, 195, 196, + 197, 198, 199, 200, 0, 201, 202, 203, 204, 205, + 206, 207, 0, 208, 209, 210, 211, 212, 213, 214, + 215, 0, 216, 217, 0, 218, 219, 220, 221, 222, + 0, 223, 0, 0, 224, 0, 0, 225, 0, 226, + 0, 0, 227, 0, 228, 0, 0, 0, 229, 230, + 231, 0, 0, 232, 0, 0, 0, 0, 233, 234, + 0, 0, 0, 0, 235, 0, 236, 0, 0, 0, + 0, 237, 0, 238, 239, 240, 241, 242, 0, 0, + 0, 0, 243, 0, 0, 244, 245, 246, 0, 0, + 0, 247, 0, 248, 249, 0, 250, 251, 252, 0, + 253, 254, 0, 255, 256, 257, 258, 259, 260, 261, + 0, 0, 262, 263, 264, 265, 0, 0, 266, 267, + 0, 268, 269, 270, 0, 0, 271, 0, 0, 0, + 272, 273, 0, 274, 0, 275, 0, 276, 277, 278, + 279, 280, 281, 282, 0, 283, 0, 0, 284, 285, + 286, 0, 287, 0, 0, 0, 288, 289, 0, 0, + 0, 290, 291, 292, 293, 294, 0, 0, 0, 295, + 296, 297, 0, 0, 298, 0, 0, 0, 0, 299, + 300, 0, 0, 0, 301, 0, 302, 303, 0, 304, + 305, 0, 0, 0, 306, 0, 0, 307, 308, 309, + 0, 0, 310, 0, 0, 311, 312, 0, 0, 0, + 0, 0, 313, 314, 0, 315, 0, 316, 0, 317, + 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 0, 334, 335, 336, 337, 0, 338, 339, - 340, 341, 0, 342, 343, 344, 0, 0, 0, 0, - 345, 346, 347, 348, 349, 350, 0, 0, 351, 352, - 0, 353, 0, 354, 0, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 365, 0, 0, - 366, 367, 368, 369, 0, 0, 0, 370, 371, 0, - 0, 0, 372, 0, 373, 374, 375, 0, 376, 377, - 378, 379, 0, 380, 381, 0, 0, 0, 0, 0, - 0, 0, 0, 382, 383, 384, 0, 0, 385, 0, - 386, 0, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 0, 0, 397, 398, 399, 0, 400, 0, - 401, 402, 403, 404, 405, 0, 406, 407, 408, 0, - 0, 409, 0, 0, 0, 410, 411, 412, 413, 414, - 0, 0, 415, 416, 417, 418, 419, 0, 420, 421, - 0, 422, 423, 424, 0, 0, 425, 0, 426, 0, - 427, 428, 0, 429, 430, 0, 431, 0, 432, 0, - 0, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 0, 445, 446, 0, 0, 0, 447, - 448, 449, 450, 0, 0, 0, 451, 0, 0, 0, - 452, 0, 453, 454, 455, 456, 457, 458, 0, 459, - 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, - 0, 465, 466, 0, 467, 0, 0, 468, 0, 0, - 0, 469, 470, 471, 0, 0, 0, 472, 0, 0, - 473, 474, 0, 475, 476, 477, 478, 479, 480, 0, - 0, 481, 482, 483, 484, 0, 485, 486, 0, 0, - 487, 488, 489, 490, 0, 0, 491, 492, 0, 493, - 494, 495, 496, 0, 0, 0, 0, 0, 497, 498, - 499, 0, 0, 0, 500, 501, 502, 503, 0, 504, - 505, 0, 506, 507, 0, 508, 509, 0, 0, 510, - 0, 0, 511, 0, 512, 0, 513, 514, 0, 0, - 0, 0, 0, 0, 515, 0, 0, 516, 0, 0, - 0, 517, 518, 519, 520, 521, 522, 523, 0, 0, - 0, 0, 0, 0, 524, 525, 0, 526, 527, 528, - 0, 159, 529, 160, 161, 162, 163, 164, 165, 3629, - 0, 166, 0, 0, 0, 167, 0, 0, 168, 0, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 0, - 178, 0, 0, 0, 179, 0, 0, 0, 180, 0, - 0, 181, 182, 183, 0, 184, 0, 185, 186, 0, - 0, 187, 0, 0, 188, 189, 0, 190, 191, 0, - 192, 193, 0, 194, 195, 196, 197, 198, 199, 0, - 200, 201, 202, 203, 204, 205, 206, 0, 207, 208, - 209, 210, 211, 212, 213, 214, 0, 215, 216, 0, - 217, 218, 219, 220, 221, 0, 222, 0, 0, 223, - 0, 0, 224, 0, 225, 0, 0, 226, 0, 227, - 0, 0, 0, 228, 229, 230, 0, 0, 231, 0, - 0, 0, 0, 232, 233, 0, 0, 0, 0, 234, - 0, 235, 0, 0, 0, 0, 236, 0, 237, 238, - 239, 240, 241, 0, 0, 0, 0, 242, 0, 0, - 243, 244, 245, 0, 0, 0, 246, 0, 247, 248, - 0, 249, 250, 251, 0, 252, 253, 0, 254, 255, - 256, 257, 258, 259, 260, 0, 0, 261, 262, 263, - 264, 0, 0, 265, 266, 0, 267, 268, 269, 0, - 0, 270, 0, 0, 0, 271, 272, 0, 273, 0, - 274, 0, 275, 276, 277, 278, 279, 280, 281, 0, - 282, 0, 0, 283, 284, 285, 0, 286, 0, 0, - 0, 287, 288, 0, 0, 0, 289, 290, 291, 292, - 293, 0, 0, 0, 294, 295, 296, 0, 0, 297, - 0, 0, 0, 0, 298, 299, 0, 0, 0, 300, - 0, 301, 302, 0, 303, 304, 0, 0, 0, 305, - 0, 0, 306, 307, 308, 0, 0, 309, 0, 0, - 310, 311, 0, 0, 0, 0, 0, 312, 313, 0, - 314, 0, 315, 0, 316, 317, 0, 0, 0, 0, - 0, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, - 335, 336, 337, 0, 338, 339, 340, 341, 0, 342, - 343, 344, 0, 0, 0, 0, 345, 346, 347, 348, - 349, 350, 0, 0, 351, 352, 0, 353, 0, 354, - 0, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 365, 0, 0, 366, 367, 368, 369, - 0, 0, 0, 370, 371, 0, 0, 0, 372, 0, - 373, 374, 375, 0, 376, 377, 378, 379, 0, 380, - 381, 0, 0, 0, 0, 0, 0, 0, 0, 382, - 383, 384, 0, 0, 385, 0, 386, 0, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 0, 0, - 397, 398, 399, 0, 400, 0, 401, 402, 403, 404, - 405, 0, 406, 407, 408, 0, 0, 409, 0, 0, - 0, 410, 411, 412, 413, 414, 0, 0, 415, 416, - 417, 418, 419, 0, 420, 421, 0, 422, 423, 424, - 0, 0, 425, 0, 426, 0, 427, 428, 0, 429, - 430, 0, 431, 0, 432, 0, 0, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 0, - 445, 446, 0, 0, 0, 447, 448, 449, 450, 0, - 0, 0, 451, 0, 0, 0, 452, 0, 453, 454, - 455, 456, 457, 458, 0, 459, 460, 461, 462, 463, - 464, 0, 0, 0, 0, 0, 0, 465, 466, 0, - 467, 0, 0, 468, 0, 0, 0, 469, 470, 471, - 0, 0, 0, 472, 0, 0, 473, 474, 0, 475, - 476, 477, 478, 479, 480, 0, 0, 481, 482, 483, - 484, 0, 485, 486, 0, 0, 487, 488, 489, 490, - 0, 0, 491, 492, 0, 493, 494, 495, 496, 0, - 0, 0, 0, 0, 497, 498, 499, 0, 0, 0, - 500, 501, 502, 503, 0, 504, 505, 0, 506, 507, - 0, 508, 509, 0, 0, 510, 0, 0, 511, 0, - 512, 0, 513, 514, 0, 0, 0, 0, 0, 0, - 515, 0, 0, 516, 0, 0, 0, 517, 518, 519, - 520, 521, 522, 523, 0, 0, 0, 0, 0, 0, - 524, 525, 0, 526, 527, 528, 0, 159, 529, 160, - 161, 162, 163, 164, 165, 0, 0, 166, 0, 0, - 0, 167, 0, 0, 168, 0, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 0, 178, 0, 0, 0, - 179, 0, 0, 0, 180, 0, 0, 181, 182, 183, - 0, 184, 0, 185, 186, 0, 0, 187, 0, 0, - 188, 189, 0, 190, 191, 0, 192, 193, 0, 194, - 195, 196, 197, 198, 199, 0, 200, 201, 202, 203, - 204, 205, 206, 0, 207, 208, 209, 210, 211, 212, - 213, 214, 0, 215, 216, 0, 217, 218, 219, 220, - 221, 0, 222, 0, 0, 223, 0, 0, 224, 0, - 225, 0, 0, 226, 0, 227, 0, 0, 0, 228, - 229, 230, 0, 0, 231, 0, 0, 0, 0, 232, - 233, 0, 0, 0, 3653, 234, 0, 235, 0, 0, - 0, 0, 236, 0, 237, 238, 239, 240, 241, 0, - 0, 0, 0, 242, 0, 0, 243, 244, 245, 0, - 0, 0, 246, 0, 247, 248, 0, 249, 250, 251, - 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, - 260, 0, 0, 261, 262, 263, 264, 0, 0, 265, - 266, 0, 267, 268, 269, 0, 0, 270, 0, 0, - 0, 271, 272, 0, 273, 0, 274, 0, 275, 276, - 277, 278, 279, 280, 281, 0, 282, 0, 0, 283, - 284, 285, 0, 286, 0, 0, 0, 287, 288, 0, - 0, 0, 289, 290, 291, 292, 293, 0, 0, 0, - 294, 295, 296, 0, 0, 297, 0, 0, 0, 0, - 298, 299, 0, 0, 0, 300, 0, 301, 302, 0, - 303, 304, 0, 0, 0, 305, 0, 0, 306, 307, - 308, 0, 0, 309, 0, 0, 310, 311, 0, 0, - 0, 0, 0, 312, 313, 0, 314, 0, 315, 0, - 316, 317, 0, 0, 0, 0, 0, 0, 318, 319, + 332, 333, 334, 0, 335, 336, 337, 338, 0, 339, + 340, 341, 342, 0, 343, 344, 345, 0, 0, 0, + 0, 346, 347, 348, 349, 350, 351, 0, 0, 352, + 353, 0, 354, 0, 355, 0, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 0, 0, 366, 0, + 0, 367, 368, 369, 370, 0, 0, 0, 371, 372, + 0, 0, 0, 373, 0, 374, 375, 376, 0, 377, + 378, 379, 380, 0, 381, 382, 0, 0, 0, 0, + 0, 0, 0, 0, 383, 384, 385, 0, 0, 386, + 0, 387, 0, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 0, 0, 398, 399, 400, 0, 401, + 0, 402, 403, 404, 405, 406, 0, 407, 408, 409, + 0, 0, 410, 0, 0, 0, 411, 412, 413, 414, + 415, 0, 0, 416, 417, 418, 419, 420, 0, 421, + 422, 0, 423, 424, 425, 0, 0, 426, 0, 427, + 0, 428, 429, 0, 430, 431, 0, 432, 0, 433, + 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 0, 446, 447, 0, 0, 0, + 448, 449, 450, 451, 0, 0, 0, 452, 0, 0, + 0, 453, 0, 454, 455, 456, 457, 458, 459, 0, + 460, 461, 462, 463, 464, 465, 0, 0, 0, 0, + 0, 0, 466, 467, 0, 468, 0, 0, 469, 0, + 0, 0, 470, 471, 472, 0, 0, 0, 473, 0, + 0, 474, 475, 0, 476, 477, 478, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 0, + 0, 488, 489, 490, 491, 0, 156, 492, 493, 0, + 494, 495, 496, 497, 0, 0, 0, 0, 0, 498, + 499, 500, 0, 0, 0, 501, 502, 503, 504, 0, + 505, 506, 0, 507, 508, 0, 509, 510, 0, 0, + 511, 0, 0, 512, 0, 513, 0, 514, 515, 0, + 0, 0, 0, 0, 0, 516, 0, 0, 517, 0, + 0, 0, 518, 519, 520, 521, 522, 523, 524, 0, + 0, 0, 0, 0, 0, 525, 526, 0, 527, 528, + 529, 0, 160, 530, 161, 162, 163, 164, 165, 166, + 0, 0, 167, 0, 0, 0, 168, 0, 0, 169, + 0, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 0, 179, 0, 0, 0, 180, 0, 0, 0, 181, + 0, 0, 182, 183, 184, 0, 185, 0, 186, 187, + 0, 0, 188, 0, 0, 189, 190, 0, 191, 192, + 0, 193, 194, 0, 195, 196, 197, 198, 199, 200, + 0, 201, 202, 203, 204, 205, 206, 207, 0, 208, + 209, 210, 211, 212, 213, 214, 215, 0, 216, 217, + 0, 218, 219, 220, 221, 222, 0, 223, 0, 0, + 224, 0, 0, 225, 0, 226, 0, 0, 227, 0, + 228, 0, 0, 0, 229, 230, 231, 0, 0, 232, + 0, 0, 0, 0, 233, 234, 0, 0, 0, 3626, + 235, 0, 236, 0, 0, 0, 0, 237, 0, 238, + 239, 240, 241, 242, 0, 0, 0, 0, 243, 0, + 0, 244, 245, 246, 0, 0, 0, 247, 0, 248, + 249, 0, 250, 251, 252, 0, 253, 254, 0, 255, + 256, 257, 258, 259, 260, 261, 0, 0, 262, 263, + 264, 265, 0, 0, 266, 267, 0, 268, 269, 270, + 0, 0, 271, 0, 0, 0, 272, 273, 0, 274, + 0, 275, 0, 276, 277, 278, 279, 280, 281, 282, + 0, 283, 0, 0, 284, 285, 286, 0, 287, 0, + 0, 0, 288, 289, 0, 0, 0, 290, 291, 292, + 293, 294, 0, 0, 0, 295, 296, 297, 0, 0, + 298, 0, 0, 0, 0, 299, 300, 0, 0, 0, + 301, 0, 302, 303, 0, 304, 305, 0, 0, 0, + 306, 0, 0, 307, 308, 309, 0, 0, 310, 0, + 0, 311, 312, 0, 0, 0, 0, 0, 313, 314, + 0, 315, 0, 316, 0, 317, 318, 0, 0, 0, + 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 334, 0, + 335, 336, 337, 338, 0, 339, 340, 341, 342, 0, + 343, 344, 345, 0, 0, 0, 0, 346, 347, 348, + 349, 350, 351, 0, 0, 352, 353, 0, 354, 0, + 355, 0, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 0, 0, 366, 0, 0, 367, 368, 369, + 370, 0, 0, 0, 371, 372, 0, 0, 0, 373, + 0, 374, 375, 376, 0, 377, 378, 379, 380, 0, + 381, 382, 0, 0, 0, 0, 0, 0, 0, 0, + 383, 384, 385, 0, 0, 386, 0, 387, 0, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, + 0, 398, 399, 400, 0, 401, 0, 402, 403, 404, + 405, 406, 0, 407, 408, 409, 0, 0, 410, 0, + 0, 0, 411, 412, 413, 414, 415, 0, 0, 416, + 417, 418, 419, 420, 0, 421, 422, 0, 423, 424, + 425, 0, 0, 426, 0, 427, 0, 428, 429, 0, + 430, 431, 0, 432, 0, 433, 0, 0, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 0, 446, 447, 0, 0, 0, 448, 449, 450, 451, + 0, 0, 0, 452, 0, 0, 0, 453, 0, 454, + 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, + 464, 465, 0, 0, 0, 0, 0, 0, 466, 467, + 0, 468, 0, 0, 469, 0, 0, 0, 470, 471, + 472, 0, 0, 0, 473, 0, 0, 474, 475, 0, + 476, 477, 478, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 0, 0, 488, 489, 490, + 491, 0, 0, 492, 493, 0, 494, 495, 496, 497, + 0, 0, 0, 0, 0, 498, 499, 500, 0, 0, + 0, 501, 502, 503, 504, 0, 505, 506, 0, 507, + 508, 0, 509, 510, 0, 0, 511, 0, 0, 512, + 0, 513, 0, 514, 515, 0, 0, 0, 0, 0, + 0, 516, 0, 0, 517, 0, 0, 0, 518, 519, + 520, 521, 522, 523, 524, 0, 0, 0, 0, 0, + 0, 525, 526, 0, 527, 528, 529, 0, 160, 530, + 161, 162, 163, 164, 165, 166, 3634, 0, 167, 0, + 0, 0, 168, 0, 0, 169, 0, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 0, 179, 0, 0, + 0, 180, 0, 0, 0, 181, 0, 0, 182, 183, + 184, 0, 185, 0, 186, 187, 0, 0, 188, 0, + 0, 189, 190, 0, 191, 192, 0, 193, 194, 0, + 195, 196, 197, 198, 199, 200, 0, 201, 202, 203, + 204, 205, 206, 207, 0, 208, 209, 210, 211, 212, + 213, 214, 215, 0, 216, 217, 0, 218, 219, 220, + 221, 222, 0, 223, 0, 0, 224, 0, 0, 225, + 0, 226, 0, 0, 227, 0, 228, 0, 0, 0, + 229, 230, 231, 0, 0, 232, 0, 0, 0, 0, + 233, 234, 0, 0, 0, 0, 235, 0, 236, 0, + 0, 0, 0, 237, 0, 238, 239, 240, 241, 242, + 0, 0, 0, 0, 243, 0, 0, 244, 245, 246, + 0, 0, 0, 247, 0, 248, 249, 0, 250, 251, + 252, 0, 253, 254, 0, 255, 256, 257, 258, 259, + 260, 261, 0, 0, 262, 263, 264, 265, 0, 0, + 266, 267, 0, 268, 269, 270, 0, 0, 271, 0, + 0, 0, 272, 273, 0, 274, 0, 275, 0, 276, + 277, 278, 279, 280, 281, 282, 0, 283, 0, 0, + 284, 285, 286, 0, 287, 0, 0, 0, 288, 289, + 0, 0, 0, 290, 291, 292, 293, 294, 0, 0, + 0, 295, 296, 297, 0, 0, 298, 0, 0, 0, + 0, 299, 300, 0, 0, 0, 301, 0, 302, 303, + 0, 304, 305, 0, 0, 0, 306, 0, 0, 307, + 308, 309, 0, 0, 310, 0, 0, 311, 312, 0, + 0, 0, 0, 0, 313, 314, 0, 315, 0, 316, + 0, 317, 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 0, 334, 335, 336, 337, 0, - 338, 339, 340, 341, 0, 342, 343, 344, 0, 0, - 0, 0, 345, 346, 347, 348, 349, 350, 0, 0, - 351, 352, 0, 353, 0, 354, 0, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 365, - 0, 0, 366, 367, 368, 369, 0, 0, 0, 370, - 371, 0, 0, 0, 372, 0, 373, 374, 375, 0, - 376, 377, 378, 379, 0, 380, 381, 0, 0, 0, - 0, 0, 0, 0, 0, 382, 383, 384, 0, 0, - 385, 0, 386, 0, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 0, 0, 397, 398, 399, 0, - 400, 0, 401, 402, 403, 404, 405, 0, 406, 407, - 408, 0, 0, 409, 0, 0, 0, 410, 411, 412, - 413, 414, 0, 0, 415, 416, 417, 418, 419, 0, - 420, 421, 0, 422, 423, 424, 0, 0, 425, 0, - 426, 0, 427, 428, 0, 429, 430, 0, 431, 0, - 432, 0, 0, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 0, 445, 446, 0, 0, - 0, 447, 448, 449, 450, 0, 0, 0, 451, 0, - 0, 0, 452, 0, 453, 454, 455, 456, 457, 458, - 0, 459, 460, 461, 462, 463, 464, 0, 0, 0, - 0, 0, 0, 465, 466, 0, 467, 0, 0, 468, - 0, 0, 0, 469, 470, 471, 0, 0, 0, 472, - 0, 0, 473, 474, 0, 475, 476, 477, 478, 479, - 480, 0, 0, 481, 482, 483, 484, 0, 485, 486, - 0, 0, 487, 488, 489, 490, 0, 0, 491, 492, - 0, 493, 494, 495, 496, 0, 0, 0, 0, 0, - 497, 498, 499, 0, 0, 0, 500, 501, 502, 503, - 0, 504, 505, 0, 506, 507, 0, 508, 509, 0, - 0, 510, 0, 0, 511, 0, 512, 0, 513, 514, - 0, 0, 0, 0, 0, 0, 515, 0, 0, 516, - 0, 0, 0, 517, 518, 519, 520, 521, 522, 523, - 0, 0, 0, 0, 0, 0, 524, 525, 0, 526, - 527, 528, 0, 159, 529, 160, 161, 162, 163, 164, - 165, 0, 0, 166, 0, 0, 0, 167, 0, 0, - 168, 0, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 0, 178, 0, 0, 0, 179, 0, 0, 0, - 180, 0, 0, 181, 182, 183, 0, 184, 0, 185, - 186, 0, 0, 187, 0, 0, 188, 189, 0, 190, - 191, 0, 192, 193, 0, 194, 195, 196, 197, 198, - 199, 0, 200, 201, 202, 203, 204, 205, 206, 0, - 207, 208, 209, 210, 211, 212, 213, 214, 0, 215, - 216, 0, 217, 218, 219, 220, 221, 0, 222, 0, - 0, 223, 0, 0, 224, 0, 225, 0, 0, 226, - 0, 227, 0, 0, 0, 228, 229, 230, 0, 0, - 231, 0, 0, 0, 0, 232, 233, 0, 0, 0, - 0, 234, 0, 235, 0, 0, 0, 0, 236, 0, - 237, 238, 239, 240, 241, 0, 0, 0, 0, 242, - 0, 0, 243, 244, 245, 0, 0, 0, 246, 0, - 247, 248, 0, 249, 250, 251, 0, 252, 253, 0, - 254, 255, 256, 257, 258, 259, 260, 0, 0, 261, - 262, 263, 264, 0, 0, 265, 266, 0, 267, 268, - 269, 0, 0, 270, 0, 0, 0, 271, 272, 0, - 273, 0, 274, 0, 275, 276, 277, 278, 279, 280, - 281, 0, 282, 0, 0, 283, 284, 285, 0, 286, - 0, 0, 0, 287, 288, 0, 0, 0, 289, 290, - 291, 292, 293, 0, 0, 0, 294, 295, 296, 0, - 0, 297, 0, 0, 0, 0, 298, 299, 0, 0, - 0, 300, 0, 301, 302, 0, 303, 304, 0, 0, - 0, 305, 0, 0, 306, 307, 308, 0, 0, 309, - 0, 0, 310, 311, 0, 0, 0, 0, 0, 312, - 313, 0, 314, 0, 315, 0, 316, 317, 0, 0, - 0, 0, 0, 0, 318, 319, 320, 321, 322, 323, + 330, 331, 332, 333, 334, 0, 335, 336, 337, 338, + 0, 339, 340, 341, 342, 0, 343, 344, 345, 0, + 0, 0, 0, 346, 347, 348, 349, 350, 351, 0, + 0, 352, 353, 0, 354, 0, 355, 0, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 0, 0, + 366, 0, 0, 367, 368, 369, 370, 0, 0, 0, + 371, 372, 0, 0, 0, 373, 0, 374, 375, 376, + 0, 377, 378, 379, 380, 0, 381, 382, 0, 0, + 0, 0, 0, 0, 0, 0, 383, 384, 385, 0, + 0, 386, 0, 387, 0, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 0, 0, 398, 399, 400, + 0, 401, 0, 402, 403, 404, 405, 406, 0, 407, + 408, 409, 0, 0, 410, 0, 0, 0, 411, 412, + 413, 414, 415, 0, 0, 416, 417, 418, 419, 420, + 0, 421, 422, 0, 423, 424, 425, 0, 0, 426, + 0, 427, 0, 428, 429, 0, 430, 431, 0, 432, + 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 0, 446, 447, 0, + 0, 0, 448, 449, 450, 451, 0, 0, 0, 452, + 0, 0, 0, 453, 0, 454, 455, 456, 457, 458, + 459, 0, 460, 461, 462, 463, 464, 465, 0, 0, + 0, 0, 0, 0, 466, 467, 0, 468, 0, 0, + 469, 0, 0, 0, 470, 471, 472, 0, 0, 0, + 473, 0, 0, 474, 475, 0, 476, 477, 478, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 0, 0, 488, 489, 490, 491, 0, 0, 492, + 493, 0, 494, 495, 496, 497, 0, 0, 0, 0, + 0, 498, 499, 500, 0, 0, 0, 501, 502, 503, + 504, 0, 505, 506, 0, 507, 508, 0, 509, 510, + 0, 0, 511, 0, 0, 512, 0, 513, 0, 514, + 515, 0, 0, 0, 0, 0, 0, 516, 0, 0, + 517, 0, 0, 0, 518, 519, 520, 521, 522, 523, + 524, 0, 0, 0, 0, 0, 0, 525, 526, 0, + 527, 528, 529, 0, 160, 530, 161, 162, 163, 164, + 165, 166, 0, 0, 167, 0, 0, 0, 168, 0, + 0, 169, 0, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 0, 179, 0, 0, 0, 180, 0, 0, + 0, 181, 0, 0, 182, 183, 184, 0, 185, 0, + 186, 187, 0, 0, 188, 0, 0, 189, 190, 0, + 191, 192, 0, 193, 194, 0, 195, 196, 197, 198, + 199, 200, 0, 201, 202, 203, 204, 205, 206, 207, + 0, 208, 209, 210, 211, 212, 213, 214, 215, 0, + 216, 217, 0, 218, 219, 220, 221, 222, 0, 223, + 0, 0, 224, 0, 0, 225, 0, 226, 0, 0, + 227, 0, 228, 0, 0, 0, 229, 230, 231, 0, + 0, 232, 0, 0, 0, 0, 233, 234, 0, 0, + 0, 3658, 235, 0, 236, 0, 0, 0, 0, 237, + 0, 238, 239, 240, 241, 242, 0, 0, 0, 0, + 243, 0, 0, 244, 245, 246, 0, 0, 0, 247, + 0, 248, 249, 0, 250, 251, 252, 0, 253, 254, + 0, 255, 256, 257, 258, 259, 260, 261, 0, 0, + 262, 263, 264, 265, 0, 0, 266, 267, 0, 268, + 269, 270, 0, 0, 271, 0, 0, 0, 272, 273, + 0, 274, 0, 275, 0, 276, 277, 278, 279, 280, + 281, 282, 0, 283, 0, 0, 284, 285, 286, 0, + 287, 0, 0, 0, 288, 289, 0, 0, 0, 290, + 291, 292, 293, 294, 0, 0, 0, 295, 296, 297, + 0, 0, 298, 0, 0, 0, 0, 299, 300, 0, + 0, 0, 301, 0, 302, 303, 0, 304, 305, 0, + 0, 0, 306, 0, 0, 307, 308, 309, 0, 0, + 310, 0, 0, 311, 312, 0, 0, 0, 0, 0, + 313, 314, 0, 315, 0, 316, 0, 317, 318, 0, + 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 0, 334, 335, 336, 337, 0, 338, 339, 340, 341, - 0, 342, 343, 344, 0, 0, 0, 0, 345, 346, - 347, 348, 349, 350, 0, 0, 351, 352, 0, 353, - 0, 354, 0, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 365, 0, 0, 366, 367, - 368, 369, 0, 0, 0, 370, 371, 0, 0, 0, - 372, 0, 373, 374, 375, 0, 376, 377, 378, 379, - 0, 380, 381, 0, 0, 0, 0, 0, 0, 0, - 0, 382, 383, 384, 0, 0, 385, 0, 386, 0, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 0, 0, 397, 398, 399, 4574, 400, 0, 401, 402, - 403, 404, 405, 0, 406, 407, 408, 0, 0, 409, - 0, 0, 0, 410, 411, 412, 413, 414, 0, 0, - 415, 416, 417, 418, 419, 0, 420, 421, 0, 422, - 423, 424, 0, 0, 425, 0, 426, 0, 427, 428, - 0, 429, 430, 0, 431, 0, 432, 0, 0, 433, + 334, 0, 335, 336, 337, 338, 0, 339, 340, 341, + 342, 0, 343, 344, 345, 0, 0, 0, 0, 346, + 347, 348, 349, 350, 351, 0, 0, 352, 353, 0, + 354, 0, 355, 0, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 0, 0, 366, 0, 0, 367, + 368, 369, 370, 0, 0, 0, 371, 372, 0, 0, + 0, 373, 0, 374, 375, 376, 0, 377, 378, 379, + 380, 0, 381, 382, 0, 0, 0, 0, 0, 0, + 0, 0, 383, 384, 385, 0, 0, 386, 0, 387, + 0, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 0, 0, 398, 399, 400, 0, 401, 0, 402, + 403, 404, 405, 406, 0, 407, 408, 409, 0, 0, + 410, 0, 0, 0, 411, 412, 413, 414, 415, 0, + 0, 416, 417, 418, 419, 420, 0, 421, 422, 0, + 423, 424, 425, 0, 0, 426, 0, 427, 0, 428, + 429, 0, 430, 431, 0, 432, 0, 433, 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 0, 445, 446, 0, 0, 0, 447, 448, 449, - 450, 0, 0, 0, 451, 0, 0, 0, 452, 0, - 453, 454, 455, 456, 457, 458, 0, 459, 460, 461, - 462, 463, 464, 0, 0, 0, 0, 0, 0, 465, - 466, 0, 467, 0, 0, 468, 0, 0, 0, 469, - 470, 471, 0, 0, 0, 472, 0, 0, 473, 474, - 0, 475, 476, 477, 478, 479, 480, 0, 0, 481, - 482, 483, 484, 0, 485, 486, 0, 0, 487, 488, - 489, 490, 0, 0, 491, 492, 0, 493, 494, 495, - 496, 0, 0, 0, 0, 0, 497, 498, 499, 0, - 0, 0, 500, 501, 502, 503, 0, 504, 505, 0, - 506, 507, 0, 508, 509, 0, 0, 510, 0, 0, - 511, 0, 512, 0, 513, 514, 0, 0, 0, 0, - 0, 0, 515, 0, 0, 516, 0, 0, 0, 517, - 518, 519, 520, 521, 522, 523, 0, 0, 0, 0, - 0, 0, 524, 525, 0, 526, 527, 528, 0, 159, - 529, 160, 161, 162, 163, 164, 165, 0, 0, 166, - 0, 0, 0, 167, 0, 0, 168, 0, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 0, 178, 0, - 0, 0, 179, 0, 0, 0, 180, 0, 0, 181, - 182, 183, 0, 184, 0, 185, 186, 0, 0, 187, - 0, 0, 188, 189, 0, 190, 191, 0, 192, 193, - 0, 194, 195, 196, 197, 198, 199, 0, 200, 201, - 202, 203, 204, 205, 206, 0, 207, 208, 209, 210, - 211, 212, 213, 214, 0, 215, 216, 0, 217, 218, - 219, 220, 221, 0, 222, 0, 0, 223, 0, 0, - 224, 0, 225, 0, 0, 226, 0, 227, 0, 0, - 0, 228, 229, 230, 0, 0, 231, 0, 0, 0, - 0, 232, 233, 0, 0, 0, 0, 234, 0, 235, - 0, 0, 0, 0, 236, 0, 237, 238, 239, 240, - 241, 0, 0, 0, 0, 242, 0, 0, 243, 244, - 245, 0, 0, 0, 246, 0, 247, 248, 0, 249, - 250, 251, 0, 252, 253, 0, 254, 255, 256, 257, - 258, 259, 260, 0, 0, 261, 262, 263, 264, 0, - 0, 265, 266, 0, 267, 268, 269, 0, 0, 270, - 0, 0, 0, 271, 272, 0, 273, 0, 274, 0, - 275, 276, 277, 278, 279, 280, 281, 0, 282, 0, - 0, 283, 284, 285, 0, 286, 0, 0, 0, 287, - 288, 0, 0, 0, 289, 290, 291, 292, 293, 0, - 0, 0, 294, 295, 296, 0, 0, 297, 0, 0, - 0, 0, 298, 299, 0, 0, 0, 300, 0, 301, - 302, 0, 303, 304, 0, 0, 0, 305, 0, 0, - 306, 307, 308, 0, 0, 309, 0, 0, 310, 311, - 0, 0, 0, 0, 0, 312, 313, 0, 314, 0, - 315, 0, 316, 317, 0, 0, 0, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 0, 334, 335, 336, - 337, 0, 338, 339, 340, 341, 0, 342, 343, 344, - 0, 0, 0, 0, 345, 346, 347, 348, 349, 350, - 0, 0, 351, 352, 0, 353, 0, 354, 0, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 365, 0, 0, 366, 367, 368, 369, 0, 0, - 0, 370, 371, 0, 0, 0, 372, 0, 373, 374, - 375, 0, 376, 377, 378, 379, 0, 380, 381, 0, - 0, 0, 0, 0, 0, 0, 0, 382, 383, 384, - 0, 0, 385, 0, 386, 0, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 0, 0, 397, 398, - 399, 0, 400, 0, 401, 402, 403, 404, 405, 0, - 406, 407, 408, 0, 0, 409, 0, 0, 0, 410, - 411, 412, 413, 414, 0, 0, 415, 416, 417, 418, - 419, 0, 420, 421, 0, 422, 423, 424, 0, 0, - 425, 0, 426, 0, 427, 428, 0, 429, 430, 0, - 431, 0, 432, 0, 0, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 0, 445, 446, - 0, 0, 0, 447, 448, 449, 450, 0, 0, 0, - 451, 0, 0, 0, 452, 0, 453, 454, 455, 456, - 457, 458, 0, 459, 460, 461, 462, 463, 464, 0, - 0, 0, 0, 0, 0, 465, 466, 0, 467, 0, - 0, 468, 0, 0, 0, 469, 470, 471, 0, 0, - 0, 472, 0, 0, 473, 474, 0, 475, 476, 477, - 478, 479, 480, 0, 0, 481, 482, 483, 484, 0, - 485, 486, 0, 0, 487, 488, 489, 490, 0, 0, - 491, 492, 0, 493, 494, 495, 496, 0, 0, 0, - 0, 0, 497, 498, 499, 0, 0, 0, 500, 501, - 502, 503, 0, 504, 505, 0, 506, 507, 0, 508, - 509, 0, 0, 510, 0, 0, 511, 0, 512, 0, - 513, 514, 0, 0, 0, 0, 0, 0, 515, 0, - 0, 516, 0, 0, 0, 517, 518, 519, 520, 521, - 522, 523, 0, 0, 0, 0, 0, 0, 524, 525, - 0, 526, 527, 528, 0, 159, 529, 160, 161, 162, - 163, 164, 165, 0, 0, 166, 0, 0, 0, 167, - 0, 0, 168, 0, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 0, 178, 0, 0, 0, 179, 0, - 0, 0, 180, 0, 0, 181, 182, 183, 0, 184, - 0, 185, 186, 0, 0, 187, 0, 0, 188, 189, - 0, 190, 191, 0, 192, 193, 0, 194, 195, 196, - 197, 198, 199, 0, 200, 201, 202, 203, 204, 205, - 206, 0, 207, 208, 209, 210, 211, 212, 213, 214, - 0, 215, 216, 0, 217, 218, 219, 220, 221, 0, - 222, 0, 0, 223, 0, 0, 224, 0, 225, 0, - 0, 226, 0, 227, 0, 0, 0, 228, 229, 230, - 0, 0, 231, 0, 0, 0, 0, 232, 233, 0, - 0, 0, 0, 234, 0, 235, 0, 0, 0, 0, - 236, 0, 237, 238, 239, 240, 241, 0, 0, 0, - 0, 242, 0, 0, 243, 244, 245, 0, 0, 0, - 246, 0, 247, 248, 0, 249, 250, 251, 0, 252, - 253, 0, 254, 255, 256, 257, 258, 259, 260, 0, - 0, 261, 262, 263, 264, 0, 0, 265, 266, 0, - 267, 2000, 269, 0, 0, 270, 0, 0, 0, 271, - 272, 0, 273, 0, 274, 0, 275, 276, 277, 278, - 279, 280, 281, 0, 282, 0, 0, 283, 284, 285, - 0, 286, 0, 0, 0, 287, 288, 0, 0, 0, - 289, 290, 291, 292, 293, 0, 0, 0, 294, 295, - 296, 0, 0, 297, 0, 0, 0, 0, 298, 299, - 0, 0, 0, 300, 0, 301, 302, 0, 303, 304, - 0, 0, 0, 305, 0, 0, 306, 307, 308, 0, - 0, 309, 0, 0, 310, 311, 0, 0, 0, 0, - 0, 312, 313, 0, 314, 0, 315, 0, 316, 317, - 0, 0, 0, 0, 0, 0, 318, 319, 320, 321, + 444, 445, 0, 446, 447, 0, 0, 0, 448, 449, + 450, 451, 0, 0, 0, 452, 0, 0, 0, 453, + 0, 454, 455, 456, 457, 458, 459, 0, 460, 461, + 462, 463, 464, 465, 0, 0, 0, 0, 0, 0, + 466, 467, 0, 468, 0, 0, 469, 0, 0, 0, + 470, 471, 472, 0, 0, 0, 473, 0, 0, 474, + 475, 0, 476, 477, 478, 479, 480, 481, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 0, 0, 488, + 489, 490, 491, 0, 0, 492, 493, 0, 494, 495, + 496, 497, 0, 0, 0, 0, 0, 498, 499, 500, + 0, 0, 0, 501, 502, 503, 504, 0, 505, 506, + 0, 507, 508, 0, 509, 510, 0, 0, 511, 0, + 0, 512, 0, 513, 0, 514, 515, 0, 0, 0, + 0, 0, 0, 516, 0, 0, 517, 0, 0, 0, + 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, + 0, 0, 0, 525, 526, 0, 527, 528, 529, 0, + 160, 530, 161, 162, 163, 164, 165, 166, 0, 0, + 167, 0, 0, 0, 168, 0, 0, 169, 0, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 0, 179, + 0, 0, 0, 180, 0, 0, 0, 181, 0, 0, + 182, 183, 184, 0, 185, 0, 186, 187, 0, 0, + 188, 0, 0, 189, 190, 0, 191, 192, 0, 193, + 194, 0, 195, 196, 197, 198, 199, 200, 0, 201, + 202, 203, 204, 205, 206, 207, 0, 208, 209, 210, + 211, 212, 213, 214, 215, 0, 216, 217, 0, 218, + 219, 220, 221, 222, 0, 223, 0, 0, 224, 0, + 0, 225, 0, 226, 0, 0, 227, 0, 228, 0, + 0, 0, 229, 230, 231, 0, 0, 232, 0, 0, + 0, 0, 233, 234, 0, 0, 0, 0, 235, 0, + 236, 0, 0, 0, 0, 237, 0, 238, 239, 240, + 241, 242, 0, 0, 0, 0, 243, 0, 0, 244, + 245, 246, 0, 0, 0, 247, 0, 248, 249, 0, + 250, 251, 252, 0, 253, 254, 0, 255, 256, 257, + 258, 259, 260, 261, 0, 0, 262, 263, 264, 265, + 0, 0, 266, 267, 0, 268, 269, 270, 0, 0, + 271, 0, 0, 0, 272, 273, 0, 274, 0, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 0, 283, + 0, 0, 284, 285, 286, 0, 287, 0, 0, 0, + 288, 289, 0, 0, 0, 290, 291, 292, 293, 294, + 0, 0, 0, 295, 296, 297, 0, 0, 298, 0, + 0, 0, 0, 299, 300, 0, 0, 0, 301, 0, + 302, 303, 0, 304, 305, 0, 0, 0, 306, 0, + 0, 307, 308, 309, 0, 0, 310, 0, 0, 311, + 312, 0, 0, 0, 0, 0, 313, 314, 0, 315, + 0, 316, 0, 317, 318, 0, 0, 0, 0, 0, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 0, 335, 336, + 337, 338, 0, 339, 340, 341, 342, 0, 343, 344, + 345, 0, 0, 0, 0, 346, 347, 348, 349, 350, + 351, 0, 0, 352, 353, 0, 354, 0, 355, 0, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 0, 0, 366, 0, 0, 367, 368, 369, 370, 0, + 0, 0, 371, 372, 0, 0, 0, 373, 0, 374, + 375, 376, 0, 377, 378, 379, 380, 0, 381, 382, + 0, 0, 0, 0, 0, 0, 0, 0, 383, 384, + 385, 0, 0, 386, 0, 387, 0, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 0, 0, 398, + 399, 400, 4579, 401, 0, 402, 403, 404, 405, 406, + 0, 407, 408, 409, 0, 0, 410, 0, 0, 0, + 411, 412, 413, 414, 415, 0, 0, 416, 417, 418, + 419, 420, 0, 421, 422, 0, 423, 424, 425, 0, + 0, 426, 0, 427, 0, 428, 429, 0, 430, 431, + 0, 432, 0, 433, 0, 0, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 0, 446, + 447, 0, 0, 0, 448, 449, 450, 451, 0, 0, + 0, 452, 0, 0, 0, 453, 0, 454, 455, 456, + 457, 458, 459, 0, 460, 461, 462, 463, 464, 465, + 0, 0, 0, 0, 0, 0, 466, 467, 0, 468, + 0, 0, 469, 0, 0, 0, 470, 471, 472, 0, + 0, 0, 473, 0, 0, 474, 475, 0, 476, 477, + 478, 479, 480, 481, 0, 0, 482, 483, 484, 485, + 0, 486, 487, 0, 0, 488, 489, 490, 491, 0, + 0, 492, 493, 0, 494, 495, 496, 497, 0, 0, + 0, 0, 0, 498, 499, 500, 0, 0, 0, 501, + 502, 503, 504, 0, 505, 506, 0, 507, 508, 0, + 509, 510, 0, 0, 511, 0, 0, 512, 0, 513, + 0, 514, 515, 0, 0, 0, 0, 0, 0, 516, + 0, 0, 517, 0, 0, 0, 518, 519, 520, 521, + 522, 523, 524, 0, 0, 0, 0, 0, 0, 525, + 526, 0, 527, 528, 529, 0, 160, 530, 161, 162, + 163, 164, 165, 166, 0, 0, 167, 0, 0, 0, + 168, 0, 0, 169, 0, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 0, 179, 0, 0, 0, 180, + 0, 0, 0, 181, 0, 0, 182, 183, 184, 0, + 185, 0, 186, 187, 0, 0, 188, 0, 0, 189, + 190, 0, 191, 192, 0, 193, 194, 0, 195, 196, + 197, 198, 199, 200, 0, 201, 202, 203, 204, 205, + 206, 207, 0, 208, 209, 210, 211, 212, 213, 214, + 215, 0, 216, 217, 0, 218, 219, 220, 221, 222, + 0, 223, 0, 0, 224, 0, 0, 225, 0, 226, + 0, 0, 227, 0, 228, 0, 0, 0, 229, 230, + 231, 0, 0, 232, 0, 0, 0, 0, 233, 234, + 0, 0, 0, 0, 235, 0, 236, 0, 0, 0, + 0, 237, 0, 238, 239, 240, 241, 242, 0, 0, + 0, 0, 243, 0, 0, 244, 245, 246, 0, 0, + 0, 247, 0, 248, 249, 0, 250, 251, 252, 0, + 253, 254, 0, 255, 256, 257, 258, 259, 260, 261, + 0, 0, 262, 263, 264, 265, 0, 0, 266, 267, + 0, 268, 269, 270, 0, 0, 271, 0, 0, 0, + 272, 273, 0, 274, 0, 275, 0, 276, 277, 278, + 279, 280, 281, 282, 0, 283, 0, 0, 284, 285, + 286, 0, 287, 0, 0, 0, 288, 289, 0, 0, + 0, 290, 291, 292, 293, 294, 0, 0, 0, 295, + 296, 297, 0, 0, 298, 0, 0, 0, 0, 299, + 300, 0, 0, 0, 301, 0, 302, 303, 0, 304, + 305, 0, 0, 0, 306, 0, 0, 307, 308, 309, + 0, 0, 310, 0, 0, 311, 312, 0, 0, 0, + 0, 0, 313, 314, 0, 315, 0, 316, 0, 317, + 318, 0, 0, 0, 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 0, 334, 335, 336, 337, 0, 338, 339, - 340, 341, 0, 342, 343, 344, 0, 0, 0, 0, - 345, 346, 347, 348, 349, 350, 0, 0, 351, 352, - 0, 353, 0, 354, 0, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 365, 0, 0, - 366, 2001, 368, 369, 0, 0, 0, 370, 371, 0, - 0, 0, 372, 0, 373, 374, 375, 0, 376, 377, - 378, 379, 0, 380, 381, 0, 0, 0, 0, 0, - 0, 0, 0, 382, 383, 384, 0, 0, 385, 0, - 386, 0, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 0, 0, 397, 398, 399, 0, 400, 0, - 401, 402, 403, 404, 405, 0, 406, 407, 408, 0, - 0, 409, 0, 0, 0, 410, 411, 412, 413, 414, - 0, 0, 415, 416, 417, 418, 419, 0, 420, 421, - 0, 422, 423, 424, 0, 0, 425, 0, 426, 0, - 427, 428, 0, 429, 430, 0, 431, 0, 432, 0, - 0, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 0, 445, 446, 0, 0, 0, 447, - 448, 449, 450, 0, 0, 0, 451, 0, 0, 0, - 452, 0, 453, 454, 455, 456, 457, 458, 0, 459, - 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, - 0, 465, 466, 0, 467, 0, 0, 468, 0, 0, - 0, 469, 470, 471, 0, 0, 0, 472, 0, 0, - 473, 474, 0, 475, 476, 477, 478, 479, 480, 0, - 0, 481, 482, 483, 484, 0, 485, 486, 0, 0, - 487, 488, 489, 490, 0, 0, 491, 492, 0, 493, - 494, 495, 496, 0, 0, 0, 0, 0, 497, 498, - 499, 0, 0, 0, 500, 501, 502, 503, 0, 504, - 505, 0, 506, 507, 0, 508, 509, 0, 0, 510, - 0, 0, 511, 0, 512, 0, 513, 514, 0, 0, - 0, 0, 0, 0, 515, 0, 0, 516, 0, 0, - 0, 517, 518, 519, 520, 521, 522, 523, 0, 0, - 0, 0, 0, 0, 524, 525, 0, 526, 527, 528, - 0, 159, 529, 160, 161, 162, 163, 164, 165, 0, - 0, 166, 0, 0, 0, 167, 0, 0, 0, 0, - 169, 170, 171, 172, 173, 174, 175, 176, 0, 0, - 923, 0, 0, 0, 179, 0, 0, 0, 180, 0, - 0, 181, 182, 183, 0, 184, 0, 0, 0, 0, - 0, 187, 7, 0, 188, 189, 0, 190, 0, 0, - 0, 0, 0, 194, 195, 196, 924, 198, 199, 0, - 200, 201, 0, 0, 0, 0, 0, 0, 207, 0, - 209, 0, 211, 212, 213, 214, 0, 215, 216, 0, - 217, 218, 219, 0, 221, 0, 222, 0, 0, 223, - 0, 0, 224, 0, 225, 0, 0, 226, 0, 227, - 0, 0, 0, 228, 229, 230, 0, 0, 231, 0, - 0, 0, 0, 232, 0, 0, 0, 0, 0, 234, - 0, 235, 0, 0, 0, 0, 236, 0, 237, 238, - 239, 240, 241, 0, 0, 0, 0, 0, 0, 0, - 243, 244, 245, 0, -338, -338, 246, 0, -338, 248, - 0, 249, 250, 251, 0, 252, 253, 0, 254, 255, - 256, 257, 258, 0, 0, 0, 0, 261, 262, 263, - 264, 0, 0, 265, 266, 925, 267, 268, 269, 0, - 0, 0, 0, 0, 0, 0, 272, 0, 273, 0, - 274, 0, 275, 276, 277, 278, 279, 0, 281, 0, - 282, 0, 0, 0, 284, 285, 0, 0, 0, 0, - 0, 0, 288, 0, 0, 0, 289, 290, 291, 292, - 293, 26, 0, 0, 294, 295, 296, 0, 0, 297, - 0, 0, 0, 0, 298, 0, 0, 0, 0, 300, - 0, 301, 302, 0, 303, 304, 926, 0, 0, 305, - 0, 0, 0, 307, 308, 0, 0, 309, 927, 0, - 310, 311, 0, 0, 0, 0, 0, 312, 313, 0, - 314, 0, 315, 0, 316, 317, 0, 0, 0, 0, - 32, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, - 335, 336, 337, 0, 338, 339, 340, 341, 0, 342, - 343, 344, 0, 0, 0, 0, 345, 346, 347, 348, - 349, 350, 0, 0, 351, 352, 0, 353, 0, 354, - 0, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 365, 0, 0, 366, 367, 368, 369, - 0, 0, 0, 0, 371, 0, 0, 0, 372, 0, - 373, 374, 375, 0, 376, 377, 378, 928, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 383, 384, 0, 0, 0, 0, 386, 0, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 0, 0, 0, - 0, 398, 399, 0, 400, 0, 401, 402, 403, 404, - 405, 0, 406, 407, 408, 0, 0, 409, 0, 0, - 0, 410, 411, 412, 413, 414, 0, 0, 415, 416, - 417, 418, 419, 0, 420, 0, 0, 422, 0, 424, - 41, 0, 425, 0, 0, 0, 427, 0, 0, 429, - 430, 0, 431, 929, 432, 0, 0, 433, 0, 435, - 436, 437, 438, 439, 440, 441, 0, 443, 444, 0, - 445, 0, 0, 0, 0, 447, 448, 449, 0, 0, - 0, 0, 451, 0, 0, 0, 0, 0, 0, 454, - 0, 0, 457, 458, 0, 459, 0, 461, 0, 463, - 464, 0, 0, 0, 0, 0, 0, 465, 466, 0, - 467, 0, 0, 468, 0, 0, 0, 469, 0, 471, - 0, 0, 0, 472, 0, 0, 0, 474, 0, 475, - 476, 477, 478, 479, 480, 0, 0, 481, 482, 483, - 484, 0, 485, 486, 0, 0, 487, 488, 489, 490, - 0, 0, 491, 492, 0, 493, 494, 495, 496, 0, - 0, 0, 0, 0, 497, 498, 499, 0, 0, 0, - 0, 501, 502, 503, 0, 504, 505, 0, 506, 507, - 0, 0, 0, 0, 0, 510, 0, 0, 511, 0, - 0, 0, 513, 514, 0, 0, 0, 0, 0, 0, - 515, 0, 0, 516, 0, 0, 0, 517, 518, 519, - 520, 521, 522, 523, 0, 0, 60, 0, 0, 0, - 524, 0, 0, 526, 0, 528, 0, 159, 529, 160, - 161, 162, 163, 164, 165, 0, 0, 166, 0, 0, - 0, 167, 0, 0, 0, 0, 169, 170, 171, 172, - 173, 174, 175, 176, 0, 0, 923, 0, 0, 0, - 179, 0, 0, 0, 180, 0, 0, 181, 182, 183, - 0, 184, 0, 0, 0, 0, 0, 187, 7, 0, - 188, 189, 0, 190, 0, 0, 0, 0, 0, 194, - 195, 196, 924, 198, 199, 0, 200, 201, 0, 0, - 0, 0, 0, 0, 207, 0, 209, 0, 211, 212, - 213, 214, 0, 215, 216, 0, 217, 218, 219, 0, - 221, 0, 222, 0, 0, 223, 0, 0, 224, 0, - 225, 0, 0, 226, 0, 227, 0, 0, 0, 228, - 229, 230, 0, 0, 231, 0, 0, 0, 0, 232, - 0, 0, 0, 0, 0, 234, 0, 235, 0, 0, - 0, 0, 236, 0, 237, 238, 239, 240, 241, 0, - 0, 0, 0, 0, 0, 0, 243, 244, 245, 0, - -358, 0, 246, 0, -358, 248, 0, 249, 250, 251, - 0, 252, 253, 0, 254, 255, 256, 257, 258, 0, - 0, 0, 0, 261, 262, 263, 264, 0, 0, 265, - 266, 925, 267, 268, 269, 0, 0, 0, 0, 0, - 0, 0, 272, 0, 273, 0, 274, 0, 275, 276, - 277, 278, 279, 0, 281, 0, 282, 0, 0, 0, - 284, 285, 0, 0, 0, 0, 0, 0, 288, 0, - 0, 0, 289, 290, 291, 292, 293, 26, 0, 0, - 294, 295, 296, 0, 0, 297, 0, 0, 0, 0, - 298, 0, 0, 0, 0, 300, 0, 301, 302, 0, - 303, 304, 926, 0, 0, 305, 0, 0, 0, 307, - 308, 0, 0, 309, 927, 0, 310, 311, 0, 0, - 0, 0, 0, 312, 313, 0, 314, 0, 315, 0, - 316, 317, 0, 0, 0, 0, 32, 0, 318, 319, + 332, 333, 334, 0, 335, 336, 337, 338, 0, 339, + 340, 341, 342, 0, 343, 344, 345, 0, 0, 0, + 0, 346, 347, 348, 349, 350, 351, 0, 0, 352, + 353, 0, 354, 0, 355, 0, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 0, 0, 366, 0, + 0, 367, 368, 369, 370, 0, 0, 0, 371, 372, + 0, 0, 0, 373, 0, 374, 375, 376, 0, 377, + 378, 379, 380, 0, 381, 382, 0, 0, 0, 0, + 0, 0, 0, 0, 383, 384, 385, 0, 0, 386, + 0, 387, 0, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 0, 0, 398, 399, 400, 0, 401, + 0, 402, 403, 404, 405, 406, 0, 407, 408, 409, + 0, 0, 410, 0, 0, 0, 411, 412, 413, 414, + 415, 0, 0, 416, 417, 418, 419, 420, 0, 421, + 422, 0, 423, 424, 425, 0, 0, 426, 0, 427, + 0, 428, 429, 0, 430, 431, 0, 432, 0, 433, + 0, 0, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 0, 446, 447, 0, 0, 0, + 448, 449, 450, 451, 0, 0, 0, 452, 0, 0, + 0, 453, 0, 454, 455, 456, 457, 458, 459, 0, + 460, 461, 462, 463, 464, 465, 0, 0, 0, 0, + 0, 0, 466, 467, 0, 468, 0, 0, 469, 0, + 0, 0, 470, 471, 472, 0, 0, 0, 473, 0, + 0, 474, 475, 0, 476, 477, 478, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 0, + 0, 488, 489, 490, 491, 0, 0, 492, 493, 0, + 494, 495, 496, 497, 0, 0, 0, 0, 0, 498, + 499, 500, 0, 0, 0, 501, 502, 503, 504, 0, + 505, 506, 0, 507, 508, 0, 509, 510, 0, 0, + 511, 0, 0, 512, 0, 513, 0, 514, 515, 0, + 0, 0, 0, 0, 0, 516, 0, 0, 517, 0, + 0, 0, 518, 519, 520, 521, 522, 523, 524, 0, + 0, 0, 0, 0, 0, 525, 526, 0, 527, 528, + 529, 0, 160, 530, 161, 162, 163, 164, 165, 166, + 0, 0, 167, 0, 0, 0, 168, 0, 0, 169, + 0, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 0, 179, 0, 0, 0, 180, 0, 0, 0, 181, + 0, 0, 182, 183, 184, 0, 185, 0, 186, 187, + 0, 0, 188, 0, 0, 189, 190, 0, 191, 192, + 0, 193, 194, 0, 195, 196, 197, 198, 199, 200, + 0, 201, 202, 203, 204, 205, 206, 207, 0, 208, + 209, 210, 211, 212, 213, 214, 215, 0, 216, 217, + 0, 218, 219, 220, 221, 222, 0, 223, 0, 0, + 224, 0, 0, 225, 0, 226, 0, 0, 227, 0, + 228, 0, 0, 0, 229, 230, 231, 0, 0, 232, + 0, 0, 0, 0, 233, 234, 0, 0, 0, 0, + 235, 0, 236, 0, 0, 0, 0, 237, 0, 238, + 239, 240, 241, 242, 0, 0, 0, 0, 243, 0, + 0, 244, 245, 246, 0, 0, 0, 247, 0, 248, + 249, 0, 250, 251, 252, 0, 253, 254, 0, 255, + 256, 257, 258, 259, 260, 261, 0, 0, 262, 263, + 264, 265, 0, 0, 266, 267, 0, 268, 2004, 270, + 0, 0, 271, 0, 0, 0, 272, 273, 0, 274, + 0, 275, 0, 276, 277, 278, 279, 280, 281, 282, + 0, 283, 0, 0, 284, 285, 286, 0, 287, 0, + 0, 0, 288, 289, 0, 0, 0, 290, 291, 292, + 293, 294, 0, 0, 0, 295, 296, 297, 0, 0, + 298, 0, 0, 0, 0, 299, 300, 0, 0, 0, + 301, 0, 302, 303, 0, 304, 305, 0, 0, 0, + 306, 0, 0, 307, 308, 309, 0, 0, 310, 0, + 0, 311, 312, 0, 0, 0, 0, 0, 313, 314, + 0, 315, 0, 316, 0, 317, 318, 0, 0, 0, + 0, 0, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 334, 0, + 335, 336, 337, 338, 0, 339, 340, 341, 342, 0, + 343, 344, 345, 0, 0, 0, 0, 346, 347, 348, + 349, 350, 351, 0, 0, 352, 353, 0, 354, 0, + 355, 0, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 0, 0, 366, 0, 0, 367, 2005, 369, + 370, 0, 0, 0, 371, 372, 0, 0, 0, 373, + 0, 374, 375, 376, 0, 377, 378, 379, 380, 0, + 381, 382, 0, 0, 0, 0, 0, 0, 0, 0, + 383, 384, 385, 0, 0, 386, 0, 387, 0, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 0, + 0, 398, 399, 400, 0, 401, 0, 402, 403, 404, + 405, 406, 0, 407, 408, 409, 0, 0, 410, 0, + 0, 0, 411, 412, 413, 414, 415, 0, 0, 416, + 417, 418, 419, 420, 0, 421, 422, 0, 423, 424, + 425, 0, 0, 426, 0, 427, 0, 428, 429, 0, + 430, 431, 0, 432, 0, 433, 0, 0, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 0, 446, 447, 0, 0, 0, 448, 449, 450, 451, + 0, 0, 0, 452, 0, 0, 0, 453, 0, 454, + 455, 456, 457, 458, 459, 0, 460, 461, 462, 463, + 464, 465, 0, 0, 0, 0, 0, 0, 466, 467, + 0, 468, 0, 0, 469, 0, 0, 0, 470, 471, + 472, 0, 0, 0, 473, 0, 0, 474, 475, 0, + 476, 477, 478, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 0, 0, 488, 489, 490, + 491, 0, 0, 492, 493, 0, 494, 495, 496, 497, + 0, 0, 0, 0, 0, 498, 499, 500, 0, 0, + 0, 501, 502, 503, 504, 0, 505, 506, 0, 507, + 508, 0, 509, 510, 0, 0, 511, 0, 0, 512, + 0, 513, 0, 514, 515, 0, 0, 0, 0, 0, + 0, 516, 0, 0, 517, 0, 0, 0, 518, 519, + 520, 521, 522, 523, 524, 0, 0, 0, 0, 0, + 0, 525, 526, 0, 527, 528, 529, 0, 160, 530, + 161, 162, 163, 164, 165, 166, 0, 0, 167, 0, + 0, 0, 168, 0, 0, 0, 0, 170, 171, 172, + 173, 174, 175, 176, 177, 0, 0, 925, 0, 0, + 0, 180, 0, 0, 0, 181, 0, 0, 182, 183, + 184, 0, 185, 0, 0, 0, 0, 0, 188, 7, + 0, 189, 190, 0, 191, 0, 0, 0, 0, 0, + 195, 196, 197, 926, 199, 200, 0, 201, 202, 0, + 0, 0, 0, 0, 0, 208, 0, 210, 0, 212, + 213, 214, 215, 0, 216, 217, 0, 218, 219, 220, + 0, 222, 0, 223, 0, 0, 224, 0, 0, 225, + 0, 226, 0, 0, 227, 0, 228, 0, 0, 0, + 229, 230, 231, 0, 0, 232, 0, 0, 0, 0, + 233, 0, 0, 0, 0, 0, 235, 0, 236, 0, + 0, 0, 0, 237, 0, 238, 239, 240, 241, 242, + 0, 0, 0, 0, 0, 0, 0, 244, 245, 246, + 0, -338, -338, 247, 0, -338, 249, 0, 250, 251, + 252, 0, 253, 254, 0, 255, 256, 257, 258, 259, + 0, 0, 0, 0, 262, 263, 264, 265, 0, 0, + 266, 267, 927, 268, 269, 270, 0, 0, 0, 0, + 0, 0, 0, 273, 0, 274, 0, 275, 0, 276, + 277, 278, 279, 280, 0, 282, 0, 283, 0, 0, + 0, 285, 286, 0, 0, 0, 0, 0, 0, 289, + 0, 0, 0, 290, 291, 292, 293, 294, 26, 0, + 0, 295, 296, 297, 0, 0, 298, 0, 0, 0, + 0, 299, 0, 0, 0, 0, 301, 0, 302, 303, + 0, 304, 305, 928, 0, 0, 306, 0, 0, 0, + 308, 309, 0, 0, 310, 929, 0, 311, 312, 0, + 0, 0, 0, 0, 313, 314, 0, 315, 0, 316, + 0, 317, 318, 0, 0, 0, 0, 32, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 0, 334, 335, 336, 337, 0, - 338, 339, 340, 341, 0, 342, 343, 344, 0, 0, - 0, 0, 345, 346, 347, 348, 349, 350, 0, 0, - 351, 352, 0, 353, 0, 354, 0, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 365, - 0, 0, 366, 367, 368, 369, 0, 0, 0, 0, - 371, 0, 0, 0, 372, 0, 373, 374, 375, 0, - 376, 377, 378, 928, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 383, 384, 0, 0, - 0, 0, 386, 0, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 0, 0, 0, 0, 398, 399, 0, - 400, 0, 401, 402, 403, 404, 405, 0, 406, 407, - 408, 0, 0, 409, 0, 0, 0, 410, 411, 412, - 413, 414, 0, 0, 415, 416, 417, 418, 419, 0, - 420, 0, 0, 422, 0, 424, 41, 0, 425, 0, - 0, 0, 427, 0, 0, 429, 430, 0, 431, 929, - 432, 0, 0, 433, 0, 435, 436, 437, 438, 439, - 440, 441, 0, 443, 444, 0, 445, 0, 0, 0, - 0, 447, 448, 449, 0, 0, 0, 0, 451, 0, - 0, 0, 0, 0, 0, 454, 0, 0, 457, 458, - 0, 459, 0, 461, 0, 463, 464, 0, 0, 0, - 0, 0, 0, 465, 466, 0, 467, 0, 0, 468, - 0, 0, 0, 469, 0, 471, 0, 0, 0, 472, - 0, 0, 0, 474, 0, 475, 476, 477, 478, 479, - 480, 0, 0, 481, 482, 483, 484, 0, 485, 486, - 0, 0, 487, 488, 489, 490, 0, 0, 491, 492, - 0, 493, 494, 495, 496, 0, 0, 0, 0, 0, - 497, 498, 499, 0, 0, 0, 0, 501, 502, 503, - 0, 504, 505, 0, 506, 507, 0, 0, 0, 0, - 0, 510, 0, 0, 511, 0, 0, 0, 513, 514, - 0, 0, 0, 0, 0, 0, 515, 0, 0, 516, - 0, 0, 0, 517, 518, 519, 520, 521, 522, 523, - -358, 0, 60, 0, 0, 0, 524, 0, 0, 526, - 0, 528, 0, 159, 529, 160, 161, 162, 163, 164, - 165, 0, 0, 166, 0, 0, 0, 167, 0, 0, - 0, 0, 169, 170, 171, 172, 173, 174, 175, 176, - 0, 0, 923, 0, 0, 0, 179, 0, 0, 0, - 180, 0, 0, 181, 182, 183, 0, 184, 0, 0, - 0, 0, 0, 187, 7, 0, 188, 189, 0, 190, - 0, 0, 0, 0, 0, 194, 195, 196, 924, 198, - 199, 0, 200, 201, 0, 0, 0, 0, 0, 0, - 207, 0, 209, 0, 211, 212, 213, 214, 0, 215, - 216, 0, 217, 218, 219, 0, 221, 0, 222, 0, - 0, 223, 0, 0, 224, 0, 225, 0, 0, 226, - 0, 227, 0, 0, 0, 228, 229, 230, 0, 0, - 231, 0, 0, 0, 0, 232, 0, 0, 0, 0, - 0, 234, 0, 235, 0, 0, 0, 0, 236, 0, - 237, 238, 239, 240, 241, 0, 0, 0, 0, 0, - 0, 0, 243, 244, 245, 0, -355, 0, 246, 0, - -355, 248, 0, 249, 250, 251, 0, 252, 253, 0, - 254, 255, 256, 257, 258, 0, 0, 0, 0, 261, - 262, 263, 264, 0, 0, 265, 266, 925, 267, 268, - 269, 0, 0, 0, 0, 0, 0, 0, 272, 0, - 273, 0, 274, 0, 275, 276, 277, 278, 279, 0, - 281, 0, 282, 0, 0, 0, 284, 285, 0, 0, - 0, 0, 0, 0, 288, 0, 0, 0, 289, 290, - 291, 292, 293, 26, 0, 0, 294, 295, 296, 0, - 0, 297, 0, 0, 0, 0, 298, 0, 0, 0, - 0, 300, 0, 301, 302, 0, 303, 304, 926, 0, - 0, 305, 0, 0, 0, 307, 308, 0, 0, 309, - 927, 0, 310, 311, 0, 0, 0, 0, 0, 312, - 313, 0, 314, 0, 315, 0, 316, 317, 0, 0, - 0, 0, 32, 0, 318, 319, 320, 321, 322, 323, + 330, 331, 332, 333, 334, 0, 335, 336, 337, 338, + 0, 339, 340, 341, 342, 0, 343, 344, 345, 0, + 0, 0, 0, 346, 347, 348, 349, 350, 351, 0, + 0, 352, 353, 0, 354, 0, 355, 0, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 0, 0, + 366, 0, 0, 367, 368, 369, 370, 0, 0, 0, + 0, 372, 0, 0, 0, 373, 0, 374, 375, 376, + 0, 377, 378, 379, 930, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 384, 385, 0, + 0, 0, 0, 387, 0, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 0, 0, 0, 0, 399, 400, + 0, 401, 0, 402, 403, 404, 405, 406, 0, 407, + 408, 409, 0, 0, 410, 0, 0, 0, 411, 412, + 413, 414, 415, 0, 0, 416, 417, 418, 419, 420, + 0, 421, 0, 0, 423, 0, 425, 41, 0, 426, + 0, 0, 0, 428, 0, 0, 430, 431, 0, 432, + 931, 433, 0, 0, 434, 0, 436, 437, 438, 439, + 440, 441, 442, 0, 444, 445, 0, 446, 0, 0, + 0, 0, 448, 449, 450, 0, 0, 0, 0, 452, + 0, 0, 0, 0, 0, 0, 455, 0, 0, 458, + 459, 0, 460, 0, 462, 0, 464, 465, 0, 0, + 0, 0, 0, 0, 466, 467, 0, 468, 0, 0, + 469, 0, 0, 0, 470, 0, 472, 0, 0, 0, + 473, 0, 0, 0, 475, 0, 476, 477, 478, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 0, 0, 488, 489, 490, 491, 0, 0, 492, + 493, 0, 494, 495, 496, 497, 0, 0, 0, 0, + 0, 498, 499, 500, 0, 0, 0, 0, 502, 503, + 504, 0, 505, 506, 0, 507, 508, 0, 0, 0, + 0, 0, 511, 0, 0, 512, 0, 0, 0, 514, + 515, 0, 0, 0, 0, 0, 0, 516, 0, 0, + 517, 0, 0, 0, 518, 519, 520, 521, 522, 523, + 524, 0, 0, 60, 0, 0, 0, 525, 0, 0, + 527, 0, 529, 0, 160, 530, 161, 162, 163, 164, + 165, 166, 0, 0, 167, 0, 0, 0, 168, 0, + 0, 0, 0, 170, 171, 172, 173, 174, 175, 176, + 177, 0, 0, 925, 0, 0, 0, 180, 0, 0, + 0, 181, 0, 0, 182, 183, 184, 0, 185, 0, + 0, 0, 0, 0, 188, 7, 0, 189, 190, 0, + 191, 0, 0, 0, 0, 0, 195, 196, 197, 926, + 199, 200, 0, 201, 202, 0, 0, 0, 0, 0, + 0, 208, 0, 210, 0, 212, 213, 214, 215, 0, + 216, 217, 0, 218, 219, 220, 0, 222, 0, 223, + 0, 0, 224, 0, 0, 225, 0, 226, 0, 0, + 227, 0, 228, 0, 0, 0, 229, 230, 231, 0, + 0, 232, 0, 0, 0, 0, 233, 0, 0, 0, + 0, 0, 235, 0, 236, 0, 0, 0, 0, 237, + 0, 238, 239, 240, 241, 242, 0, 0, 0, 0, + 0, 0, 0, 244, 245, 246, 0, -358, 0, 247, + 0, -358, 249, 0, 250, 251, 252, 0, 253, 254, + 0, 255, 256, 257, 258, 259, 0, 0, 0, 0, + 262, 263, 264, 265, 0, 0, 266, 267, 927, 268, + 269, 270, 0, 0, 0, 0, 0, 0, 0, 273, + 0, 274, 0, 275, 0, 276, 277, 278, 279, 280, + 0, 282, 0, 283, 0, 0, 0, 285, 286, 0, + 0, 0, 0, 0, 0, 289, 0, 0, 0, 290, + 291, 292, 293, 294, 26, 0, 0, 295, 296, 297, + 0, 0, 298, 0, 0, 0, 0, 299, 0, 0, + 0, 0, 301, 0, 302, 303, 0, 304, 305, 928, + 0, 0, 306, 0, 0, 0, 308, 309, 0, 0, + 310, 929, 0, 311, 312, 0, 0, 0, 0, 0, + 313, 314, 0, 315, 0, 316, 0, 317, 318, 0, + 0, 0, 0, 32, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 0, 334, 335, 336, 337, 0, 338, 339, 340, 341, - 0, 342, 343, 344, 0, 0, 0, 0, 345, 346, - 347, 348, 349, 350, 0, 0, 351, 352, 0, 353, - 0, 354, 0, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 365, 0, 0, 366, 367, - 368, 369, 0, 0, 0, 0, 371, 0, 0, 0, - 372, 0, 373, 374, 375, 0, 376, 377, 378, 928, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 383, 384, 0, 0, 0, 0, 386, 0, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 0, - 0, 0, 0, 398, 399, 0, 400, 0, 401, 402, - 403, 404, 405, 0, 406, 407, 408, 0, 0, 409, - 0, 0, 0, 410, 411, 412, 413, 414, 0, 0, - 415, 416, 417, 418, 419, 0, 420, 0, 0, 422, - 0, 424, 41, 0, 425, 0, 0, 0, 427, 0, - 0, 429, 430, 0, 431, 929, 432, 0, 0, 433, - 0, 435, 436, 437, 438, 439, 440, 441, 0, 443, - 444, 0, 445, 0, 0, 0, 0, 447, 448, 449, - 0, 0, 0, 0, 451, 0, 0, 0, 0, 0, - 0, 454, 0, 0, 457, 458, 0, 459, 0, 461, - 0, 463, 464, 0, 0, 0, 0, 0, 0, 465, - 466, 0, 467, 0, 0, 468, 0, 0, 0, 469, - 0, 471, 0, 0, 0, 472, 0, 0, 0, 474, - 0, 475, 476, 477, 478, 479, 480, 0, 0, 481, - 482, 483, 484, 0, 485, 486, 0, 0, 487, 488, - 489, 490, 0, 0, 491, 492, 0, 493, 494, 495, - 496, 0, 0, 0, 0, 0, 497, 498, 499, 0, - 0, 0, 0, 501, 502, 503, 0, 504, 505, 0, - 506, 507, 0, 0, 0, 0, 0, 510, 0, 0, - 511, 0, 0, 0, 513, 514, 0, 0, 0, 0, - 0, 0, 515, 0, 0, 516, 0, 0, 0, 517, - 518, 519, 520, 521, 522, 523, -355, 0, 60, 0, - 0, 0, 524, 0, 0, 526, 0, 528, 0, 159, - 529, 160, 161, 162, 163, 164, 165, 0, 0, 166, - 0, 0, 0, 167, 0, 0, 0, 0, 169, 170, - 171, 172, 173, 174, 175, 176, 0, 0, 923, 0, - 0, 0, 179, 0, 0, 0, 180, 0, 0, 181, - 182, 183, 0, 184, 0, 0, 0, 0, 0, 187, - 7, 0, 188, 189, 0, 190, 0, 0, 0, 0, - 0, 194, 195, 196, 924, 198, 199, 0, 200, 201, - 0, 0, 0, 0, 0, 0, 207, 0, 209, 0, - 211, 212, 213, 214, 0, 215, 216, 0, 217, 218, - 219, 0, 221, 0, 222, 0, 0, 223, 0, 0, - 224, 0, 225, 0, 0, 226, 0, 227, 0, 0, - 0, 228, 229, 230, 0, 0, 231, 0, 0, 0, - 0, 232, 0, 0, 0, 0, 0, 234, 0, 235, - 0, 0, 0, 0, 236, 0, 237, 238, 239, 240, - 241, 0, 0, 0, 0, 0, 0, 0, 243, 244, - 245, 0, 0, 0, 246, 0, 1439, 248, 0, 249, - 250, 251, 0, 252, 253, 0, 254, 255, 256, 257, - 258, 0, 0, 0, 0, 261, 262, 263, 264, 0, - 0, 265, 266, 925, 267, 268, 269, 0, 0, 0, - 0, 0, 0, 0, 272, 0, 273, 0, 274, 0, - 275, 276, 277, 278, 279, 0, 281, 0, 282, 0, - 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, - 288, 0, 0, 0, 289, 290, 291, 292, 293, 26, - 0, 0, 294, 295, 296, 0, 0, 297, 0, 0, - 0, 0, 298, 0, 0, 0, 0, 300, 0, 301, - 302, 0, 303, 304, 926, 0, 0, 305, 0, 0, - 0, 307, 308, 0, 0, 309, 927, 0, 310, 311, - 0, 0, 0, 0, 0, 312, 313, 0, 314, 0, - 315, 0, 316, 317, 0, 0, 0, 0, 32, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 0, 334, 335, 336, - 337, 0, 338, 339, 340, 341, 0, 342, 343, 344, - 0, 0, 0, 0, 345, 346, 347, 348, 349, 350, - 0, 0, 351, 352, 0, 353, 0, 354, 0, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 365, 0, 0, 366, 367, 368, 369, 0, 0, - 0, 0, 371, 0, 0, 0, 372, 0, 373, 374, - 375, 0, 376, 377, 378, 928, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 383, 384, - 0, 0, 0, 0, 386, 0, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 0, 0, 0, 0, 398, - 399, 0, 400, 0, 401, 402, 403, 404, 405, 0, - 406, 407, 408, 0, 0, 409, 0, 0, 0, 410, - 411, 412, 413, 414, 0, 0, 415, 416, 417, 418, - 419, 0, 420, 0, 0, 422, 0, 424, 41, 0, - 425, 0, 0, 0, 427, 0, 0, 429, 430, 0, - 431, 929, 432, 0, 0, 433, 0, 435, 436, 437, - 438, 439, 440, 441, 0, 443, 444, 0, 445, 0, - 0, 0, 0, 447, 448, 449, 0, 0, 0, 0, - 451, 0, 0, 0, 0, 0, 0, 454, 0, 0, - 457, 458, 0, 459, 0, 461, 0, 463, 464, 0, - 0, 0, 0, 0, 0, 465, 466, 0, 467, 0, - 0, 468, 0, 0, 0, 469, 0, 471, 0, 0, - 0, 472, 0, 0, 0, 474, 0, 475, 476, 477, - 478, 479, 480, 0, 0, 481, 482, 483, 484, 0, - 485, 486, 0, 0, 487, 488, 489, 490, 0, 0, - 491, 492, 0, 493, 494, 495, 496, 0, 0, 0, - 0, 0, 497, 498, 499, 0, 0, 0, 0, 501, - 502, 503, 0, 504, 505, 0, 506, 507, 0, 0, - 0, 0, 0, 510, 0, 0, 511, 0, 0, 0, - 513, 514, 0, 0, 0, 0, 0, 0, 515, 0, - 0, 516, 0, 0, 0, 517, 518, 519, 520, 521, - 522, 523, 0, 0, 60, 0, 0, 0, 524, 0, - 0, 526, 0, 528, 0, 159, 529, 160, 161, 162, - 163, 164, 165, 0, 0, 166, 0, 0, 0, 167, - 0, 0, 0, 0, 169, 170, 171, 172, 173, 174, - 175, 176, 0, 0, 923, 0, 0, 0, 179, 0, - 0, 0, 180, 0, 0, 181, 182, 183, 0, 184, - 0, 0, 0, 0, 0, 187, 7, 0, 188, 189, - 0, 190, 0, 0, 0, 0, 0, 194, 195, 196, - 924, 198, 199, 0, 200, 201, 0, 0, 0, 0, - 0, 0, 207, 0, 209, 0, 211, 212, 213, 214, - 0, 215, 216, 0, 217, 218, 219, 0, 221, 0, - 222, 0, 0, 223, 0, 0, 224, 0, 225, 0, - 0, 226, 0, 227, 0, 0, 0, 228, 229, 230, - 0, 0, 231, 0, 0, 0, 0, 232, 0, 0, - 0, 0, 0, 234, 0, 235, 0, 0, 0, 0, - 236, 0, 237, 238, 239, 240, 241, 0, 0, 0, - 0, 0, 0, 0, 243, 244, 245, 0, 0, 0, - 246, 0, -360, 248, 0, 249, 250, 251, 0, 252, - 253, 0, 254, 255, 256, 257, 258, 0, 0, 0, - 0, 261, 262, 263, 264, 0, 0, 265, 266, 925, - 267, 268, 269, 0, 0, 0, 0, 0, 0, 0, - 272, 0, 273, 0, 274, 0, 275, 276, 277, 278, - 279, 0, 281, 0, 282, 0, 0, 0, 284, 285, - 0, 0, 0, 0, 0, 0, 288, 0, 0, 0, - 289, 290, 291, 292, 293, 26, 0, 0, 294, 295, - 296, 0, 0, 297, 0, 0, 0, 0, 298, 0, - 0, 0, 0, 300, 0, 301, 302, 0, 303, 304, - 926, 0, 0, 305, 0, 0, 0, 307, 308, 0, - 0, 309, 927, 0, 310, 311, 0, 0, 0, 0, - 0, 312, 313, 0, 314, 0, 315, 0, 316, 317, - 0, 0, 0, 0, 32, 0, 318, 319, 320, 321, + 334, 0, 335, 336, 337, 338, 0, 339, 340, 341, + 342, 0, 343, 344, 345, 0, 0, 0, 0, 346, + 347, 348, 349, 350, 351, 0, 0, 352, 353, 0, + 354, 0, 355, 0, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 0, 0, 366, 0, 0, 367, + 368, 369, 370, 0, 0, 0, 0, 372, 0, 0, + 0, 373, 0, 374, 375, 376, 0, 377, 378, 379, + 930, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 384, 385, 0, 0, 0, 0, 387, + 0, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 0, 0, 0, 0, 399, 400, 0, 401, 0, 402, + 403, 404, 405, 406, 0, 407, 408, 409, 0, 0, + 410, 0, 0, 0, 411, 412, 413, 414, 415, 0, + 0, 416, 417, 418, 419, 420, 0, 421, 0, 0, + 423, 0, 425, 41, 0, 426, 0, 0, 0, 428, + 0, 0, 430, 431, 0, 432, 931, 433, 0, 0, + 434, 0, 436, 437, 438, 439, 440, 441, 442, 0, + 444, 445, 0, 446, 0, 0, 0, 0, 448, 449, + 450, 0, 0, 0, 0, 452, 0, 0, 0, 0, + 0, 0, 455, 0, 0, 458, 459, 0, 460, 0, + 462, 0, 464, 465, 0, 0, 0, 0, 0, 0, + 466, 467, 0, 468, 0, 0, 469, 0, 0, 0, + 470, 0, 472, 0, 0, 0, 473, 0, 0, 0, + 475, 0, 476, 477, 478, 479, 480, 481, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 0, 0, 488, + 489, 490, 491, 0, 0, 492, 493, 0, 494, 495, + 496, 497, 0, 0, 0, 0, 0, 498, 499, 500, + 0, 0, 0, 0, 502, 503, 504, 0, 505, 506, + 0, 507, 508, 0, 0, 0, 0, 0, 511, 0, + 0, 512, 0, 0, 0, 514, 515, 0, 0, 0, + 0, 0, 0, 516, 0, 0, 517, 0, 0, 0, + 518, 519, 520, 521, 522, 523, 524, -358, 0, 60, + 0, 0, 0, 525, 0, 0, 527, 0, 529, 0, + 160, 530, 161, 162, 163, 164, 165, 166, 0, 0, + 167, 0, 0, 0, 168, 0, 0, 0, 0, 170, + 171, 172, 173, 174, 175, 176, 177, 0, 0, 925, + 0, 0, 0, 180, 0, 0, 0, 181, 0, 0, + 182, 183, 184, 0, 185, 0, 0, 0, 0, 0, + 188, 7, 0, 189, 190, 0, 191, 0, 0, 0, + 0, 0, 195, 196, 197, 926, 199, 200, 0, 201, + 202, 0, 0, 0, 0, 0, 0, 208, 0, 210, + 0, 212, 213, 214, 215, 0, 216, 217, 0, 218, + 219, 220, 0, 222, 0, 223, 0, 0, 224, 0, + 0, 225, 0, 226, 0, 0, 227, 0, 228, 0, + 0, 0, 229, 230, 231, 0, 0, 232, 0, 0, + 0, 0, 233, 0, 0, 0, 0, 0, 235, 0, + 236, 0, 0, 0, 0, 237, 0, 238, 239, 240, + 241, 242, 0, 0, 0, 0, 0, 0, 0, 244, + 245, 246, 0, -355, 0, 247, 0, -355, 249, 0, + 250, 251, 252, 0, 253, 254, 0, 255, 256, 257, + 258, 259, 0, 0, 0, 0, 262, 263, 264, 265, + 0, 0, 266, 267, 927, 268, 269, 270, 0, 0, + 0, 0, 0, 0, 0, 273, 0, 274, 0, 275, + 0, 276, 277, 278, 279, 280, 0, 282, 0, 283, + 0, 0, 0, 285, 286, 0, 0, 0, 0, 0, + 0, 289, 0, 0, 0, 290, 291, 292, 293, 294, + 26, 0, 0, 295, 296, 297, 0, 0, 298, 0, + 0, 0, 0, 299, 0, 0, 0, 0, 301, 0, + 302, 303, 0, 304, 305, 928, 0, 0, 306, 0, + 0, 0, 308, 309, 0, 0, 310, 929, 0, 311, + 312, 0, 0, 0, 0, 0, 313, 314, 0, 315, + 0, 316, 0, 317, 318, 0, 0, 0, 0, 32, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 0, 335, 336, + 337, 338, 0, 339, 340, 341, 342, 0, 343, 344, + 345, 0, 0, 0, 0, 346, 347, 348, 349, 350, + 351, 0, 0, 352, 353, 0, 354, 0, 355, 0, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 0, 0, 366, 0, 0, 367, 368, 369, 370, 0, + 0, 0, 0, 372, 0, 0, 0, 373, 0, 374, + 375, 376, 0, 377, 378, 379, 930, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, + 385, 0, 0, 0, 0, 387, 0, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 0, 0, 0, 0, + 399, 400, 0, 401, 0, 402, 403, 404, 405, 406, + 0, 407, 408, 409, 0, 0, 410, 0, 0, 0, + 411, 412, 413, 414, 415, 0, 0, 416, 417, 418, + 419, 420, 0, 421, 0, 0, 423, 0, 425, 41, + 0, 426, 0, 0, 0, 428, 0, 0, 430, 431, + 0, 432, 931, 433, 0, 0, 434, 0, 436, 437, + 438, 439, 440, 441, 442, 0, 444, 445, 0, 446, + 0, 0, 0, 0, 448, 449, 450, 0, 0, 0, + 0, 452, 0, 0, 0, 0, 0, 0, 455, 0, + 0, 458, 459, 0, 460, 0, 462, 0, 464, 465, + 0, 0, 0, 0, 0, 0, 466, 467, 0, 468, + 0, 0, 469, 0, 0, 0, 470, 0, 472, 0, + 0, 0, 473, 0, 0, 0, 475, 0, 476, 477, + 478, 479, 480, 481, 0, 0, 482, 483, 484, 485, + 0, 486, 487, 0, 0, 488, 489, 490, 491, 0, + 0, 492, 493, 0, 494, 495, 496, 497, 0, 0, + 0, 0, 0, 498, 499, 500, 0, 0, 0, 0, + 502, 503, 504, 0, 505, 506, 0, 507, 508, 0, + 0, 0, 0, 0, 511, 0, 0, 512, 0, 0, + 0, 514, 515, 0, 0, 0, 0, 0, 0, 516, + 0, 0, 517, 0, 0, 0, 518, 519, 520, 521, + 522, 523, 524, -355, 0, 60, 0, 0, 0, 525, + 0, 0, 527, 0, 529, 0, 160, 530, 161, 162, + 163, 164, 165, 166, 0, 0, 167, 0, 0, 0, + 168, 0, 0, 0, 0, 170, 171, 172, 173, 174, + 175, 176, 177, 0, 0, 925, 0, 0, 0, 180, + 0, 0, 0, 181, 0, 0, 182, 183, 184, 0, + 185, 0, 0, 0, 0, 0, 188, 7, 0, 189, + 190, 0, 191, 0, 0, 0, 0, 0, 195, 196, + 197, 926, 199, 200, 0, 201, 202, 0, 0, 0, + 0, 0, 0, 208, 0, 210, 0, 212, 213, 214, + 215, 0, 216, 217, 0, 218, 219, 220, 0, 222, + 0, 223, 0, 0, 224, 0, 0, 225, 0, 226, + 0, 0, 227, 0, 228, 0, 0, 0, 229, 230, + 231, 0, 0, 232, 0, 0, 0, 0, 233, 0, + 0, 0, 0, 0, 235, 0, 236, 0, 0, 0, + 0, 237, 0, 238, 239, 240, 241, 242, 0, 0, + 0, 0, 0, 0, 0, 244, 245, 246, 0, 0, + 0, 247, 0, 1442, 249, 0, 250, 251, 252, 0, + 253, 254, 0, 255, 256, 257, 258, 259, 0, 0, + 0, 0, 262, 263, 264, 265, 0, 0, 266, 267, + 927, 268, 269, 270, 0, 0, 0, 0, 0, 0, + 0, 273, 0, 274, 0, 275, 0, 276, 277, 278, + 279, 280, 0, 282, 0, 283, 0, 0, 0, 285, + 286, 0, 0, 0, 0, 0, 0, 289, 0, 0, + 0, 290, 291, 292, 293, 294, 26, 0, 0, 295, + 296, 297, 0, 0, 298, 0, 0, 0, 0, 299, + 0, 0, 0, 0, 301, 0, 302, 303, 0, 304, + 305, 928, 0, 0, 306, 0, 0, 0, 308, 309, + 0, 0, 310, 929, 0, 311, 312, 0, 0, 0, + 0, 0, 313, 314, 0, 315, 0, 316, 0, 317, + 318, 0, 0, 0, 0, 32, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 0, 334, 335, 336, 337, 0, 338, 339, - 340, 341, 0, 342, 343, 344, 0, 0, 0, 0, - 345, 346, 347, 348, 349, 350, 0, 0, 351, 352, - 0, 353, 0, 354, 0, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 365, 0, 0, - 366, 367, 368, 369, 0, 0, 0, 0, 371, 0, - 0, 0, 372, 0, 373, 374, 375, 0, 376, 377, - 378, 928, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 383, 384, 0, 0, 0, 0, - 386, 0, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 0, 0, 0, 0, 398, 399, 0, 400, 0, - 401, 402, 403, 404, 405, 0, 406, 407, 408, 0, - 0, 409, 0, 0, 0, 410, 411, 412, 413, 414, - 0, 0, 415, 416, 417, 418, 419, 0, 420, 0, - 0, 422, 0, 424, 41, 0, 425, 0, 0, 0, - 427, 0, 0, 429, 430, 0, 431, 929, 432, 0, - 0, 433, 0, 435, 436, 437, 438, 439, 440, 441, - 0, 443, 444, 0, 445, 0, 0, 0, 0, 447, - 448, 449, 0, 0, 0, 0, 451, 0, 0, 0, - 0, 0, 0, 454, 0, 0, 457, 458, 0, 459, - 0, 461, 0, 463, 464, 0, 0, 0, 0, 0, - 0, 465, 466, 0, 467, 0, 0, 468, 0, 0, - 0, 469, 0, 471, 0, 0, 0, 472, 0, 0, - 0, 474, 0, 475, 476, 477, 478, 479, 480, 0, - 0, 481, 482, 483, 484, 0, 485, 486, 0, 0, - 487, 488, 489, 490, 0, 0, 491, 492, 0, 493, - 494, 495, 496, 0, 0, 0, 0, 0, 497, 498, - 499, 0, 0, 0, 0, 501, 502, 503, 0, 504, - 505, 0, 506, 507, 0, 0, 0, 0, 0, 510, - 0, 0, 511, 0, 0, 0, 513, 514, 0, 0, - 0, 0, 0, 0, 515, 0, 0, 516, 0, 0, - 0, 517, 518, 519, 520, 521, 522, 523, 0, 0, - 60, 0, 0, 0, 524, 0, 0, 526, 0, 528, - 0, 159, 529, 160, 161, 162, 163, 164, 165, 0, - 0, 166, 0, 0, 0, 167, 0, 0, 0, 0, - 169, 170, 171, 172, 173, 174, 175, 176, 0, 0, - 923, 0, 0, 0, 179, 0, 0, 0, 180, 0, - 0, 181, 182, 183, 0, 184, 0, 0, 0, 0, - 0, 187, 7, 0, 188, 189, 0, 190, 0, 0, - 0, 0, 0, 194, 195, 196, 924, 198, 199, 0, - 200, 201, 0, 0, 0, 0, 0, 0, 207, 0, - 209, 0, 211, 212, 213, 214, 0, 215, 216, 0, - 217, 218, 219, 0, 221, 0, 222, 0, 0, 223, - 0, 0, 224, 0, 225, 0, 0, 226, 0, 227, - 0, 0, 0, 228, 229, 230, 0, 0, 231, 0, - 0, 0, 0, 232, 0, 0, 0, 0, 0, 234, - 0, 235, 0, 0, 0, 0, 236, 0, 237, 238, - 239, 240, 241, 0, 0, 0, 0, 0, 0, 0, - 243, 244, 245, 0, 0, 0, 246, 0, 3157, 248, - 0, 249, 250, 251, 0, 252, 253, 0, 254, 255, - 256, 257, 258, 0, 0, 0, 0, 261, 262, 263, - 264, 0, 0, 265, 266, 925, 267, 268, 269, 0, - 0, 0, 0, 0, 0, 0, 272, 0, 273, 0, - 274, 0, 275, 276, 277, 278, 279, 0, 281, 0, - 282, 0, 0, 0, 284, 285, 0, 0, 0, 0, - 0, 0, 288, 0, 0, 0, 289, 290, 291, 292, - 293, 26, 0, 0, 294, 295, 296, 0, 0, 297, - 0, 0, 0, 0, 298, 0, 0, 0, 0, 300, - 0, 301, 302, 0, 303, 304, 926, 0, 0, 305, - 0, 0, 0, 307, 308, 0, 0, 309, 927, 0, - 310, 311, 0, 0, 0, 0, 0, 312, 313, 0, - 314, 0, 315, 0, 316, 317, 0, 0, 0, 0, - 32, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, - 335, 336, 337, 0, 338, 339, 340, 341, 0, 342, - 343, 344, 0, 0, 0, 0, 345, 346, 347, 348, - 349, 350, 0, 0, 351, 352, 0, 353, 0, 354, - 0, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 365, 0, 0, 366, 367, 368, 369, - 0, 0, 0, 0, 371, 0, 0, 0, 372, 0, - 373, 374, 375, 0, 376, 377, 378, 928, 0, 0, + 332, 333, 334, 0, 335, 336, 337, 338, 0, 339, + 340, 341, 342, 0, 343, 344, 345, 0, 0, 0, + 0, 346, 347, 348, 349, 350, 351, 0, 0, 352, + 353, 0, 354, 0, 355, 0, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 0, 0, 366, 0, + 0, 367, 368, 369, 370, 0, 0, 0, 0, 372, + 0, 0, 0, 373, 0, 374, 375, 376, 0, 377, + 378, 379, 930, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 384, 385, 0, 0, 0, + 0, 387, 0, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 0, 0, 0, 0, 399, 400, 0, 401, + 0, 402, 403, 404, 405, 406, 0, 407, 408, 409, + 0, 0, 410, 0, 0, 0, 411, 412, 413, 414, + 415, 0, 0, 416, 417, 418, 419, 420, 0, 421, + 0, 0, 423, 0, 425, 41, 0, 426, 0, 0, + 0, 428, 0, 0, 430, 431, 0, 432, 931, 433, + 0, 0, 434, 0, 436, 437, 438, 439, 440, 441, + 442, 0, 444, 445, 0, 446, 0, 0, 0, 0, + 448, 449, 450, 0, 0, 0, 0, 452, 0, 0, + 0, 0, 0, 0, 455, 0, 0, 458, 459, 0, + 460, 0, 462, 0, 464, 465, 0, 0, 0, 0, + 0, 0, 466, 467, 0, 468, 0, 0, 469, 0, + 0, 0, 470, 0, 472, 0, 0, 0, 473, 0, + 0, 0, 475, 0, 476, 477, 478, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 0, + 0, 488, 489, 490, 491, 0, 0, 492, 493, 0, + 494, 495, 496, 497, 0, 0, 0, 0, 0, 498, + 499, 500, 0, 0, 0, 0, 502, 503, 504, 0, + 505, 506, 0, 507, 508, 0, 0, 0, 0, 0, + 511, 0, 0, 512, 0, 0, 0, 514, 515, 0, + 0, 0, 0, 0, 0, 516, 0, 0, 517, 0, + 0, 0, 518, 519, 520, 521, 522, 523, 524, 0, + 0, 60, 0, 0, 0, 525, 0, 0, 527, 0, + 529, 0, 160, 530, 161, 162, 163, 164, 165, 166, + 0, 0, 167, 0, 0, 0, 168, 0, 0, 0, + 0, 170, 171, 172, 173, 174, 175, 176, 177, 0, + 0, 925, 0, 0, 0, 180, 0, 0, 0, 181, + 0, 0, 182, 183, 184, 0, 185, 0, 0, 0, + 0, 0, 188, 7, 0, 189, 190, 0, 191, 0, + 0, 0, 0, 0, 195, 196, 197, 926, 199, 200, + 0, 201, 202, 0, 0, 0, 0, 0, 0, 208, + 0, 210, 0, 212, 213, 214, 215, 0, 216, 217, + 0, 218, 219, 220, 0, 222, 0, 223, 0, 0, + 224, 0, 0, 225, 0, 226, 0, 0, 227, 0, + 228, 0, 0, 0, 229, 230, 231, 0, 0, 232, + 0, 0, 0, 0, 233, 0, 0, 0, 0, 0, + 235, 0, 236, 0, 0, 0, 0, 237, 0, 238, + 239, 240, 241, 242, 0, 0, 0, 0, 0, 0, + 0, 244, 245, 246, 0, 0, 0, 247, 0, -360, + 249, 0, 250, 251, 252, 0, 253, 254, 0, 255, + 256, 257, 258, 259, 0, 0, 0, 0, 262, 263, + 264, 265, 0, 0, 266, 267, 927, 268, 269, 270, + 0, 0, 0, 0, 0, 0, 0, 273, 0, 274, + 0, 275, 0, 276, 277, 278, 279, 280, 0, 282, + 0, 283, 0, 0, 0, 285, 286, 0, 0, 0, + 0, 0, 0, 289, 0, 0, 0, 290, 291, 292, + 293, 294, 26, 0, 0, 295, 296, 297, 0, 0, + 298, 0, 0, 0, 0, 299, 0, 0, 0, 0, + 301, 0, 302, 303, 0, 304, 305, 928, 0, 0, + 306, 0, 0, 0, 308, 309, 0, 0, 310, 929, + 0, 311, 312, 0, 0, 0, 0, 0, 313, 314, + 0, 315, 0, 316, 0, 317, 318, 0, 0, 0, + 0, 32, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 334, 0, + 335, 336, 337, 338, 0, 339, 340, 341, 342, 0, + 343, 344, 345, 0, 0, 0, 0, 346, 347, 348, + 349, 350, 351, 0, 0, 352, 353, 0, 354, 0, + 355, 0, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 0, 0, 366, 0, 0, 367, 368, 369, + 370, 0, 0, 0, 0, 372, 0, 0, 0, 373, + 0, 374, 375, 376, 0, 377, 378, 379, 930, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 383, 384, 0, 0, 0, 0, 386, 0, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 0, 0, 0, - 0, 398, 399, 0, 400, 0, 401, 402, 403, 404, - 405, 0, 406, 407, 408, 0, 0, 409, 0, 0, - 0, 410, 411, 412, 413, 414, 0, 0, 415, 416, - 417, 418, 419, 0, 420, 0, 0, 422, 0, 424, - 41, 0, 425, 0, 0, 0, 427, 0, 0, 429, - 430, 0, 431, 929, 432, 0, 0, 433, 0, 435, - 436, 437, 438, 439, 440, 441, 0, 443, 444, 0, - 445, 0, 0, 0, 0, 447, 448, 449, 0, 0, - 0, 0, 451, 0, 0, 0, 0, 0, 0, 454, - 0, 0, 457, 458, 0, 459, 0, 461, 0, 463, - 464, 0, 0, 0, 0, 0, 0, 465, 466, 0, - 467, 0, 0, 468, 0, 0, 0, 469, 0, 471, - 0, 0, 0, 472, 0, 0, 0, 474, 0, 475, - 476, 477, 478, 479, 480, 0, 0, 481, 482, 483, - 484, 0, 485, 486, 0, 0, 487, 488, 489, 490, - 0, 0, 491, 492, 0, 493, 494, 495, 496, 0, - 0, 0, 0, 0, 497, 498, 499, 0, 0, 0, - 0, 501, 502, 503, 0, 504, 505, 0, 506, 507, - 0, 0, 0, 0, 0, 510, 0, 0, 511, 0, - 0, 0, 513, 514, 0, 0, 0, 0, 0, 0, - 515, 0, 0, 516, 0, 0, 0, 517, 518, 519, - 520, 521, 522, 523, 0, 0, 60, 0, 0, 0, - 524, 0, 0, 526, 0, 528, 0, 159, 529, 160, - 161, 162, 163, 164, 165, 0, 0, 166, 0, 0, - 0, 167, 0, 0, 0, 0, 169, 170, 171, 172, - 173, 174, 175, 176, 0, 0, 923, 0, 0, 0, - 179, 0, 0, 0, 180, 0, 0, 181, 182, 183, - 0, 184, 0, 0, 0, 0, 0, 187, 7, 0, - 188, 189, 0, 190, 0, 0, 0, 0, 0, 194, - 195, 196, 924, 198, 199, 0, 200, 201, 0, 0, - 0, 0, 0, 0, 207, 0, 209, 0, 211, 212, - 213, 214, 0, 215, 216, 0, 217, 218, 219, 0, - 221, 0, 222, 0, 0, 223, 0, 0, 224, 0, - 225, 0, 0, 226, 0, 227, 0, 0, 0, 228, - 229, 230, 0, 0, 231, 0, 0, 0, 0, 232, - 0, 0, 0, 0, 0, 234, 0, 235, 0, 0, - 0, 0, 236, 0, 237, 238, 239, 240, 241, 0, - 0, 0, 0, 0, 0, 0, 243, 244, 245, 0, - 0, 0, 246, 0, 3304, 248, 0, 249, 250, 251, - 0, 252, 253, 0, 254, 255, 256, 257, 258, 0, - 0, 0, 0, 261, 262, 263, 264, 0, 0, 265, - 266, 925, 267, 268, 269, 0, 0, 0, 0, 0, - 0, 0, 272, 0, 273, 0, 274, 0, 275, 276, - 277, 278, 279, 0, 281, 0, 282, 0, 0, 0, - 284, 285, 0, 0, 0, 0, 0, 0, 288, 0, - 0, 0, 289, 290, 291, 292, 293, 26, 0, 0, - 294, 295, 296, 0, 0, 297, 0, 0, 0, 0, - 298, 0, 0, 0, 0, 300, 0, 301, 302, 0, - 303, 304, 926, 0, 0, 305, 0, 0, 0, 307, - 308, 0, 0, 309, 927, 0, 310, 311, 0, 0, - 0, 0, 0, 312, 313, 0, 314, 0, 315, 0, - 316, 317, 0, 0, 0, 0, 32, 0, 318, 319, + 0, 384, 385, 0, 0, 0, 0, 387, 0, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 0, 0, + 0, 0, 399, 400, 0, 401, 0, 402, 403, 404, + 405, 406, 0, 407, 408, 409, 0, 0, 410, 0, + 0, 0, 411, 412, 413, 414, 415, 0, 0, 416, + 417, 418, 419, 420, 0, 421, 0, 0, 423, 0, + 425, 41, 0, 426, 0, 0, 0, 428, 0, 0, + 430, 431, 0, 432, 931, 433, 0, 0, 434, 0, + 436, 437, 438, 439, 440, 441, 442, 0, 444, 445, + 0, 446, 0, 0, 0, 0, 448, 449, 450, 0, + 0, 0, 0, 452, 0, 0, 0, 0, 0, 0, + 455, 0, 0, 458, 459, 0, 460, 0, 462, 0, + 464, 465, 0, 0, 0, 0, 0, 0, 466, 467, + 0, 468, 0, 0, 469, 0, 0, 0, 470, 0, + 472, 0, 0, 0, 473, 0, 0, 0, 475, 0, + 476, 477, 478, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 0, 0, 488, 489, 490, + 491, 0, 0, 492, 493, 0, 494, 495, 496, 497, + 0, 0, 0, 0, 0, 498, 499, 500, 0, 0, + 0, 0, 502, 503, 504, 0, 505, 506, 0, 507, + 508, 0, 0, 0, 0, 0, 511, 0, 0, 512, + 0, 0, 0, 514, 515, 0, 0, 0, 0, 0, + 0, 516, 0, 0, 517, 0, 0, 0, 518, 519, + 520, 521, 522, 523, 524, 0, 0, 60, 0, 0, + 0, 525, 0, 0, 527, 0, 529, 0, 160, 530, + 161, 162, 163, 164, 165, 166, 0, 0, 167, 0, + 0, 0, 168, 0, 0, 0, 0, 170, 171, 172, + 173, 174, 175, 176, 177, 0, 0, 925, 0, 0, + 0, 180, 0, 0, 0, 181, 0, 0, 182, 183, + 184, 0, 185, 0, 0, 0, 0, 0, 188, 7, + 0, 189, 190, 0, 191, 0, 0, 0, 0, 0, + 195, 196, 197, 926, 199, 200, 0, 201, 202, 0, + 0, 0, 0, 0, 0, 208, 0, 210, 0, 212, + 213, 214, 215, 0, 216, 217, 0, 218, 219, 220, + 0, 222, 0, 223, 0, 0, 224, 0, 0, 225, + 0, 226, 0, 0, 227, 0, 228, 0, 0, 0, + 229, 230, 231, 0, 0, 232, 0, 0, 0, 0, + 233, 0, 0, 0, 0, 0, 235, 0, 236, 0, + 0, 0, 0, 237, 0, 238, 239, 240, 241, 242, + 0, 0, 0, 0, 0, 0, 0, 244, 245, 246, + 0, 0, 0, 247, 0, 3162, 249, 0, 250, 251, + 252, 0, 253, 254, 0, 255, 256, 257, 258, 259, + 0, 0, 0, 0, 262, 263, 264, 265, 0, 0, + 266, 267, 927, 268, 269, 270, 0, 0, 0, 0, + 0, 0, 0, 273, 0, 274, 0, 275, 0, 276, + 277, 278, 279, 280, 0, 282, 0, 283, 0, 0, + 0, 285, 286, 0, 0, 0, 0, 0, 0, 289, + 0, 0, 0, 290, 291, 292, 293, 294, 26, 0, + 0, 295, 296, 297, 0, 0, 298, 0, 0, 0, + 0, 299, 0, 0, 0, 0, 301, 0, 302, 303, + 0, 304, 305, 928, 0, 0, 306, 0, 0, 0, + 308, 309, 0, 0, 310, 929, 0, 311, 312, 0, + 0, 0, 0, 0, 313, 314, 0, 315, 0, 316, + 0, 317, 318, 0, 0, 0, 0, 32, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 0, 334, 335, 336, 337, 0, - 338, 339, 340, 341, 0, 342, 343, 344, 0, 0, - 0, 0, 345, 346, 347, 348, 349, 350, 0, 0, - 351, 352, 0, 353, 0, 354, 0, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 0, 0, 365, - 0, 0, 366, 367, 368, 369, 0, 0, 0, 0, - 371, 0, 0, 0, 372, 0, 373, 374, 375, 0, - 376, 377, 378, 928, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 383, 384, 0, 0, - 0, 0, 386, 0, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 0, 0, 0, 0, 398, 399, 0, - 400, 0, 401, 402, 403, 404, 405, 0, 406, 407, - 408, 0, 0, 409, 0, 0, 0, 410, 411, 412, - 413, 414, 0, 0, 415, 416, 417, 418, 419, 0, - 420, 0, 0, 422, 0, 424, 41, 0, 425, 0, - 0, 0, 427, 0, 0, 429, 430, 0, 431, 929, - 432, 0, 0, 433, 0, 435, 436, 437, 438, 439, - 440, 441, 0, 443, 444, 0, 445, 0, 0, 0, - 0, 447, 448, 449, 0, 0, 0, 0, 451, 0, - 0, 0, 0, 0, 0, 454, 0, 0, 457, 458, - 0, 459, 0, 461, 0, 463, 464, 0, 0, 0, - 0, 0, 0, 465, 466, 0, 467, 0, 0, 468, - 0, 0, 0, 469, 0, 471, 0, 0, 0, 472, - 0, 0, 0, 474, 0, 475, 476, 477, 478, 479, - 480, 0, 0, 481, 482, 483, 484, 0, 485, 486, - 0, 0, 487, 488, 489, 490, 0, 0, 491, 492, - 0, 493, 494, 495, 496, 0, 0, 0, 0, 0, - 497, 498, 499, 0, 0, 0, 0, 501, 502, 503, - 0, 504, 505, 0, 506, 507, 0, 0, 0, 0, - 0, 510, 0, 0, 511, 0, 0, 0, 513, 514, - 0, 0, 0, 0, 0, 0, 515, 0, 0, 516, - 0, 0, 0, 517, 518, 519, 520, 521, 522, 523, - 0, 0, 60, 0, 0, 0, 524, 0, 0, 526, - 0, 528, 0, 159, 529, 160, 161, 162, 163, 164, - 165, 0, 0, 166, 0, 0, 0, 167, 0, 0, - 0, 0, 169, 170, 171, 172, 173, 174, 175, 176, - 0, 0, 923, 0, 0, 0, 179, 0, 0, 0, - 180, 0, 0, 181, 182, 183, 0, 184, 0, 0, - 0, 0, 0, 187, 7, 0, 188, 189, 0, 190, - 0, 0, 0, 0, 0, 194, 195, 196, 924, 198, - 199, 0, 200, 201, 0, 0, 0, 0, 0, 0, - 207, 0, 209, 0, 211, 212, 213, 214, 0, 215, - 216, 0, 217, 218, 219, 0, 221, 0, 222, 0, - 0, 223, 0, 0, 224, 0, 225, 0, 0, 226, - 0, 227, 0, 0, 0, 228, 229, 230, 0, 0, - 231, 0, 0, 0, 0, 232, 0, 0, 0, 0, - 0, 234, 0, 235, 0, 0, 0, 0, 236, 0, - 237, 238, 239, 240, 241, 0, 0, 0, 0, 0, - 0, 0, 243, 244, 245, 0, 0, 0, 246, 0, - -342, 248, 0, 249, 250, 251, 0, 252, 253, 0, - 254, 255, 256, 257, 258, 0, 0, 0, 0, 261, - 262, 263, 264, 0, 0, 265, 266, 925, 267, 268, - 269, 0, 0, 0, 0, 0, 0, 0, 272, 0, - 273, 0, 274, 0, 275, 276, 277, 278, 279, 0, - 281, 0, 282, 0, 0, 0, 284, 285, 0, 0, - 0, 0, 0, 0, 288, 0, 0, 0, 289, 290, - 291, 292, 293, 26, 0, 0, 294, 295, 296, 0, - 0, 297, 0, 0, 0, 0, 298, 0, 0, 0, - 0, 300, 0, 301, 302, 0, 303, 304, 926, 0, - 0, 305, 0, 0, 0, 307, 308, 0, 0, 309, - 927, 0, 310, 311, 0, 0, 0, 0, 0, 312, - 313, 0, 314, 0, 315, 0, 316, 317, 0, 0, - 0, 0, 32, 0, 318, 319, 320, 321, 322, 323, + 330, 331, 332, 333, 334, 0, 335, 336, 337, 338, + 0, 339, 340, 341, 342, 0, 343, 344, 345, 0, + 0, 0, 0, 346, 347, 348, 349, 350, 351, 0, + 0, 352, 353, 0, 354, 0, 355, 0, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 0, 0, + 366, 0, 0, 367, 368, 369, 370, 0, 0, 0, + 0, 372, 0, 0, 0, 373, 0, 374, 375, 376, + 0, 377, 378, 379, 930, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 384, 385, 0, + 0, 0, 0, 387, 0, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 0, 0, 0, 0, 399, 400, + 0, 401, 0, 402, 403, 404, 405, 406, 0, 407, + 408, 409, 0, 0, 410, 0, 0, 0, 411, 412, + 413, 414, 415, 0, 0, 416, 417, 418, 419, 420, + 0, 421, 0, 0, 423, 0, 425, 41, 0, 426, + 0, 0, 0, 428, 0, 0, 430, 431, 0, 432, + 931, 433, 0, 0, 434, 0, 436, 437, 438, 439, + 440, 441, 442, 0, 444, 445, 0, 446, 0, 0, + 0, 0, 448, 449, 450, 0, 0, 0, 0, 452, + 0, 0, 0, 0, 0, 0, 455, 0, 0, 458, + 459, 0, 460, 0, 462, 0, 464, 465, 0, 0, + 0, 0, 0, 0, 466, 467, 0, 468, 0, 0, + 469, 0, 0, 0, 470, 0, 472, 0, 0, 0, + 473, 0, 0, 0, 475, 0, 476, 477, 478, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 0, 0, 488, 489, 490, 491, 0, 0, 492, + 493, 0, 494, 495, 496, 497, 0, 0, 0, 0, + 0, 498, 499, 500, 0, 0, 0, 0, 502, 503, + 504, 0, 505, 506, 0, 507, 508, 0, 0, 0, + 0, 0, 511, 0, 0, 512, 0, 0, 0, 514, + 515, 0, 0, 0, 0, 0, 0, 516, 0, 0, + 517, 0, 0, 0, 518, 519, 520, 521, 522, 523, + 524, 0, 0, 60, 0, 0, 0, 525, 0, 0, + 527, 0, 529, 0, 160, 530, 161, 162, 163, 164, + 165, 166, 0, 0, 167, 0, 0, 0, 168, 0, + 0, 0, 0, 170, 171, 172, 173, 174, 175, 176, + 177, 0, 0, 925, 0, 0, 0, 180, 0, 0, + 0, 181, 0, 0, 182, 183, 184, 0, 185, 0, + 0, 0, 0, 0, 188, 7, 0, 189, 190, 0, + 191, 0, 0, 0, 0, 0, 195, 196, 197, 926, + 199, 200, 0, 201, 202, 0, 0, 0, 0, 0, + 0, 208, 0, 210, 0, 212, 213, 214, 215, 0, + 216, 217, 0, 218, 219, 220, 0, 222, 0, 223, + 0, 0, 224, 0, 0, 225, 0, 226, 0, 0, + 227, 0, 228, 0, 0, 0, 229, 230, 231, 0, + 0, 232, 0, 0, 0, 0, 233, 0, 0, 0, + 0, 0, 235, 0, 236, 0, 0, 0, 0, 237, + 0, 238, 239, 240, 241, 242, 0, 0, 0, 0, + 0, 0, 0, 244, 245, 246, 0, 0, 0, 247, + 0, 3309, 249, 0, 250, 251, 252, 0, 253, 254, + 0, 255, 256, 257, 258, 259, 0, 0, 0, 0, + 262, 263, 264, 265, 0, 0, 266, 267, 927, 268, + 269, 270, 0, 0, 0, 0, 0, 0, 0, 273, + 0, 274, 0, 275, 0, 276, 277, 278, 279, 280, + 0, 282, 0, 283, 0, 0, 0, 285, 286, 0, + 0, 0, 0, 0, 0, 289, 0, 0, 0, 290, + 291, 292, 293, 294, 26, 0, 0, 295, 296, 297, + 0, 0, 298, 0, 0, 0, 0, 299, 0, 0, + 0, 0, 301, 0, 302, 303, 0, 304, 305, 928, + 0, 0, 306, 0, 0, 0, 308, 309, 0, 0, + 310, 929, 0, 311, 312, 0, 0, 0, 0, 0, + 313, 314, 0, 315, 0, 316, 0, 317, 318, 0, + 0, 0, 0, 32, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 0, 334, 335, 336, 337, 0, 338, 339, 340, 341, - 0, 342, 343, 344, 0, 0, 0, 0, 345, 346, - 347, 348, 349, 350, 0, 0, 351, 352, 0, 353, - 0, 354, 0, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 0, 0, 365, 0, 0, 366, 367, - 368, 369, 0, 0, 0, 0, 371, 0, 0, 0, - 372, 0, 373, 374, 375, 0, 376, 377, 378, 928, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 383, 384, 0, 0, 0, 0, 386, 0, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 0, - 0, 0, 0, 398, 399, 0, 400, 0, 401, 402, - 403, 404, 405, 0, 406, 407, 408, 0, 0, 409, - 0, 0, 0, 410, 411, 412, 413, 414, 0, 0, - 415, 416, 417, 418, 419, 0, 420, 0, 0, 422, - 0, 424, 41, 0, 425, 0, 0, 0, 427, 0, - 0, 429, 430, 0, 431, 929, 432, 0, 0, 433, - 0, 435, 436, 437, 438, 439, 440, 441, 0, 443, - 444, 0, 445, 0, 0, 0, 0, 447, 448, 449, - 0, 0, 0, 0, 451, 0, 0, 0, 0, 0, - 0, 454, 0, 0, 457, 458, 0, 459, 0, 461, - 0, 463, 464, 0, 0, 0, 0, 0, 0, 465, - 466, 0, 467, 0, 0, 468, 0, 0, 0, 469, - 0, 471, 0, 0, 0, 472, 0, 0, 0, 474, - 0, 475, 476, 477, 478, 479, 480, 0, 0, 481, - 482, 483, 484, 0, 485, 486, 0, 0, 487, 488, - 489, 490, 0, 0, 491, 492, 0, 493, 494, 495, - 496, 0, 0, 0, 0, 0, 497, 498, 499, 0, - 0, 0, 0, 501, 502, 503, 0, 504, 505, 0, - 506, 507, 0, 0, 0, 0, 0, 510, 0, 0, - 511, 0, 0, 0, 513, 514, 0, 0, 0, 0, - 0, 0, 515, 0, 0, 516, 0, 0, 0, 517, - 518, 519, 520, 521, 522, 523, 0, 0, 60, 0, - 0, 0, 524, 0, 0, 526, 0, 528, 0, 159, - 529, 160, 161, 162, 163, 164, 165, 0, 0, 166, - 0, 0, 0, 167, 0, 0, 0, 0, 169, 170, - 171, 172, 173, 174, 175, 176, 0, 0, 923, 0, - 0, 0, 179, 0, 0, 0, 180, 0, 0, 181, - 182, 183, 0, 184, 0, 0, 0, 0, 0, 187, - 7, 0, 188, 189, 0, 190, 0, 0, 0, 0, - 0, 194, 195, 196, 924, 198, 199, 0, 200, 201, - 0, 0, 0, 0, 0, 0, 207, 0, 209, 0, - 211, 212, 213, 214, 0, 215, 216, 0, 217, 218, - 219, 0, 221, 0, 222, 0, 0, 223, 0, 0, - 224, 0, 225, 0, 0, 226, 0, 227, 0, 0, - 0, 228, 229, 230, 0, 0, 231, 0, 0, 0, - 0, 232, 0, 0, 0, 0, 0, 234, 0, 235, - 0, 0, 0, 0, 236, 0, 237, 238, 239, 240, - 241, 0, 0, 0, 0, 0, 0, 0, 243, 244, - 245, 0, 0, 0, 246, 0, 0, 248, 0, 249, - 250, 251, 0, 252, 253, 0, 254, 255, 256, 257, - 258, 0, 0, 0, 0, 261, 262, 263, 264, 0, - 0, 265, 266, 925, 267, 268, 269, 0, 0, 0, - 0, 0, 0, 0, 272, 0, 273, 0, 274, 0, - 275, 276, 277, 278, 279, 0, 281, 0, 282, 0, - 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, - 288, 0, 0, 0, 289, 290, 291, 292, 293, 26, - 0, 0, 294, 295, 296, 0, 0, 297, 0, 0, - 0, 0, 298, 0, 0, 0, 0, 300, 0, 301, - 302, 0, 303, 304, 926, 0, 0, 305, 0, 0, - 0, 307, 308, 0, 0, 309, 927, 0, 310, 311, - 0, 0, 0, 0, 0, 312, 313, 0, 314, 0, - 315, 0, 316, 317, 0, 0, 0, 0, 32, 0, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 0, 334, 335, 336, - 337, 0, 338, 339, 340, 341, 0, 342, 343, 344, - 0, 0, 0, 0, 345, 346, 347, 348, 349, 350, - 0, 0, 351, 352, 0, 353, 0, 354, 0, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 0, - 0, 365, 0, 0, 366, 367, 368, 369, 0, 0, - 0, 0, 371, 0, 0, 0, 372, 0, 373, 374, - 375, 0, 376, 377, 378, 928, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 383, 384, - 0, 0, 0, 0, 386, 0, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 0, 0, 0, 0, 398, - 399, 0, 400, 0, 401, 402, 403, 404, 405, 0, - 406, 407, 408, 0, 0, 409, 0, 0, 0, 410, - 411, 412, 413, 414, 0, 0, 415, 416, 417, 418, - 419, 0, 420, 0, 0, 422, 0, 424, 41, 0, - 425, 0, 0, 0, 427, 0, 0, 429, 430, 0, - 431, 929, 432, 0, 0, 433, 0, 435, 436, 437, - 438, 439, 440, 441, 0, 443, 444, 0, 445, 0, - 0, 0, 0, 447, 448, 449, 0, 0, 0, 0, - 451, 0, 0, 0, 0, 0, 0, 454, 0, 0, - 457, 458, 0, 459, 0, 461, 0, 463, 464, 0, - 0, 0, 0, 0, 0, 465, 466, 0, 467, 0, - 0, 468, 0, 0, 0, 469, 0, 471, 0, 0, - 0, 472, 0, 0, 0, 474, 0, 475, 476, 477, - 478, 479, 480, 0, 0, 481, 482, 483, 484, 0, - 485, 486, 0, 0, 487, 488, 489, 490, 0, 0, - 491, 492, 0, 493, 494, 495, 496, 0, 0, 0, - 0, 0, 497, 498, 499, 0, 0, 0, 0, 501, - 502, 503, 0, 504, 505, 0, 506, 507, 0, 0, - 0, 0, 0, 510, 0, 0, 511, 0, 0, 0, - 513, 514, 0, 0, 0, 0, 0, 0, 515, 0, - 0, 516, 0, 0, 0, 517, 518, 519, 520, 521, - 522, 523, 0, 0, 60, 0, 0, 0, 524, 0, - 0, 526, 0, 528, 0, 159, 529, 160, 161, 162, - 163, 164, 165, 0, 0, 166, 0, 0, 0, 167, - 0, 0, 0, 0, 169, 170, 171, 172, 173, 174, - 175, 176, 0, 0, 923, 0, 0, 0, 179, 0, - 0, 0, 180, 0, 0, 181, 182, 183, 0, 184, - 0, 0, 0, 0, 0, 187, 7, 0, 188, 189, - 0, 190, 0, 0, 0, 0, 0, 194, 195, 196, - 924, 198, 199, 0, 200, 201, 0, 0, 0, 0, - 0, 0, 207, 0, 209, 0, 211, 212, 213, 214, - 0, 215, 216, 0, 217, 218, 219, 0, 221, 0, - 222, 0, 0, 223, 0, 0, 224, 0, 225, 0, - 0, 226, 0, 227, 0, 0, 0, 228, 229, 230, - 0, 0, 231, 0, 0, 0, 0, 232, 0, 0, - 0, 0, 0, 234, 0, 235, 0, 0, 0, 0, - 236, 0, 237, 238, 239, 240, 241, 0, 0, 0, - 0, 0, 0, 0, 243, 244, 245, 0, 0, 0, - 246, 0, 0, 248, 0, 249, 250, 251, 0, 252, - 253, 0, 254, 255, 256, 257, 258, 0, 0, 0, - 0, 261, 262, 263, 264, 0, 0, 265, 266, 925, - 267, 268, 269, 0, 0, 0, 0, 0, 0, 0, - 272, 0, 273, 0, 274, 0, 275, 276, 277, 278, - 279, 0, 281, 0, 282, 0, 0, 0, 284, 285, - 0, 0, 0, 0, 0, 0, 288, 0, 0, 0, - 289, 290, 291, 292, 293, 26, 0, 0, 294, 295, - 296, 0, 0, 297, 0, 0, 0, 0, 298, 0, - 0, 0, 0, 300, 0, 301, 302, 0, 303, 304, - 926, 0, 0, 305, 0, 0, 0, 307, 308, 0, - 0, 309, 927, 0, 310, 311, 0, 0, 0, 0, - 0, 312, 313, 0, 314, 0, 315, 0, 316, 317, - 0, 0, 0, 0, 32, 0, 318, 319, 320, 321, + 334, 0, 335, 336, 337, 338, 0, 339, 340, 341, + 342, 0, 343, 344, 345, 0, 0, 0, 0, 346, + 347, 348, 349, 350, 351, 0, 0, 352, 353, 0, + 354, 0, 355, 0, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 0, 0, 366, 0, 0, 367, + 368, 369, 370, 0, 0, 0, 0, 372, 0, 0, + 0, 373, 0, 374, 375, 376, 0, 377, 378, 379, + 930, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 384, 385, 0, 0, 0, 0, 387, + 0, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 0, 0, 0, 0, 399, 400, 0, 401, 0, 402, + 403, 404, 405, 406, 0, 407, 408, 409, 0, 0, + 410, 0, 0, 0, 411, 412, 413, 414, 415, 0, + 0, 416, 417, 418, 419, 420, 0, 421, 0, 0, + 423, 0, 425, 41, 0, 426, 0, 0, 0, 428, + 0, 0, 430, 431, 0, 432, 931, 433, 0, 0, + 434, 0, 436, 437, 438, 439, 440, 441, 442, 0, + 444, 445, 0, 446, 0, 0, 0, 0, 448, 449, + 450, 0, 0, 0, 0, 452, 0, 0, 0, 0, + 0, 0, 455, 0, 0, 458, 459, 0, 460, 0, + 462, 0, 464, 465, 0, 0, 0, 0, 0, 0, + 466, 467, 0, 468, 0, 0, 469, 0, 0, 0, + 470, 0, 472, 0, 0, 0, 473, 0, 0, 0, + 475, 0, 476, 477, 478, 479, 480, 481, 0, 0, + 482, 483, 484, 485, 0, 486, 487, 0, 0, 488, + 489, 490, 491, 0, 0, 492, 493, 0, 494, 495, + 496, 497, 0, 0, 0, 0, 0, 498, 499, 500, + 0, 0, 0, 0, 502, 503, 504, 0, 505, 506, + 0, 507, 508, 0, 0, 0, 0, 0, 511, 0, + 0, 512, 0, 0, 0, 514, 515, 0, 0, 0, + 0, 0, 0, 516, 0, 0, 517, 0, 0, 0, + 518, 519, 520, 521, 522, 523, 524, 0, 0, 60, + 0, 0, 0, 525, 0, 0, 527, 0, 529, 0, + 160, 530, 161, 162, 163, 164, 165, 166, 0, 0, + 167, 0, 0, 0, 168, 0, 0, 0, 0, 170, + 171, 172, 173, 174, 175, 176, 177, 0, 0, 925, + 0, 0, 0, 180, 0, 0, 0, 181, 0, 0, + 182, 183, 184, 0, 185, 0, 0, 0, 0, 0, + 188, 7, 0, 189, 190, 0, 191, 0, 0, 0, + 0, 0, 195, 196, 197, 926, 199, 200, 0, 201, + 202, 0, 0, 0, 0, 0, 0, 208, 0, 210, + 0, 212, 213, 214, 215, 0, 216, 217, 0, 218, + 219, 220, 0, 222, 0, 223, 0, 0, 224, 0, + 0, 225, 0, 226, 0, 0, 227, 0, 228, 0, + 0, 0, 229, 230, 231, 0, 0, 232, 0, 0, + 0, 0, 233, 0, 0, 0, 0, 0, 235, 0, + 236, 0, 0, 0, 0, 237, 0, 238, 239, 240, + 241, 242, 0, 0, 0, 0, 0, 0, 0, 244, + 245, 246, 0, 0, 0, 247, 0, -342, 249, 0, + 250, 251, 252, 0, 253, 254, 0, 255, 256, 257, + 258, 259, 0, 0, 0, 0, 262, 263, 264, 265, + 0, 0, 266, 267, 927, 268, 269, 270, 0, 0, + 0, 0, 0, 0, 0, 273, 0, 274, 0, 275, + 0, 276, 277, 278, 279, 280, 0, 282, 0, 283, + 0, 0, 0, 285, 286, 0, 0, 0, 0, 0, + 0, 289, 0, 0, 0, 290, 291, 292, 293, 294, + 26, 0, 0, 295, 296, 297, 0, 0, 298, 0, + 0, 0, 0, 299, 0, 0, 0, 0, 301, 0, + 302, 303, 0, 304, 305, 928, 0, 0, 306, 0, + 0, 0, 308, 309, 0, 0, 310, 929, 0, 311, + 312, 0, 0, 0, 0, 0, 313, 314, 0, 315, + 0, 316, 0, 317, 318, 0, 0, 0, 0, 32, + 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 0, 335, 336, + 337, 338, 0, 339, 340, 341, 342, 0, 343, 344, + 345, 0, 0, 0, 0, 346, 347, 348, 349, 350, + 351, 0, 0, 352, 353, 0, 354, 0, 355, 0, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 0, 0, 366, 0, 0, 367, 368, 369, 370, 0, + 0, 0, 0, 372, 0, 0, 0, 373, 0, 374, + 375, 376, 0, 377, 378, 379, 930, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 384, + 385, 0, 0, 0, 0, 387, 0, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 0, 0, 0, 0, + 399, 400, 0, 401, 0, 402, 403, 404, 405, 406, + 0, 407, 408, 409, 0, 0, 410, 0, 0, 0, + 411, 412, 413, 414, 415, 0, 0, 416, 417, 418, + 419, 420, 0, 421, 0, 0, 423, 0, 425, 41, + 0, 426, 0, 0, 0, 428, 0, 0, 430, 431, + 0, 432, 931, 433, 0, 0, 434, 0, 436, 437, + 438, 439, 440, 441, 442, 0, 444, 445, 0, 446, + 0, 0, 0, 0, 448, 449, 450, 0, 0, 0, + 0, 452, 0, 0, 0, 0, 0, 0, 455, 0, + 0, 458, 459, 0, 460, 0, 462, 0, 464, 465, + 0, 0, 0, 0, 0, 0, 466, 467, 0, 468, + 0, 0, 469, 0, 0, 0, 470, 0, 472, 0, + 0, 0, 473, 0, 0, 0, 475, 0, 476, 477, + 478, 479, 480, 481, 0, 0, 482, 483, 484, 485, + 0, 486, 487, 0, 0, 488, 489, 490, 491, 0, + 0, 492, 493, 0, 494, 495, 496, 497, 0, 0, + 0, 0, 0, 498, 499, 500, 0, 0, 0, 0, + 502, 503, 504, 0, 505, 506, 0, 507, 508, 0, + 0, 0, 0, 0, 511, 0, 0, 512, 0, 0, + 0, 514, 515, 0, 0, 0, 0, 0, 0, 516, + 0, 0, 517, 0, 0, 0, 518, 519, 520, 521, + 522, 523, 524, 0, 0, 60, 0, 0, 0, 525, + 0, 0, 527, 0, 529, 0, 160, 530, 161, 162, + 163, 164, 165, 166, 0, 0, 167, 0, 0, 0, + 168, 0, 0, 0, 0, 170, 171, 172, 173, 174, + 175, 176, 177, 0, 0, 925, 0, 0, 0, 180, + 0, 0, 0, 181, 0, 0, 182, 183, 184, 0, + 185, 0, 0, 0, 0, 0, 188, 7, 0, 189, + 190, 0, 191, 0, 0, 0, 0, 0, 195, 196, + 197, 926, 199, 200, 0, 201, 202, 0, 0, 0, + 0, 0, 0, 208, 0, 210, 0, 212, 213, 214, + 215, 0, 216, 217, 0, 218, 219, 220, 0, 222, + 0, 223, 0, 0, 224, 0, 0, 225, 0, 226, + 0, 0, 227, 0, 228, 0, 0, 0, 229, 230, + 231, 0, 0, 232, 0, 0, 0, 0, 233, 0, + 0, 0, 0, 0, 235, 0, 236, 0, 0, 0, + 0, 237, 0, 238, 239, 240, 241, 242, 0, 0, + 0, 0, 0, 0, 0, 244, 245, 246, 0, 0, + 0, 247, 0, 0, 249, 0, 250, 251, 252, 0, + 253, 254, 0, 255, 256, 257, 258, 259, 0, 0, + 0, 0, 262, 263, 264, 265, 0, 0, 266, 267, + 927, 268, 269, 270, 0, 0, 0, 0, 0, 0, + 0, 273, 0, 274, 0, 275, 0, 276, 277, 278, + 279, 280, 0, 282, 0, 283, 0, 0, 0, 285, + 286, 0, 0, 0, 0, 0, 0, 289, 0, 0, + 0, 290, 291, 292, 293, 294, 26, 0, 0, 295, + 296, 297, 0, 0, 298, 0, 0, 0, 0, 299, + 0, 0, 0, 0, 301, 0, 302, 303, 0, 304, + 305, 928, 0, 0, 306, 0, 0, 0, 308, 309, + 0, 0, 310, 929, 0, 311, 312, 0, 0, 0, + 0, 0, 313, 314, 0, 315, 0, 316, 0, 317, + 318, 0, 0, 0, 0, 32, 0, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 0, 334, 335, 336, 337, 0, 338, 339, - 340, 341, 0, 342, 343, 344, 0, 0, 0, 0, - 345, 346, 347, 348, 349, 350, 0, 0, 351, 352, - 0, 353, 0, 354, 0, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 0, 0, 365, 0, 0, - 366, 367, 368, 369, 0, 0, 0, 0, 371, 0, - 0, 0, 372, 0, 373, 374, 375, 0, 376, 377, - 378, 928, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 383, 384, 0, 0, 0, 0, - 386, 0, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 0, 0, 0, 0, 398, 399, 0, 400, 0, - 401, 402, 403, 404, 405, 0, 406, 407, 408, 0, - 0, 409, 0, 0, 0, 410, 411, 412, 413, 414, - 0, 0, 415, 416, 417, 418, 419, 0, 420, 0, - 0, 422, 0, 424, 41, 0, 425, 0, 0, 0, - 427, 0, 0, 429, 430, 0, 431, 929, 432, 0, - 0, 433, 0, 435, 436, 437, 438, 439, 440, 441, - 0, 443, 444, 0, 445, 0, 0, 0, 0, 447, - 448, 449, 0, 0, 0, 0, 451, 0, 0, 0, - 0, 0, 0, 454, 0, 0, 457, 458, 0, 459, - 0, 461, 0, 463, 464, 0, 0, 0, 0, 0, - 0, 465, 466, 0, 467, 0, 0, 468, 0, 0, - 0, 469, 0, 471, 0, 0, 0, 472, 0, 0, - 0, 474, 0, 475, 476, 477, 478, 479, 480, 0, - 0, 481, 482, 483, 484, 0, 485, 486, 0, 0, - 487, 488, 489, 490, 0, 0, 491, 492, 0, 493, - 494, 495, 496, 0, 0, 0, 0, 0, 497, 498, - 499, 0, 0, 0, 0, 501, 502, 503, 0, 504, - 505, 0, 506, 507, 0, 0, 0, 0, 0, 510, - 0, 0, 1466, 0, 0, 0, 513, 514, 0, 0, - 0, 0, 0, 0, 515, 0, 0, 516, 0, 0, - 0, 517, 518, 519, 520, 521, 522, 523, 0, 0, - 60, 0, 0, 0, 524, 0, 0, 526, 0, 528, - 0, 159, 529, 160, 161, 162, 163, 164, 165, 0, - 0, 166, 0, 0, 0, 167, 0, 0, 0, 0, - 169, 170, 171, 172, 173, 174, 175, 176, 0, 0, - 0, 0, 0, 0, 179, 0, 0, 0, 180, 0, - 0, 181, 182, 183, 0, 184, 0, 0, 0, 0, - 0, 187, 0, 0, 188, 189, 0, 190, 0, 0, - 0, 0, 0, 194, 195, 196, 0, 198, 199, 0, - 200, 201, 0, 0, 0, 0, 0, 0, 207, 0, - 209, 0, 211, 212, 213, 214, 0, 215, 216, 0, - 217, 218, 219, 0, 221, 0, 222, 0, 0, 223, - 0, 0, 224, 0, 225, 0, 0, 226, 0, 227, - 0, 0, 0, 228, 229, 230, 0, 0, 231, 0, - 0, 0, 0, 232, 0, 0, 0, 0, 0, 234, - 0, 235, 0, 0, 0, 0, 236, 0, 237, 238, - 239, 240, 241, 0, 0, 0, 0, 0, 0, 0, - 243, 244, 245, 0, 0, 0, 246, 0, 0, 248, - 0, 249, 250, 251, 0, 252, 253, 0, 254, 255, - 256, 257, 258, 0, 0, 0, 0, 261, 262, 263, - 264, 0, 0, 265, 266, 0, 267, 268, 269, 0, - 0, 0, 0, 0, 0, 0, 272, 0, 273, 0, - 274, 0, 275, 276, 277, 278, 279, 0, 281, 0, - 282, 0, 0, 0, 284, 285, 0, 0, 0, 0, - 0, 0, 288, 0, 0, 0, 289, 290, 291, 292, - 293, 0, 0, 0, 294, 295, 296, 0, 0, 297, - 0, 0, 0, 0, 298, 0, 0, 0, 0, 300, - 0, 301, 302, 0, 303, 304, 0, 0, 0, 305, - 0, 0, 0, 307, 308, 0, 0, 309, 0, 0, - 310, 311, 0, 0, 0, 0, 0, 312, 313, 0, - 314, 0, 315, 0, 316, 317, 0, 0, 0, 0, - 0, 0, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 0, 334, - 335, 336, 337, 0, 338, 339, 340, 341, 0, 342, - 343, 344, 0, 0, 0, 0, 345, 346, 347, 348, - 349, 350, 0, 0, 351, 352, 0, 353, 0, 354, - 0, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 0, 0, 365, 0, 0, 366, 367, 368, 369, - 0, 0, 0, 0, 371, 0, 0, 0, 372, 0, - 373, 374, 375, 0, 376, 377, 378, 0, 0, 0, + 332, 333, 334, 0, 335, 336, 337, 338, 0, 339, + 340, 341, 342, 0, 343, 344, 345, 0, 0, 0, + 0, 346, 347, 348, 349, 350, 351, 0, 0, 352, + 353, 0, 354, 0, 355, 0, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 0, 0, 366, 0, + 0, 367, 368, 369, 370, 0, 0, 0, 0, 372, + 0, 0, 0, 373, 0, 374, 375, 376, 0, 377, + 378, 379, 930, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 384, 385, 0, 0, 0, + 0, 387, 0, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 0, 0, 0, 0, 399, 400, 0, 401, + 0, 402, 403, 404, 405, 406, 0, 407, 408, 409, + 0, 0, 410, 0, 0, 0, 411, 412, 413, 414, + 415, 0, 0, 416, 417, 418, 419, 420, 0, 421, + 0, 0, 423, 0, 425, 41, 0, 426, 0, 0, + 0, 428, 0, 0, 430, 431, 0, 432, 931, 433, + 0, 0, 434, 0, 436, 437, 438, 439, 440, 441, + 442, 0, 444, 445, 0, 446, 0, 0, 0, 0, + 448, 449, 450, 0, 0, 0, 0, 452, 0, 0, + 0, 0, 0, 0, 455, 0, 0, 458, 459, 0, + 460, 0, 462, 0, 464, 465, 0, 0, 0, 0, + 0, 0, 466, 467, 0, 468, 0, 0, 469, 0, + 0, 0, 470, 0, 472, 0, 0, 0, 473, 0, + 0, 0, 475, 0, 476, 477, 478, 479, 480, 481, + 0, 0, 482, 483, 484, 485, 0, 486, 487, 0, + 0, 488, 489, 490, 491, 0, 0, 492, 493, 0, + 494, 495, 496, 497, 0, 0, 0, 0, 0, 498, + 499, 500, 0, 0, 0, 0, 502, 503, 504, 0, + 505, 506, 0, 507, 508, 0, 0, 0, 0, 0, + 511, 0, 0, 512, 0, 0, 0, 514, 515, 0, + 0, 0, 0, 0, 0, 516, 0, 0, 517, 0, + 0, 0, 518, 519, 520, 521, 522, 523, 524, 0, + 0, 60, 0, 0, 0, 525, 0, 0, 527, 0, + 529, 0, 160, 530, 161, 162, 163, 164, 165, 166, + 0, 0, 167, 0, 0, 0, 168, 0, 0, 0, + 0, 170, 171, 172, 173, 174, 175, 176, 177, 0, + 0, 925, 0, 0, 0, 180, 0, 0, 0, 181, + 0, 0, 182, 183, 184, 0, 185, 0, 0, 0, + 0, 0, 188, 7, 0, 189, 190, 0, 191, 0, + 0, 0, 0, 0, 195, 196, 197, 926, 199, 200, + 0, 201, 202, 0, 0, 0, 0, 0, 0, 208, + 0, 210, 0, 212, 213, 214, 215, 0, 216, 217, + 0, 218, 219, 220, 0, 222, 0, 223, 0, 0, + 224, 0, 0, 225, 0, 226, 0, 0, 227, 0, + 228, 0, 0, 0, 229, 230, 231, 0, 0, 232, + 0, 0, 0, 0, 233, 0, 0, 0, 0, 0, + 235, 0, 236, 0, 0, 0, 0, 237, 0, 238, + 239, 240, 241, 242, 0, 0, 0, 0, 0, 0, + 0, 244, 245, 246, 0, 0, 0, 247, 0, 0, + 249, 0, 250, 251, 252, 0, 253, 254, 0, 255, + 256, 257, 258, 259, 0, 0, 0, 0, 262, 263, + 264, 265, 0, 0, 266, 267, 927, 268, 269, 270, + 0, 0, 0, 0, 0, 0, 0, 273, 0, 274, + 0, 275, 0, 276, 277, 278, 279, 280, 0, 282, + 0, 283, 0, 0, 0, 285, 286, 0, 0, 0, + 0, 0, 0, 289, 0, 0, 0, 290, 291, 292, + 293, 294, 26, 0, 0, 295, 296, 297, 0, 0, + 298, 0, 0, 0, 0, 299, 0, 0, 0, 0, + 301, 0, 302, 303, 0, 304, 305, 928, 0, 0, + 306, 0, 0, 0, 308, 309, 0, 0, 310, 929, + 0, 311, 312, 0, 0, 0, 0, 0, 313, 314, + 0, 315, 0, 316, 0, 317, 318, 0, 0, 0, + 0, 32, 0, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 334, 0, + 335, 336, 337, 338, 0, 339, 340, 341, 342, 0, + 343, 344, 345, 0, 0, 0, 0, 346, 347, 348, + 349, 350, 351, 0, 0, 352, 353, 0, 354, 0, + 355, 0, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 0, 0, 366, 0, 0, 367, 368, 369, + 370, 0, 0, 0, 0, 372, 0, 0, 0, 373, + 0, 374, 375, 376, 0, 377, 378, 379, 930, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 383, 384, 0, 0, 0, 0, 386, 0, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 0, 0, 0, - 0, 398, 399, 0, 400, 0, 401, 402, 403, 404, - 405, 0, 406, 407, 408, 0, 0, 409, 0, 0, - 0, 410, 411, 412, 413, 414, 0, 0, 415, 416, - 417, 418, 419, 0, 420, 0, 0, 422, 0, 424, - 0, 0, 425, 0, 0, 0, 427, 0, 0, 429, - 430, 0, 431, 0, 432, 0, 0, 433, 0, 435, - 436, 437, 438, 439, 440, 441, 0, 443, 444, 0, - 445, 0, 0, 0, 0, 447, 448, 449, 0, 0, - 0, 0, 451, 0, 0, 0, 0, 0, 0, 454, - 0, 0, 457, 458, 0, 459, 0, 461, 0, 463, - 464, 0, 0, 0, 0, 0, 0, 465, 466, 0, - 467, 0, 0, 468, 0, 0, 0, 469, 0, 471, - 0, 0, 0, 472, 0, 0, 0, 474, 0, 475, - 476, 477, 478, 479, 480, 0, 0, 481, 482, 483, - 484, 0, 485, 486, 0, 0, 487, 488, 489, 490, - 0, 0, 491, 492, 0, 493, 494, 495, 496, 0, - 0, 0, 0, 0, 497, 498, 499, 0, 0, 0, - 0, 501, 502, 503, 0, 504, 505, 0, 506, 507, - 0, 0, 0, 0, 0, 510, 0, 0, 511, 0, - 0, 0, 513, 514, 0, 0, 0, 0, 0, 0, - 515, 0, 0, 516, 0, 0, 0, 517, 518, 519, - 520, 521, 522, 523, 0, 0, 0, 0, 0, 0, - 524, 0, 0, 526, 0, 528, 0, 0, 529 + 0, 384, 385, 0, 0, 0, 0, 387, 0, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 0, 0, + 0, 0, 399, 400, 0, 401, 0, 402, 403, 404, + 405, 406, 0, 407, 408, 409, 0, 0, 410, 0, + 0, 0, 411, 412, 413, 414, 415, 0, 0, 416, + 417, 418, 419, 420, 0, 421, 0, 0, 423, 0, + 425, 41, 0, 426, 0, 0, 0, 428, 0, 0, + 430, 431, 0, 432, 931, 433, 0, 0, 434, 0, + 436, 437, 438, 439, 440, 441, 442, 0, 444, 445, + 0, 446, 0, 0, 0, 0, 448, 449, 450, 0, + 0, 0, 0, 452, 0, 0, 0, 0, 0, 0, + 455, 0, 0, 458, 459, 0, 460, 0, 462, 0, + 464, 465, 0, 0, 0, 0, 0, 0, 466, 467, + 0, 468, 0, 0, 469, 0, 0, 0, 470, 0, + 472, 0, 0, 0, 473, 0, 0, 0, 475, 0, + 476, 477, 478, 479, 480, 481, 0, 0, 482, 483, + 484, 485, 0, 486, 487, 0, 0, 488, 489, 490, + 491, 0, 0, 492, 493, 0, 494, 495, 496, 497, + 0, 0, 0, 0, 0, 498, 499, 500, 0, 0, + 0, 0, 502, 503, 504, 0, 505, 506, 0, 507, + 508, 0, 0, 0, 0, 0, 511, 0, 0, 1469, + 0, 0, 0, 514, 515, 0, 0, 0, 0, 0, + 0, 516, 0, 0, 517, 0, 0, 0, 518, 519, + 520, 521, 522, 523, 524, 0, 0, 60, 0, 0, + 0, 525, 0, 0, 527, 0, 529, 0, 160, 530, + 161, 162, 163, 164, 165, 166, 0, 0, 167, 0, + 0, 0, 168, 0, 0, 0, 0, 170, 171, 172, + 173, 174, 175, 176, 177, 0, 0, 0, 0, 0, + 0, 180, 0, 0, 0, 181, 0, 0, 182, 183, + 184, 0, 185, 0, 0, 0, 0, 0, 188, 0, + 0, 189, 190, 0, 191, 0, 0, 0, 0, 0, + 195, 196, 197, 0, 199, 200, 0, 201, 202, 0, + 0, 0, 0, 0, 0, 208, 0, 210, 0, 212, + 213, 214, 215, 0, 216, 217, 0, 218, 219, 220, + 0, 222, 0, 223, 0, 0, 224, 0, 0, 225, + 0, 226, 0, 0, 227, 0, 228, 0, 0, 0, + 229, 230, 231, 0, 0, 232, 0, 0, 0, 0, + 233, 0, 0, 0, 0, 0, 235, 0, 236, 0, + 0, 0, 0, 237, 0, 238, 239, 240, 241, 242, + 0, 0, 0, 0, 0, 0, 0, 244, 245, 246, + 0, 0, 0, 247, 0, 0, 249, 0, 250, 251, + 252, 0, 253, 254, 0, 255, 256, 257, 258, 259, + 0, 0, 0, 0, 262, 263, 264, 265, 0, 0, + 266, 267, 0, 268, 269, 270, 0, 0, 0, 0, + 0, 0, 0, 273, 0, 274, 0, 275, 0, 276, + 277, 278, 279, 280, 0, 282, 0, 283, 0, 0, + 0, 285, 286, 0, 0, 0, 0, 0, 0, 289, + 0, 0, 0, 290, 291, 292, 293, 294, 0, 0, + 0, 295, 296, 297, 0, 0, 298, 0, 0, 0, + 0, 299, 0, 0, 0, 0, 301, 0, 302, 303, + 0, 304, 305, 0, 0, 0, 306, 0, 0, 0, + 308, 309, 0, 0, 310, 0, 0, 311, 312, 0, + 0, 0, 0, 0, 313, 314, 0, 315, 0, 316, + 0, 317, 318, 0, 0, 0, 0, 0, 0, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 0, 335, 336, 337, 338, + 0, 339, 340, 341, 342, 0, 343, 344, 345, 0, + 0, 0, 0, 346, 347, 348, 349, 350, 351, 0, + 0, 352, 353, 0, 354, 0, 355, 0, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 0, 0, + 366, 0, 0, 367, 368, 369, 370, 0, 0, 0, + 0, 372, 0, 0, 0, 373, 0, 374, 375, 376, + 0, 377, 378, 379, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 384, 385, 0, + 0, 0, 0, 387, 0, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 0, 0, 0, 0, 399, 400, + 0, 401, 0, 402, 403, 404, 405, 406, 0, 407, + 408, 409, 0, 0, 410, 0, 0, 0, 411, 412, + 413, 414, 415, 0, 0, 416, 417, 418, 419, 420, + 0, 421, 0, 0, 423, 0, 425, 0, 0, 426, + 0, 0, 0, 428, 0, 0, 430, 431, 0, 432, + 0, 433, 0, 0, 434, 0, 436, 437, 438, 439, + 440, 441, 442, 0, 444, 445, 0, 446, 0, 0, + 0, 0, 448, 449, 450, 0, 0, 0, 0, 452, + 0, 0, 0, 0, 0, 0, 455, 0, 0, 458, + 459, 0, 460, 0, 462, 0, 464, 465, 0, 0, + 0, 0, 0, 0, 466, 467, 0, 468, 0, 0, + 469, 0, 0, 0, 470, 0, 472, 0, 0, 0, + 473, 0, 0, 0, 475, 0, 476, 477, 478, 479, + 480, 481, 0, 0, 482, 483, 484, 485, 0, 486, + 487, 0, 0, 488, 489, 490, 491, 0, 0, 492, + 493, 0, 494, 495, 496, 497, 0, 0, 0, 0, + 0, 498, 499, 500, 0, 0, 0, 0, 502, 503, + 504, 0, 505, 506, 0, 507, 508, 0, 0, 0, + 0, 0, 511, 0, 0, 512, 0, 0, 0, 514, + 515, 0, 0, 0, 0, 0, 0, 516, 0, 0, + 517, 0, 0, 0, 518, 519, 520, 521, 522, 523, + 524, 0, 0, 0, 0, 0, 0, 525, 0, 0, + 527, 0, 529, 0, 0, 530 }; static const yytype_int16 yycheck[] = { - 6, 3, 143, 609, 151, 632, 1116, 608, 609, 24, - 930, 986, 21, 641, 20, 1285, 644, 1213, 24, 1506, - 1232, 1035, 608, 1285, 33, 592, 6, 1379, 1013, 1014, - 36, 40, 1738, 140, 4, 547, 0, 661, 44, 1024, - 1507, 47, 962, 1057, 1185, 1256, 52, 2264, 661, 2107, - 2108, 549, 550, 59, 1507, 553, 554, 555, 2264, 863, - 558, 559, 560, 766, 718, 959, 1427, 582, 1547, 45, - 1379, 2786, 2361, 926, 927, 1685, 2969, 592, 1307, 2731, - 2854, 3244, 2589, 3070, 2373, 1709, 1315, 1707, 1120, 566, - 1620, 2743, 2744, 2003, 109, 3084, 1120, 1643, 2502, 3576, - 2714, 1222, 1430, 109, 1351, 1316, 1317, 566, 1077, 1320, - 1321, 1322, 1323, 3290, 1325, 1326, 1327, 1328, 1329, 1330, - 1331, 1332, 3111, 600, 1734, 1450, 1576, 612, 1967, 135, - 615, 137, 2463, 139, 140, 141, 2112, 2895, 2896, 2262, - 1675, 600, 2061, 2901, 3538, 2903, 1596, 2264, 2374, 146, - 700, 151, 3113, 703, 1604, 1605, 151, 137, 2752, 139, - 2337, 3555, 2720, 3856, 2694, 2262, 151, 2337, 822, 823, - 824, 3442, 151, 2629, 2754, 3245, 3443, 18, 2758, 3368, - 834, 13, 2638, 1152, 3909, 3213, 13, 3103, 27, 2769, - 20, 3715, 20, 54, 20, 3223, 1191, 1192, 1193, 21, - 66, 2781, 1033, 3376, 17, 18, 17, 18, 13, 2861, - 2862, 75, 37, 1208, 2337, 17, 18, 31, 39, 17, - 18, 63, 20, 33, 116, 39, 18, 1058, 27, 1059, - 2459, 1106, 1107, 84, 17, 18, 2244, 132, 3615, 54, - 2337, 158, 2747, 2075, 22, 136, 1241, 2327, 2868, 1244, - 83, 17, 18, 2101, 83, 2743, 2744, 183, 3182, 37, - 377, 198, 2898, 196, 72, 196, 118, 3661, 69, 164, - 1265, 1266, 152, 51, 1269, 1150, 4130, 198, 226, 326, - 204, 46, 91, 27, 62, 63, 381, 17, 18, 20, - 39, 1286, 1287, 66, 17, 18, 67, 22, 377, 375, - 17, 18, 50, 4349, 237, 37, 237, 212, 13, 132, - 277, 3657, 37, 377, 379, 22, 138, 70, 371, 402, - 17, 18, 3220, 164, 17, 18, 51, 166, 2676, 204, - 4623, 197, 218, 280, 164, 432, 150, 62, 63, 278, - 4660, 237, 471, 191, 405, 201, 258, 17, 18, 237, - 89, 12, 379, 17, 18, 62, 63, 706, 2973, 486, - 237, 261, 17, 18, 9, 132, 474, 486, 132, 867, - 502, 963, 21, 2861, 2862, 3852, 408, 844, 565, 284, - 136, 3935, 284, 565, 34, 17, 18, 17, 18, 241, - 13, 3352, 17, 18, 3057, 61, 2254, 164, 17, 18, - 164, 222, 223, 232, 243, 234, 609, 295, 609, 4140, - 565, 926, 927, 556, 565, 930, 559, 597, 586, 267, - 144, 151, 631, 17, 18, 631, 651, 2056, 364, 365, - 4155, 17, 18, 658, 263, 201, 160, 72, 1685, 17, - 18, 609, 201, 584, 243, 67, 3109, 962, 387, 557, - 659, 241, 75, 659, 562, 27, 659, 658, 659, 566, - 1354, 183, 665, 606, 571, 17, 18, 369, 4161, 601, - 657, 4025, 133, 222, 223, 657, 313, 275, 658, 3094, - 512, 1109, 321, 1111, 1112, 1113, 1114, 1734, 259, 138, - 1082, 247, 2840, 600, 170, 419, 17, 18, 606, 243, - 17, 18, 428, 380, 1398, 361, 164, 974, 201, 664, - 859, 643, 22, 1623, 622, 4835, 4836, 183, 1221, 367, - 432, 187, 321, 198, 3077, 3078, 3079, 37, 475, 368, - 657, 201, 198, 1236, 631, 4828, 665, 1522, 657, 545, - 428, 51, 659, 1347, 419, 3922, 191, 370, 3925, 3926, - 556, 417, 62, 63, 87, 1540, 295, 2635, 495, 455, - 566, 567, 623, 463, 295, 571, 536, 1052, 574, 3063, - 665, 636, 679, 386, 657, 386, 389, 321, 389, 237, - 659, 313, 588, 659, 166, 3931, 491, 3615, 386, 537, - 355, 389, 363, 3227, 600, 659, 1163, 650, 565, 3627, - 1494, 462, 608, 386, 198, 575, 389, 3241, 3242, 636, - 657, 4657, 618, 589, 494, 3643, 3644, 565, 427, 3253, - 386, 1171, 3515, 389, 2747, 511, 4103, 17, 18, 3545, - 20, 2110, 638, 3549, 2244, 559, 75, 259, 3290, 4493, - 1534, 4495, 612, 1675, 294, 615, 468, 462, 1163, 619, - 2747, 1675, 2262, 17, 18, 661, 386, 663, 597, 389, - 3553, 243, 629, 386, 330, 1319, 389, 440, 183, 386, - 3177, 243, 389, 679, 689, 608, 1379, 608, 3602, 432, - 277, 607, 1336, 689, 559, 691, 1198, 1199, 2805, 386, - 1937, 2868, 389, 386, 700, 3347, 389, 703, 2868, 504, - 706, 432, 541, 504, 1915, 3210, 428, 713, 645, 2061, - 631, 628, 603, 1225, 3612, 1926, 386, 2327, 1929, 389, - 2552, 1233, 386, 1235, 2732, 389, 540, 2337, 3348, 537, - 622, 386, 598, 2183, 389, 1247, 1248, 1249, 589, 1570, - 4134, 2970, 1573, 1255, 565, 2868, 1577, 561, 1579, 321, - 576, 1720, 2061, 1748, 386, 862, 386, 389, 529, 389, - 766, 386, 428, 4157, 389, 598, 576, 386, 663, 583, - 389, 2868, 1602, 578, 616, 546, 1607, 1608, 1609, 2689, - 2628, 609, 1406, 2863, 576, 624, 368, 639, 1909, 1664, - 631, 4168, 386, 657, 1714, 389, 368, 455, 659, 504, - 386, 3974, 631, 389, 454, 1355, 620, 4532, 386, 4534, - 4535, 389, 4336, 3528, 2344, 645, 565, 595, 4007, 645, - 659, 827, 663, 829, 2453, 657, 609, 640, 650, 640, - 657, 833, 657, 663, 386, 17, 18, 389, 640, 1834, - 2036, 619, 640, 1838, 4115, 658, 659, 603, 854, 855, - 856, 662, 858, 859, 860, 4122, 862, 640, 864, 3347, - 659, 659, 4133, 3933, 870, 386, 637, 1862, 389, 386, - 595, 1495, 389, 621, 640, 855, 659, 3225, 4272, 657, - 860, 1685, 1495, 631, 864, 861, 1371, 2745, 595, 865, - 1349, 4622, 658, 3882, 3922, 1445, 663, 3925, 3926, 663, - 659, 907, 537, 3251, 3252, 636, 1013, 922, 1015, 3937, - 640, 1018, 1019, 428, 645, 1465, 922, 640, 924, 17, - 18, 923, 928, 640, 546, 4650, 4651, 1034, 1556, 4654, - 1734, 2551, 2990, 3894, 2640, 658, 659, 659, 568, 17, - 18, 658, 659, 640, 153, 960, 73, 640, 481, 625, - 1574, 966, 387, 959, 960, 3871, 3872, 59, 368, 541, - 966, 1574, 659, 17, 18, 1106, 1107, 3641, 1115, 541, - 640, 2881, 164, 2883, 54, 2521, 640, 3535, 3531, 108, - 630, 4674, 421, 953, 659, 640, 3044, 17, 18, 659, - 1475, 17, 18, 659, 658, 659, 386, 2244, 332, 389, - 164, 1007, 3760, 658, 659, 663, 3640, 1013, 640, 1015, - 640, 3769, 1018, 1019, 3521, 640, 49, 1645, 1646, 1643, - 4745, 640, 386, 3101, 3102, 389, 658, 659, 1034, 1657, - 3524, 355, 629, 658, 659, 21, 404, 12, 111, 658, - 659, 202, 624, 3573, 17, 18, 640, 1524, 186, 4742, - 17, 18, 624, 377, 640, 869, 437, 3943, 2968, 154, - 17, 18, 640, 3280, 658, 1524, 17, 18, 1696, 2698, - 401, 1077, 658, 659, 3280, 4064, 288, 659, 1679, 3637, - 2327, 659, 1052, 466, 1054, 595, 278, 3210, 640, 3545, - 2337, 129, 607, 3549, 17, 18, 1102, 3691, 146, 1101, - 457, 17, 18, 634, 258, 615, 616, 659, 657, 2738, - 1116, 1108, 3692, 3210, 278, 1115, 2010, 556, 449, 640, - 1115, 4082, 2732, 640, 4518, 1140, 3762, 1103, 1104, 1832, - 1115, 17, 18, 2118, 1140, 24, 1115, 2747, 659, 73, - 4168, 580, 659, 1149, 659, 2769, 1152, 961, 17, 18, - 2044, 2045, 138, 3379, 3073, 3131, 27, 2624, 119, 2626, - 2627, 122, 377, 3280, 2178, 1171, 1181, 495, 2703, 1149, - 3009, 3348, 480, 2626, 2627, 1181, 2208, 389, 3348, 565, - 4520, 295, 13, 1642, 2208, 530, 219, 377, 2399, 4583, - 2204, 1298, 377, 486, 9, 17, 18, 565, 377, 1714, - 3958, 17, 18, 3961, 386, 2346, 161, 389, 2837, 3540, - 4687, 592, 83, 2842, 624, 1221, 171, 130, 33, 564, - 201, 2850, 2851, 134, 659, 3348, 198, 2856, 1335, 563, - 1236, 2559, 370, 3991, 3992, 3993, 129, 486, 172, 400, - 2690, 3999, 1349, 2568, 486, 2474, 17, 18, 4006, 533, - 640, 3348, 486, 2863, 292, 245, 590, 13, 2868, 215, - 35, 388, 17, 18, 254, 367, 17, 18, 2480, 2481, - 251, 657, 136, 1380, 1928, 3949, 640, 486, 432, 1285, - 17, 18, 665, 331, 289, 609, 175, 367, 386, 4629, - 313, 389, 1298, 4179, 367, 659, 391, 2225, 2226, 148, - 2269, 559, 659, 17, 18, 261, 83, 1309, 386, 17, - 18, 389, 287, 184, 2242, 287, 147, 645, 432, 2589, - 3956, 3957, 657, 2251, 2252, 17, 18, 3963, 659, 1335, - 3966, 3967, 386, 371, 1340, 389, 0, 1377, 2169, 252, - 17, 18, 503, 1349, 349, 557, 1453, 3983, 1354, 1355, - 2880, 2182, 2473, 2564, 2185, 2186, 386, 586, 2061, 389, - 386, 3997, 2483, 389, 657, 4001, 4002, 4003, 4004, 4005, - 164, 90, 243, 1379, 1380, 278, 17, 18, 17, 18, - 17, 18, 462, 247, 295, 201, 568, 4564, 645, 17, - 18, 147, 1398, 112, 2322, 2323, 2324, 2325, 1948, 292, - 1406, 1371, 392, 1418, 427, 1411, 387, 1413, 657, 3029, - 17, 18, 1418, 386, 494, 657, 389, 1524, 232, 386, - 234, 4898, 389, 657, 4601, 4602, 2696, 661, 1434, 386, - 385, 387, 389, 506, 2696, 386, 665, 629, 389, 1445, - 2244, 3351, 17, 18, 659, 583, 479, 1453, 657, 1419, - 321, 133, 661, 1468, 388, 232, 4445, 234, 640, 1465, - 278, 599, 1468, 386, 4641, 629, 389, 13, 376, 659, - 386, 663, 1957, 389, 659, 3021, 3022, 3023, 371, 254, - 659, 504, 468, 414, 387, 2732, 263, 2141, 1494, 1495, - 13, 362, 1498, 55, 83, 344, 404, 368, 2048, 663, - 386, 1507, 277, 389, 66, 1475, 1647, 17, 18, 17, - 18, 1517, 1552, 1553, 17, 18, 4290, 386, 1524, 1525, - 389, 434, 636, 2327, 17, 18, 17, 18, 1534, 2543, - 17, 18, 537, 2337, 199, 1642, 3940, 645, 129, 4526, - 1546, 1547, 640, 13, 4707, 1560, 2132, 1562, 13, 4442, - 588, 1557, 1558, 1559, 1560, 1561, 1562, 4171, 1665, 4173, - 133, 659, 640, 372, 386, 1571, 1572, 389, 1574, 387, - 386, 253, 1578, 389, 174, 1682, 133, 1557, 1558, 1559, - 658, 1561, 46, 2211, 1599, 2062, 640, 2215, 2216, 4363, - 4364, 455, 1572, 1599, 243, 3219, 3220, 3226, 1578, 3228, - 3210, 147, 193, 2062, 2498, 659, 3235, 1577, 569, 564, - 640, 572, 148, 215, 640, 386, 2863, 134, 389, 284, - 3249, 2868, 486, 3090, 147, 408, 645, 3256, 3257, 659, - 543, 386, 658, 2200, 389, 386, 1642, 1643, 389, 245, - 3269, 3270, 3271, 232, 446, 234, 3275, 3276, 254, 386, - 17, 18, 389, 4368, 1669, 17, 18, 565, 4165, 1665, - 1666, 1667, 1668, 1669, 2860, 3575, 441, 640, 658, 478, - 541, 2703, 386, 640, 263, 389, 1682, 147, 386, 2703, - 253, 389, 147, 640, 2669, 2200, 3315, 3316, 3317, 640, - 1705, 155, 659, 4692, 386, 588, 4695, 389, 1704, 1705, - 25, 292, 659, 495, 369, 17, 18, 224, 659, 386, - 17, 18, 389, 2607, 1720, 17, 18, 640, 1688, 368, - 11, 3073, 284, 198, 640, 527, 201, 17, 18, 512, - 279, 17, 18, 282, 586, 1741, 659, 1743, 3348, 603, - 4354, 2882, 219, 659, 201, 386, 3107, 386, 389, 386, - 389, 241, 389, 624, 640, 17, 18, 2986, 386, 2653, - 4049, 389, 17, 18, 3073, 4050, 17, 18, 665, 495, - 495, 640, 631, 659, 264, 367, 4139, 2697, 295, 386, - 371, 292, 389, 129, 495, 4148, 392, 264, 3058, 37, - 659, 219, 1933, 657, 17, 18, 3058, 254, 1134, 1135, - 659, 650, 651, 652, 653, 654, 655, 3436, 344, 586, - 18, 386, 287, 665, 389, 63, 628, 4816, 640, 17, - 18, 17, 18, 2477, 640, 2753, 1832, 1833, 2756, 2757, - 537, 2759, 609, 2818, 2762, 2763, 264, 659, 2766, 4346, - 17, 18, 1949, 2771, 1180, 17, 18, 193, 2776, 2777, - 2778, 2779, 2780, 645, 3050, 447, 2784, 2785, 2370, 2787, - 371, 17, 18, 2375, 254, 2793, 2794, 2795, 2796, 640, - 3490, 2799, 2800, 665, 2802, 609, 386, 2389, 386, 389, - 429, 389, 34, 386, 274, 640, 389, 1893, 659, 640, - 2031, 556, 541, 386, 559, 386, 389, 2521, 389, 386, - 2524, 215, 389, 640, 659, 204, 2826, 81, 659, 27, - 617, 2423, 4564, 204, 632, 633, 545, 17, 18, 645, - 645, 1936, 659, 17, 18, 659, 640, 556, 2732, 1935, - 1936, 665, 640, 85, 645, 455, 17, 18, 2866, 665, - 665, 659, 1948, 1949, 4229, 659, 292, 4232, 640, 4601, - 4602, 659, 17, 18, 665, 2062, 1962, 17, 18, 556, - 657, 1967, 559, 640, 162, 83, 1972, 659, 665, 1975, - 2077, 1986, 1987, 616, 1989, 624, 619, 2544, 2490, 651, - 1986, 1987, 659, 1989, 2608, 3255, 658, 1957, 3612, 4641, - 235, 17, 18, 3255, 2561, 2608, 235, 588, 2013, 640, - 215, 640, 2017, 640, 2010, 17, 18, 2013, 2115, 142, - 162, 2017, 640, 4627, 4628, 17, 18, 658, 2495, 386, - 659, 658, 389, 197, 386, 371, 657, 389, 381, 2544, - 658, 2046, 2047, 640, 665, 251, 2495, 50, 2044, 2045, - 2046, 2047, 2048, 17, 18, 2560, 2561, 556, 166, 614, - 559, 658, 2067, 2068, 2069, 2061, 2062, 17, 18, 2863, - 105, 2067, 2068, 2069, 2868, 640, 184, 241, 3692, 62, - 63, 2077, 2042, 2674, 386, 129, 432, 389, 132, 386, - 73, 568, 389, 658, 386, 2100, 2092, 389, 2674, 3568, - 264, 13, 658, 659, 2100, 3070, 386, 453, 201, 389, - 386, 3348, 1399, 389, 2110, 1402, 3026, 4746, 1405, 2115, - 17, 18, 494, 622, 658, 659, 652, 653, 654, 655, - 419, 17, 18, 45, 386, 243, 2132, 389, 419, 3143, - 640, 386, 640, 489, 389, 386, 505, 640, 389, 193, - 4339, 505, 13, 3355, 4343, 1069, 2152, 640, 658, 640, - 658, 1075, 1076, 640, 295, 658, 17, 18, 3052, 4798, - 17, 18, 4801, 386, 658, 658, 389, 658, 222, 2184, - 3431, 3156, 3384, 3385, 3435, 201, 98, 2147, 2184, 2149, - 3541, 103, 2697, 3036, 3037, 3038, 3039, 663, 386, 486, - 386, 389, 2168, 389, 4833, 3407, 235, 17, 18, 244, - 492, 17, 18, 321, 241, 44, 241, 2213, 2214, 386, - 241, 2217, 389, 52, 386, 556, 261, 389, 559, 559, - 486, 665, 17, 18, 658, 659, 604, 526, 273, 3425, - 386, 559, 136, 389, 2214, 526, 17, 18, 292, 20, - 658, 659, 588, 417, 362, 66, 526, 17, 18, 174, - 368, 657, 2267, 136, 2361, 3525, 158, 17, 18, 2229, - 81, 2267, 414, 2269, 2831, 576, 2373, 6, 2238, 2239, - 17, 18, 93, 640, 658, 659, 147, 657, 640, 17, - 18, 622, 581, 657, 436, 657, 386, 658, 659, 389, - 581, 658, 386, 129, 657, 389, 658, 657, 738, 739, - 17, 18, 657, 20, 3574, 386, 3234, 657, 389, 657, - 355, 2826, 3574, 658, 659, 4514, 2831, 371, 3149, 3247, - 472, 386, 4521, 622, 389, 657, 386, 657, 640, 389, - 657, 622, 2338, 640, 256, 2341, 657, 18, 640, 626, - 627, 657, 629, 247, 631, 565, 658, 613, 614, 657, - 640, 658, 657, 224, 640, 2361, 658, 193, 659, 2466, - 386, 657, 3277, 389, 247, 213, 179, 2373, 658, 657, - 3073, 81, 658, 813, 386, 657, 197, 389, 640, 657, - 532, 657, 203, 657, 386, 640, 222, 389, 2495, 640, - 2497, 657, 3307, 3313, 658, 659, 658, 3021, 3022, 3023, - 658, 659, 665, 658, 4033, 4463, 4035, 658, 4037, 331, - 657, 779, 386, 657, 1987, 389, 1989, 640, 179, 244, - 241, 657, 4639, 541, 657, 470, 386, 658, 659, 389, - 17, 18, 4638, 801, 874, 658, 261, 129, 3634, 83, - 132, 609, 640, 264, 640, 657, 814, 815, 273, 418, - 13, 657, 4081, 3077, 3078, 3079, 292, 658, 659, 541, - 2466, 384, 658, 640, 3077, 3078, 3079, 148, 640, 2981, - 318, 319, 28, 395, 657, 323, 324, 325, 657, 386, - 3081, 658, 389, 474, 640, 2491, 658, 197, 657, 2495, - 386, 2497, 2498, 389, 2067, 2068, 2069, 542, 658, 659, - 657, 193, 658, 657, 129, 556, 624, 658, 659, 2616, - 657, 3026, 12, 658, 659, 2521, 659, 73, 2524, 658, - 659, 3036, 3037, 3038, 3039, 386, 657, 83, 389, 386, - 222, 241, 389, 3518, 588, 371, 3160, 20, 3973, 3974, - 640, 659, 3977, 3557, 3348, 657, 640, 3160, 657, 4748, - 4749, 455, 658, 659, 264, 657, 3570, 2563, 658, 640, - 657, 3996, 658, 659, 658, 657, 386, 4002, 193, 389, - 386, 4038, 455, 389, 657, 640, 132, 658, 658, 659, - 640, 3851, 486, 2589, 147, 4038, 3214, 2593, 657, 3851, - 3218, 386, 514, 658, 389, 18, 417, 222, 658, 243, - 292, 2607, 2608, 486, 3745, 386, 62, 63, 389, 657, - 2616, 657, 2719, 2720, 640, 115, 386, 662, 2624, 389, - 2626, 2627, 105, 657, 4059, 127, 386, 657, 640, 389, - 657, 553, 3233, 133, 658, 659, 657, 115, 640, 386, - 657, 2647, 389, 2649, 377, 470, 658, 2653, 386, 520, - 521, 389, 523, 657, 525, 377, 658, 657, 4287, 4288, - 4289, 224, 657, 344, 158, 159, 640, 292, 2674, 386, - 3780, 542, 389, 657, 174, 3945, 232, 2647, 234, 371, - 640, 164, 1122, 3945, 658, 486, 20, 2651, 658, 659, - 2696, 401, 657, 494, 515, 4319, 4320, 576, 658, 603, - 2706, 2716, 2717, 657, 204, 2711, 657, 417, 264, 3624, - 2716, 2717, 657, 2719, 2720, 198, 657, 542, 362, 657, - 603, 658, 659, 657, 368, 148, 658, 659, 230, 657, - 4788, 2711, 215, 640, 658, 659, 657, 220, 658, 659, - 657, 3239, 657, 3658, 640, 83, 371, 225, 658, 659, - 162, 658, 588, 657, 3669, 237, 4462, 3672, 658, 659, - 657, 244, 658, 657, 2734, 2735, 2736, 2737, 251, 2739, - 2740, 105, 657, 4208, 657, 3038, 3039, 598, 261, 640, - 658, 659, 4217, 640, 657, 86, 512, 88, 288, 657, - 273, 4226, 2798, 657, 438, 278, 4231, 658, 3313, 658, - 659, 658, 4014, 657, 287, 658, 659, 2813, 364, 365, - 1273, 1274, 613, 614, 370, 657, 497, 498, 52, 2825, - 640, 377, 658, 2829, 640, 657, 4178, 657, 166, 657, - 164, 132, 334, 666, 658, 659, 338, 129, 658, 4326, - 132, 4899, 658, 345, 148, 640, 658, 659, 658, 659, - 657, 2992, 658, 659, 657, 156, 657, 3483, 3484, 640, - 148, 417, 196, 658, 198, 39, 658, 659, 2838, 2839, - 640, 2841, 355, 2843, 2844, 2845, 2846, 2847, 2848, 2849, - 640, 215, 2852, 3395, 657, 2855, 220, 663, 658, 2859, - 658, 192, 289, 640, 377, 52, 588, 541, 658, 384, - 129, 193, 640, 237, 387, 243, 168, 3531, 659, 3016, - 244, 658, 658, 659, 377, 393, 37, 251, 3531, 419, - 658, 344, 201, 640, 426, 377, 404, 261, 658, 659, - 222, 658, 659, 411, 490, 480, 419, 597, 3450, 273, - 658, 659, 63, 205, 278, 658, 659, 50, 122, 593, - 278, 105, 201, 287, 148, 129, 652, 520, 521, 522, - 523, 524, 525, 588, 193, 665, 3567, 648, 649, 650, - 651, 652, 653, 654, 655, 494, 3083, 115, 505, 542, - 624, 3567, 484, 658, 659, 173, 3614, 470, 657, 3617, - 3618, 198, 492, 222, 537, 257, 658, 659, 119, 556, - 292, 122, 512, 3009, 537, 3011, 4635, 269, 289, 130, - 3016, 494, 186, 3028, 3020, 3021, 3022, 3023, 165, 193, - 66, 355, 3028, 83, 362, 198, 526, 92, 149, 3035, - 368, 659, 510, 658, 378, 81, 174, 97, 4202, 4203, - 344, 129, 598, 377, 4396, 3051, 3052, 93, 222, 223, - 659, 4215, 3058, 387, 658, 659, 344, 557, 4222, 542, - 254, 658, 659, 292, 658, 659, 204, 3073, 552, 4233, - 4234, 3077, 3078, 3079, 497, 498, 658, 3083, 164, 371, - 658, 659, 658, 659, 3090, 419, 4297, 132, 299, 300, - 244, 4201, 658, 659, 395, 118, 358, 4584, 6, 297, - 438, 299, 300, 664, 315, 193, 4216, 261, 383, 3115, - 658, 659, 117, 4548, 597, 4550, 4, 315, 292, 273, - 658, 659, 622, 485, 626, 622, 609, 254, 606, 658, - 659, 252, 401, 3762, 222, 659, 470, 3244, 439, 59, - 642, 162, 371, 658, 659, 3115, 629, 447, 631, 665, - 344, 197, 4348, 659, 3160, 658, 659, 203, 3173, 3165, - 494, 3176, 645, 105, 73, 658, 659, 3173, 658, 659, - 3176, 3177, 658, 659, 13, 658, 659, 3826, 3827, 662, - 663, 628, 356, 658, 4104, 3165, 658, 147, 10, 659, - 658, 4461, 366, 497, 498, 241, 370, 371, 665, 4461, - 658, 355, 657, 541, 292, 129, 266, 3213, 542, 497, - 498, 665, 658, 277, 665, 3224, 3222, 3223, 264, 377, - 166, 3230, 664, 3229, 52, 648, 649, 650, 651, 652, - 653, 654, 655, 444, 445, 289, 357, 289, 3244, 3245, - 289, 289, 289, 659, 3250, 3254, 444, 445, 289, 3255, - 3265, 3260, 659, 645, 556, 593, 657, 3266, 3267, 3265, - 235, 3231, 3232, 597, 4278, 3832, 231, 35, 4464, 193, - 284, 3277, 659, 201, 608, 609, 294, 663, 3284, 3285, - 402, 419, 342, 371, 3290, 659, 624, 576, 659, 3259, - 576, 3919, 401, 666, 576, 629, 588, 631, 222, 659, - 645, 3307, 244, 497, 498, 198, 659, 367, 232, 629, - 234, 645, 603, 254, 665, 129, 470, 3832, 132, 261, - 3290, 659, 659, 659, 658, 659, 73, 659, 662, 663, - 652, 273, 537, 129, 3963, 254, 132, 3966, 3967, 4259, - 3346, 255, 6, 188, 3350, 649, 650, 651, 652, 653, - 654, 655, 554, 659, 3983, 401, 198, 61, 173, 588, - 537, 115, 650, 651, 652, 653, 654, 655, 292, 509, - 430, 417, 4001, 4483, 4484, 406, 4486, 179, 20, 193, - 148, 502, 174, 645, 646, 647, 28, 204, 542, 657, - 143, 565, 659, 405, 658, 569, 60, 193, 572, 659, - 56, 628, 83, 604, 608, 659, 63, 4603, 222, 583, - 91, 201, 658, 355, 588, 658, 4686, 591, 658, 658, - 174, 559, 658, 658, 4686, 4410, 222, 652, 3535, 201, - 518, 73, 17, 18, 658, 377, 658, 118, 3444, 4549, - 659, 83, 105, 581, 657, 651, 3452, 371, 658, 658, - 204, 572, 597, 495, 648, 649, 650, 651, 652, 653, - 654, 655, 119, 658, 4031, 122, 526, 658, 4664, 515, - 659, 658, 658, 130, 659, 658, 650, 651, 292, 183, - 601, 657, 3452, 187, 622, 166, 254, 241, 152, 148, - 132, 129, 149, 658, 198, 657, 292, 657, 3504, 655, - 588, 4611, 657, 4613, 4614, 658, 4426, 659, 659, 277, - 659, 137, 4432, 576, 565, 565, 4031, 233, 233, 3525, - 3526, 565, 242, 3529, 251, 3531, 659, 657, 470, 3535, - 3637, 548, 4517, 12, 288, 13, 213, 194, 123, 124, - 125, 126, 127, 4471, 4472, 657, 201, 4475, 4476, 4477, - 4478, 4526, 598, 659, 3560, 193, 565, 371, 177, 475, - 241, 3567, 3568, 4774, 659, 207, 215, 496, 3574, 665, - 198, 198, 148, 3579, 657, 371, 344, 129, 3593, 657, - 275, 244, 659, 4511, 222, 659, 186, 3593, 201, 4104, - 232, 658, 234, 665, 665, 252, 364, 365, 261, 3608, - 542, 427, 3572, 665, 4589, 4875, 659, 602, 494, 3615, - 273, 198, 28, 4875, 30, 377, 4886, 3619, 3624, 659, - 4890, 3627, 264, 659, 4886, 4895, 330, 377, 4890, 353, - 526, 3637, 4843, 4895, 526, 3641, 526, 3643, 3644, 320, - 377, 193, 227, 228, 229, 230, 62, 63, 526, 65, - 526, 3657, 3658, 485, 292, 198, 131, 73, 339, 657, - 414, 568, 645, 3669, 588, 419, 3672, 83, 3638, 645, - 222, 4599, 4600, 441, 645, 91, 645, 3647, 254, 645, - 4608, 362, 645, 645, 3699, 344, 645, 645, 645, 645, - 3696, 645, 355, 3699, 645, 4301, 645, 354, 3704, 604, - 357, 365, 118, 3709, 659, 645, 645, 39, 645, 645, - 3716, 645, 645, 645, 377, 645, 132, 471, 3724, 135, - 645, 288, 364, 365, 428, 3731, 609, 665, 370, 497, - 498, 658, 162, 371, 250, 377, 3716, 658, 492, 250, - 292, 658, 665, 658, 4259, 513, 658, 658, 191, 334, - 166, 336, 337, 338, 658, 486, 658, 4867, 658, 7, - 345, 659, 205, 645, 364, 365, 645, 431, 344, 433, - 370, 665, 659, 576, 588, 417, 58, 434, 576, 576, - 665, 636, 659, 284, 89, 50, 68, 657, 657, 645, - 122, 657, 588, 576, 657, 4422, 645, 129, 384, 3906, - 82, 386, 201, 557, 389, 201, 4726, 470, 562, 201, - 177, 659, 94, 95, 96, 659, 232, 261, 234, 371, - 261, 390, 50, 220, 267, 241, 269, 581, 341, 565, - 565, 113, 248, 258, 432, 3841, 659, 371, 497, 498, - 3846, 426, 335, 7, 657, 3851, 197, 263, 490, 377, - 118, 118, 606, 3823, 186, 81, 401, 401, 576, 401, - 541, 193, 143, 557, 262, 401, 557, 262, 622, 143, - 401, 50, 401, 403, 4480, 401, 557, 401, 401, 542, - 648, 649, 650, 651, 652, 653, 654, 655, 450, 663, - 222, 223, 657, 657, 657, 215, 657, 652, 483, 484, - 3906, 657, 3908, 3909, 320, 665, 657, 3913, 4893, 252, - 252, 4426, 658, 658, 658, 572, 3922, 4432, 361, 3925, - 3926, 497, 498, 339, 658, 3931, 659, 3933, 4848, 657, - 3900, 3937, 657, 659, 432, 658, 665, 658, 384, 3945, - 377, 658, 4049, 3949, 601, 3951, 658, 652, 58, 657, - 588, 237, 658, 4873, 279, 454, 598, 659, 68, 401, - 292, 350, 37, 28, 665, 30, 659, 201, 4109, 658, - 261, 261, 82, 416, 14, 387, 658, 432, 394, 658, - 396, 659, 630, 583, 94, 95, 96, 645, 404, 648, - 649, 650, 651, 652, 653, 654, 655, 62, 63, 599, - 65, 466, 118, 113, 657, 659, 235, 401, 73, 264, - 115, 264, 657, 83, 665, 4021, 576, 217, 83, 659, - 663, 658, 657, 659, 356, 658, 91, 97, 50, 488, - 631, 275, 4038, 658, 658, 468, 588, 182, 370, 371, - 287, 626, 213, 4049, 565, 659, 155, 271, 658, 4019, - 658, 333, 659, 118, 486, 640, 641, 642, 261, 261, - 476, 512, 377, 635, 104, 140, 657, 132, 657, 351, - 135, 141, 648, 649, 650, 651, 652, 653, 654, 655, - 658, 658, 264, 657, 659, 631, 264, 4688, 659, 659, - 658, 166, 657, 20, 169, 83, 136, 415, 203, 377, - 377, 166, 240, 198, 198, 198, 568, 658, 278, 658, - 658, 4258, 152, 371, 63, 252, 341, 658, 534, 535, - 536, 658, 266, 658, 4130, 541, 658, 427, 18, 4135, - 384, 206, 659, 4139, 174, 631, 241, 251, 178, 658, - 658, 557, 4148, 658, 560, 657, 75, 419, 658, 4155, - 190, 226, 659, 609, 657, 609, 665, 232, 658, 234, - 481, 658, 4168, 579, 659, 657, 20, 232, 179, 234, - 4185, 609, 132, 213, 132, 559, 241, 657, 4187, 4185, - 413, 597, 464, 248, 657, 657, 87, 4193, 665, 151, - 504, 132, 37, 659, 4335, 371, 266, 181, 263, 341, - 482, 241, 645, 646, 647, 658, 144, 247, 565, 565, - 565, 4726, 277, 264, 289, 4821, 280, 657, 559, 609, - 613, 4223, 609, 333, 251, 659, 377, 658, 383, 4235, - 657, 4237, 658, 565, 317, 528, 619, 569, 313, 619, - 572, 351, 177, 659, 4250, 475, 465, 287, 4250, 658, - 658, 583, 659, 64, 384, 320, 588, 603, 547, 591, - 50, 50, 544, 161, 50, 466, 657, 371, 251, 657, - 377, 657, 342, 15, 339, 657, 657, 603, 657, 561, - 132, 4296, 264, 20, 264, 370, 645, 4394, 531, 200, - 4296, 631, 177, 4299, 364, 365, 567, 367, 166, 143, - 143, 50, 547, 657, 50, 50, 198, 657, 123, 124, - 125, 126, 127, 658, 398, 614, 366, 371, 650, 651, - 658, 657, 657, 657, 657, 163, 657, 657, 657, 394, - 658, 396, 659, 4848, 4340, 658, 548, 582, 12, 404, - 287, 658, 66, 418, 657, 384, 28, 592, 30, 66, - 657, 50, 427, 50, 657, 657, 141, 658, 4873, 198, - 430, 659, 5, 151, 609, 377, 471, 442, 377, 384, - 658, 658, 482, 440, 384, 136, 603, 475, 623, 659, - 420, 157, 658, 65, 233, 460, 264, 492, 4394, 658, - 50, 477, 371, 657, 494, 237, 659, 2651, 2857, 2504, - 440, 83, 4033, 4037, 4406, 4508, 4035, 1054, 448, 91, - 515, 476, 227, 228, 229, 230, 456, 934, 3206, 1107, - 4153, 4506, 4428, 4429, 4795, 4395, 4625, 4791, 1131, 504, - 4333, 4027, 507, 4578, 544, 52, 118, 610, 2060, 3009, - 1972, 3833, 2289, 695, 2560, 2562, 486, 2561, 3036, 694, - 132, 561, 4524, 135, 559, 4461, 526, 562, 1691, 499, - 500, 1937, 537, 4345, 2264, 1179, 3667, 3046, 2812, 534, - 535, 536, 3845, 718, 3051, 3504, 541, 1450, 723, 4594, - 4621, 4297, 4690, 3848, 166, 4843, 4782, 4493, 4821, 4495, - 4480, 4162, 557, 598, 2208, 560, 2805, 4604, 3284, 3913, - 2813, 606, 3287, 4856, 4668, 3703, 3376, 3974, 4381, 4007, - 4688, 551, 4406, 4394, 579, 2719, 761, 4046, 2956, 334, - 3432, 336, 337, 338, 4797, 3435, 4532, 4668, 4534, 4535, - 345, 3427, 597, 778, 84, 4541, 84, 4748, 4630, 4749, - 4510, 581, 4169, 4521, 4340, 4514, 1616, 4216, 3280, 1144, - 232, 2812, 234, 2693, 4191, 2583, 1081, 2269, 4564, 241, - 4682, 3932, 1731, 603, 1705, 605, 248, 2046, 3028, 2551, - 3491, 2612, 4578, 2460, 4421, 1004, 4578, 822, 823, 824, - 825, 263, 4666, 2106, 1098, 991, 3452, 2369, 4594, 834, - 2365, 2992, 657, 3543, 4564, 1236, 2639, 2974, 4604, 4498, - 4707, 2634, 4322, 4786, 1208, 3731, 4787, 3807, 2484, 4624, - 3437, 426, 3945, 4137, 1636, 3276, 1636, 3090, 4624, 4790, - 4136, 3083, 4136, 2338, 869, 4449, 84, 4597, 4598, 1418, - 1468, 2545, 2588, 3851, 3519, 4641, 3520, 3574, 320, 1741, - 4686, 714, 2179, 621, 4650, 4651, 609, 1565, 4654, 4790, - 2180, 2687, 1115, 4794, 609, 109, 3951, 339, 4085, 3494, - 1476, 1960, 4841, 4307, 4859, 910, 4890, 4895, 483, 484, - 4490, 4641, 811, 4780, 3525, 4396, 4682, 1517, 2672, 3567, - 4686, 926, 927, 608, 608, 930, 2135, 1890, 2665, 2664, - 2017, 1496, 1642, 600, 978, 1408, 4285, 2524, 2607, 4292, - 985, 4707, 3292, 645, 601, 950, 645, 3011, 645, 1644, - -1, -1, 394, -1, 396, -1, -1, 962, -1, -1, - -1, -1, 404, -1, -1, -1, -1, -1, 4698, 4699, - 1107, 1107, 1107, -1, -1, -1, -1, -1, -1, 4745, - -1, -1, 37, -1, 150, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 4896, -1, -1, -1, -1, + 6, 3, 143, 610, 151, 633, 988, 609, 610, 24, + 932, 1509, 21, 1118, 20, 593, 1015, 1016, 24, 1216, + 1382, 1235, 1037, 1742, 33, 609, 6, 1026, 662, 0, + 36, 40, 1288, 140, 4, 662, 548, 1188, 44, 1510, + 1259, 47, 964, 1510, 1059, 45, 52, 2268, 2111, 2112, + 157, 2268, 2594, 59, 1713, 1430, 642, 1550, 2007, 645, + 1288, 550, 551, 768, 1382, 554, 555, 556, 583, 2366, + 559, 560, 561, 2791, 3075, 928, 929, 1711, 593, 2736, + 2719, 2378, 720, 1122, 567, 1310, 567, 3295, 1354, 2859, + 3249, 2748, 2749, 1318, 109, 1646, 865, 2507, 1122, 2974, + 1319, 1320, 3581, 109, 1323, 1324, 1325, 1326, 1623, 1328, + 1329, 1330, 1331, 1332, 1333, 1334, 1335, 961, 601, 3089, + 601, 1225, 702, 1453, 1079, 705, 1688, 1433, 2266, 135, + 2266, 137, 2468, 139, 140, 141, 613, 1971, 2268, 616, + 1579, 2065, 1678, 2903, 2379, 146, 3116, 3118, 2342, 2757, + 2725, 157, 151, 151, 2116, 151, 151, 137, 2699, 139, + 1599, 3861, 3543, 18, 2900, 2901, 2342, 3448, 1607, 1608, + 2906, 2634, 2908, 3108, 3447, 13, 1738, 17, 18, 3560, + 2643, 20, 3250, 13, 17, 18, 824, 825, 826, 1035, + 2759, 17, 18, 54, 2763, 20, 3373, 20, 836, 1154, + 21, 1194, 1195, 1196, 2342, 2774, 2342, 3381, 27, 2866, + 2867, 75, 1061, 132, 1060, 3720, 3914, 2786, 1211, 13, + 63, 31, 116, 132, 37, 18, 83, 2748, 2749, 39, + 17, 18, 20, 20, 33, 66, 17, 18, 17, 18, + 201, 27, 1108, 1109, 183, 164, 66, 152, 132, 2332, + 130, 1244, 17, 18, 1247, 164, 83, 69, 17, 18, + 326, 2105, 17, 18, 22, 2079, 118, 111, 3620, 196, + 54, 39, 13, 2873, 277, 1268, 1269, 3225, 73, 1272, + 164, 2464, 35, 17, 18, 3666, 1152, 34, 17, 18, + 39, 3662, 17, 18, 204, 37, 1289, 1290, 17, 18, + 46, 22, 73, 278, 62, 63, 371, 288, 4145, 164, + 237, 2258, 387, 212, 381, 59, 37, 138, 22, 3218, + 4354, 2248, 17, 18, 3646, 164, 132, 375, 471, 3228, + 51, 201, 405, 37, 258, 261, 17, 18, 9, 89, + 150, 62, 63, 17, 18, 2866, 2867, 51, 17, 18, + 404, 67, 201, 17, 18, 218, 61, 84, 62, 63, + 17, 18, 237, 402, 280, 708, 197, 50, 201, 376, + 457, 486, 252, 846, 12, 201, 13, 172, 3857, 368, + 869, 251, 278, 2978, 12, 284, 3357, 22, 278, 241, + 83, 164, 408, 437, 133, 565, 408, 404, 565, 17, + 18, 284, 37, 17, 18, 232, 158, 234, 389, 13, + 201, 446, 387, 928, 929, 597, 51, 932, 432, 17, + 18, 21, 1688, 2681, 243, 530, 2752, 62, 63, 3062, + 17, 18, 1136, 1137, 781, 37, 263, 144, 136, 453, + 556, 62, 63, 559, 585, 90, 313, 72, 556, 964, + 657, 559, 73, 160, 222, 223, 803, 243, 665, 564, + 567, 63, 4160, 254, 237, 572, 4166, 112, 183, 816, + 817, 75, 1738, 222, 223, 489, 658, 151, 183, 1183, + 21, 3114, 187, 634, 72, 136, 369, 657, 275, 428, + 657, 387, 527, 198, 601, 133, 512, 387, 613, 614, + 512, 254, 321, 976, 3099, 380, 622, 295, 432, 419, + 147, 565, 361, 1357, 253, 17, 18, 387, 861, 1224, + 191, 1626, 665, 367, 277, 1111, 1525, 1113, 1114, 1115, + 1116, 198, 3068, 2060, 1239, 321, 170, 463, 138, 232, + 546, 234, 657, 259, 1543, 295, 386, 294, 592, 389, + 623, 557, 164, 386, 434, 198, 389, 1401, 565, 475, + 386, 567, 568, 389, 370, 3936, 572, 537, 2640, 575, + 263, 313, 659, 680, 153, 3927, 557, 1054, 3930, 3931, + 3187, 1350, 368, 589, 659, 650, 417, 2845, 1166, 494, + 590, 657, 491, 388, 1174, 601, 247, 138, 665, 386, + 198, 462, 389, 609, 164, 386, 576, 386, 389, 355, + 389, 659, 87, 619, 2752, 3550, 2752, 388, 657, 3554, + 440, 2114, 597, 367, 196, 330, 629, 386, 4662, 4108, + 389, 386, 3954, 639, 389, 624, 17, 18, 3295, 1678, + 3182, 17, 18, 613, 432, 3520, 616, 468, 511, 559, + 620, 1166, 386, 1497, 1678, 389, 662, 386, 664, 287, + 389, 386, 506, 543, 389, 237, 278, 386, 607, 3617, + 389, 3082, 3083, 3084, 680, 1941, 691, 1382, 462, 2873, + 2810, 608, 455, 3558, 1322, 691, 2248, 693, 441, 1201, + 1202, 386, 504, 1537, 389, 3352, 702, 2873, 659, 705, + 1919, 1339, 708, 2065, 2266, 386, 183, 454, 389, 715, + 504, 1930, 386, 428, 1933, 389, 1228, 386, 278, 70, + 389, 3620, 386, 428, 1236, 389, 1238, 1573, 622, 386, + 1576, 541, 389, 3632, 1580, 2873, 1582, 2873, 1250, 1251, + 1252, 598, 11, 2557, 663, 2694, 1258, 2065, 2187, 3648, + 3649, 576, 562, 3353, 663, 541, 1605, 864, 4139, 1752, + 17, 18, 768, 504, 1610, 1611, 1612, 598, 386, 1724, + 2332, 389, 386, 616, 584, 389, 631, 576, 1358, 663, + 2342, 4162, 1409, 576, 578, 2868, 609, 639, 386, 2633, + 4627, 389, 2975, 657, 17, 18, 1718, 565, 659, 386, + 640, 1667, 389, 2750, 631, 3979, 645, 640, 663, 1913, + 2737, 621, 17, 18, 640, 3533, 565, 17, 18, 657, + 645, 4173, 662, 829, 663, 831, 659, 657, 609, 650, + 546, 3352, 658, 835, 2349, 4012, 4341, 595, 624, 4537, + 659, 4539, 4540, 2040, 657, 1838, 4127, 4120, 636, 1842, + 856, 857, 858, 640, 860, 861, 862, 645, 864, 640, + 866, 640, 589, 863, 1498, 4138, 872, 867, 1448, 1352, + 3938, 1498, 659, 1866, 595, 640, 628, 857, 659, 658, + 659, 640, 862, 630, 386, 640, 866, 389, 1468, 3215, + 663, 595, 75, 586, 17, 18, 4277, 1374, 619, 658, + 659, 17, 18, 909, 659, 603, 640, 486, 1015, 924, + 1017, 640, 537, 1020, 1021, 640, 609, 3887, 924, 1688, + 926, 640, 2556, 925, 930, 659, 2645, 468, 3899, 1036, + 659, 2458, 2995, 658, 659, 204, 657, 2886, 621, 2888, + 659, 3876, 3877, 1577, 659, 640, 136, 962, 631, 537, + 1577, 428, 603, 968, 659, 961, 962, 4655, 4656, 640, + 595, 4659, 968, 658, 659, 3540, 640, 1108, 1109, 1738, + 1117, 640, 3230, 1559, 54, 2526, 640, 658, 659, 4679, + 615, 616, 2248, 640, 3526, 955, 3049, 198, 631, 658, + 659, 625, 659, 3529, 658, 659, 17, 18, 3256, 3257, + 3607, 1478, 659, 1009, 295, 386, 481, 3767, 389, 1015, + 386, 1017, 277, 389, 1020, 1021, 4135, 629, 154, 1646, + 17, 18, 640, 237, 2973, 204, 640, 67, 3927, 3765, + 1036, 3930, 3931, 379, 3106, 3107, 608, 3578, 3774, 4628, + 658, 659, 640, 3942, 1527, 659, 1527, 4747, 377, 17, + 18, 663, 4750, 640, 17, 18, 49, 247, 17, 18, + 658, 871, 1648, 1649, 3285, 161, 2332, 3642, 3285, 629, + 432, 658, 659, 1079, 1660, 171, 2342, 3215, 657, 3215, + 1682, 432, 661, 204, 1054, 377, 1056, 3550, 3696, 17, + 18, 3554, 91, 258, 17, 18, 377, 254, 1104, 4069, + 27, 1103, 24, 663, 332, 1105, 1106, 3940, 401, 1110, + 202, 148, 1118, 1699, 226, 2774, 4087, 274, 1117, 1117, + 486, 1117, 1117, 2122, 134, 3536, 466, 1142, 3697, 386, + 607, 1836, 389, 17, 18, 3948, 1142, 377, 640, 199, + 119, 432, 4523, 122, 379, 1151, 17, 18, 1154, 3384, + 419, 17, 18, 963, 3078, 3285, 449, 659, 2629, 3353, + 2631, 2632, 1645, 386, 2631, 2632, 389, 2182, 1174, 1184, + 2014, 1151, 2708, 2212, 3136, 2737, 2703, 3353, 1184, 133, + 3014, 386, 659, 241, 389, 2404, 386, 486, 2212, 389, + 2752, 186, 377, 2208, 1301, 17, 18, 4030, 372, 377, + 2351, 3961, 3962, 1718, 2048, 2049, 27, 4588, 3968, 3545, + 355, 3971, 3972, 4692, 4055, 3353, 2743, 3353, 1224, 259, + 17, 18, 17, 18, 284, 3436, 219, 3963, 3988, 3440, + 3966, 1338, 377, 1239, 17, 18, 17, 18, 421, 166, + 419, 455, 4002, 2573, 4833, 1352, 4006, 4007, 4008, 4009, + 4010, 17, 18, 175, 2479, 391, 2695, 526, 2564, 640, + 3996, 3997, 3998, 386, 640, 455, 389, 432, 4004, 631, + 386, 2485, 2486, 389, 4173, 4011, 1383, 4144, 659, 495, + 17, 18, 1288, 659, 495, 295, 4153, 367, 377, 385, + 636, 657, 129, 146, 1932, 1301, 486, 289, 419, 253, + 565, 17, 18, 13, 478, 13, 2868, 344, 400, 369, + 1312, 2873, 581, 17, 18, 2842, 243, 486, 2273, 486, + 2847, 17, 18, 363, 232, 665, 234, 2173, 2855, 2856, + 659, 55, 1338, 3232, 2861, 563, 108, 1343, 2594, 166, + 2186, 657, 66, 2189, 2190, 636, 1352, 3246, 3247, 1456, + 2569, 1357, 1358, 622, 17, 18, 193, 349, 657, 3258, + 2065, 4569, 590, 495, 629, 386, 659, 659, 389, 243, + 2885, 4184, 1952, 556, 2478, 370, 1382, 1383, 659, 4498, + 559, 4500, 462, 640, 2488, 222, 17, 18, 129, 386, + 17, 18, 389, 4234, 321, 1401, 4237, 580, 4606, 4607, + 3034, 636, 659, 1409, 1374, 526, 1421, 3356, 1414, 480, + 1416, 503, 219, 603, 494, 1421, 243, 640, 386, 659, + 1527, 389, 243, 386, 4903, 537, 389, 386, 427, 645, + 389, 1437, 17, 18, 645, 640, 659, 147, 4646, 147, + 640, 368, 1448, 186, 651, 2701, 129, 17, 18, 665, + 1456, 658, 1422, 565, 659, 292, 1471, 264, 386, 659, + 581, 389, 1468, 386, 609, 1471, 389, 657, 564, 17, + 18, 2737, 2052, 2701, 659, 3026, 3027, 3028, 331, 2248, + 4450, 659, 17, 18, 1961, 486, 479, 533, 657, 529, + 657, 1497, 1498, 965, 368, 1501, 556, 17, 18, 559, + 321, 622, 386, 559, 1510, 389, 546, 2145, 1478, 1650, + 193, 17, 18, 645, 1520, 386, 224, 640, 389, 657, + 386, 1527, 1528, 389, 640, 4295, 17, 18, 17, 18, + 4531, 1537, 4525, 2548, 371, 3945, 659, 4176, 1645, 4178, + 245, 368, 658, 1549, 1550, 537, 134, 565, 1563, 254, + 1565, 292, 2136, 4712, 1560, 1561, 1562, 1563, 1564, 1565, + 284, 1668, 486, 2332, 386, 3224, 3225, 389, 1574, 1575, + 659, 1577, 4447, 2342, 367, 1581, 17, 18, 1685, 237, + 1560, 1561, 1562, 2066, 1564, 2066, 46, 1602, 583, 386, + 569, 386, 389, 572, 389, 1575, 1602, 637, 4368, 4369, + 1707, 1581, 2868, 386, 599, 386, 389, 2873, 389, 292, + 1580, 313, 1084, 129, 541, 652, 653, 654, 655, 640, + 386, 364, 365, 389, 3095, 537, 2204, 370, 4170, 2215, + 371, 3580, 191, 2219, 2220, 129, 224, 295, 659, 1645, + 1646, 4634, 0, 640, 13, 568, 664, 129, 241, 386, + 495, 4665, 389, 3215, 447, 4373, 657, 1672, 414, 2503, + 661, 658, 1668, 1669, 1670, 1671, 1672, 541, 2865, 2708, + 386, 264, 640, 389, 1380, 2674, 215, 640, 164, 1685, + 645, 640, 386, 279, 2708, 389, 282, 392, 371, 2204, + 386, 659, 13, 389, 1709, 155, 659, 624, 645, 193, + 659, 1707, 1708, 1709, 3231, 617, 3233, 295, 267, 17, + 18, 193, 640, 3240, 541, 215, 3078, 640, 1724, 133, + 4359, 1691, 261, 386, 45, 427, 389, 3254, 222, 586, + 565, 659, 659, 657, 3261, 3262, 2887, 3112, 232, 1745, + 234, 1747, 17, 18, 586, 631, 3645, 3274, 3275, 3276, + 624, 588, 609, 3280, 3281, 386, 640, 4054, 389, 386, + 3078, 565, 389, 17, 18, 9, 2991, 174, 2612, 640, + 428, 17, 18, 659, 640, 659, 292, 98, 147, 13, + 2702, 13, 103, 645, 17, 18, 17, 18, 659, 33, + 245, 3353, 658, 3320, 3321, 3322, 1937, 624, 292, 254, + 645, 386, 504, 25, 389, 17, 18, 3063, 367, 4351, + 292, 502, 520, 521, 2658, 523, 386, 525, 640, 389, + 665, 658, 657, 665, 2823, 27, 4840, 4841, 17, 18, + 1836, 1837, 659, 429, 542, 3063, 665, 659, 386, 4697, + 583, 389, 4700, 640, 2482, 640, 1953, 588, 387, 1555, + 1556, 386, 17, 18, 389, 371, 599, 640, 3055, 640, + 664, 3495, 659, 2375, 659, 628, 386, 13, 2380, 389, + 609, 565, 17, 18, 640, 20, 659, 371, 659, 495, + 386, 83, 2394, 389, 18, 17, 18, 6, 657, 371, + 616, 1897, 658, 619, 2035, 386, 665, 386, 389, 2526, + 389, 198, 2529, 640, 201, 588, 215, 17, 18, 2831, + 601, 455, 4569, 147, 3441, 147, 2428, 17, 18, 658, + 659, 658, 17, 18, 640, 1940, 17, 18, 17, 18, + 17, 18, 235, 1939, 1940, 256, 640, 392, 17, 18, + 3767, 60, 658, 136, 640, 386, 1952, 1953, 389, 4606, + 4607, 586, 643, 658, 658, 17, 18, 495, 3617, 2066, + 1966, 142, 658, 4821, 235, 1971, 17, 18, 2737, 13, + 1976, 2549, 115, 1979, 2081, 1990, 1991, 640, 1993, 2613, + 17, 18, 184, 2495, 1990, 1991, 2613, 1993, 2566, 4646, + 287, 1961, 219, 4632, 4633, 658, 3282, 17, 18, 17, + 18, 147, 2017, 546, 3260, 215, 2021, 129, 2014, 640, + 331, 2017, 2119, 640, 557, 2021, 381, 2500, 292, 2500, + 17, 18, 251, 198, 83, 556, 3312, 658, 559, 645, + 665, 658, 3260, 152, 2549, 2050, 2051, 264, 3697, 17, + 18, 243, 2048, 2049, 2050, 2051, 2052, 17, 18, 665, + 2565, 2566, 17, 18, 247, 640, 2071, 2072, 2073, 2065, + 2066, 17, 18, 17, 18, 2071, 2072, 2073, 17, 18, + 640, 193, 588, 658, 395, 2081, 2046, 2679, 386, 50, + 3573, 389, 225, 201, 740, 741, 609, 3353, 658, 2104, + 2096, 622, 640, 3075, 588, 2679, 105, 371, 2104, 2868, + 222, 17, 18, 147, 2873, 640, 588, 645, 2114, 3031, + 658, 386, 287, 2119, 389, 614, 44, 17, 18, 321, + 640, 632, 633, 658, 52, 364, 365, 665, 658, 659, + 2136, 83, 386, 3148, 640, 389, 659, 494, 658, 505, + 386, 3968, 665, 389, 3971, 3972, 3360, 295, 659, 640, + 2156, 640, 658, 386, 556, 386, 389, 559, 389, 815, + 362, 3988, 3161, 17, 18, 658, 368, 658, 631, 658, + 292, 3546, 2172, 2188, 386, 3389, 3390, 389, 631, 4006, + 224, 2151, 2188, 2153, 243, 651, 505, 2702, 3041, 3042, + 3043, 3044, 658, 514, 658, 659, 659, 386, 3412, 640, + 389, 486, 136, 4344, 606, 244, 659, 4348, 17, 18, + 609, 2217, 2218, 3057, 81, 2221, 663, 658, 658, 659, + 876, 386, 261, 201, 389, 1402, 17, 18, 1405, 20, + 235, 1408, 553, 3430, 273, 244, 17, 18, 2218, 20, + 492, 386, 658, 659, 389, 241, 365, 17, 18, 371, + 393, 213, 261, 241, 386, 241, 2271, 389, 2836, 2366, + 659, 404, 455, 2233, 273, 2271, 665, 2273, 411, 299, + 300, 2378, 2242, 2243, 3530, 34, 386, 1071, 559, 389, + 232, 665, 234, 1077, 1078, 315, 386, 627, 628, 389, + 630, 386, 632, 486, 389, 386, 559, 386, 389, 386, + 389, 201, 389, 362, 18, 658, 659, 386, 3154, 368, + 389, 263, 431, 247, 433, 604, 2831, 658, 659, 658, + 659, 2836, 526, 3579, 386, 174, 85, 389, 18, 659, + 197, 657, 640, 658, 659, 386, 158, 2343, 389, 541, + 2346, 658, 659, 3629, 20, 6, 355, 201, 576, 386, + 658, 3579, 389, 162, 658, 659, 318, 319, 17, 18, + 2366, 323, 324, 325, 2471, 640, 386, 510, 386, 389, + 657, 389, 2378, 3078, 241, 658, 659, 3663, 4519, 438, + 658, 659, 659, 658, 657, 4526, 640, 657, 3674, 386, + 657, 3677, 389, 2500, 640, 2502, 3318, 264, 27, 3026, + 3027, 3028, 657, 162, 658, 4468, 657, 640, 386, 640, + 603, 389, 658, 179, 444, 445, 386, 658, 659, 389, + 61, 386, 624, 4644, 389, 658, 4643, 658, 640, 105, + 386, 470, 386, 389, 148, 389, 568, 386, 658, 659, + 389, 657, 3639, 658, 659, 565, 658, 665, 3082, 3083, + 3084, 640, 658, 659, 83, 3082, 3083, 3084, 148, 658, + 659, 470, 657, 606, 657, 2471, 588, 657, 1124, 658, + 386, 658, 659, 389, 2986, 640, 520, 521, 522, 523, + 524, 525, 541, 657, 3086, 657, 386, 657, 164, 389, + 2496, 62, 63, 658, 2500, 640, 2502, 2503, 542, 658, + 659, 158, 159, 542, 658, 659, 658, 659, 640, 658, + 659, 4038, 179, 4040, 2621, 4042, 3031, 568, 658, 659, + 2526, 455, 198, 2529, 3523, 556, 3041, 3042, 3043, 3044, + 640, 3165, 386, 542, 593, 389, 658, 166, 3165, 215, + 640, 657, 183, 657, 220, 640, 187, 3562, 658, 640, + 417, 640, 486, 640, 657, 184, 148, 198, 658, 4086, + 3575, 640, 2568, 658, 657, 624, 541, 658, 244, 658, + 418, 658, 4043, 657, 39, 251, 4043, 386, 640, 658, + 389, 658, 659, 657, 3353, 261, 657, 4751, 2594, 640, + 658, 659, 2598, 127, 657, 386, 658, 273, 389, 3750, + 3856, 657, 278, 640, 657, 386, 2612, 2613, 389, 658, + 659, 287, 4753, 4754, 243, 2621, 386, 2724, 2725, 389, + 640, 658, 640, 2629, 657, 2631, 2632, 148, 3856, 474, + 344, 658, 659, 3219, 658, 659, 3238, 3223, 658, 4803, + 658, 657, 4806, 640, 657, 66, 2652, 12, 2654, 609, + 658, 659, 2658, 662, 344, 414, 129, 122, 657, 132, + 81, 658, 640, 657, 129, 4324, 4325, 658, 659, 603, + 640, 474, 93, 2679, 4838, 640, 657, 436, 657, 355, + 3785, 657, 2652, 657, 640, 2656, 640, 384, 658, 330, + 657, 640, 321, 658, 3950, 2701, 230, 658, 659, 658, + 659, 377, 658, 377, 658, 2711, 2721, 2722, 576, 658, + 2716, 387, 557, 472, 657, 2721, 2722, 562, 2724, 2725, + 193, 186, 3950, 657, 640, 658, 659, 657, 193, 377, + 4793, 657, 129, 362, 657, 132, 2716, 35, 657, 368, + 640, 659, 658, 419, 658, 659, 658, 659, 4467, 222, + 115, 657, 344, 37, 657, 3244, 657, 222, 223, 657, + 297, 606, 299, 300, 657, 4292, 4293, 4294, 133, 2739, + 2740, 2741, 2742, 532, 2744, 2745, 197, 622, 315, 63, + 658, 659, 203, 497, 498, 657, 640, 428, 658, 659, + 162, 20, 658, 659, 470, 657, 193, 2803, 657, 28, + 334, 658, 659, 3318, 338, 4019, 657, 497, 498, 174, + 657, 345, 2818, 237, 658, 659, 4207, 4208, 494, 292, + 241, 4183, 129, 344, 2830, 222, 657, 292, 2834, 4220, + 657, 640, 657, 4331, 657, 119, 4227, 657, 122, 204, + 657, 4904, 657, 264, 73, 657, 130, 4238, 4239, 640, + 148, 658, 659, 657, 83, 657, 2997, 148, 115, 640, + 658, 659, 657, 63, 657, 149, 542, 657, 83, 657, + 640, 658, 659, 2843, 2844, 657, 2846, 657, 2848, 2849, + 2850, 2851, 2852, 2853, 2854, 486, 193, 2857, 3400, 657, + 2860, 356, 426, 494, 2864, 292, 658, 659, 371, 3043, + 3044, 366, 3536, 132, 657, 370, 371, 444, 445, 3536, + 658, 659, 541, 657, 3021, 222, 657, 174, 1991, 119, + 1993, 597, 122, 288, 657, 3978, 3979, 658, 659, 3982, + 130, 658, 659, 609, 648, 649, 650, 651, 652, 653, + 654, 655, 657, 3455, 512, 658, 659, 204, 4001, 149, + 484, 166, 657, 629, 4007, 631, 254, 657, 648, 649, + 650, 651, 652, 653, 654, 655, 658, 659, 252, 645, + 3572, 658, 659, 657, 371, 657, 497, 498, 207, 277, + 401, 3088, 658, 659, 657, 292, 662, 663, 3572, 658, + 659, 657, 168, 657, 194, 624, 417, 657, 2071, 2072, + 2073, 3488, 3489, 232, 52, 234, 658, 659, 3014, 663, + 3016, 4064, 613, 614, 658, 3021, 129, 666, 3033, 3025, + 3026, 3027, 3028, 658, 659, 658, 659, 3033, 243, 205, + 659, 658, 659, 3619, 3040, 264, 3622, 3623, 289, 4401, + 1276, 1277, 3831, 3832, 52, 659, 344, 384, 377, 201, + 3056, 3057, 252, 344, 419, 377, 657, 3063, 650, 651, + 652, 653, 654, 655, 371, 480, 364, 365, 597, 50, + 278, 66, 3078, 357, 129, 201, 3082, 3083, 3084, 652, + 193, 257, 3088, 4302, 494, 665, 81, 17, 18, 3095, + 173, 4589, 626, 269, 515, 657, 505, 198, 93, 537, + 565, 4206, 556, 537, 569, 512, 289, 572, 642, 222, + 198, 165, 659, 4640, 3120, 588, 4221, 92, 583, 659, + 378, 552, 658, 588, 164, 132, 591, 492, 649, 650, + 651, 652, 653, 654, 655, 364, 365, 664, 193, 118, + 129, 370, 3249, 441, 6, 383, 117, 362, 377, 129, + 3120, 4, 132, 368, 354, 485, 4353, 357, 622, 3165, + 4213, 526, 419, 3178, 3170, 664, 3181, 222, 254, 4222, + 659, 401, 3178, 59, 162, 3181, 3182, 598, 4231, 292, + 447, 659, 358, 4236, 665, 650, 651, 4109, 417, 73, + 3170, 588, 557, 123, 124, 125, 126, 127, 13, 497, + 498, 628, 197, 658, 193, 658, 497, 498, 203, 147, + 4466, 518, 3218, 193, 659, 513, 10, 665, 502, 658, + 3229, 3227, 3228, 438, 665, 658, 3235, 657, 3234, 658, + 277, 377, 28, 222, 434, 166, 664, 292, 4466, 665, + 39, 115, 222, 3249, 3250, 289, 241, 289, 289, 3255, + 3259, 289, 52, 289, 3260, 3270, 3265, 622, 371, 3837, + 289, 490, 3271, 3272, 3270, 659, 3236, 3237, 4283, 264, + 659, 645, 4469, 556, 657, 235, 3282, 73, 231, 284, + 659, 588, 201, 3289, 3290, 294, 663, 83, 572, 3295, + 402, 659, 659, 666, 3264, 576, 576, 227, 228, 229, + 230, 401, 559, 292, 576, 659, 3312, 645, 198, 659, + 629, 603, 292, 254, 659, 659, 371, 601, 665, 73, + 659, 537, 3837, 122, 581, 3295, 541, 191, 129, 203, + 129, 132, 254, 554, 652, 255, 132, 188, 3924, 105, + 198, 205, 4264, 659, 173, 3351, 537, 509, 406, 3355, + 648, 649, 650, 651, 652, 653, 654, 655, 179, 650, + 651, 652, 653, 654, 655, 622, 115, 241, 129, 598, + 204, 132, 572, 143, 659, 657, 174, 405, 593, 658, + 56, 659, 371, 4488, 4489, 628, 4491, 186, 105, 608, + 604, 371, 193, 659, 193, 201, 658, 658, 658, 658, + 652, 601, 658, 267, 334, 269, 336, 337, 338, 624, + 658, 4608, 658, 658, 201, 345, 4415, 659, 83, 651, + 657, 222, 417, 222, 223, 174, 91, 658, 597, 495, + 658, 658, 193, 3540, 658, 4691, 232, 659, 234, 659, + 658, 658, 137, 3449, 659, 658, 658, 2229, 2230, 4554, + 657, 3457, 86, 118, 88, 204, 386, 655, 4036, 389, + 657, 222, 148, 4691, 2246, 657, 659, 83, 264, 645, + 646, 647, 4669, 2255, 2256, 588, 657, 659, 244, 658, + 565, 97, 659, 565, 565, 576, 233, 3457, 233, 242, + 657, 292, 241, 292, 251, 261, 426, 361, 132, 659, + 4553, 166, 4555, 3509, 12, 548, 657, 273, 13, 4431, + 213, 4616, 201, 4618, 4619, 4437, 659, 81, 177, 565, + 515, 4036, 156, 4522, 3530, 3531, 475, 244, 3534, 659, + 3536, 292, 215, 588, 3540, 3642, 665, 496, 198, 288, + 198, 657, 657, 275, 261, 2327, 2328, 2329, 2330, 4531, + 659, 659, 416, 483, 484, 665, 273, 356, 192, 3565, + 4779, 665, 20, 665, 201, 658, 3572, 3573, 364, 365, + 371, 370, 371, 3579, 370, 427, 241, 602, 3584, 659, + 494, 377, 659, 3598, 198, 659, 377, 377, 353, 355, + 526, 526, 3598, 526, 4109, 4594, 485, 471, 526, 588, + 526, 377, 198, 598, 3613, 131, 657, 3577, 588, 659, + 371, 377, 568, 645, 3620, 645, 288, 604, 492, 645, + 665, 417, 3624, 3629, 4880, 645, 3632, 645, 645, 4848, + 645, 645, 105, 197, 645, 4891, 3642, 609, 355, 4895, + 3646, 515, 3648, 3649, 4900, 645, 645, 105, 645, 645, + 266, 645, 4880, 645, 645, 320, 3662, 3663, 344, 645, + 377, 645, 645, 4891, 162, 414, 250, 4895, 3674, 645, + 419, 3677, 4900, 3643, 339, 645, 645, 241, 645, 250, + 658, 658, 3652, 665, 14, 559, 659, 645, 562, 3704, + 658, 486, 658, 658, 490, 3701, 626, 362, 3704, 4306, + 264, 658, 645, 3709, 470, 659, 164, 658, 3714, 7, + 640, 641, 642, 658, 658, 3721, 576, 665, 665, 576, + 576, 636, 471, 3729, 598, 659, 342, 284, 89, 50, + 3736, 576, 606, 657, 657, 645, 657, 148, 196, 657, + 198, 3721, 645, 492, 384, 201, 201, 201, 659, 4264, + 659, 367, 177, 470, 261, 261, 50, 215, 390, 220, + 341, 395, 220, 565, 258, 432, 565, 4872, 565, 371, + 569, 244, 659, 572, 104, 335, 542, 7, 657, 237, + 197, 645, 646, 647, 583, 377, 244, 588, 261, 588, + 118, 118, 591, 251, 81, 401, 401, 401, 576, 4427, + 273, 143, 598, 261, 3911, 439, 136, 557, 557, 4731, + 262, 497, 498, 562, 430, 273, 262, 557, 401, 143, + 278, 401, 152, 50, 401, 542, 450, 588, 403, 287, + 663, 401, 581, 401, 401, 657, 215, 401, 657, 657, + 3846, 657, 665, 254, 174, 3851, 657, 652, 178, 657, + 3856, 650, 651, 417, 252, 252, 659, 606, 3828, 432, + 190, 665, 384, 377, 237, 658, 658, 279, 652, 658, + 658, 657, 401, 622, 659, 658, 541, 658, 4485, 658, + 350, 658, 355, 213, 657, 657, 123, 124, 125, 126, + 127, 658, 557, 454, 665, 659, 659, 355, 658, 4898, + 201, 261, 261, 387, 58, 3911, 658, 3913, 3914, 432, + 526, 241, 3918, 659, 68, 658, 4431, 247, 645, 377, + 659, 3927, 4437, 630, 3930, 3931, 466, 657, 82, 387, + 3936, 4853, 3938, 344, 118, 3905, 3942, 401, 235, 148, + 94, 95, 96, 665, 3950, 264, 264, 4054, 3954, 657, + 3956, 576, 217, 659, 663, 659, 4878, 287, 658, 113, + 657, 419, 648, 649, 650, 651, 652, 653, 654, 655, + 658, 50, 488, 4114, 83, 631, 2758, 658, 658, 2761, + 2762, 468, 2764, 275, 182, 2767, 2768, 287, 97, 2771, + 227, 228, 229, 230, 2776, 213, 565, 470, 155, 2781, + 2782, 2783, 2784, 2785, 271, 659, 658, 2789, 2790, 658, + 2792, 659, 470, 261, 486, 261, 2798, 2799, 2800, 2801, + 4026, 512, 2804, 2805, 377, 2807, 635, 657, 657, 264, + 658, 658, 141, 659, 657, 264, 494, 4043, 659, 659, + 631, 658, 657, 58, 20, 254, 415, 83, 4054, 240, + 198, 377, 377, 68, 4024, 198, 198, 658, 28, 568, + 30, 278, 371, 658, 658, 658, 63, 82, 658, 542, + 252, 658, 658, 658, 266, 341, 658, 427, 18, 94, + 95, 96, 658, 631, 542, 659, 497, 498, 384, 2871, + 420, 4693, 62, 63, 657, 65, 251, 334, 113, 336, + 337, 338, 658, 73, 659, 609, 665, 75, 345, 609, + 440, 657, 419, 83, 658, 481, 4263, 659, 448, 657, + 20, 91, 658, 609, 179, 132, 456, 132, 559, 4135, + 657, 413, 657, 657, 4140, 344, 87, 665, 4144, 597, + 504, 151, 132, 37, 659, 37, 371, 4153, 118, 181, + 608, 609, 341, 144, 4160, 658, 486, 266, 565, 565, + 565, 264, 132, 559, 657, 135, 613, 4173, 280, 499, + 500, 629, 609, 631, 609, 4190, 251, 658, 377, 333, + 659, 383, 657, 4192, 4190, 317, 619, 645, 528, 426, + 658, 619, 4198, 177, 475, 465, 166, 351, 658, 4340, + 658, 659, 659, 64, 662, 663, 384, 658, 603, 547, + 50, 50, 161, 50, 657, 657, 4731, 466, 657, 4826, + 371, 551, 251, 657, 377, 657, 4228, 657, 15, 603, + 132, 264, 20, 342, 4240, 370, 4242, 648, 649, 650, + 651, 652, 653, 654, 655, 264, 483, 484, 140, 4255, + 631, 581, 645, 4255, 531, 364, 365, 200, 367, 177, + 143, 567, 232, 143, 234, 657, 50, 166, 28, 50, + 30, 241, 50, 603, 166, 605, 198, 169, 248, 657, + 398, 658, 658, 366, 371, 657, 4301, 657, 497, 498, + 657, 614, 4399, 263, 657, 4301, 658, 163, 4304, 657, + 657, 657, 62, 63, 659, 65, 548, 658, 548, 658, + 464, 12, 287, 73, 206, 66, 657, 384, 333, 66, + 657, 430, 50, 83, 50, 657, 657, 141, 482, 658, + 198, 91, 151, 5, 226, 377, 351, 659, 4853, 4345, + 232, 583, 234, 377, 658, 658, 384, 384, 440, 603, + 320, 593, 475, 136, 659, 658, 233, 157, 118, 658, + 264, 50, 477, 4878, 237, 371, 657, 494, 610, 339, + 659, 936, 132, 2509, 2656, 135, 4042, 2862, 4038, 4040, + 4513, 1056, 624, 37, 1109, 3211, 4158, 4511, 4630, 626, + 544, 4800, 1133, 4399, 4796, 4338, 4583, 289, 611, 4032, + 52, 2064, 1976, 3014, 641, 642, 166, 561, 3838, 4411, + 2294, 697, 3041, 2566, 2565, 1941, 4529, 526, 1694, 4350, + 2567, 313, 2817, 1182, 394, 2268, 396, 4433, 4434, 3672, + 4400, 3051, 3850, 3056, 404, 3509, 4599, 1453, 4695, 648, + 649, 650, 651, 652, 653, 654, 655, 3853, 4302, 4848, + 4787, 4826, 4485, 4167, 696, 2212, 2810, 3239, 3289, 3918, + 4466, 4861, 2818, 4673, 3292, 3381, 3708, 482, 3979, 4386, + 3252, 4411, 232, 4012, 234, 4693, 4399, 2724, 720, 3437, + 4051, 241, 2961, 725, 3440, 4626, 140, 3432, 248, 4802, + 84, 84, 4498, 4753, 4500, 4754, 4174, 4635, 4526, 4519, + 4345, 4221, 4609, 263, 2817, 3285, 476, 1146, 1619, 4196, + 2698, 1083, 166, 2588, 4687, 169, 3937, 277, 2273, 2050, + 1709, 763, 2556, 3033, 1735, 3496, 418, 2617, 2465, 544, + 993, 4537, 4673, 4539, 4540, 427, 3457, 4426, 780, 1006, + 4546, 2110, 1100, 4671, 2374, 4515, 561, 2997, 1239, 2370, + 442, 2979, 206, 2639, 3548, 4503, 2644, 4327, 4791, 3812, + 320, 3736, 4792, 4569, 534, 535, 536, 1211, 460, 2489, + 3442, 541, 226, 3950, 1639, 1639, 3095, 4583, 232, 339, + 234, 4583, 824, 825, 826, 827, 4142, 557, 3281, 4454, + 560, 4795, 3088, 4599, 836, 4141, 4141, 2343, 84, 4569, + 1471, 1421, 2550, 4609, 2593, 4712, 3856, 3525, 4691, 579, + 3524, 622, 504, 3579, 4629, 507, 716, 1745, 2183, 2692, + 2184, 610, 1568, 4629, 610, 1117, 109, 597, 1964, 871, + 3956, 1479, 4602, 4603, 394, 289, 396, 4090, 3499, 4312, + 4646, 4846, 4864, 4895, 404, 537, 4900, 4495, 813, 4655, + 4656, 3530, 1520, 4659, 4795, 2677, 4401, 3572, 4799, 313, + 1894, 609, 609, 2139, 556, 2021, 2670, 559, 2669, 1499, + 912, 1645, 601, 1411, 4290, 4297, 4646, 2612, 4785, 2529, + 3016, 4687, 3297, 602, 646, 4691, 928, 929, 646, 659, + 932, 646, 980, 1109, 987, 1647, 1109, -1, -1, 1109, + -1, -1, -1, -1, -1, -1, 4712, -1, -1, -1, + 952, -1, -1, -1, -1, -1, 476, -1, -1, -1, + -1, -1, 964, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4703, 4704, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4750, -1, -1, -1, -1, -1, + 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 4901, -1, -1, -1, 418, -1, -1, -1, -1, -1, + -1, -1, -1, 427, 534, 535, 536, -1, -1, 4785, + 4887, 541, -1, -1, -1, 4791, 4792, -1, 442, -1, + -1, -1, -1, -1, -1, -1, -1, 557, -1, -1, + 560, -1, -1, -1, -1, -1, 460, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 579, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4780, 4882, -1, -1, -1, -1, - 4786, 4787, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 476, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 236, 597, 238, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 626, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 641, 642, -1, -1, - 236, -1, 238, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 140, -1, -1, -1, -1, - -1, -1, 534, 535, 536, -1, -1, -1, -1, 541, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4875, - -1, 166, -1, -1, 169, 557, 4882, -1, 560, -1, - 4886, -1, -1, 4853, 4890, -1, -1, -1, -1, 4895, - 296, -1, 298, 299, 300, 301, 302, 579, 304, 305, - 306, 307, 308, 309, 310, 311, 312, -1, 314, 315, - 316, 206, -1, -1, 1159, 597, -1, 1162, 1163, -1, + 504, -1, -1, 507, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 226, -1, -1, -1, -1, -1, 232, -1, 234, - -1, -1, 1187, 1188, -1, -1, -1, -1, -1, -1, - -1, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, - 1205, 1206, 1207, -1, -1, -1, -1, -1, -1, -1, - -1, 1216, 1217, -1, 1219, 1220, -1, -1, -1, 1224, - 1225, -1, -1, 1228, 1229, 1230, 1231, -1, 1233, 1234, - 1235, -1, -1, -1, 289, -1, -1, 1242, 1243, -1, - 1245, 1246, 1247, 1248, 1249, -1, -1, 1252, 1253, 1254, - 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 313, 1264, - -1, -1, 1267, 1268, -1, -1, -1, 1272, -1, -1, - -1, 1276, 1277, 1278, -1, -1, -1, -1, 444, 445, - -1, 6, -1, 1288, 1289, 1290, -1, 12, -1, 14, - -1, 16, 1297, -1, -1, -1, -1, -1, -1, 1304, - 1305, 1306, 1307, 28, -1, 30, -1, -1, -1, -1, - 1315, 1316, 1317, -1, 1319, 1320, 1321, 1322, 1323, -1, - 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, -1, -1, - -1, 1336, 1337, -1, -1, 60, -1, -1, -1, -1, - 65, 66, -1, -1, -1, -1, 71, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 83, -1, - -1, -1, -1, 418, -1, -1, 91, -1, -1, -1, - -1, -1, 427, -1, -1, -1, 101, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 442, -1, -1, - -1, -1, -1, 118, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 460, -1, 132, -1, -1, - 135, -1, -1, -1, -1, -1, -1, 1422, -1, 144, - 145, -1, -1, -1, -1, -1, -1, 152, -1, -1, - -1, -1, -1, 1438, -1, 160, -1, -1, -1, 164, - -1, 166, -1, -1, -1, -1, -1, -1, -1, 504, - 623, 176, 507, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4880, -1, -1, -1, -1, -1, + -1, 4887, -1, 537, -1, 4891, -1, -1, 4858, 4895, + -1, -1, -1, -1, 4900, -1, 296, 657, 298, 299, + 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, + 310, 311, 312, -1, 314, 315, 316, -1, -1, -1, + 1162, -1, -1, 1165, 1166, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 196, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 537, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1190, 1191, + -1, -1, -1, -1, -1, -1, -1, 1199, 1200, 1201, + 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, -1, + -1, -1, -1, -1, -1, -1, -1, 1219, 1220, -1, + 1222, 1223, -1, -1, -1, 1227, 1228, -1, -1, 1231, + 1232, 1233, 1234, -1, 1236, 1237, 1238, -1, -1, -1, + -1, -1, -1, 1245, 1246, -1, 1248, 1249, 1250, 1251, + 1252, -1, -1, 1255, 1256, 1257, 1258, 1259, 1260, 1261, + 1262, 1263, 1264, 1265, -1, 1267, -1, -1, 1270, 1271, + -1, -1, -1, 1275, -1, -1, -1, 1279, 1280, 1281, + -1, -1, -1, -1, 444, 445, -1, -1, -1, 1291, + 1292, 1293, -1, -1, -1, -1, -1, -1, 1300, -1, + -1, -1, -1, -1, -1, 1307, 1308, 1309, 1310, -1, + -1, -1, -1, -1, -1, -1, 1318, 1319, 1320, -1, + 1322, 1323, 1324, 1325, 1326, -1, 1328, 1329, 1330, 1331, + 1332, 1333, 1334, 1335, -1, -1, -1, 1339, 1340, -1, + -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, + -1, 12, -1, 14, -1, 16, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 28, -1, 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 556, -1, -1, 559, -1, -1, 232, -1, 234, - -1, -1, 1517, -1, 239, -1, 241, -1, -1, -1, - -1, 694, -1, 248, -1, -1, -1, 1532, -1, 36, - 37, -1, -1, -1, -1, 42, -1, 44, 263, 46, - 47, -1, -1, -1, 1549, -1, -1, -1, -1, -1, - 723, -1, -1, -1, -1, -1, 63, -1, -1, -1, - -1, -1, 287, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 761, -1, - -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, - -1, 1606, -1, -1, -1, 778, -1, -1, -1, -1, - -1, -1, 119, -1, 339, 122, -1, -1, 343, -1, - -1, -1, -1, 130, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, + -1, -1, -1, -1, 65, 66, -1, -1, -1, -1, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 83, 1425, -1, -1, -1, -1, -1, -1, + 91, -1, -1, -1, -1, -1, 13, -1, -1, 1441, + 101, -1, -1, -1, -1, -1, -1, -1, -1, 26, + -1, -1, -1, -1, -1, -1, -1, 118, -1, -1, + 37, 38, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 132, -1, -1, 135, -1, -1, -1, -1, -1, + -1, -1, -1, 144, 145, 62, 63, -1, -1, -1, + -1, 152, -1, -1, -1, -1, -1, 74, -1, 160, + -1, -1, -1, 164, -1, 166, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 176, -1, -1, 1520, -1, + -1, -1, -1, 100, -1, 102, -1, 104, -1, -1, + -1, -1, -1, 1535, -1, 196, -1, -1, -1, 116, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1552, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 138, 139, -1, -1, -1, -1, -1, -1, -1, + -1, 232, -1, 234, -1, -1, -1, -1, 239, -1, + 241, -1, -1, -1, -1, -1, -1, 248, 165, 166, + -1, -1, -1, 170, -1, -1, 173, -1, -1, -1, + -1, -1, 263, -1, -1, -1, -1, 1609, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 202, 287, 204, -1, -1, + -1, -1, -1, -1, -1, 212, -1, 214, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 149, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 825, -1, -1, -1, -1, 382, -1, -1, - 167, -1, 387, -1, -1, -1, -1, -1, -1, 394, - -1, 396, -1, -1, -1, -1, 401, -1, -1, 404, - -1, -1, -1, -1, -1, 192, -1, 194, -1, -1, + -1, -1, -1, -1, -1, 232, -1, 234, -1, 320, + -1, -1, -1, 240, 241, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 339, -1, + -1, -1, 343, -1, -1, 262, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 208, 209, -1, -1, -1, -1, -1, -1, 1714, - 435, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 449, 450, 451, 452, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 910, -1, -1, - -1, -1, -1, -1, -1, 252, -1, -1, -1, 1754, - -1, 476, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 284, -1, -1, + -1, -1, -1, -1, -1, -1, 1718, -1, -1, -1, + -1, 382, -1, 6, -1, -1, 387, -1, -1, 12, + -1, 14, -1, 394, -1, 396, 313, -1, -1, -1, + 401, -1, -1, 404, -1, 28, -1, 30, -1, -1, + -1, -1, -1, -1, -1, -1, 1758, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 281, -1, -1, 950, -1, -1, - -1, -1, -1, 290, 291, -1, 293, -1, -1, -1, + -1, -1, -1, -1, 435, -1, -1, 60, -1, -1, + -1, -1, 65, -1, -1, -1, -1, -1, 449, 450, + 451, 452, -1, -1, -1, -1, -1, -1, -1, -1, + 83, -1, -1, -1, 381, -1, -1, -1, 91, -1, + -1, -1, -1, -1, -1, 476, -1, -1, 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 534, - 535, 536, -1, -1, -1, -1, 541, -1, -1, -1, - 327, 328, 329, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 557, -1, -1, 560, -1, -1, -1, 346, - 347, 348, -1, -1, -1, -1, -1, 354, -1, -1, - 357, -1, -1, -1, 579, -1, -1, -1, -1, 584, - -1, -1, -1, 1868, 1869, 1870, 373, 374, -1, -1, - -1, -1, 597, -1, -1, -1, -1, -1, 1883, -1, + 407, -1, -1, -1, -1, 118, -1, -1, -1, -1, + -1, 418, 419, -1, -1, 422, 423, -1, -1, 132, + -1, -1, 135, -1, -1, -1, -1, -1, -1, -1, + -1, 144, -1, -1, -1, -1, 443, -1, -1, 152, + 1872, 1873, 1874, 534, 535, 536, -1, 160, -1, -1, + 541, -1, -1, 166, -1, 1887, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 557, -1, -1, 560, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1913, -1, 196, 491, -1, -1, 1919, 579, -1, + 1922, -1, 1924, 584, -1, -1, -1, 504, 1930, -1, + 1932, 1933, -1, -1, 4476, 4477, 597, -1, 4480, 4481, + 4482, 4483, -1, -1, -1, -1, -1, -1, -1, 232, + -1, 234, -1, -1, -1, -1, -1, -1, 241, -1, + 537, -1, 1964, -1, 541, 248, -1, -1, 28, -1, + 30, -1, -1, 624, 4516, -1, -1, -1, -1, -1, + 263, -1, 559, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 409, 410, 1909, -1, -1, -1, -1, -1, - 1915, -1, -1, 1918, -1, 1920, -1, -1, -1, -1, - -1, 1926, -1, 1928, 1929, -1, -1, 434, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 663, -1, - -1, -1, -1, -1, -1, 28, -1, 30, -1, -1, - -1, -1, -1, -1, -1, 1960, -1, -1, -1, -1, + -1, -1, 663, -1, 287, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, - 63, -1, 65, 490, -1, -1, 1159, 494, -1, 1162, - 73, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 83, 508, -1, -1, -1, -1, -1, -1, 91, -1, - -1, -1, -1, -1, 1187, 1188, -1, -1, -1, -1, - -1, -1, -1, 1196, 1197, -1, -1, 1200, 1201, 1202, - 1203, 1204, 1205, 1206, 1207, 118, 2041, -1, -1, -1, - -1, -1, -1, 1216, 1217, 2050, 1219, 1220, -1, 132, - -1, 1224, 135, -1, -1, 1228, 1229, 1230, 1231, 566, - -1, 1234, 569, -1, -1, 572, 573, 574, 575, 1242, - 1243, -1, 1245, 1246, 2079, -1, -1, -1, -1, 1252, - 1253, 1254, -1, 166, 1257, 1258, 1259, 1260, 1261, 1262, - -1, 1264, -1, -1, 1267, 1268, -1, -1, 13, 1272, - -1, -1, -1, 1276, 1277, 1278, -1, 2112, 615, 616, - -1, 26, -1, -1, -1, 1288, 1289, 1290, -1, -1, - -1, -1, 37, 38, 1297, -1, -1, -1, 2133, -1, - -1, 1304, 1305, 1306, -1, 642, 2141, -1, -1, -1, - -1, -1, -1, -1, -1, 2150, -1, 62, 63, 232, - -1, 234, -1, -1, -1, -1, -1, -1, 241, 74, - -1, -1, -1, -1, 1337, 248, -1, -1, -1, -1, + -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, + -1, 91, -1, -1, -1, -1, -1, 320, -1, -1, + 617, -1, -1, 2045, -1, 696, -1, -1, 625, -1, + -1, -1, 2054, -1, -1, -1, 339, -1, 118, -1, + 343, -1, 4604, 4605, -1, -1, -1, -1, -1, -1, + -1, 4613, 132, -1, 725, 135, -1, -1, -1, -1, + -1, 2083, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 263, -1, -1, -1, -1, 100, -1, 102, -1, 104, - -1, -1, -1, -1, -1, 2200, -1, -1, -1, -1, - -1, 116, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 387, -1, 166, -1, -1, -1, + -1, 394, 763, 396, 2116, -1, -1, -1, -1, -1, + -1, 404, -1, -1, -1, -1, -1, -1, -1, 780, + -1, -1, -1, -1, -1, 2137, -1, -1, -1, -1, + -1, -1, -1, 2145, -1, -1, -1, -1, -1, -1, + -1, -1, 2154, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 450, -1, -1, + -1, -1, 232, -1, 234, -1, 827, -1, -1, -1, + -1, 241, -1, -1, -1, -1, -1, -1, 248, -1, + -1, -1, -1, 476, -1, -1, -1, -1, -1, -1, + -1, -1, 2204, 263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1422, - 165, 166, -1, -1, -1, 170, 339, -1, 173, 2264, - -1, -1, -1, -1, -1, 1438, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2285, -1, -1, -1, -1, -1, -1, 202, -1, 204, - -1, -1, -1, -1, -1, -1, -1, 212, -1, 214, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 394, -1, 396, -1, -1, -1, 232, -1, 234, - -1, 404, -1, -1, -1, 240, 241, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2347, -1, 1517, -1, 2351, 262, -1, -1, - -1, 2356, 2357, -1, -1, -1, -1, -1, -1, 1532, - 2365, -1, 2367, -1, 2369, 2370, 2371, 2372, -1, 284, - 2375, -1, -1, -1, -1, -1, 1549, -1, -1, -1, - 2385, 2386, -1, 2388, 2389, -1, 2391, 2392, 2393, 2394, - -1, 2396, -1, 476, 2399, -1, -1, -1, 313, -1, - -1, -1, -1, 2408, -1, -1, -1, -1, -1, -1, - 2415, -1, 2417, -1, 2419, 2420, -1, 2422, 2423, -1, - -1, -1, 2427, 2428, 2429, -1, -1, -1, 2433, 2434, - 2435, -1, 2437, 1606, 2439, -1, 2441, -1, 2443, -1, - 2445, -1, -1, -1, -1, 2450, -1, -1, -1, -1, -1, 534, 535, 536, -1, -1, -1, -1, 541, -1, - -1, -1, 2467, -1, -1, 6, 381, -1, -1, 2474, - -1, 12, 2477, 14, 557, -1, -1, 560, 2483, -1, - -1, 2486, -1, -1, -1, 2490, -1, 28, -1, 30, - -1, -1, 407, -1, -1, -1, 579, -1, -1, -1, - -1, -1, -1, 418, 419, -1, -1, 422, 423, -1, - -1, -1, -1, -1, 597, -1, -1, -1, -1, 60, - -1, -1, -1, -1, 65, -1, -1, -1, 443, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 2544, - -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, - 91, -1, -1, -1, -1, 2560, 2561, 2562, -1, 2564, - 101, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 491, 118, -1, -1, - -1, 1754, -1, -1, -1, -1, -1, -1, -1, 504, - -1, 132, -1, -1, 135, -1, -1, -1, -1, -1, - -1, -1, -1, 144, -1, -1, -1, -1, -1, -1, - -1, 152, -1, -1, -1, -1, -1, -1, -1, 160, - -1, -1, 537, -1, -1, 166, 541, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 2642, -1, -1, - -1, -1, -1, -1, 559, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 196, -1, -1, -1, -1, + 320, 912, -1, -1, -1, -1, 2268, -1, -1, -1, + -1, -1, -1, -1, 557, -1, -1, 560, -1, 339, + -1, -1, -1, -1, -1, -1, -1, -1, 2290, -1, + -1, -1, -1, -1, -1, -1, 579, -1, -1, -1, + -1, 952, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 597, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 394, -1, 396, -1, -1, -1, + -1, -1, -1, -1, 404, -1, -1, -1, -1, -1, + 2352, -1, -1, -1, 2356, -1, -1, -1, -1, 2361, + 2362, -1, -1, -1, -1, -1, -1, -1, 2370, -1, + 2372, -1, 2374, 2375, 2376, 2377, -1, -1, 2380, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 2390, 2391, + -1, 2393, 2394, -1, 2396, 2397, 2398, 2399, -1, 2401, + -1, -1, 2404, -1, -1, -1, -1, -1, -1, -1, + -1, 2413, -1, -1, -1, -1, 476, -1, 2420, -1, + 2422, -1, 2424, 2425, -1, 2427, 2428, -1, -1, -1, + 2432, 2433, 2434, -1, -1, -1, 2438, 2439, 2440, -1, + 2442, -1, 2444, -1, 2446, -1, 2448, -1, 2450, -1, + -1, -1, -1, 2455, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 2472, -1, -1, -1, 534, 535, 536, 2479, -1, -1, + 2482, 541, -1, -1, -1, -1, 2488, -1, -1, 2491, + -1, -1, -1, 2495, -1, -1, -1, 557, -1, -1, + 560, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1162, -1, -1, 1165, -1, -1, -1, -1, 579, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 232, 2697, 234, -1, 1868, 1869, 1870, -1, -1, - 241, -1, 617, -1, -1, -1, -1, 248, -1, -1, - 625, -1, -1, 2718, -1, -1, -1, -1, -1, -1, - -1, -1, 263, -1, -1, -1, 2731, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1909, -1, 2743, 2744, - -1, -1, -1, -1, -1, 1918, 287, 1920, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 597, -1, 1190, + 1191, -1, -1, -1, -1, -1, -1, 2549, 1199, 1200, + -1, -1, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, + -1, -1, -1, 2565, 2566, 2567, -1, 2569, 1219, 1220, + -1, 1222, 1223, -1, -1, -1, 1227, -1, -1, -1, + 1231, 1232, 1233, 1234, -1, -1, 1237, -1, -1, -1, + -1, -1, -1, -1, 1245, 1246, -1, 1248, 1249, -1, + -1, -1, -1, -1, 1255, 1256, 1257, -1, -1, 1260, + 1261, 1262, 1263, 1264, 1265, -1, 1267, -1, -1, 1270, + 1271, -1, -1, -1, 1275, -1, -1, -1, 1279, 1280, + 1281, -1, -1, -1, -1, 28, -1, 30, -1, -1, + 1291, 1292, 1293, -1, -1, 2647, -1, -1, -1, 1300, + -1, -1, -1, -1, -1, -1, 1307, 1308, 1309, -1, + -1, -1, -1, -1, 14, -1, 16, -1, -1, 62, + 63, -1, 65, -1, -1, -1, -1, -1, -1, -1, + 73, -1, -1, -1, 34, -1, -1, -1, 38, 1340, + 83, -1, -1, -1, -1, -1, -1, -1, 91, -1, + 2702, -1, 52, 53, -1, -1, 56, -1, -1, -1, + 60, -1, -1, -1, -1, 65, 66, -1, -1, -1, + -1, 2723, -1, -1, -1, 118, -1, -1, -1, -1, + -1, -1, -1, -1, 2736, 85, -1, -1, -1, 132, + -1, -1, 135, -1, -1, -1, 2748, 2749, -1, -1, + -1, -1, -1, -1, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 166, 1425, -1, -1, -1, 128, -1, + -1, -1, -1, -1, -1, -1, 136, -1, 138, 139, + 1441, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 151, 152, -1, -1, -1, -1, -1, 2810, -1, + -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 178, 2831, + -1, -1, -1, -1, 2836, 2837, -1, -1, -1, 232, + -1, 234, -1, -1, -1, 195, -1, -1, 241, -1, + -1, -1, -1, -1, -1, 248, -1, -1, -1, -1, + -1, 211, -1, 213, 2866, 2867, -1, 217, -1, 1520, + 263, 221, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1535, 235, -1, -1, -1, 2891, + -1, -1, -1, 2895, -1, -1, -1, 247, -1, 249, + -1, 1552, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 265, -1, -1, -1, -1, + 2922, 2923, -1, -1, -1, -1, -1, 320, -1, -1, + -1, -1, -1, 283, -1, -1, -1, 287, -1, -1, + -1, 2943, -1, -1, 294, -1, 339, -1, -1, -1, + 2952, -1, 2954, -1, 2956, -1, -1, -1, 1609, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 339, -1, - 2805, -1, 343, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2986, -1, -1, -1, -1, 2991, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 2826, -1, -1, -1, -1, 2831, 2832, -1, -1, + -1, 394, -1, 396, -1, -1, -1, -1, -1, -1, + -1, 404, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3031, + -1, -1, 382, -1, -1, -1, -1, -1, -1, 3041, + 3042, 3043, 3044, -1, -1, -1, -1, -1, -1, 399, + -1, 401, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 414, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 425, -1, -1, -1, -1, + -1, -1, -1, 476, -1, -1, -1, 3089, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 447, -1, -1, + 450, -1, 452, -1, 454, 455, -1, 1758, 458, 459, + -1, -1, -1, -1, 3116, -1, -1, -1, -1, 469, + -1, -1, 472, -1, -1, -1, -1, -1, -1, -1, + 480, -1, -1, -1, 3136, -1, 486, -1, -1, -1, + -1, 534, 535, 536, 494, -1, -1, -1, 541, 499, + 500, 501, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 557, -1, -1, 560, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 387, -1, -1, -1, - -1, -1, -1, 394, -1, 396, 2861, 2862, -1, -1, - -1, -1, -1, 404, -1, -1, -1, -1, 2041, -1, - -1, -1, -1, -1, -1, -1, -1, 2050, -1, -1, - -1, 2886, -1, -1, -1, 2890, -1, -1, -1, -1, + -1, -1, 532, -1, -1, 3187, 579, -1, -1, -1, + 540, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 597, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2079, -1, -1, 450, - -1, -1, 2917, 2918, -1, -1, -1, -1, -1, -1, + -1, 1872, 1873, 1874, -1, -1, -1, 36, 37, -1, + -1, -1, -1, 42, 584, 44, -1, 46, 47, -1, + -1, -1, -1, -1, -1, -1, 596, -1, -1, -1, + 600, -1, -1, 603, 63, -1, -1, -1, 608, -1, + -1, -1, 1913, -1, -1, -1, -1, -1, -1, -1, + -1, 1922, -1, 1924, -1, -1, -1, -1, -1, -1, + 630, -1, -1, 3285, -1, -1, -1, -1, 638, -1, + -1, -1, -1, -1, 644, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 657, -1, -1, + 119, -1, -1, 122, -1, -1, 3318, -1, -1, -1, + -1, 130, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 2938, -1, 476, -1, -1, -1, 2112, - -1, -1, 2947, -1, 2949, -1, 2951, -1, -1, -1, + 149, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 3352, -1, -1, -1, -1, -1, -1, -1, 167, -1, + -1, 3363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 2133, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 2981, 2150, -1, -1, - -1, 2986, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 534, 535, 536, -1, -1, -1, -1, - 541, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 557, -1, -1, 560, - -1, 3026, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3036, 3037, 3038, 3039, -1, -1, -1, 579, -1, + -1, -1, -1, 192, -1, 194, -1, -1, -1, -1, + -1, 3393, -1, -1, 2045, 3397, 3398, -1, 3400, 208, + 209, -1, -1, 2054, -1, -1, -1, 3409, -1, 14, + -1, 16, 3414, -1, -1, 3417, -1, 3419, 3420, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 34, + -1, -1, 2083, 38, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 252, -1, -1, -1, 52, 53, -1, + -1, 56, -1, 3455, -1, 60, -1, -1, -1, -1, + 65, 66, -1, -1, -1, 2116, -1, -1, -1, -1, + -1, -1, 281, -1, -1, -1, -1, -1, -1, -1, + 85, 290, 291, -1, 293, -1, 2137, -1, 3490, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 104, + -1, -1, -1, 2154, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 327, 328, + 329, -1, 3524, 128, -1, -1, -1, -1, -1, -1, + -1, 136, -1, 138, 139, -1, -1, 346, 347, 348, + -1, -1, -1, -1, -1, 354, 151, 152, 357, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3561, + -1, -1, -1, -1, 373, 374, -1, -1, -1, -1, + -1, -1, -1, 178, -1, -1, -1, -1, -1, 3581, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 597, -1, -1, -1, + 195, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 409, 410, -1, -1, -1, 3607, 211, -1, 213, -1, + -1, -1, 217, -1, -1, -1, 221, -1, -1, -1, + -1, -1, -1, -1, -1, 434, -1, -1, -1, -1, + 235, -1, -1, -1, -1, -1, -1, -1, -1, 2290, + -1, -1, 247, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3084, + 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 283, -1, + -1, 490, 287, -1, -1, 494, -1, -1, -1, 294, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 508, + -1, 2352, -1, -1, -1, 2356, -1, -1, -1, -1, + 2361, 2362, -1, -1, -1, -1, 3718, 3719, -1, 2370, + -1, 2372, -1, 2374, -1, 2376, 2377, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2390, + 2391, -1, 2393, -1, -1, 2396, 2397, 2398, 2399, -1, + 2401, -1, -1, -1, -1, -1, -1, 566, -1, -1, + 569, -1, 2413, 572, 573, 574, 575, -1, -1, 2420, + -1, 2422, -1, 2424, 2425, -1, 2427, 382, -1, -1, + -1, 2432, 2433, 2434, -1, -1, -1, 2438, 2439, 2440, + -1, 2442, -1, 2444, 399, 2446, 401, 2448, -1, 2450, + -1, -1, -1, -1, 2455, -1, 615, 616, -1, 414, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 425, 2472, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 642, -1, 3837, -1, 2488, -1, -1, + 2491, -1, 447, -1, -1, 450, -1, 452, -1, 454, + 455, -1, -1, 458, 459, 3857, -1, -1, -1, -1, + -1, -1, -1, -1, 469, -1, -1, 472, -1, -1, + -1, -1, -1, -1, -1, 480, -1, -1, 3880, -1, + -1, 486, -1, -1, -1, 3887, -1, -1, -1, 494, + -1, -1, -1, -1, 499, 500, 501, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3111, -1, -1, -1, - -1, -1, 2285, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 3131, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2567, -1, -1, -1, + -1, 3923, -1, -1, -1, -1, -1, 532, -1, -1, + -1, -1, -1, -1, -1, 540, 14, -1, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 52, 53, -1, -1, -1, 584, + -1, -1, 60, -1, -1, -1, -1, 65, 66, -1, + -1, 596, -1, -1, -1, 600, 2647, -1, 603, -1, + -1, -1, -1, 608, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 630, 104, -1, -1, -1, + -1, -1, -1, 638, 4036, -1, -1, -1, -1, 644, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2347, -1, -1, 3182, 2351, -1, - -1, -1, -1, 2356, 2357, -1, -1, -1, -1, -1, - -1, -1, 2365, -1, 2367, -1, 2369, -1, 2371, 2372, + 128, -1, 657, -1, -1, -1, -1, -1, 136, -1, + 138, 139, -1, -1, -1, -1, -1, 4069, -1, -1, + -1, 4073, -1, 151, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 2385, 2386, -1, 2388, -1, -1, 2391, 2392, - 2393, 2394, -1, 2396, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 2408, -1, -1, -1, -1, - -1, -1, 2415, -1, 2417, -1, 2419, 2420, -1, 2422, - -1, -1, -1, -1, 2427, 2428, 2429, -1, -1, -1, - 2433, 2434, 2435, -1, 2437, -1, 2439, -1, 2441, -1, - 2443, -1, 2445, -1, -1, 3280, -1, 2450, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 2467, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3313, -1, - 2483, -1, -1, 2486, -1, -1, -1, -1, -1, -1, + 178, -1, -1, -1, -1, -1, 4108, 4109, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 195, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 211, -1, 213, -1, -1, -1, 217, + -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3347, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3358, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4167, -1, -1, -1, 247, + -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 2837, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 14, -1, 16, -1, -1, -1, -1, - -1, -1, -1, 3388, -1, -1, -1, 3392, 3393, 2562, - 3395, -1, -1, 34, -1, -1, -1, 38, -1, 3404, - -1, -1, -1, -1, 3409, -1, -1, 3412, -1, 3414, - 3415, 52, 53, -1, -1, 56, -1, -1, -1, 60, - -1, -1, -1, -1, 65, 66, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 283, -1, -1, -1, 287, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 85, 3450, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4228, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 104, -1, -1, -1, -1, -1, 2642, + 2891, -1, -1, -1, 2895, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4257, -1, -1, -1, -1, + -1, -1, 4264, -1, -1, -1, -1, -1, -1, -1, + -1, 2922, 2923, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3485, -1, -1, -1, -1, -1, -1, 128, -1, -1, - -1, -1, -1, -1, -1, 136, -1, 138, 139, -1, + -1, -1, 2943, -1, -1, -1, -1, -1, -1, -1, + 4302, 2952, -1, 2954, 382, 2956, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4317, -1, 4319, -1, -1, + -1, 399, -1, 401, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 414, -1, -1, -1, + -1, -1, 4344, -1, -1, -1, 4348, 425, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 151, 152, -1, -1, 3519, -1, -1, -1, -1, -1, - -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 178, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 447, + -1, -1, 450, -1, 452, -1, -1, 455, -1, -1, + 458, 459, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 469, -1, -1, 472, -1, -1, -1, -1, -1, + -1, -1, 480, -1, -1, -1, -1, -1, 486, 4411, + -1, -1, -1, -1, -1, -1, 494, -1, -1, -1, + -1, 499, 500, 501, -1, -1, -1, -1, -1, 4431, + -1, -1, -1, -1, -1, 4437, -1, -1, 3089, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4450, -1, + -1, -1, -1, -1, 532, -1, -1, -1, -1, -1, + -1, -1, 540, -1, -1, 3116, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3556, -1, -1, 195, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3136, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 211, 3576, 213, -1, -1, -1, 217, -1, -1, -1, - 221, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 235, -1, -1, 3602, -1, -1, - -1, -1, -1, -1, -1, -1, 247, -1, 249, -1, + -1, -1, -1, -1, -1, -1, 584, -1, -1, -1, + -1, -1, 4514, -1, -1, -1, -1, 4519, 596, -1, + -1, -1, 600, -1, 4526, 603, -1, -1, -1, -1, + 608, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 283, -1, -1, -1, 287, -1, -1, -1, - -1, -1, -1, 294, -1, -1, -1, -1, -1, 2832, + 638, -1, -1, -1, -1, -1, 644, -1, -1, -1, + -1, -1, -1, 4575, -1, -1, -1, -1, -1, 657, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3713, 3714, - -1, -1, -1, 2886, -1, -1, -1, 2890, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4635, -1, -1, -1, -1, -1, 4641, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 382, -1, -1, 2917, 2918, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 399, -1, - 401, -1, -1, -1, -1, 2938, -1, -1, -1, -1, - -1, -1, -1, 414, 2947, -1, 2949, -1, 2951, -1, - -1, -1, -1, -1, 425, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 447, -1, -1, 450, - -1, 452, -1, 454, 455, -1, -1, 458, 459, -1, - -1, -1, -1, -1, -1, -1, -1, 3832, 469, -1, - -1, 472, -1, -1, -1, -1, -1, -1, -1, 480, - -1, -1, -1, -1, -1, 486, -1, 3852, -1, -1, - -1, -1, -1, 494, -1, -1, -1, -1, 499, 500, - 501, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3875, -1, -1, -1, -1, -1, -1, 3882, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 532, -1, -1, -1, -1, -1, -1, -1, 540, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3084, -1, 3918, -1, -1, -1, -1, -1, -1, + -1, -1, 4684, -1, -1, -1, -1, -1, -1, -1, + 4692, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 14, -1, 16, -1, -1, 3111, -1, - -1, -1, -1, 584, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 34, -1, 596, -1, 38, 3131, 600, - -1, -1, 603, -1, -1, -1, -1, 608, -1, -1, - -1, 52, 53, -1, -1, 56, -1, -1, -1, 60, - -1, -1, -1, -1, 65, 66, -1, -1, -1, 630, - -1, -1, -1, -1, -1, -1, -1, 638, -1, -1, - -1, -1, -1, 644, 85, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 657, -1, -1, -1, - -1, -1, -1, 104, -1, -1, 4031, -1, -1, -1, + -1, -1, 3363, -1, -1, -1, -1, -1, -1, -1, + -1, 4723, -1, -1, -1, -1, -1, -1, -1, 4731, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, - -1, -1, -1, -1, -1, 136, -1, 138, 139, 4064, - -1, -1, -1, 4068, -1, -1, -1, -1, -1, -1, - 151, 152, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3393, -1, -1, -1, 3397, 3398, -1, 4751, + -1, 4753, 4754, -1, -1, -1, -1, -1, 3409, -1, + -1, -1, -1, 3414, -1, -1, 3417, -1, 3419, 3420, + -1, -1, -1, -1, -1, -1, -1, 4779, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 178, 4103, 4104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 195, -1, -1, -1, -1, -1, + -1, 4803, -1, -1, 4806, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 211, -1, 213, -1, -1, -1, 217, -1, -1, -1, - 221, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 235, -1, -1, 4162, -1, -1, - -1, -1, -1, -1, -1, -1, 247, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 265, 3358, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4838, -1, -1, 3490, + -1, -1, -1, -1, -1, -1, 4848, -1, -1, -1, + -1, 4853, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 283, -1, -1, -1, 287, -1, -1, -1, - -1, -1, -1, 294, -1, 3388, -1, -1, 4223, 3392, - 3393, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3404, -1, -1, -1, -1, 3409, -1, -1, 3412, - -1, 3414, 3415, -1, -1, -1, -1, 4252, -1, -1, - -1, -1, -1, -1, 4259, -1, -1, -1, -1, -1, + -1, -1, -1, 3524, -1, -1, 4878, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 4903, -1, -1, -1, -1, -1, -1, -1, -1, + 3561, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 4297, -1, -1, -1, -1, -1, -1, -1, - -1, 382, -1, -1, -1, -1, -1, 4312, -1, 4314, - -1, -1, 3485, -1, -1, -1, -1, -1, 399, -1, - 401, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 414, 4339, -1, -1, -1, 4343, -1, - -1, -1, -1, -1, 425, -1, 3519, -1, -1, -1, + 3581, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 447, -1, -1, 450, - -1, 452, -1, 454, 455, -1, -1, 458, 459, -1, - -1, -1, -1, 3556, -1, -1, -1, -1, 469, -1, - -1, 472, -1, -1, -1, -1, -1, -1, -1, 480, - -1, 4406, -1, 3576, -1, 486, -1, -1, -1, -1, - -1, -1, -1, 494, -1, -1, -1, -1, 499, 500, - 501, 4426, -1, -1, -1, -1, -1, 4432, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4445, -1, 14, -1, 16, -1, -1, -1, -1, -1, - -1, 532, -1, -1, -1, -1, -1, -1, -1, 540, - -1, -1, -1, -1, -1, -1, 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 52, 53, -1, -1, -1, -1, -1, -1, 60, -1, - -1, -1, -1, 65, 66, -1, -1, -1, -1, -1, - -1, -1, -1, 584, 4509, -1, -1, -1, -1, 4514, - -1, -1, -1, 85, -1, 596, 4521, -1, -1, 600, - -1, -1, 603, -1, -1, -1, -1, 608, -1, -1, - -1, -1, 104, -1, -1, -1, -1, -1, -1, -1, - 3713, 3714, -1, -1, -1, -1, -1, -1, -1, 630, - -1, -1, -1, -1, -1, -1, 128, 638, -1, -1, - -1, -1, -1, 644, 136, 4570, 138, 139, -1, -1, - -1, -1, -1, -1, -1, -1, 657, -1, -1, 151, - 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 178, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 195, -1, 4630, -1, -1, -1, -1, - -1, 4636, -1, -1, -1, -1, -1, -1, -1, 211, - -1, 213, -1, -1, -1, 217, -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 4679, 247, -1, 249, -1, 3852, - -1, -1, 4687, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 265, -1, -1, -1, -1, -1, -1, - -1, -1, 3875, -1, -1, -1, -1, -1, -1, 3882, - -1, 283, -1, 4718, -1, 287, -1, -1, -1, -1, - -1, 4726, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 4746, -1, 4748, 4749, 3918, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4774, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 4798, -1, -1, 4801, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 399, 4833, 401, - -1, -1, -1, -1, -1, -1, -1, -1, 4843, -1, - -1, -1, 414, 4848, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 425, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 4873, -1, - -1, -1, -1, -1, -1, 447, -1, -1, 450, -1, - 452, -1, -1, 455, -1, -1, 458, 459, -1, -1, - -1, 4064, -1, 4898, -1, 4068, -1, 469, -1, -1, - 472, -1, -1, -1, -1, -1, -1, -1, 480, -1, - -1, -1, -1, -1, 486, -1, -1, -1, -1, -1, - -1, -1, 494, -1, -1, -1, -1, 499, 500, 501, - 4103, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3718, 3719, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 532, -1, -1, -1, -1, -1, -1, -1, 540, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 584, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 596, -1, -1, -1, 600, -1, - -1, 603, -1, -1, -1, -1, 608, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 638, -1, -1, -1, - -1, -1, 644, -1, -1, -1, -1, -1, -1, 4252, - -1, -1, -1, -1, -1, 657, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4312, - -1, 4314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3857, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3880, + -1, -1, -1, -1, -1, -1, 3887, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3923, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -12327,19 +12388,20 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 4445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 4069, -1, + -1, -1, 4073, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 4108, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 4570, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -12350,4198 +12412,2076 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 4679, -1, -1, -1, - -1, -1, -1, -1, 4687, 5, -1, 7, 8, 9, - 10, 11, 12, -1, -1, 15, -1, -1, -1, 19, - -1, -1, 22, -1, 24, 25, 26, 27, 28, 29, - 30, 31, 32, -1, 34, 4718, -1, 37, 38, 39, - 40, 41, 42, 43, -1, 45, 46, 47, 48, 49, - -1, 51, 52, -1, -1, 55, 56, 57, 58, 59, - -1, 61, 62, 63, 64, 65, -1, 67, 68, 69, - 70, 71, 72, -1, 74, 75, 76, 77, 78, 79, - 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, - -1, 91, 92, -1, 94, 95, 96, 97, 98, -1, - 100, 101, 102, 103, -1, -1, 106, 107, 108, 109, - 110, 111, -1, 113, 114, 115, -1, 117, 118, 119, - 120, 121, 122, -1, -1, -1, -1, 127, 128, 129, - -1, -1, 132, 133, -1, 135, -1, -1, -1, -1, - 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, - -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, - 160, -1, 162, 163, -1, 165, 166, 167, -1, 169, - 170, -1, 172, 173, 174, 175, 176, 177, 178, 179, - -1, 181, 182, 183, 184, 185, 186, 187, 188, -1, - 190, 191, 192, 193, -1, 195, -1, -1, -1, 199, - 200, -1, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, -1, 214, 4898, 216, 217, 218, 219, - -1, 221, 222, 223, -1, 225, 226, -1, -1, -1, - 230, 231, 232, 233, 234, 235, -1, -1, 238, 239, - 240, -1, -1, 243, -1, -1, -1, 247, 248, 249, - 250, -1, -1, 253, -1, 255, 256, -1, 258, 259, - -1, -1, -1, 263, -1, -1, 266, 267, 268, -1, - 270, 271, -1, 273, 274, 275, -1, -1, -1, -1, - -1, 281, 282, -1, 284, -1, 286, -1, 288, 289, - -1, -1, 292, -1, -1, -1, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, -1, -1, -1, -1, - 330, 331, 332, 333, 334, 335, -1, -1, 338, 339, - 340, 341, -1, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, -1, 356, 357, -1, -1, - 360, 361, 362, 363, 364, 365, 366, 367, 368, -1, - 370, 371, 372, -1, 374, 375, 376, -1, 378, 379, - 380, 381, -1, 383, 384, -1, -1, -1, -1, -1, - -1, -1, -1, 393, 394, 395, -1, 397, 398, -1, - 400, -1, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, -1, 414, 415, 416, -1, 418, -1, - 420, 421, 422, 423, 424, -1, 426, 427, 428, -1, - -1, 431, -1, -1, -1, 435, 436, 437, 438, 439, - -1, -1, 442, 443, 444, 445, 446, -1, 448, 449, - -1, 451, 452, 453, 454, 455, 456, -1, 458, -1, - 460, 461, -1, 463, 464, -1, 466, -1, 468, -1, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, -1, 484, 485, -1, -1, -1, 489, - 490, 491, 492, -1, -1, -1, 496, -1, -1, -1, - 500, -1, 502, 503, 504, 505, 506, 507, -1, 509, - 510, 511, 512, 513, 514, -1, -1, -1, -1, -1, - -1, 521, 522, -1, 524, -1, -1, 527, -1, -1, - -1, 531, 532, 533, -1, -1, -1, 537, 538, 539, - 540, 541, -1, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, -1, -1, - 560, 561, 562, 563, -1, 565, 566, 567, -1, 569, - 570, 571, 572, -1, -1, -1, -1, 577, 578, 579, - 580, -1, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, -1, 595, 596, -1, -1, 599, - -1, -1, 602, -1, 604, -1, 606, 607, -1, -1, - 610, 611, 612, 613, 614, -1, -1, 617, 618, -1, - 620, 621, 622, 623, 624, 625, 626, 627, -1, -1, - -1, -1, -1, -1, 634, 635, -1, 637, 638, 639, - -1, -1, 642, -1, -1, -1, -1, -1, -1, -1, - 650, 651, -1, -1, -1, -1, 656, 657, -1, -1, - 660, 661, -1, -1, 664, 665, 5, -1, 7, 8, - 9, 10, 11, 12, 13, -1, 15, -1, -1, -1, - 19, -1, -1, 22, -1, 24, 25, 26, 27, 28, - 29, 30, 31, 32, -1, 34, -1, -1, 37, 38, - 39, 40, 41, 42, 43, -1, 45, 46, 47, -1, - 49, -1, 51, 52, -1, -1, 55, 56, 57, 58, - 59, -1, 61, 62, 63, 64, 65, -1, 67, 68, - 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, - 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, - 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, - -1, 100, 101, 102, 103, -1, -1, 106, 107, 108, - 109, 110, 111, -1, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, -1, -1, -1, -1, 127, 128, - 129, -1, -1, 132, 133, -1, 135, -1, -1, -1, - -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, - -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, - -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, - 169, 170, -1, 172, 173, 174, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, 185, 186, 187, 188, - -1, 190, 191, 192, 193, -1, 195, -1, -1, -1, - 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, - 209, 210, 211, 212, -1, 214, -1, 216, 217, 218, - 219, -1, 221, 222, 223, -1, 225, 226, -1, -1, - -1, 230, 231, 232, 233, 234, 235, -1, -1, 238, - 239, 240, -1, -1, 243, -1, -1, -1, 247, 248, - 249, 250, -1, -1, 253, -1, 255, 256, -1, 258, - 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, - -1, -1, 271, -1, 273, 274, 275, -1, -1, -1, - -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, - 289, -1, -1, 292, -1, -1, -1, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, -1, -1, - -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, - 339, 340, 341, -1, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, -1, 356, 357, -1, - -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, - -1, 370, 371, 372, -1, 374, 375, 376, 377, 378, - 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, - -1, -1, -1, -1, 393, 394, 395, -1, 397, 398, - -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, -1, 414, 415, 416, -1, 418, - -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, - -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, - 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, - 449, -1, 451, 452, 453, 454, 455, 456, -1, 458, - -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, - -1, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, - 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, - -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, - 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, - -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, - -1, -1, 531, 532, 533, -1, -1, -1, 537, 538, - 539, 540, 541, -1, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, -1, - -1, 560, 561, 562, 563, -1, 565, 566, 567, -1, - 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, - 579, 580, -1, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 591, 592, 593, -1, 595, 596, -1, -1, - 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, - -1, 610, 611, 612, 613, 614, -1, -1, 617, 618, - -1, 620, 621, 622, 623, 624, 625, 626, 627, -1, - -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, - 639, -1, -1, 642, -1, -1, -1, -1, -1, -1, - -1, 650, 651, -1, -1, -1, -1, 656, 657, -1, - -1, 660, 661, -1, -1, 664, 665, 5, -1, 7, - 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, - -1, 19, -1, -1, 22, -1, 24, 25, 26, 27, - 28, 29, 30, 31, 32, -1, 34, -1, -1, 37, - 38, 39, 40, 41, 42, 43, -1, 45, 46, 47, - -1, 49, -1, 51, 52, -1, -1, 55, 56, 57, - 58, 59, -1, 61, 62, 63, 64, 65, -1, 67, - 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - 88, 89, -1, 91, 92, -1, 94, 95, 96, 97, - 98, -1, 100, 101, 102, 103, -1, -1, 106, 107, - 108, 109, 110, 111, -1, 113, 114, 115, -1, 117, - 118, 119, 120, 121, 122, -1, -1, -1, -1, 127, - 128, 129, -1, -1, 132, 133, -1, 135, -1, -1, - -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, - -1, -1, -1, 151, -1, -1, 154, 155, 156, -1, - -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, - -1, 169, 170, -1, 172, 173, 174, 175, 176, 177, - 178, 179, -1, 181, 182, 183, 184, 185, 186, 187, - 188, -1, 190, 191, 192, 193, -1, 195, -1, -1, - -1, 199, 200, 201, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, -1, 214, -1, 216, 217, - 218, 219, -1, 221, 222, 223, -1, 225, 226, -1, - -1, -1, 230, 231, 232, 233, 234, 235, -1, -1, - 238, 239, 240, -1, -1, 243, -1, -1, -1, 247, - 248, 249, 250, -1, -1, 253, -1, 255, 256, -1, - 258, 259, -1, -1, -1, 263, -1, -1, 266, 267, - 268, -1, -1, 271, -1, 273, 274, 275, -1, -1, - -1, -1, -1, 281, 282, -1, 284, -1, 286, -1, - 288, 289, -1, -1, 292, -1, -1, -1, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, -1, -1, - -1, -1, 330, 331, 332, 333, 334, 335, -1, -1, - 338, 339, 340, 341, -1, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, -1, 356, 357, - -1, -1, 360, 361, 362, 363, 364, 365, 366, 367, - 368, -1, 370, 371, 372, -1, 374, 375, 376, -1, - 378, 379, 380, 381, -1, 383, 384, -1, -1, -1, - -1, -1, -1, -1, -1, 393, 394, 395, -1, 397, - 398, -1, 400, -1, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, -1, 414, 415, 416, -1, - 418, -1, 420, 421, 422, 423, 424, -1, 426, 427, - 428, -1, -1, 431, -1, -1, -1, 435, 436, 437, - 438, 439, -1, -1, 442, 443, 444, 445, 446, -1, - 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, - 458, -1, 460, 461, -1, 463, 464, -1, 466, -1, - 468, -1, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, -1, 484, 485, -1, -1, - -1, 489, 490, 491, 492, -1, -1, -1, 496, -1, - -1, -1, 500, -1, 502, 503, 504, 505, 506, 507, - -1, 509, 510, 511, 512, 513, 514, -1, -1, -1, - -1, -1, -1, 521, 522, -1, 524, -1, -1, 527, - -1, -1, -1, 531, 532, 533, -1, -1, -1, 537, - 538, 539, 540, 541, -1, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - -1, -1, 560, 561, 562, 563, -1, 565, 566, 567, - -1, 569, 570, 571, 572, -1, -1, -1, -1, -1, - 578, 579, 580, -1, 582, 583, 584, 585, 586, 587, - 588, 589, 590, 591, 592, 593, -1, 595, 596, -1, - -1, 599, -1, -1, 602, -1, 604, -1, 606, 607, - -1, -1, 610, 611, 612, 613, 614, -1, -1, 617, - 618, -1, 620, 621, 622, 623, 624, 625, 626, 627, - -1, -1, -1, -1, -1, -1, 634, 635, -1, 637, - 638, 639, -1, -1, 642, -1, -1, -1, -1, -1, - -1, -1, 650, 651, -1, -1, -1, -1, 656, 657, - -1, -1, 660, 661, -1, -1, 664, 665, 5, -1, - 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, - -1, -1, 19, -1, -1, 22, -1, 24, 25, 26, - 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, - 37, 38, 39, 40, 41, 42, 43, -1, 45, 46, - 47, -1, 49, -1, 51, 52, -1, -1, 55, 56, - 57, 58, 59, -1, 61, 62, 63, 64, 65, -1, - 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, - 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, - 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, - 97, 98, -1, 100, 101, 102, 103, -1, -1, 106, - 107, 108, 109, 110, 111, -1, 113, 114, 115, -1, - 117, 118, 119, 120, 121, 122, -1, -1, -1, -1, - 127, 128, 129, -1, -1, 132, 133, -1, 135, -1, - -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, - -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, - -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, - 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, 185, 186, - 187, 188, -1, 190, 191, 192, 193, -1, 195, -1, - -1, -1, 199, 200, 201, 202, -1, 204, -1, 206, - 207, 208, 209, 210, 211, 212, -1, 214, -1, 216, - 217, 218, 219, -1, 221, 222, 223, -1, 225, 226, - -1, -1, -1, 230, 231, 232, 233, 234, 235, -1, - -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, - 247, 248, 249, 250, -1, -1, 253, -1, 255, 256, - -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, - 267, 268, -1, -1, 271, -1, 273, 274, 275, -1, - -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, - -1, 288, 289, -1, -1, 292, -1, -1, -1, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, - -1, 338, 339, 340, 341, -1, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, -1, 356, - 357, -1, -1, 360, 361, 362, 363, 364, 365, 366, - 367, 368, -1, 370, 371, 372, -1, 374, 375, 376, - -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, - -1, -1, -1, -1, -1, -1, 393, 394, 395, -1, - 397, 398, -1, 400, -1, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, - -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, - 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, - 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, - -1, 448, 449, -1, 451, 452, 453, 454, 455, 456, - -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, - -1, 468, -1, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, - -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, - -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, - 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, - -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, - 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, - 537, 538, 539, 540, 541, -1, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, -1, -1, 560, 561, 562, 563, -1, 565, 566, - 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, - -1, 578, 579, 580, -1, 582, 583, 584, 585, 586, - 587, 588, 589, 590, 591, 592, 593, -1, 595, 596, - -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, - 607, -1, -1, 610, 611, 612, 613, 614, -1, -1, - 617, 618, -1, 620, 621, 622, 623, 624, 625, 626, - 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, - 637, 638, 639, -1, -1, 642, -1, -1, -1, -1, - -1, -1, -1, 650, 651, -1, -1, -1, -1, 656, - 657, -1, -1, 660, 661, -1, -1, 664, 665, 5, - -1, 7, 8, 9, 10, 11, 12, -1, -1, 15, - -1, -1, -1, 19, -1, -1, 22, -1, 24, 25, - 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, - -1, 37, 38, 39, 40, 41, 42, 43, -1, 45, - 46, 47, -1, 49, -1, 51, 52, -1, -1, 55, - 56, 57, 58, 59, -1, 61, 62, 63, 64, 65, - -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, - 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, - 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, - 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, - 106, 107, 108, 109, 110, 111, -1, 113, 114, 115, - -1, 117, 118, 119, 120, 121, 122, -1, -1, -1, - -1, 127, 128, 129, -1, -1, 132, 133, -1, 135, - -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, - 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, - 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, - 166, 167, -1, 169, 170, -1, 172, 173, 174, 175, - 176, 177, 178, 179, -1, 181, 182, 183, 184, 185, - 186, 187, 188, -1, 190, 191, 192, 193, -1, 195, - -1, -1, -1, 199, 200, 201, 202, -1, 204, -1, - 206, 207, 208, 209, 210, 211, 212, -1, 214, -1, - 216, 217, 218, 219, -1, 221, 222, 223, -1, 225, - 226, -1, -1, -1, 230, 231, 232, 233, 234, 235, - -1, -1, 238, 239, 240, -1, -1, 243, -1, -1, - -1, 247, 248, 249, 250, -1, -1, 253, -1, 255, - 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, - 266, 267, 268, -1, -1, 271, -1, 273, 274, 275, - -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, - 286, -1, 288, 289, -1, -1, 292, -1, -1, -1, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, - -1, -1, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, - 356, 357, -1, -1, 360, 361, 362, 363, 364, 365, - 366, 367, 368, -1, 370, 371, 372, -1, 374, 375, - 376, -1, 378, 379, 380, 381, -1, 383, 384, -1, - -1, -1, -1, -1, -1, -1, -1, 393, 394, 395, - -1, 397, 398, -1, 400, -1, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, - 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, - 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, - 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, - 446, -1, 448, 449, -1, 451, 452, 453, 454, 455, - 456, -1, 458, -1, 460, 461, -1, 463, 464, -1, - 466, -1, 468, -1, 470, 471, 472, 473, 474, 475, - 476, 477, 478, 479, 480, 481, 482, -1, 484, 485, - -1, -1, -1, 489, 490, 491, 492, -1, -1, -1, - 496, -1, -1, -1, 500, -1, 502, 503, 504, 505, - 506, 507, -1, 509, 510, 511, 512, 513, 514, -1, - -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, - -1, 527, -1, -1, -1, 531, 532, 533, -1, -1, - -1, 537, 538, 539, 540, 541, -1, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, -1, -1, 560, 561, 562, 563, -1, 565, - 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, - -1, -1, 578, 579, 580, -1, 582, 583, 584, 585, - 586, 587, 588, 589, 590, 591, 592, 593, -1, 595, - 596, -1, -1, 599, -1, -1, 602, -1, 604, -1, - 606, 607, -1, -1, 610, 611, 612, 613, 614, -1, - -1, 617, 618, -1, 620, 621, 622, 623, 624, 625, - 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, - -1, 637, 638, 639, -1, -1, 642, -1, -1, -1, - -1, -1, -1, -1, 650, 651, -1, -1, -1, -1, - 656, 657, -1, -1, 660, 661, -1, -1, 664, 665, - 5, -1, 7, 8, 9, 10, 11, 12, -1, -1, - 15, -1, -1, -1, 19, -1, -1, 22, -1, 24, - 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, - -1, -1, 37, 38, 39, 40, 41, 42, 43, -1, - 45, 46, 47, -1, 49, -1, 51, 52, -1, -1, - 55, 56, 57, 58, 59, -1, 61, 62, 63, 64, - 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, - 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, - 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, - 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, - -1, 106, 107, 108, 109, 110, 111, -1, 113, 114, - 115, -1, 117, 118, 119, 120, 121, 122, -1, -1, - -1, -1, 127, 128, 129, -1, -1, 132, 133, -1, - 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, - 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, - 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, - 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - 185, 186, 187, 188, -1, 190, 191, 192, 193, -1, - 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, - -1, 206, 207, 208, 209, 210, 211, 212, -1, 214, - -1, 216, 217, 218, 219, -1, 221, 222, 223, -1, - 225, 226, -1, -1, -1, 230, 231, 232, 233, 234, - 235, -1, -1, 238, 239, 240, -1, -1, 243, -1, - -1, -1, 247, 248, 249, 250, -1, -1, 253, -1, - 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, - -1, 266, 267, 268, -1, -1, 271, -1, 273, 274, - 275, -1, -1, -1, -1, -1, 281, 282, -1, 284, - -1, 286, -1, 288, 289, -1, -1, 292, -1, -1, - -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, - 335, -1, -1, 338, 339, 340, 341, -1, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - -1, 356, 357, -1, -1, 360, 361, 362, 363, 364, - 365, 366, 367, 368, -1, 370, 371, 372, -1, 374, - 375, 376, -1, 378, 379, 380, 381, -1, 383, 384, - -1, -1, -1, -1, -1, -1, -1, -1, 393, 394, - 395, -1, 397, 398, -1, 400, -1, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, - 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, - -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, - 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, - 445, 446, -1, 448, 449, -1, 451, 452, 453, 454, - 455, 456, -1, 458, -1, 460, 461, -1, 463, 464, - -1, 466, -1, 468, -1, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, - 485, -1, -1, -1, 489, 490, 491, 492, -1, -1, - -1, 496, -1, -1, -1, 500, -1, 502, 503, 504, - 505, 506, 507, -1, 509, 510, 511, 512, 513, 514, - -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, - -1, -1, 527, -1, -1, -1, 531, 532, 533, -1, - -1, -1, 537, 538, 539, 540, 541, -1, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, -1, -1, 560, 561, 562, 563, -1, - 565, 566, 567, -1, 569, 570, 571, 572, -1, -1, - -1, -1, -1, 578, 579, 580, -1, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, -1, - 595, 596, -1, -1, 599, -1, -1, 602, -1, 604, - -1, 606, 607, -1, -1, 610, 611, 612, 613, 614, - -1, -1, 617, 618, -1, 620, 621, 622, 623, 624, - 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, - 635, -1, 637, 638, 639, -1, -1, 642, -1, -1, - -1, -1, -1, -1, -1, 650, 651, -1, -1, -1, - -1, 656, 657, -1, -1, 660, 661, -1, -1, 664, - 665, 5, -1, 7, 8, 9, 10, 11, 12, -1, - -1, 15, -1, -1, -1, 19, -1, -1, 22, -1, - 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, - 34, -1, -1, 37, 38, 39, 40, 41, 42, 43, - -1, 45, 46, 47, -1, 49, -1, 51, 52, -1, - -1, 55, 56, 57, 58, 59, -1, 61, 62, 63, - 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, - 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, - 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, - -1, -1, 106, 107, 108, 109, 110, 111, -1, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, -1, - -1, -1, -1, 127, 128, 129, -1, -1, 132, 133, - -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, - 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, - 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, - -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, - 174, 175, 176, 177, 178, 179, -1, 181, 182, 183, - 184, 185, 186, 187, 188, -1, 190, 191, 192, 193, - -1, 195, -1, -1, -1, 199, 200, -1, 202, -1, - 204, -1, 206, 207, 208, 209, 210, 211, 212, -1, - 214, -1, 216, 217, 218, 219, -1, 221, 222, 223, - -1, 225, 226, -1, -1, -1, 230, 231, 232, 233, - 234, 235, -1, -1, 238, 239, 240, -1, -1, 243, - -1, -1, -1, 247, 248, 249, 250, -1, -1, 253, - -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, - -1, -1, 266, 267, 268, -1, -1, 271, -1, 273, - 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, - 284, -1, 286, -1, 288, 289, -1, -1, 292, -1, - -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, - 334, 335, -1, -1, 338, 339, 340, 341, -1, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, -1, 356, 357, -1, -1, 360, 361, 362, 363, - 364, 365, 366, 367, 368, -1, 370, 371, 372, -1, - 374, 375, 376, -1, 378, 379, 380, 381, -1, 383, - 384, -1, -1, -1, -1, -1, -1, -1, -1, 393, - 394, 395, -1, 397, 398, -1, 400, -1, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, - 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, - 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, - -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, - 444, 445, 446, -1, 448, 449, -1, 451, 452, 453, - 454, 455, 456, -1, 458, -1, 460, 461, -1, 463, - 464, -1, 466, -1, 468, -1, 470, 471, 472, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, - 484, 485, -1, -1, -1, 489, 490, 491, 492, -1, - -1, -1, 496, -1, -1, -1, 500, -1, 502, 503, - 504, 505, 506, 507, -1, 509, 510, 511, 512, 513, - 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, - 524, -1, -1, 527, -1, -1, -1, 531, 532, 533, - -1, -1, -1, 537, 538, 539, 540, 541, -1, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, -1, -1, 560, 561, 562, 563, - -1, 565, 566, 567, -1, 569, 570, 571, 572, -1, - -1, -1, -1, -1, 578, 579, 580, -1, 582, 583, - 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, - -1, 595, 596, -1, -1, 599, -1, -1, 602, -1, - 604, -1, 606, 607, -1, -1, 610, 611, 612, 613, - 614, -1, -1, 617, 618, -1, 620, 621, 622, 623, - 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, - 634, 635, -1, 637, 638, 639, -1, -1, 642, -1, - -1, -1, -1, -1, -1, -1, 650, 651, -1, -1, - -1, -1, 656, 657, -1, -1, 660, 661, -1, -1, - 664, 665, 5, -1, 7, 8, 9, 10, 11, 12, - 13, -1, 15, -1, -1, -1, 19, -1, -1, 22, - -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, - -1, 34, -1, -1, 37, 38, 39, 40, 41, 42, - 43, -1, 45, 46, 47, -1, 49, -1, 51, 52, - -1, -1, 55, 56, 57, 58, 59, -1, 61, 62, - 63, 64, 65, -1, 67, 68, 69, 70, 71, 72, - -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, - -1, 94, 95, 96, 97, 98, -1, 100, 101, 102, - 103, -1, -1, 106, 107, 108, 109, 110, 111, -1, - 113, 114, 115, -1, 117, 118, 119, 120, 121, 122, - -1, -1, -1, -1, 127, 128, 129, -1, -1, 132, - 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, - 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, - -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, - 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, - 173, 174, 175, 176, 177, 178, 179, -1, 181, 182, - 183, 184, 185, 186, 187, 188, -1, 190, 191, 192, - 193, -1, 195, -1, -1, -1, 199, 200, -1, 202, - -1, 204, -1, 206, 207, 208, 209, 210, 211, 212, - -1, 214, -1, 216, 217, 218, 219, -1, 221, 222, - 223, -1, 225, 226, -1, -1, -1, 230, 231, 232, - 233, 234, 235, -1, -1, 238, 239, 240, -1, -1, - 243, -1, -1, -1, 247, 248, 249, 250, -1, -1, - 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, - 263, -1, -1, 266, 267, 268, -1, -1, 271, -1, - 273, 274, 275, -1, -1, -1, -1, -1, 281, 282, - -1, 284, -1, 286, -1, 288, 289, -1, -1, 292, - -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, - 333, 334, 335, -1, -1, 338, 339, 340, 341, -1, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, -1, 356, 357, -1, -1, 360, 361, 362, - 363, 364, -1, 366, 367, 368, -1, 370, 371, 372, - -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, - 383, 384, -1, -1, -1, -1, -1, -1, -1, -1, - 393, 394, 395, -1, 397, 398, -1, 400, -1, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, - 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, - -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, - 443, 444, 445, 446, -1, 448, 449, -1, 451, 452, - 453, 454, 455, 456, -1, 458, -1, 460, 461, -1, - 463, 464, -1, 466, -1, 468, -1, 470, 471, 472, - 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, - -1, 484, 485, -1, -1, -1, 489, 490, 491, 492, - -1, -1, -1, 496, -1, -1, -1, 500, -1, 502, - 503, 504, 505, 506, 507, -1, 509, 510, 511, 512, - 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, - -1, 524, -1, -1, 527, -1, -1, -1, 531, 532, - 533, -1, -1, -1, 537, 538, 539, 540, 541, -1, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 557, -1, -1, 560, 561, 562, - 563, -1, 565, 566, 567, -1, 569, 570, 571, 572, - -1, -1, -1, -1, -1, 578, 579, 580, -1, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, - 593, -1, 595, 596, -1, -1, 599, -1, -1, 602, - -1, 604, -1, 606, 607, -1, -1, 610, 611, 612, - 613, 614, -1, -1, 617, 618, -1, 620, 621, 622, - 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, - -1, 634, 635, -1, 637, 638, 639, -1, -1, 642, - -1, -1, -1, -1, -1, -1, -1, 650, 651, -1, - -1, -1, -1, 656, 657, -1, -1, 660, 661, -1, - -1, 664, 665, 5, -1, 7, 8, 9, 10, 11, - 12, -1, -1, 15, -1, -1, -1, 19, -1, -1, - 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, - 32, -1, 34, -1, -1, 37, 38, 39, 40, 41, - 42, 43, -1, 45, 46, 47, -1, 49, -1, 51, - 52, -1, -1, 55, 56, 57, 58, 59, -1, 61, - 62, 63, 64, 65, -1, 67, 68, 69, 70, 71, - 72, -1, 74, 75, 76, 77, 78, 79, 80, -1, - 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, - 92, -1, 94, 95, 96, 97, 98, -1, 100, 101, - 102, 103, -1, -1, 106, 107, 108, 109, 110, 111, - -1, 113, 114, 115, -1, 117, 118, 119, 120, 121, - 122, -1, -1, -1, -1, 127, 128, 129, -1, -1, - 132, 133, -1, 135, -1, -1, -1, -1, 140, -1, - 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, - -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, - 162, 163, -1, 165, 166, 167, -1, 169, 170, -1, - 172, 173, 174, 175, 176, 177, 178, 179, -1, 181, - 182, 183, 184, 185, 186, 187, 188, -1, 190, 191, - 192, 193, -1, 195, -1, -1, -1, 199, 200, -1, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, -1, 214, -1, 216, 217, 218, 219, -1, 221, - 222, 223, -1, 225, 226, -1, -1, -1, 230, 231, - 232, 233, 234, 235, -1, -1, 238, 239, 240, -1, - -1, 243, -1, -1, -1, 247, 248, 249, 250, -1, - -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, - -1, 263, -1, -1, 266, 267, 268, -1, -1, 271, - -1, 273, 274, 275, -1, -1, -1, -1, -1, 281, - 282, -1, 284, -1, 286, -1, 288, 289, -1, -1, - 292, -1, -1, -1, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, -1, -1, -1, -1, 330, 331, - 332, 333, 334, 335, -1, -1, 338, 339, 340, 341, - -1, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, -1, 356, 357, -1, -1, 360, 361, - 362, 363, 364, 365, 366, 367, 368, -1, 370, 371, - 372, -1, 374, 375, 376, -1, 378, 379, 380, 381, - -1, 383, 384, -1, -1, -1, -1, -1, -1, -1, - -1, 393, 394, 395, -1, 397, 398, -1, 400, -1, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, -1, 414, 415, 416, -1, 418, -1, 420, 421, - 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, - -1, -1, -1, 435, 436, 437, 438, 439, -1, -1, - 442, 443, 444, 445, 446, -1, 448, 449, -1, 451, - 452, 453, 454, 455, 456, -1, 458, -1, 460, 461, - -1, 463, 464, -1, 466, -1, 468, -1, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, -1, 484, 485, -1, -1, -1, 489, 490, 491, - 492, -1, -1, -1, 496, -1, -1, -1, 500, -1, - 502, 503, 504, 505, 506, 507, -1, 509, 510, 511, - 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, - 522, -1, 524, -1, -1, 527, -1, -1, -1, 531, - 532, 533, -1, -1, -1, 537, 538, 539, 540, 541, - -1, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 555, 556, 557, -1, -1, 560, 561, - 562, 563, -1, 565, 566, 567, -1, 569, 570, 571, - 572, -1, -1, -1, -1, -1, 578, 579, 580, -1, - 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, - 592, 593, -1, 595, 596, -1, -1, 599, -1, -1, - 602, -1, 604, -1, 606, 607, -1, -1, 610, 611, - 612, 613, 614, -1, -1, 617, 618, -1, 620, 621, - 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, - -1, -1, 634, 635, -1, 637, 638, 639, -1, -1, - 642, -1, -1, -1, -1, -1, -1, -1, 650, 651, - -1, -1, -1, -1, 656, 657, -1, -1, 660, 661, - -1, -1, 664, 665, 5, -1, 7, 8, 9, 10, - 11, 12, -1, -1, 15, -1, -1, -1, 19, -1, - -1, 22, -1, 24, 25, 26, 27, 28, 29, 30, - 31, 32, -1, 34, -1, -1, 37, 38, 39, 40, - 41, 42, 43, -1, 45, 46, 47, -1, 49, -1, - 51, 52, -1, -1, 55, 56, 57, 58, 59, -1, - 61, 62, 63, 64, 65, -1, 67, 68, 69, 70, - 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, - -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, - 91, 92, -1, 94, 95, 96, 97, 98, -1, 100, - 101, 102, 103, -1, -1, 106, 107, 108, 109, 110, - 111, -1, 113, 114, 115, -1, 117, 118, 119, 120, - 121, 122, -1, -1, -1, -1, 127, 128, 129, -1, - -1, 132, 133, -1, 135, -1, -1, -1, -1, 140, - -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, - 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, - -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, - -1, 172, 173, 174, 175, 176, 177, 178, 179, -1, - 181, 182, 183, 184, 185, 186, 187, 188, -1, 190, - 191, 192, 193, -1, 195, -1, -1, -1, 199, 200, - -1, 202, -1, 204, -1, 206, 207, 208, 209, 210, - 211, 212, -1, 214, -1, 216, 217, 218, 219, -1, - 221, 222, 223, -1, 225, 226, -1, -1, -1, 230, - 231, 232, 233, 234, 235, -1, -1, 238, 239, 240, - -1, -1, 243, -1, -1, -1, 247, 248, 249, 250, - -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, - -1, -1, 263, -1, -1, 266, 267, 268, -1, -1, - 271, -1, 273, 274, 275, -1, -1, -1, -1, -1, - 281, 282, -1, 284, -1, 286, -1, 288, 289, -1, - -1, 292, -1, -1, -1, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, -1, -1, -1, -1, 330, - 331, 332, 333, 334, 335, -1, -1, 338, 339, 340, - 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, -1, 356, 357, -1, -1, 360, - 361, 362, 363, 364, 365, 366, 367, 368, -1, 370, - 371, 372, -1, 374, 375, 376, -1, 378, 379, 380, - 381, -1, 383, 384, -1, -1, -1, -1, -1, -1, - -1, -1, 393, 394, 395, -1, 397, 398, -1, 400, - -1, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, -1, 414, 415, 416, -1, 418, -1, 420, - 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, - 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, - -1, 442, 443, 444, 445, 446, -1, 448, 449, -1, - 451, 452, 453, 454, 455, 456, -1, 458, -1, 460, - 461, -1, 463, 464, -1, 466, -1, 468, -1, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, -1, 484, 485, -1, -1, -1, 489, 490, - 491, 492, -1, -1, -1, 496, -1, -1, -1, 500, - -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, - 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, - 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, - 531, 532, 533, -1, -1, -1, 537, 538, 539, 540, - 541, -1, 543, 544, 545, 546, 547, 548, 549, 550, - 551, 552, 553, 554, 555, 556, 557, -1, -1, 560, - 561, 562, 563, -1, 565, 566, 567, -1, 569, 570, - 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, - -1, 582, 583, 584, 585, 586, 587, 588, 589, 590, - 591, 592, 593, -1, 595, 596, -1, -1, 599, -1, - -1, 602, -1, 604, -1, 606, 607, -1, -1, 610, - 611, 612, 613, 614, -1, -1, 617, 618, -1, 620, - 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, - -1, -1, -1, 634, 635, -1, 637, 638, 639, -1, - -1, 642, -1, -1, -1, -1, -1, -1, -1, 650, - 651, -1, -1, -1, -1, 656, 657, -1, -1, 660, - 661, -1, -1, 664, 665, 5, -1, 7, 8, 9, - 10, 11, 12, -1, -1, 15, -1, -1, -1, 19, - -1, -1, 22, -1, 24, 25, 26, 27, 28, 29, - 30, 31, 32, -1, 34, -1, -1, 37, 38, 39, - 40, 41, 42, 43, -1, 45, 46, 47, -1, 49, - -1, 51, 52, -1, -1, 55, 56, 57, 58, 59, - -1, 61, 62, 63, 64, 65, -1, 67, 68, 69, - 70, 71, 72, -1, 74, 75, 76, 77, 78, 79, - 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, - -1, 91, 92, -1, 94, 95, 96, 97, 98, -1, - 100, 101, 102, 103, -1, -1, 106, 107, 108, 109, - 110, 111, -1, 113, 114, 115, -1, 117, 118, 119, - 120, 121, 122, -1, -1, -1, -1, 127, 128, 129, - -1, -1, 132, 133, -1, 135, -1, -1, -1, -1, - 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, - -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, - 160, -1, 162, 163, -1, 165, 166, 167, -1, 169, - 170, -1, 172, 173, 174, 175, 176, 177, 178, 179, - -1, 181, 182, 183, 184, 185, 186, 187, 188, -1, - 190, 191, 192, 193, -1, 195, -1, -1, -1, 199, - 200, -1, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, -1, 214, -1, 216, 217, 218, 219, - -1, 221, 222, 223, -1, 225, 226, -1, -1, -1, - 230, 231, 232, 233, 234, 235, -1, -1, 238, 239, - 240, -1, -1, 243, -1, -1, -1, 247, 248, 249, - 250, -1, -1, 253, -1, 255, 256, -1, 258, 259, - -1, -1, -1, 263, -1, -1, 266, 267, 268, -1, - -1, 271, -1, 273, 274, 275, -1, -1, -1, -1, - -1, 281, 282, -1, 284, -1, 286, -1, 288, 289, - -1, -1, 292, -1, -1, -1, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, -1, -1, -1, -1, - 330, 331, 332, 333, 334, 335, -1, -1, 338, 339, - 340, 341, -1, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, -1, 356, 357, -1, -1, - 360, 361, 362, 363, 364, 365, 366, 367, 368, -1, - 370, 371, 372, -1, 374, 375, 376, -1, 378, 379, - 380, 381, -1, 383, 384, -1, -1, -1, -1, -1, - -1, -1, -1, 393, 394, 395, -1, 397, 398, -1, - 400, -1, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, -1, 414, 415, 416, -1, 418, -1, - 420, 421, 422, 423, 424, -1, 426, 427, 428, -1, - -1, 431, -1, -1, -1, 435, 436, 437, 438, 439, - -1, -1, 442, 443, 444, 445, 446, -1, 448, 449, - -1, 451, 452, 453, 454, 455, 456, -1, 458, -1, - 460, 461, -1, 463, 464, -1, 466, -1, 468, -1, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, -1, 484, 485, -1, -1, -1, 489, - 490, 491, 492, -1, -1, -1, 496, -1, -1, -1, - 500, -1, 502, 503, 504, 505, 506, 507, -1, 509, - 510, 511, 512, 513, 514, -1, -1, -1, -1, -1, - -1, 521, 522, -1, 524, -1, -1, 527, -1, -1, - -1, 531, 532, 533, -1, -1, -1, 537, 538, 539, - 540, 541, -1, 543, 544, 545, 546, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, -1, -1, - 560, 561, 562, 563, -1, 565, 566, 567, -1, 569, - 570, 571, 572, -1, -1, -1, -1, -1, 578, 579, - 580, -1, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, -1, 595, 596, -1, -1, 599, - -1, -1, 602, -1, 604, -1, 606, 607, -1, -1, - 610, 611, 612, 613, 614, -1, -1, 617, 618, -1, - 620, 621, 622, 623, 624, 625, 626, 627, -1, -1, - -1, -1, -1, -1, 634, 635, -1, 637, 638, 639, - -1, -1, 642, -1, -1, -1, -1, -1, -1, -1, - 650, 651, -1, -1, -1, -1, 656, 657, -1, -1, - 660, 661, -1, -1, 664, 665, 5, -1, 7, 8, - 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, - 19, -1, -1, 22, -1, 24, 25, 26, 27, 28, - 29, 30, 31, 32, -1, 34, -1, -1, 37, 38, - 39, 40, 41, 42, 43, -1, 45, 46, 47, -1, - 49, -1, 51, 52, -1, -1, 55, 56, 57, 58, - 59, -1, 61, 62, 63, 64, 65, -1, 67, 68, - 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, - 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, - 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, - -1, 100, 101, 102, 103, -1, -1, 106, 107, 108, - 109, 110, 111, -1, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, -1, -1, -1, -1, 127, 128, - 129, -1, -1, 132, 133, -1, 135, -1, -1, -1, - -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, - -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, - -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, - 169, 170, -1, 172, 173, 174, 175, 176, 177, 178, - 179, -1, 181, 182, 183, 184, 185, 186, 187, 188, - -1, 190, 191, 192, 193, -1, 195, -1, -1, -1, - 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, - 209, 210, 211, 212, -1, 214, -1, 216, 217, 218, - 219, -1, 221, 222, 223, -1, 225, 226, -1, -1, - -1, 230, 231, 232, 233, 234, 235, -1, -1, 238, - 239, 240, -1, -1, 243, -1, -1, -1, 247, 248, - 249, 250, -1, -1, 253, -1, 255, 256, -1, 258, - 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, - -1, -1, 271, -1, 273, 274, 275, -1, -1, -1, - -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, - 289, -1, -1, 292, -1, -1, -1, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, -1, -1, -1, - -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, - 339, 340, 341, -1, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, -1, 356, 357, -1, - -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, - -1, 370, 371, 372, -1, 374, 375, 376, -1, 378, - 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, - -1, -1, -1, -1, 393, 394, 395, -1, 397, 398, - -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, -1, 414, 415, 416, -1, 418, - -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, - -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, - 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, - 449, -1, 451, 452, 453, 454, 455, 456, -1, 458, - -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, - -1, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, - 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, - -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, - 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, - -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, - -1, -1, 531, 532, 533, -1, -1, -1, 537, 538, - 539, 540, 541, -1, 543, 544, 545, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, -1, - -1, 560, 561, 562, 563, -1, 565, 566, 567, -1, - 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, - 579, 580, -1, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 591, 592, 593, -1, 595, 596, -1, -1, - 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, - -1, 610, 611, 612, 613, 614, -1, -1, 617, 618, - -1, 620, 621, 622, 623, 624, 625, 626, 627, -1, - -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, - 639, -1, -1, 642, -1, -1, -1, -1, -1, -1, - -1, 650, 651, -1, -1, -1, -1, 656, 657, -1, - -1, 660, 661, -1, -1, 664, 665, 5, -1, 7, - 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, - -1, 19, -1, -1, 22, -1, 24, 25, 26, 27, - 28, 29, 30, 31, 32, -1, 34, -1, -1, 37, - 38, 39, 40, 41, 42, 43, -1, 45, 46, 47, - -1, 49, -1, 51, 52, -1, -1, 55, 56, 57, - 58, 59, -1, 61, 62, 63, 64, 65, -1, 67, - 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - 88, 89, -1, 91, 92, -1, 94, 95, 96, 97, - 98, -1, 100, 101, 102, 103, -1, -1, 106, 107, - 108, 109, 110, 111, -1, 113, 114, 115, -1, 117, - 118, 119, 120, 121, 122, -1, -1, -1, -1, 127, - 128, 129, -1, -1, 132, 133, -1, 135, -1, -1, - -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, - -1, -1, -1, 151, -1, -1, 154, 155, 156, -1, - -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, - -1, 169, 170, -1, 172, 173, 174, 175, 176, 177, - 178, 179, -1, 181, 182, 183, 184, 185, 186, 187, - 188, -1, 190, 191, 192, 193, -1, 195, -1, -1, - -1, 199, 200, -1, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, -1, 214, -1, 216, 217, - 218, 219, -1, 221, 222, 223, -1, 225, 226, -1, - -1, -1, 230, 231, 232, 233, 234, 235, -1, -1, - 238, 239, 240, -1, -1, 243, -1, -1, -1, 247, - 248, 249, 250, -1, -1, 253, -1, 255, 256, -1, - 258, 259, -1, -1, -1, 263, -1, -1, 266, 267, - 268, -1, -1, 271, -1, 273, 274, 275, -1, -1, - -1, -1, -1, 281, 282, -1, 284, -1, 286, -1, - 288, 289, -1, -1, 292, -1, -1, -1, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, - -1, -1, 330, 331, 332, 333, 334, 335, -1, -1, - 338, 339, 340, 341, -1, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, -1, 356, 357, - -1, -1, 360, 361, 362, 363, 364, -1, 366, 367, - 368, -1, 370, 371, 372, -1, 374, 375, 376, -1, - 378, 379, 380, 381, -1, 383, 384, -1, -1, -1, - -1, -1, -1, -1, -1, 393, 394, 395, -1, 397, - 398, -1, 400, -1, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, -1, 414, 415, 416, -1, - 418, -1, 420, 421, 422, 423, 424, -1, 426, 427, - 428, -1, -1, 431, -1, -1, -1, 435, 436, 437, - 438, 439, -1, -1, 442, 443, 444, 445, 446, -1, - 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, - 458, -1, 460, 461, -1, 463, 464, -1, 466, -1, - 468, -1, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, -1, 484, 485, -1, -1, - -1, 489, 490, 491, 492, -1, -1, -1, 496, -1, - -1, -1, 500, -1, 502, 503, 504, 505, 506, 507, - -1, 509, 510, 511, 512, 513, 514, -1, -1, -1, - -1, -1, -1, 521, 522, -1, 524, -1, -1, 527, - -1, -1, -1, 531, 532, 533, -1, -1, -1, 537, - 538, 539, 540, 541, -1, 543, 544, 545, 546, 547, - 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - -1, -1, 560, 561, 562, 563, -1, 565, 566, 567, - -1, 569, 570, 571, 572, -1, -1, -1, -1, -1, - 578, 579, 580, -1, 582, 583, 584, 585, 586, 587, - 588, 589, 590, 591, 592, 593, -1, 595, 596, -1, - -1, 599, -1, -1, 602, -1, 604, -1, 606, 607, - -1, -1, 610, 611, 612, 613, 614, -1, -1, 617, - 618, -1, 620, 621, 622, 623, 624, 625, 626, 627, - -1, -1, -1, -1, -1, -1, 634, 635, -1, 637, - 638, 639, -1, -1, 642, -1, -1, -1, -1, -1, - -1, -1, 650, 651, -1, -1, -1, -1, 656, 657, - -1, -1, 660, 661, -1, -1, 664, 665, 5, -1, - 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, - -1, -1, 19, -1, -1, 22, -1, 24, 25, 26, - 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, - 37, 38, 39, 40, 41, 42, 43, -1, 45, 46, - 47, -1, 49, -1, 51, 52, -1, -1, 55, 56, - 57, 58, 59, -1, 61, 62, 63, 64, 65, -1, - 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, - 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, - 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, - 97, 98, -1, 100, 101, 102, 103, -1, -1, 106, - 107, 108, 109, 110, 111, -1, 113, 114, 115, -1, - 117, 118, 119, 120, 121, 122, -1, -1, -1, -1, - 127, 128, 129, -1, -1, 132, 133, -1, 135, -1, - -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, - -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, - -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, - 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, - 177, 178, 179, -1, 181, 182, 183, 184, 185, 186, - 187, 188, -1, 190, 191, 192, 193, -1, 195, -1, - -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, - 207, 208, 209, 210, 211, 212, -1, 214, -1, 216, - 217, 218, 219, -1, 221, 222, 223, -1, 225, 226, - -1, -1, -1, 230, 231, 232, 233, 234, 235, -1, - -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, - 247, 248, 249, 250, -1, -1, 253, -1, 255, 256, - -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, - 267, 268, -1, -1, 271, -1, 273, 274, 275, -1, - -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, - -1, 288, 289, -1, -1, 292, -1, -1, -1, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, - -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, - -1, 338, 339, 340, 341, -1, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, -1, 356, - 357, -1, -1, 360, 361, 362, 363, 364, -1, 366, - 367, 368, -1, 370, 371, 372, -1, 374, 375, 376, - -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, - -1, -1, -1, -1, -1, -1, 393, 394, 395, -1, - 397, 398, -1, 400, -1, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, - -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, - 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, - 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, - -1, 448, 449, -1, 451, 452, 453, 454, 455, 456, - -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, - -1, 468, -1, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, - -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, - -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, - 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, - -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, - 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, - 537, 538, 539, 540, 541, -1, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, -1, -1, 560, 561, 562, 563, -1, 565, 566, - 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, - -1, 578, 579, 580, -1, 582, 583, 584, 585, 586, - 587, 588, 589, 590, 591, 592, 593, -1, 595, 596, - -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, - 607, -1, -1, 610, 611, 612, 613, 614, -1, -1, - 617, 618, -1, 620, 621, 622, 623, 624, 625, 626, - 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, - 637, 638, 639, -1, -1, 642, -1, -1, -1, -1, - -1, -1, -1, 650, 651, -1, -1, -1, -1, 656, - 657, -1, -1, 660, 661, -1, -1, 664, 665, 5, - -1, 7, 8, 9, 10, 11, 12, -1, -1, 15, - -1, -1, -1, 19, -1, -1, 22, -1, 24, 25, - 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, - -1, 37, 38, 39, 40, 41, 42, 43, -1, 45, - 46, 47, -1, 49, -1, 51, 52, -1, -1, 55, - 56, 57, 58, 59, -1, 61, 62, 63, 64, 65, - -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, - 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, - 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, - 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, - 106, 107, 108, 109, 110, 111, -1, 113, 114, 115, - -1, 117, 118, 119, 120, 121, 122, -1, -1, -1, - -1, 127, 128, 129, -1, -1, 132, 133, -1, 135, - -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, - 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, - 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, - 166, 167, -1, 169, 170, -1, 172, 173, 174, 175, - 176, 177, 178, 179, -1, 181, 182, 183, 184, 185, - 186, 187, 188, -1, 190, 191, 192, 193, -1, 195, - -1, -1, -1, 199, 200, -1, 202, -1, 204, -1, - 206, 207, 208, 209, 210, 211, 212, -1, 214, -1, - 216, 217, 218, 219, -1, 221, 222, 223, -1, 225, - 226, -1, -1, -1, 230, 231, 232, 233, 234, 235, - -1, -1, 238, 239, 240, -1, -1, 243, -1, -1, - -1, 247, 248, 249, 250, -1, -1, 253, -1, 255, - 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, - 266, 267, 268, -1, -1, 271, -1, 273, 274, 275, - -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, - 286, -1, 288, 289, -1, -1, 292, -1, -1, -1, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, - -1, -1, 338, 339, 340, 341, -1, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, - 356, 357, -1, -1, 360, 361, 362, 363, 364, -1, - 366, 367, 368, -1, 370, 371, 372, -1, 374, 375, - 376, -1, 378, 379, 380, 381, -1, 383, 384, -1, - -1, -1, -1, -1, -1, -1, -1, 393, 394, 395, - -1, 397, 398, -1, 400, -1, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, - 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, - 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, - 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, - 446, -1, 448, 449, -1, 451, 452, 453, 454, 455, - 456, -1, 458, -1, 460, 461, -1, 463, 464, -1, - 466, -1, 468, -1, 470, 471, 472, 473, 474, 475, - 476, 477, 478, 479, 480, 481, 482, -1, 484, 485, - -1, -1, -1, 489, 490, 491, 492, -1, -1, -1, - 496, -1, -1, -1, 500, -1, 502, 503, 504, 505, - 506, 507, -1, 509, 510, 511, 512, 513, 514, -1, - -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, - -1, 527, -1, -1, -1, 531, 532, 533, -1, -1, - -1, 537, 538, 539, 540, 541, -1, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, -1, -1, 560, 561, 562, 563, -1, 565, - 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, - -1, -1, 578, 579, 580, -1, 582, 583, 584, 585, - 586, 587, 588, 589, 590, 591, 592, 593, -1, 595, - 596, -1, -1, 599, -1, -1, 602, -1, 604, -1, - 606, 607, -1, -1, 610, 611, 612, 613, 614, -1, - -1, 617, 618, -1, 620, 621, 622, 623, 624, 625, - 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, - -1, 637, 638, 639, -1, -1, 642, -1, -1, -1, - -1, -1, -1, -1, 650, 651, -1, -1, -1, -1, - 656, 657, -1, -1, 660, 661, -1, -1, 664, 665, - 5, -1, 7, 8, 9, 10, 11, 12, -1, -1, - 15, -1, -1, -1, 19, -1, -1, 22, -1, 24, - 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, - -1, -1, 37, 38, 39, 40, 41, 42, 43, -1, - 45, 46, 47, -1, 49, -1, 51, 52, -1, -1, - 55, 56, 57, 58, 59, -1, 61, 62, 63, 64, - 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, - 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, - 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, - 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, - -1, 106, 107, 108, 109, 110, 111, -1, 113, 114, - 115, -1, 117, 118, 119, 120, 121, 122, -1, -1, - -1, -1, 127, 128, 129, -1, -1, 132, 133, -1, - 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, - 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, - 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, - 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, - 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, - 185, 186, 187, 188, -1, 190, 191, 192, 193, -1, - 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, - -1, 206, 207, 208, 209, 210, 211, 212, -1, 214, - -1, 216, 217, 218, 219, -1, 221, 222, 223, -1, - 225, 226, -1, -1, -1, 230, 231, 232, 233, 234, - 235, -1, -1, 238, 239, 240, -1, -1, 243, -1, - -1, -1, 247, 248, 249, 250, -1, -1, 253, -1, - 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, - -1, 266, 267, 268, -1, -1, 271, -1, 273, 274, - 275, -1, -1, -1, -1, -1, 281, 282, -1, 284, - -1, 286, -1, 288, 289, -1, -1, 292, -1, -1, - -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, - 335, -1, -1, 338, 339, 340, 341, -1, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - -1, 356, 357, -1, -1, 360, 361, 362, 363, 364, - -1, 366, 367, 368, -1, 370, 371, 372, -1, 374, - 375, 376, -1, 378, 379, 380, 381, -1, 383, 384, - -1, -1, -1, -1, -1, -1, -1, -1, 393, 394, - 395, -1, 397, 398, -1, 400, -1, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, - 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, - -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, - 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, - 445, 446, -1, 448, 449, -1, 451, 452, 453, 454, - 455, 456, -1, 458, -1, 460, 461, -1, 463, 464, - -1, 466, -1, 468, -1, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, - 485, -1, -1, -1, 489, 490, 491, 492, -1, -1, - -1, 496, -1, -1, -1, 500, -1, 502, 503, 504, - 505, 506, 507, -1, 509, 510, 511, 512, 513, 514, - -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, - -1, -1, 527, -1, -1, -1, 531, 532, 533, -1, - -1, -1, 537, 538, 539, 540, 541, -1, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, -1, -1, 560, 561, 562, 563, -1, - 565, 566, 567, -1, 569, 570, 571, 572, -1, -1, - -1, -1, -1, 578, 579, 580, -1, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, -1, - 595, 596, -1, -1, 599, -1, -1, 602, -1, 604, - -1, 606, 607, -1, -1, 610, 611, 612, 613, 614, - -1, -1, 617, 618, -1, 620, 621, 622, 623, 624, - 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, - 635, -1, 637, 638, 639, -1, -1, 642, -1, -1, - -1, -1, -1, -1, -1, 650, 651, -1, -1, -1, - -1, 656, 657, -1, -1, 660, 661, -1, -1, 664, - 665, 5, -1, 7, 8, 9, 10, 11, 12, -1, - -1, 15, -1, -1, -1, 19, -1, -1, 22, -1, - 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, - 34, -1, -1, -1, 38, 39, -1, -1, 42, -1, - -1, 45, 46, 47, -1, 49, -1, 51, 52, -1, - -1, 55, -1, -1, 58, 59, -1, 61, 62, -1, - 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, - 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, - 94, 95, 96, 97, 98, -1, 100, -1, -1, 103, - -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, - -1, -1, -1, 117, 118, 119, -1, -1, 122, -1, - -1, -1, -1, 127, 128, 129, -1, -1, -1, 133, - -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, - 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, - 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, - -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, - 174, 175, 176, 177, 178, -1, -1, 181, 182, 183, - 184, -1, 186, 187, 188, -1, 190, 191, 192, 193, - -1, 195, -1, -1, -1, 199, 200, -1, 202, -1, - 204, -1, 206, 207, 208, 209, 210, 211, 212, -1, - 214, -1, -1, 217, 218, 219, -1, 221, 222, 223, - -1, 225, 226, -1, -1, -1, 230, 231, 232, 233, - 234, -1, -1, -1, 238, 239, 240, -1, -1, 243, - -1, -1, -1, -1, 248, 249, -1, -1, -1, 253, - -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, - -1, -1, 266, 267, 268, -1, -1, 271, -1, -1, - 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, - 284, -1, 286, -1, 288, 289, -1, -1, 292, -1, - -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, -1, 318, 319, 320, 321, -1, 323, - 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, - 334, 335, -1, -1, 338, 339, -1, 341, -1, 343, - -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, -1, 356, 357, -1, -1, 360, 361, 362, 363, - -1, -1, -1, 367, 368, -1, 370, 371, 372, -1, - 374, 375, 376, -1, 378, 379, 380, 381, -1, 383, - 384, -1, -1, -1, -1, -1, -1, -1, -1, 393, - 394, 395, -1, -1, 398, -1, 400, -1, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, -1, -1, - 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, - 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, - -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, - 444, 445, 446, -1, 448, 449, -1, 451, 452, 453, - -1, -1, 456, -1, 458, -1, 460, 461, -1, 463, - 464, -1, 466, -1, 468, -1, -1, 471, 472, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, - 484, 485, -1, -1, -1, 489, 490, 491, 492, -1, - -1, -1, 496, -1, -1, -1, 500, -1, 502, 503, - 504, 505, 506, 507, -1, 509, 510, 511, 512, 513, - 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, - 524, -1, -1, 527, -1, -1, -1, 531, 532, 533, - -1, -1, -1, 537, -1, -1, 540, 541, -1, 543, - 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, - 554, -1, 556, 557, -1, -1, 560, 561, 562, 563, - -1, 565, 566, 567, -1, 569, 570, 571, 572, -1, - -1, -1, -1, -1, 578, 579, 580, -1, -1, 583, - 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, - -1, 595, 596, -1, -1, 599, -1, -1, 602, -1, - 604, -1, 606, 607, -1, -1, -1, -1, -1, -1, - 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, - 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, - 634, 635, -1, 637, 638, 639, -1, -1, 642, -1, - -1, -1, -1, -1, -1, 5, -1, 7, 8, 9, - 10, 11, 12, -1, -1, 15, -1, -1, -1, 19, - 664, 665, 22, -1, 24, 25, 26, 27, 28, 29, - 30, 31, 32, -1, 34, -1, -1, -1, 38, -1, - -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, - -1, 51, 52, -1, -1, 55, -1, -1, 58, 59, - -1, 61, 62, -1, 64, 65, -1, 67, 68, 69, - 70, 71, 72, -1, 74, 75, 76, 77, 78, 79, - 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, - -1, 91, 92, 93, 94, 95, 96, 97, 98, -1, - 100, -1, -1, 103, -1, -1, 106, -1, 108, -1, - -1, 111, -1, 113, -1, -1, -1, 117, 118, 119, - -1, -1, 122, -1, -1, -1, -1, 127, 128, -1, - -1, -1, -1, 133, -1, 135, -1, -1, -1, -1, - 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, - -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, - 160, -1, 162, 163, -1, 165, 166, 167, -1, 169, - 170, -1, 172, 173, 174, 175, 176, 177, 178, -1, - -1, 181, 182, 183, 184, -1, -1, 187, 188, -1, - 190, 191, 192, -1, -1, 195, -1, -1, -1, 199, - 200, -1, 202, 203, 204, -1, 206, 207, 208, 209, - 210, 211, 212, -1, 214, -1, -1, 217, 218, 219, - -1, 221, -1, -1, -1, 225, 226, -1, -1, -1, - 230, 231, 232, 233, 234, -1, -1, -1, 238, 239, - 240, 241, -1, 243, -1, -1, -1, -1, 248, 249, - -1, -1, -1, 253, -1, 255, 256, -1, 258, 259, - -1, -1, -1, 263, 264, -1, 266, 267, 268, -1, - -1, 271, -1, -1, 274, 275, -1, 277, -1, -1, - -1, 281, 282, -1, 284, -1, 286, -1, 288, 289, - -1, -1, -1, -1, -1, -1, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, -1, 318, 319, - 320, 321, -1, 323, 324, 325, -1, -1, -1, -1, - 330, 331, 332, 333, 334, 335, -1, -1, 338, 339, - -1, 341, -1, 343, -1, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, -1, -1, 357, -1, -1, - 360, 361, 362, 363, -1, -1, -1, 367, 368, -1, - -1, -1, 372, -1, 374, 375, 376, -1, 378, 379, - 380, 381, -1, 383, 384, -1, -1, -1, -1, -1, - -1, -1, -1, 393, 394, 395, -1, -1, 398, -1, - 400, -1, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, -1, -1, 414, 415, 416, -1, 418, -1, - 420, 421, 422, 423, 424, -1, 426, 427, 428, -1, - -1, 431, -1, -1, -1, 435, 436, 437, 438, 439, - -1, -1, 442, 443, 444, 445, 446, -1, 448, 449, - -1, 451, 452, 453, -1, -1, 456, -1, 458, -1, - 460, 461, -1, 463, 464, -1, 466, -1, 468, -1, - -1, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, -1, 484, 485, 486, -1, -1, 489, - 490, 491, 492, -1, -1, -1, 496, -1, -1, -1, - 500, -1, 502, 503, 504, 505, 506, 507, -1, 509, - 510, 511, 512, 513, 514, 515, -1, -1, -1, -1, - -1, 521, 522, -1, 524, -1, -1, 527, -1, -1, - -1, 531, 532, 533, -1, -1, -1, 537, -1, -1, - 540, 541, -1, 543, 544, 545, 546, 547, 548, -1, - -1, 551, 552, 553, 554, -1, 556, 557, -1, -1, - 560, 561, 562, 563, -1, -1, 566, 567, -1, 569, - 570, 571, 572, -1, -1, -1, -1, -1, 578, 579, - 580, -1, -1, -1, 584, 585, 586, 587, -1, 589, - 590, -1, 592, 593, -1, 595, 596, -1, -1, 599, - -1, -1, 602, -1, 604, -1, 606, 607, -1, -1, - -1, -1, -1, -1, 614, -1, -1, 617, -1, -1, - -1, 621, 622, 623, 624, 625, 626, 627, -1, -1, - -1, -1, -1, -1, 634, 635, -1, 637, 638, 639, - -1, -1, 642, -1, -1, -1, -1, 5, -1, 7, - 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, - -1, 19, -1, -1, 22, 665, 24, 25, 26, 27, - 28, 29, 30, 31, 32, -1, 34, -1, -1, -1, - 38, -1, -1, -1, 42, -1, -1, 45, 46, 47, - -1, 49, -1, 51, 52, -1, -1, 55, -1, -1, - 58, 59, -1, 61, 62, -1, 64, 65, -1, 67, - 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - 88, 89, -1, 91, 92, 93, 94, 95, 96, 97, - 98, -1, 100, -1, -1, 103, -1, -1, 106, -1, - 108, -1, -1, 111, -1, 113, -1, -1, -1, 117, - 118, 119, -1, -1, 122, -1, -1, -1, -1, 127, - 128, -1, -1, -1, -1, 133, -1, 135, -1, -1, - -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, - -1, -1, -1, 151, -1, -1, 154, 155, 156, -1, - -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, - -1, 169, 170, -1, 172, 173, 174, 175, 176, 177, - 178, -1, -1, 181, 182, 183, 184, -1, -1, 187, - 188, -1, 190, 191, 192, -1, -1, 195, -1, -1, - -1, 199, 200, -1, 202, 203, 204, -1, 206, 207, - 208, 209, 210, 211, 212, -1, 214, -1, -1, 217, - 218, 219, -1, 221, -1, -1, -1, 225, 226, -1, - -1, -1, 230, 231, 232, 233, 234, -1, -1, -1, - 238, 239, 240, 241, -1, 243, -1, -1, -1, -1, - 248, 249, -1, -1, -1, 253, -1, 255, 256, -1, - 258, 259, -1, -1, -1, 263, 264, -1, 266, 267, - 268, -1, -1, 271, -1, -1, 274, 275, -1, -1, - -1, -1, -1, 281, 282, -1, 284, -1, 286, -1, - 288, 289, -1, -1, -1, -1, -1, -1, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, -1, - 318, 319, 320, 321, -1, 323, 324, 325, -1, -1, - -1, -1, 330, 331, 332, 333, 334, 335, -1, -1, - 338, 339, -1, 341, -1, 343, -1, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, -1, -1, 357, - -1, -1, 360, 361, 362, 363, -1, -1, -1, 367, - 368, -1, -1, -1, 372, -1, 374, 375, 376, -1, - 378, 379, 380, 381, -1, 383, 384, -1, -1, -1, - -1, -1, -1, -1, -1, 393, 394, 395, -1, -1, - 398, -1, 400, -1, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, -1, -1, 414, 415, 416, -1, - 418, -1, 420, 421, 422, 423, 424, -1, 426, 427, - 428, -1, -1, 431, -1, -1, -1, 435, 436, 437, - 438, 439, -1, -1, 442, 443, 444, 445, 446, -1, - 448, 449, -1, 451, 452, 453, -1, -1, 456, -1, - 458, -1, 460, 461, -1, 463, 464, -1, 466, -1, - 468, -1, -1, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, -1, 484, 485, -1, -1, - -1, 489, 490, 491, 492, -1, -1, -1, 496, -1, - -1, -1, 500, -1, 502, 503, 504, 505, 506, 507, - -1, 509, 510, 511, 512, 513, 514, 515, -1, -1, - -1, -1, -1, 521, 522, -1, 524, -1, -1, 527, - -1, -1, -1, 531, 532, 533, -1, -1, -1, 537, - -1, -1, 540, 541, -1, 543, 544, 545, 546, 547, - 548, -1, -1, 551, 552, 553, 554, -1, 556, 557, - -1, -1, 560, 561, 562, 563, -1, -1, 566, 567, - -1, 569, 570, 571, 572, -1, -1, -1, -1, -1, - 578, 579, 580, -1, -1, -1, 584, 585, 586, 587, - -1, 589, 590, -1, 592, 593, -1, 595, 596, -1, - -1, 599, -1, -1, 602, -1, 604, -1, 606, 607, - -1, -1, -1, -1, -1, -1, 614, -1, -1, 617, - -1, -1, -1, 621, 622, 623, 624, 625, 626, 627, - -1, -1, -1, -1, -1, -1, 634, 635, -1, 637, - 638, 639, -1, -1, 642, -1, -1, -1, -1, 5, - -1, 7, 8, 9, 10, 11, 12, -1, -1, 15, - -1, -1, -1, 19, -1, -1, 22, 665, 24, 25, - 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, - -1, -1, 38, -1, -1, -1, 42, -1, -1, 45, - 46, 47, -1, 49, -1, 51, 52, -1, -1, 55, - -1, -1, 58, 59, -1, 61, 62, -1, 64, 65, - -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, - 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, - 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, - 96, 97, 98, -1, 100, -1, -1, 103, -1, -1, - 106, -1, 108, -1, -1, 111, -1, 113, -1, -1, - -1, 117, 118, 119, -1, -1, 122, -1, -1, -1, - -1, 127, 128, -1, -1, -1, -1, 133, -1, 135, - -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, - 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, - 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, - 166, 167, -1, 169, 170, -1, 172, 173, 174, 175, - 176, 177, 178, -1, -1, 181, 182, 183, 184, -1, - -1, 187, 188, -1, 190, 191, 192, -1, -1, 195, - -1, -1, -1, 199, 200, -1, 202, -1, 204, -1, - 206, 207, 208, 209, 210, 211, 212, -1, 214, -1, - -1, 217, 218, 219, -1, 221, -1, -1, -1, 225, - 226, -1, -1, -1, 230, 231, 232, 233, 234, -1, - -1, -1, 238, 239, 240, -1, -1, 243, -1, -1, - -1, -1, 248, 249, -1, -1, -1, 253, -1, 255, - 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, - 266, 267, 268, -1, -1, 271, -1, -1, 274, 275, - -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, - 286, -1, 288, 289, -1, -1, -1, -1, -1, -1, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, -1, 318, 319, 320, 321, -1, 323, 324, 325, - -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, - -1, -1, 338, 339, -1, 341, -1, 343, -1, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, - -1, 357, -1, -1, 360, 361, 362, 363, -1, -1, - -1, 367, 368, -1, -1, -1, 372, -1, 374, 375, - 376, -1, 378, 379, 380, 381, -1, 383, 384, -1, - -1, -1, -1, -1, -1, -1, -1, 393, 394, 395, - -1, -1, 398, -1, 400, -1, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, -1, -1, 414, 415, - 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, - 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, - 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, - 446, -1, 448, 449, -1, 451, 452, 453, -1, -1, - 456, -1, 458, -1, 460, 461, -1, 463, 464, -1, - 466, -1, 468, -1, -1, 471, 472, 473, 474, 475, - 476, 477, 478, 479, 480, 481, 482, -1, 484, 485, - 486, -1, -1, 489, 490, 491, 492, -1, -1, -1, - 496, -1, -1, -1, 500, -1, 502, 503, 504, 505, - 506, 507, -1, 509, 510, 511, 512, 513, 514, -1, - -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, - -1, 527, -1, -1, -1, 531, 532, 533, -1, -1, - -1, 537, -1, -1, 540, 541, -1, 543, 544, 545, - 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, - 556, 557, -1, -1, 560, 561, 562, 563, -1, -1, - 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, - -1, -1, 578, 579, 580, -1, -1, -1, 584, 585, - 586, 587, -1, 589, 590, -1, 592, 593, -1, 595, - 596, -1, -1, 599, -1, -1, 602, -1, 604, -1, - 606, 607, -1, -1, -1, -1, -1, -1, 614, -1, - -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, - 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, - -1, 637, 638, 639, -1, -1, 642, -1, -1, -1, - -1, 5, -1, 7, 8, 9, 10, 11, 12, -1, - -1, 15, 658, -1, -1, 19, -1, -1, 22, 665, - 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, - 34, -1, -1, -1, 38, -1, -1, -1, 42, -1, - -1, 45, 46, 47, -1, 49, -1, 51, 52, -1, - -1, 55, -1, -1, 58, 59, -1, 61, 62, -1, - 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, - 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, - 94, 95, 96, 97, 98, -1, 100, -1, -1, 103, - -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, - -1, -1, -1, 117, 118, 119, -1, -1, 122, -1, - -1, -1, -1, 127, 128, -1, -1, -1, -1, 133, - -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, - 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, - 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, - -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, - 174, 175, 176, 177, 178, -1, -1, 181, 182, 183, - 184, -1, -1, 187, 188, -1, 190, 191, 192, -1, - -1, 195, -1, -1, -1, 199, 200, -1, 202, -1, - 204, -1, 206, 207, 208, 209, 210, 211, 212, -1, - 214, -1, -1, 217, 218, 219, -1, 221, -1, -1, - -1, 225, 226, -1, -1, -1, 230, 231, 232, 233, - 234, -1, -1, -1, 238, 239, 240, -1, -1, 243, - -1, -1, -1, -1, 248, 249, -1, -1, -1, 253, - -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, - -1, -1, 266, 267, 268, -1, -1, 271, -1, -1, - 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, - 284, -1, 286, -1, 288, 289, -1, -1, -1, -1, - -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, -1, 318, 319, 320, 321, -1, 323, - 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, - 334, 335, -1, -1, 338, 339, -1, 341, -1, 343, - -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, -1, -1, 357, -1, -1, 360, 361, 362, 363, - -1, -1, -1, 367, 368, -1, -1, -1, 372, -1, - 374, 375, 376, -1, 378, 379, 380, 381, -1, 383, - 384, -1, -1, -1, -1, -1, -1, -1, -1, 393, - 394, 395, -1, -1, 398, -1, 400, -1, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, -1, -1, - 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, - 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, - -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, - 444, 445, 446, -1, 448, 449, -1, 451, 452, 453, - -1, -1, 456, -1, 458, -1, 460, 461, -1, 463, - 464, -1, 466, -1, 468, -1, -1, 471, 472, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, - 484, 485, -1, -1, -1, 489, 490, 491, 492, -1, - -1, -1, 496, -1, -1, -1, 500, -1, 502, 503, - 504, 505, 506, 507, -1, 509, 510, 511, 512, 513, - 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, - 524, -1, -1, 527, -1, -1, -1, 531, 532, 533, - -1, -1, -1, 537, -1, -1, 540, 541, -1, 543, - 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, - 554, -1, 556, 557, -1, -1, 560, 561, 562, 563, - -1, -1, 566, 567, -1, 569, 570, 571, 572, -1, - -1, -1, -1, -1, 578, 579, 580, -1, -1, -1, - 584, 585, 586, 587, -1, 589, 590, -1, 592, 593, - -1, 595, 596, -1, -1, 599, -1, -1, 602, -1, - 604, -1, 606, 607, -1, -1, -1, -1, -1, -1, - 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, - 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, - 634, 635, -1, 637, 638, 639, -1, -1, 642, -1, - -1, -1, -1, -1, -1, 5, -1, 7, 8, 9, - 10, 11, 12, -1, 658, 15, -1, -1, -1, 19, - 664, 665, 22, -1, 24, 25, 26, 27, 28, 29, - 30, 31, 32, -1, 34, -1, -1, -1, 38, -1, - -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, - -1, 51, 52, -1, -1, 55, -1, -1, 58, 59, - -1, 61, 62, -1, 64, 65, -1, 67, 68, 69, - 70, 71, 72, -1, 74, 75, 76, 77, 78, 79, - 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, - -1, 91, 92, -1, 94, 95, 96, 97, 98, -1, - 100, -1, -1, 103, -1, -1, 106, -1, 108, -1, - -1, 111, -1, 113, -1, -1, -1, 117, 118, 119, - -1, -1, 122, -1, -1, -1, -1, 127, 128, -1, - -1, -1, -1, 133, -1, 135, -1, -1, -1, -1, - 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, - -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, - 160, -1, 162, 163, -1, 165, 166, 167, -1, 169, - 170, -1, 172, 173, 174, 175, 176, 177, 178, -1, - -1, 181, 182, 183, 184, -1, -1, 187, 188, -1, - 190, 191, 192, -1, -1, 195, -1, -1, -1, 199, - 200, -1, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, -1, 214, -1, -1, 217, 218, 219, - -1, 221, -1, -1, -1, 225, 226, -1, -1, -1, - 230, 231, 232, 233, 234, -1, -1, -1, 238, 239, - 240, -1, -1, 243, -1, -1, -1, -1, 248, 249, - -1, -1, -1, 253, -1, 255, 256, -1, 258, 259, - -1, -1, -1, 263, -1, -1, 266, 267, 268, -1, - -1, 271, -1, -1, 274, 275, -1, -1, -1, -1, - -1, 281, 282, -1, 284, -1, 286, -1, 288, 289, - -1, -1, -1, -1, -1, -1, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, -1, 318, 319, - 320, 321, -1, 323, 324, 325, -1, -1, -1, -1, - 330, 331, 332, 333, 334, 335, -1, -1, 338, 339, - -1, 341, -1, 343, -1, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, -1, -1, 357, -1, -1, - 360, 361, 362, 363, -1, -1, -1, 367, 368, -1, - -1, -1, 372, -1, 374, 375, 376, -1, 378, 379, - 380, 381, -1, 383, 384, -1, -1, -1, -1, -1, - -1, -1, -1, 393, 394, 395, -1, -1, 398, -1, - 400, -1, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, -1, -1, 414, 415, 416, -1, 418, -1, - 420, 421, 422, 423, 424, -1, 426, 427, 428, -1, - -1, 431, -1, -1, -1, 435, 436, 437, 438, 439, - -1, -1, 442, 443, 444, 445, 446, -1, 448, 449, - -1, 451, 452, 453, -1, -1, 456, -1, 458, -1, - 460, 461, -1, 463, 464, -1, 466, -1, 468, -1, - -1, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, -1, 484, 485, -1, -1, -1, 489, - 490, 491, 492, -1, -1, -1, 496, -1, -1, -1, - 500, -1, 502, 503, 504, 505, 506, 507, -1, 509, - 510, 511, 512, 513, 514, -1, -1, -1, -1, -1, - -1, 521, 522, -1, 524, -1, -1, 527, -1, -1, - -1, 531, 532, 533, -1, -1, -1, 537, -1, -1, - 540, 541, -1, 543, 544, 545, 546, 547, 548, -1, - -1, 551, 552, 553, 554, -1, 556, 557, -1, -1, - 560, 561, 562, 563, -1, -1, 566, 567, -1, 569, - 570, 571, 572, -1, -1, -1, -1, -1, 578, 579, - 580, -1, -1, -1, 584, 585, 586, 587, -1, 589, - 590, -1, 592, 593, -1, 595, 596, -1, -1, 599, - -1, -1, 602, -1, 604, -1, 606, 607, -1, -1, - -1, -1, -1, -1, 614, -1, -1, 617, -1, -1, - -1, 621, 622, 623, 624, 625, 626, 627, -1, -1, - -1, -1, -1, -1, 634, 635, -1, 637, 638, 639, - -1, -1, 642, -1, -1, -1, -1, -1, -1, 5, - -1, 7, 8, 9, 10, 11, 12, 657, -1, 15, - -1, -1, -1, 19, -1, 665, 22, -1, 24, 25, - 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, - -1, -1, 38, -1, -1, -1, 42, -1, -1, 45, - 46, 47, -1, 49, -1, 51, 52, -1, -1, 55, - -1, -1, 58, 59, -1, 61, 62, -1, 64, 65, - -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, - 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, - 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, - 96, 97, 98, -1, 100, -1, -1, 103, -1, -1, - 106, -1, 108, -1, -1, 111, -1, 113, -1, -1, - -1, 117, 118, 119, -1, -1, 122, -1, -1, -1, - -1, 127, 128, -1, -1, -1, -1, 133, -1, 135, - -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, - 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, - 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, - 166, 167, -1, 169, 170, -1, 172, 173, 174, 175, - 176, 177, 178, -1, -1, 181, 182, 183, 184, -1, - -1, 187, 188, -1, 190, 191, 192, -1, -1, 195, - -1, -1, -1, 199, 200, -1, 202, -1, 204, -1, - 206, 207, 208, 209, 210, 211, 212, -1, 214, -1, - -1, 217, 218, 219, -1, 221, -1, -1, -1, 225, - 226, -1, -1, -1, 230, 231, 232, 233, 234, -1, - -1, -1, 238, 239, 240, -1, -1, 243, -1, -1, - -1, -1, 248, 249, -1, 251, -1, 253, -1, 255, - 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, - 266, 267, 268, -1, -1, 271, -1, -1, 274, 275, - -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, - 286, -1, 288, 289, -1, -1, -1, -1, -1, -1, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, -1, 318, 319, 320, 321, -1, 323, 324, 325, - -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, - -1, -1, 338, 339, -1, 341, -1, 343, -1, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, - -1, 357, -1, -1, 360, 361, 362, 363, -1, -1, - -1, 367, 368, -1, -1, -1, 372, -1, 374, 375, - 376, -1, 378, 379, 380, 381, -1, 383, 384, -1, - -1, -1, -1, -1, -1, -1, -1, 393, 394, 395, - -1, -1, 398, -1, 400, -1, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, -1, -1, 414, 415, - 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, - 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, - 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, - 446, -1, 448, 449, -1, 451, 452, 453, -1, -1, - 456, -1, 458, -1, 460, 461, -1, 463, 464, -1, - 466, -1, 468, -1, -1, 471, 472, 473, 474, 475, - 476, 477, 478, 479, 480, 481, 482, -1, 484, 485, - -1, -1, -1, 489, 490, 491, 492, -1, -1, -1, - 496, -1, -1, -1, 500, -1, 502, 503, 504, 505, - 506, 507, -1, 509, 510, 511, 512, 513, 514, -1, - -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, - -1, 527, -1, -1, -1, 531, 532, 533, -1, -1, - -1, 537, -1, -1, 540, 541, -1, 543, 544, 545, - 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, - 556, 557, -1, -1, 560, 561, 562, 563, -1, -1, - 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, - -1, -1, 578, 579, 580, -1, -1, -1, 584, 585, - 586, 587, -1, 589, 590, -1, 592, 593, -1, 595, - 596, -1, -1, 599, -1, -1, 602, -1, 604, -1, - 606, 607, -1, -1, -1, -1, -1, -1, 614, -1, - -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, - 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, - -1, 637, 638, 639, -1, -1, 642, -1, -1, -1, - -1, 5, -1, 7, 8, 9, 10, 11, 12, -1, - -1, 15, -1, -1, -1, 19, -1, -1, 22, 665, - 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, - 34, -1, -1, -1, 38, -1, -1, -1, 42, -1, - -1, 45, 46, 47, -1, 49, -1, 51, 52, -1, - -1, 55, -1, -1, 58, 59, -1, 61, 62, -1, - 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, - 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, - 94, 95, 96, 97, 98, -1, 100, -1, -1, 103, - -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, - -1, -1, -1, 117, 118, 119, -1, -1, 122, -1, - -1, -1, -1, 127, 128, -1, -1, -1, -1, 133, - -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, - 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, - 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, - -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, - 174, 175, 176, 177, 178, -1, -1, 181, 182, 183, - 184, -1, -1, 187, 188, -1, 190, 191, 192, -1, - -1, 195, -1, -1, -1, 199, 200, -1, 202, -1, - 204, -1, 206, 207, 208, 209, 210, 211, 212, -1, - 214, -1, -1, 217, 218, 219, -1, 221, -1, -1, - -1, 225, 226, -1, -1, -1, 230, 231, 232, 233, - 234, -1, -1, -1, 238, 239, 240, -1, -1, 243, - -1, -1, -1, -1, 248, 249, -1, -1, -1, 253, - -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, - -1, -1, 266, 267, 268, -1, -1, 271, -1, -1, - 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, - 284, -1, 286, -1, 288, 289, -1, -1, -1, -1, - -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, -1, 318, 319, 320, 321, -1, 323, - 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, - 334, 335, -1, -1, 338, 339, -1, 341, -1, 343, - -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, -1, -1, 357, -1, -1, 360, 361, 362, 363, - -1, -1, -1, 367, 368, -1, -1, -1, 372, -1, - 374, 375, 376, -1, 378, 379, 380, 381, -1, 383, - 384, -1, -1, -1, -1, -1, -1, -1, -1, 393, - 394, 395, -1, -1, 398, -1, 400, -1, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, -1, -1, - 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, - 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, - -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, - 444, 445, 446, -1, 448, 449, -1, 451, 452, 453, - -1, -1, 456, -1, 458, -1, 460, 461, -1, 463, - 464, -1, 466, -1, 468, -1, -1, 471, 472, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, - 484, 485, -1, -1, -1, 489, 490, 491, 492, -1, - -1, -1, 496, -1, -1, -1, 500, -1, 502, 503, - 504, 505, 506, 507, -1, 509, 510, 511, 512, 513, - 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, - 524, -1, -1, 527, -1, -1, -1, 531, 532, 533, - -1, -1, -1, 537, -1, -1, 540, 541, -1, 543, - 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, - 554, -1, 556, 557, -1, -1, 560, 561, 562, 563, - -1, -1, 566, 567, -1, 569, 570, 571, 572, -1, - -1, -1, -1, -1, 578, 579, 580, -1, -1, -1, - 584, 585, 586, 587, -1, 589, 590, -1, 592, 593, - -1, 595, 596, -1, -1, 599, -1, -1, 602, -1, - 604, -1, 606, 607, -1, -1, -1, -1, -1, -1, - 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, - 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, - 634, 635, -1, 637, 638, 639, -1, -1, 642, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 652, 5, - -1, 7, 8, 9, 10, 11, 12, -1, -1, 15, - -1, 665, -1, 19, -1, -1, 22, -1, 24, 25, - 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, - -1, -1, 38, -1, -1, -1, 42, -1, -1, 45, - 46, 47, -1, 49, -1, 51, 52, -1, -1, 55, - -1, -1, 58, 59, -1, 61, 62, -1, 64, 65, - -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, - 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, - 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, - 96, 97, 98, -1, 100, -1, -1, 103, -1, -1, - 106, -1, 108, -1, -1, 111, -1, 113, -1, -1, - -1, 117, 118, 119, -1, -1, 122, -1, -1, -1, - -1, 127, 128, -1, -1, -1, -1, 133, -1, 135, - -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, - 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, - 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, - 166, 167, -1, 169, 170, -1, 172, 173, 174, 175, - 176, 177, 178, -1, -1, 181, 182, 183, 184, -1, - -1, 187, 188, -1, 190, 191, 192, -1, -1, 195, - -1, -1, -1, 199, 200, -1, 202, -1, 204, -1, - 206, 207, 208, 209, 210, 211, 212, -1, 214, -1, - -1, 217, 218, 219, -1, 221, -1, -1, -1, 225, - 226, -1, -1, -1, 230, 231, 232, 233, 234, -1, - -1, -1, 238, 239, 240, -1, -1, 243, -1, -1, - -1, -1, 248, 249, -1, -1, -1, 253, -1, 255, - 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, - 266, 267, 268, -1, -1, 271, -1, -1, 274, 275, - -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, - 286, -1, 288, 289, -1, -1, -1, -1, -1, -1, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, -1, 318, 319, 320, 321, -1, 323, 324, 325, - -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, - -1, -1, 338, 339, -1, 341, -1, 343, -1, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, - -1, 357, -1, -1, 360, 361, 362, 363, -1, -1, - -1, 367, 368, -1, -1, -1, 372, -1, 374, 375, - 376, -1, 378, 379, 380, 381, -1, 383, 384, -1, - -1, -1, -1, -1, -1, -1, -1, 393, 394, 395, - -1, -1, 398, -1, 400, -1, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, -1, -1, 414, 415, - 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, - 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, - 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, - 446, -1, 448, 449, -1, 451, 452, 453, -1, -1, - 456, -1, 458, -1, 460, 461, -1, 463, 464, -1, - 466, -1, 468, -1, -1, 471, 472, 473, 474, 475, - 476, 477, 478, 479, 480, 481, 482, -1, 484, 485, - -1, -1, -1, 489, 490, 491, 492, -1, -1, -1, - 496, -1, -1, -1, 500, -1, 502, 503, 504, 505, - 506, 507, -1, 509, 510, 511, 512, 513, 514, -1, - -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, - -1, 527, -1, -1, -1, 531, 532, 533, -1, -1, - -1, 537, -1, -1, 540, 541, -1, 543, 544, 545, - 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, - 556, 557, -1, -1, 560, 561, 562, 563, -1, -1, - 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, - -1, -1, 578, 579, 580, -1, -1, -1, 584, 585, - 586, 587, -1, 589, 590, -1, 592, 593, -1, 595, - 596, -1, -1, 599, -1, -1, 602, -1, 604, -1, - 606, 607, -1, -1, -1, -1, -1, -1, 614, -1, - -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, - 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, - -1, 637, 638, 639, -1, -1, 642, -1, -1, -1, - -1, -1, -1, 5, -1, 7, 8, 9, 10, 11, - 12, 657, -1, 15, -1, -1, -1, 19, -1, 665, - 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, - 32, -1, 34, -1, -1, -1, 38, -1, -1, -1, - 42, -1, -1, 45, 46, 47, -1, 49, -1, 51, - 52, -1, -1, 55, -1, -1, 58, 59, -1, 61, - 62, -1, 64, 65, -1, 67, 68, 69, 70, 71, - 72, -1, 74, 75, 76, 77, 78, 79, 80, -1, - 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, - 92, -1, 94, 95, 96, 97, 98, -1, 100, -1, - -1, 103, -1, -1, 106, -1, 108, -1, -1, 111, - -1, 113, -1, -1, -1, 117, 118, 119, -1, -1, - 122, -1, -1, -1, -1, 127, 128, -1, -1, -1, - -1, 133, -1, 135, -1, -1, -1, -1, 140, -1, - 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, - -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, - 162, 163, -1, 165, 166, 167, -1, 169, 170, -1, - 172, 173, 174, 175, 176, 177, 178, -1, -1, 181, - 182, 183, 184, -1, -1, 187, 188, -1, 190, 191, - 192, -1, -1, 195, -1, -1, -1, 199, 200, -1, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, -1, 214, -1, -1, 217, 218, 219, -1, 221, - -1, -1, -1, 225, 226, -1, -1, -1, 230, 231, - 232, 233, 234, -1, -1, -1, 238, 239, 240, -1, - -1, 243, -1, -1, -1, -1, 248, 249, -1, -1, - -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, - -1, 263, -1, -1, 266, 267, 268, -1, -1, 271, - -1, -1, 274, 275, -1, -1, -1, -1, -1, 281, - 282, -1, 284, -1, 286, -1, 288, 289, -1, -1, - -1, -1, -1, -1, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, -1, 318, 319, 320, 321, - -1, 323, 324, 325, -1, -1, -1, -1, 330, 331, - 332, 333, 334, 335, -1, -1, 338, 339, -1, 341, - -1, 343, -1, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, -1, -1, 357, -1, -1, 360, 361, - 362, 363, -1, -1, -1, 367, 368, -1, -1, -1, - 372, -1, 374, 375, 376, -1, 378, 379, 380, 381, - -1, 383, 384, -1, -1, -1, -1, -1, -1, -1, - -1, 393, 394, 395, -1, -1, 398, -1, 400, -1, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - -1, -1, 414, 415, 416, -1, 418, -1, 420, 421, - 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, - -1, -1, -1, 435, 436, 437, 438, 439, -1, -1, - 442, 443, 444, 445, 446, -1, 448, 449, -1, 451, - 452, 453, -1, -1, 456, -1, 458, -1, 460, 461, - -1, 463, 464, -1, 466, -1, 468, -1, -1, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, -1, 484, 485, -1, -1, -1, 489, 490, 491, - 492, -1, -1, -1, 496, -1, -1, -1, 500, -1, - 502, 503, 504, 505, 506, 507, -1, 509, 510, 511, - 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, - 522, -1, 524, -1, -1, 527, -1, -1, -1, 531, - 532, 533, -1, -1, -1, 537, -1, -1, 540, 541, - -1, 543, 544, 545, 546, 547, 548, -1, -1, 551, - 552, 553, 554, -1, 556, 557, -1, -1, 560, 561, - 562, 563, -1, -1, 566, 567, -1, 569, 570, 571, - 572, -1, -1, -1, -1, -1, 578, 579, 580, -1, - -1, -1, 584, 585, 586, 587, -1, 589, 590, -1, - 592, 593, -1, 595, 596, -1, -1, 599, -1, -1, - 602, -1, 604, -1, 606, 607, -1, -1, -1, -1, - -1, -1, 614, -1, -1, 617, -1, -1, -1, 621, - 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, - -1, -1, 634, 635, -1, 637, 638, 639, -1, -1, - 642, -1, -1, -1, -1, -1, -1, 5, -1, 7, - 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, - -1, 19, 664, 665, 22, -1, 24, 25, 26, 27, - 28, 29, 30, 31, 32, -1, 34, -1, -1, -1, - 38, -1, -1, -1, 42, -1, -1, 45, 46, 47, - -1, 49, -1, 51, 52, -1, -1, 55, -1, -1, - 58, 59, -1, 61, 62, -1, 64, 65, -1, 67, - 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - 88, 89, -1, 91, 92, -1, 94, 95, 96, 97, - 98, -1, 100, -1, -1, 103, -1, -1, 106, -1, - 108, -1, -1, 111, -1, 113, -1, -1, -1, 117, - 118, 119, -1, -1, 122, -1, -1, -1, -1, 127, - 128, -1, -1, -1, -1, 133, -1, 135, -1, -1, - -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, - -1, -1, -1, 151, -1, -1, 154, 155, 156, -1, - -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, - -1, 169, 170, -1, 172, 173, 174, 175, 176, 177, - 178, -1, -1, 181, 182, 183, 184, -1, -1, 187, - 188, -1, 190, 191, 192, -1, -1, 195, -1, -1, - -1, 199, 200, -1, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, -1, 214, -1, -1, 217, - 218, 219, -1, 221, -1, -1, -1, 225, 226, -1, - -1, -1, 230, 231, 232, 233, 234, -1, -1, -1, - 238, 239, 240, -1, -1, 243, -1, -1, -1, -1, - 248, 249, -1, -1, -1, 253, -1, 255, 256, -1, - 258, 259, -1, -1, -1, 263, -1, -1, 266, 267, - 268, -1, -1, 271, -1, -1, 274, 275, -1, -1, - -1, -1, -1, 281, 282, -1, 284, -1, 286, -1, - 288, 289, -1, -1, -1, -1, -1, -1, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, -1, - 318, 319, 320, 321, -1, 323, 324, 325, -1, -1, - -1, -1, 330, 331, 332, 333, 334, 335, -1, -1, - 338, 339, -1, 341, -1, 343, -1, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, -1, -1, 357, - -1, -1, 360, 361, 362, 363, -1, -1, -1, 367, - 368, -1, -1, -1, 372, -1, 374, 375, 376, -1, - 378, 379, 380, 381, -1, 383, 384, -1, -1, -1, - -1, -1, -1, -1, -1, 393, 394, 395, -1, -1, - 398, -1, 400, -1, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, -1, -1, 414, 415, 416, -1, - 418, -1, 420, 421, 422, 423, 424, -1, 426, 427, - 428, -1, -1, 431, -1, -1, -1, 435, 436, 437, - 438, 439, -1, -1, 442, 443, 444, 445, 446, -1, - 448, 449, -1, 451, 452, 453, -1, -1, 456, -1, - 458, -1, 460, 461, -1, 463, 464, -1, 466, -1, - 468, -1, -1, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, -1, 484, 485, -1, -1, - -1, 489, 490, 491, 492, -1, -1, -1, 496, -1, - -1, -1, 500, -1, 502, 503, 504, 505, 506, 507, - -1, 509, 510, 511, 512, 513, 514, -1, -1, -1, - -1, -1, -1, 521, 522, -1, 524, -1, -1, 527, - -1, -1, -1, 531, 532, 533, -1, -1, -1, 537, - -1, -1, 540, 541, -1, 543, 544, 545, 546, 547, - 548, -1, -1, 551, 552, 553, 554, -1, 556, 557, - -1, -1, 560, 561, 562, 563, -1, -1, 566, 567, - -1, 569, 570, 571, 572, -1, -1, -1, -1, -1, - 578, 579, 580, -1, -1, -1, 584, 585, 586, 587, - -1, 589, 590, -1, 592, 593, -1, 595, 596, -1, - -1, 599, -1, -1, 602, -1, 604, -1, 606, 607, - -1, -1, -1, -1, -1, -1, 614, -1, -1, 617, - -1, -1, -1, 621, 622, 623, 624, 625, 626, 627, - -1, -1, -1, -1, -1, -1, 634, 635, -1, 637, - 638, 639, -1, -1, 642, -1, -1, -1, -1, 5, - -1, 7, 8, 9, 10, 11, 12, -1, -1, 15, - -1, -1, -1, 19, -1, -1, 22, 665, 24, 25, - 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, - -1, -1, 38, -1, -1, -1, 42, -1, -1, 45, - 46, 47, -1, 49, -1, 51, 52, -1, -1, 55, - -1, -1, 58, 59, -1, 61, 62, -1, 64, 65, - -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, - 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, - 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, - 96, 97, 98, -1, 100, -1, -1, 103, -1, -1, - 106, -1, 108, -1, -1, 111, -1, 113, -1, -1, - -1, 117, 118, 119, -1, -1, 122, -1, -1, -1, - -1, 127, 128, -1, -1, -1, -1, 133, -1, 135, - -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, - 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, - 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, - 166, 167, -1, 169, 170, -1, 172, 173, 174, 175, - 176, 177, 178, -1, -1, 181, 182, 183, 184, -1, - -1, 187, 188, -1, 190, 191, 192, -1, -1, 195, - -1, -1, -1, 199, 200, -1, 202, -1, 204, -1, - 206, 207, 208, 209, 210, 211, 212, -1, 214, -1, - -1, 217, 218, 219, -1, 221, -1, -1, -1, 225, - 226, -1, -1, -1, 230, 231, 232, 233, 234, -1, - -1, -1, 238, 239, 240, -1, -1, 243, -1, -1, - -1, -1, 248, 249, -1, -1, -1, 253, -1, 255, - 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, - 266, 267, 268, -1, -1, 271, -1, -1, 274, 275, - -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, - 286, -1, 288, 289, -1, -1, -1, -1, -1, -1, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, -1, 318, 319, 320, 321, -1, 323, 324, 325, - -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, - -1, -1, 338, 339, -1, 341, -1, 343, -1, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, - -1, 357, -1, -1, 360, 361, 362, 363, -1, -1, - -1, 367, 368, -1, -1, -1, 372, -1, 374, 375, - 376, -1, 378, 379, 380, 381, -1, 383, 384, -1, - -1, -1, -1, -1, -1, -1, -1, 393, 394, 395, - -1, -1, 398, -1, 400, -1, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, -1, -1, 414, 415, - 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, - 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, - 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, - 446, -1, 448, 449, -1, 451, 452, 453, -1, -1, - 456, -1, 458, -1, 460, 461, -1, 463, 464, -1, - 466, -1, 468, -1, -1, 471, 472, 473, 474, 475, - 476, 477, 478, 479, 480, 481, 482, -1, 484, 485, - -1, -1, -1, 489, 490, 491, 492, -1, -1, -1, - 496, -1, -1, -1, 500, -1, 502, 503, 504, 505, - 506, 507, -1, 509, 510, 511, 512, 513, 514, -1, - -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, - -1, 527, -1, -1, -1, 531, 532, 533, -1, -1, - -1, 537, -1, -1, 540, 541, -1, 543, 544, 545, - 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, - 556, 557, -1, -1, 560, 561, 562, 563, -1, -1, - 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, - -1, -1, 578, 579, 580, -1, -1, -1, 584, 585, - 586, 587, -1, 589, 590, -1, 592, 593, -1, 595, - 596, -1, -1, 599, -1, -1, 602, -1, 604, -1, - 606, 607, -1, -1, -1, -1, -1, -1, 614, -1, - -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, - 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, - -1, 637, 638, 639, -1, -1, 642, -1, -1, -1, - -1, 5, -1, 7, 8, 9, 10, 11, 12, -1, - -1, 15, -1, -1, -1, 19, -1, -1, 22, 665, - 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, - 34, -1, -1, -1, 38, -1, -1, -1, 42, -1, - -1, 45, 46, 47, -1, 49, -1, 51, 52, -1, - -1, 55, -1, -1, 58, 59, -1, 61, 62, -1, - 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, - 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, - 94, 95, 96, 97, 98, -1, 100, -1, -1, 103, - -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, - -1, -1, -1, 117, 118, 119, -1, -1, 122, -1, - -1, -1, -1, 127, 128, -1, -1, -1, -1, 133, - -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, - 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, - 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, - -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, - 174, 175, 176, 177, 178, -1, -1, 181, 182, 183, - 184, -1, -1, 187, 188, -1, 190, 191, 192, -1, - -1, 195, -1, -1, -1, 199, 200, -1, 202, -1, - 204, -1, 206, 207, 208, 209, 210, 211, 212, -1, - 214, -1, -1, 217, 218, 219, -1, 221, -1, -1, - -1, 225, 226, -1, -1, -1, 230, 231, 232, 233, - 234, -1, -1, -1, 238, 239, 240, -1, -1, 243, - -1, -1, -1, -1, 248, 249, -1, -1, -1, 253, - -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, - -1, -1, 266, 267, 268, -1, -1, 271, -1, -1, - 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, - 284, -1, 286, -1, 288, 289, -1, -1, -1, -1, - -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, -1, 318, 319, 320, 321, -1, 323, - 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, - 334, 335, -1, -1, 338, 339, -1, 341, -1, 343, - -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, -1, -1, 357, -1, -1, 360, 361, 362, 363, - -1, -1, -1, 367, 368, -1, -1, -1, 372, -1, - 374, 375, 376, -1, 378, 379, 380, 381, -1, 383, - 384, -1, -1, -1, -1, -1, -1, -1, -1, 393, - 394, 395, -1, -1, 398, -1, 400, -1, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, -1, -1, - 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, - 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, - -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, - 444, 445, 446, -1, 448, 449, -1, 451, 452, 453, - -1, -1, 456, -1, 458, -1, 460, 461, -1, 463, - 464, -1, 466, -1, 468, -1, -1, 471, 472, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, - 484, 485, -1, -1, -1, 489, 490, 491, 492, -1, - -1, -1, 496, -1, -1, -1, 500, -1, 502, 503, - 504, 505, 506, 507, -1, 509, 510, 511, 512, 513, - 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, - 524, -1, -1, 527, -1, -1, -1, 531, 532, 533, - -1, -1, -1, 537, -1, -1, 540, 541, -1, 543, - 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, - 554, -1, 556, 557, -1, -1, 560, 561, 562, 563, - -1, -1, 566, 567, -1, 569, 570, 571, 572, -1, - -1, -1, -1, -1, 578, 579, 580, -1, -1, -1, - 584, 585, 586, 587, -1, 589, 590, -1, 592, 593, - -1, 595, 596, -1, -1, 599, -1, -1, 602, -1, - 604, -1, 606, 607, -1, -1, -1, -1, -1, -1, - 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, - 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, - 634, 635, -1, 637, 638, 639, -1, -1, 642, -1, - -1, -1, -1, 5, -1, 7, 8, 9, 10, 11, - 12, -1, -1, 15, -1, -1, -1, 19, -1, -1, - 22, 665, 24, 25, 26, 27, 28, 29, 30, 31, - 32, -1, 34, -1, -1, -1, 38, -1, -1, -1, - 42, -1, -1, 45, 46, 47, -1, 49, -1, 51, - 52, -1, -1, 55, -1, -1, 58, 59, -1, 61, - 62, -1, 64, 65, -1, 67, 68, 69, 70, 71, - 72, -1, 74, 75, 76, 77, 78, 79, 80, -1, - 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, - 92, -1, 94, 95, 96, 97, 98, -1, 100, -1, - -1, 103, -1, -1, 106, -1, 108, -1, -1, 111, - -1, 113, -1, -1, -1, 117, 118, 119, -1, -1, - 122, -1, -1, -1, -1, 127, 128, -1, -1, -1, - -1, 133, -1, 135, -1, -1, -1, -1, 140, -1, - 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, - -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, - 162, 163, -1, 165, 166, 167, -1, 169, 170, -1, - 172, 173, 174, 175, 176, 177, 178, -1, -1, 181, - 182, 183, 184, -1, -1, 187, 188, -1, 190, 191, - 192, -1, -1, 195, -1, -1, -1, 199, 200, -1, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, -1, 214, -1, -1, 217, 218, 219, -1, 221, - -1, -1, -1, 225, 226, -1, -1, -1, 230, 231, - 232, 233, 234, -1, -1, -1, 238, 239, 240, -1, - -1, 243, -1, -1, -1, -1, 248, 249, -1, -1, - -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, - -1, 263, -1, -1, 266, 267, 268, -1, -1, 271, - -1, -1, 274, 275, -1, -1, -1, -1, -1, 281, - 282, -1, 284, -1, 286, -1, 288, 289, -1, -1, - -1, -1, -1, -1, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, -1, 318, 319, 320, 321, - -1, 323, 324, 325, -1, -1, -1, -1, 330, 331, - 332, 333, 334, 335, -1, -1, 338, 339, -1, 341, - -1, 343, -1, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, -1, -1, 357, -1, -1, 360, 361, - 362, 363, -1, -1, -1, 367, 368, -1, -1, -1, - 372, -1, 374, 375, 376, -1, 378, 379, 380, 381, - -1, 383, 384, -1, -1, -1, -1, -1, -1, -1, - -1, 393, 394, 395, -1, -1, 398, -1, 400, -1, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - -1, -1, 414, 415, 416, -1, 418, -1, 420, 421, - 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, - -1, -1, -1, 435, 436, 437, 438, 439, -1, -1, - 442, 443, 444, 445, 446, -1, 448, 449, -1, 451, - 452, 453, -1, -1, 456, -1, 458, -1, 460, 461, - -1, 463, 464, -1, 466, -1, 468, -1, -1, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, -1, 484, 485, -1, -1, -1, 489, 490, 491, - 492, -1, -1, -1, 496, -1, -1, -1, 500, -1, - 502, 503, 504, 505, 506, 507, -1, 509, 510, 511, - 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, - 522, -1, 524, -1, -1, 527, -1, -1, -1, 531, - 532, 533, -1, -1, -1, 537, -1, -1, 540, 541, - -1, 543, 544, 545, 546, 547, 548, -1, -1, 551, - 552, 553, 554, -1, 556, 557, -1, -1, 560, 561, - 562, 563, -1, -1, 566, 567, -1, 569, 570, 571, - 572, -1, -1, -1, -1, -1, 578, 579, 580, -1, - -1, -1, 584, 585, 586, 587, -1, 589, 590, -1, - 592, 593, -1, 595, 596, -1, -1, 599, -1, -1, - 602, -1, 604, -1, 606, 607, -1, -1, -1, -1, - -1, -1, 614, -1, -1, 617, -1, -1, -1, 621, - 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, - -1, -1, 634, 635, -1, 637, 638, 639, -1, -1, - 642, -1, -1, -1, -1, 5, -1, 7, 8, 9, - 10, 11, 12, -1, -1, 15, -1, -1, -1, 19, - -1, -1, 22, 665, 24, 25, 26, 27, 28, 29, - 30, 31, 32, -1, 34, -1, -1, -1, 38, -1, - -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, - -1, 51, 52, -1, -1, 55, -1, -1, 58, 59, - -1, 61, 62, 63, 64, 65, -1, 67, 68, 69, - 70, 71, 72, -1, 74, 75, 76, 77, 78, 79, - 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, - -1, 91, 92, -1, 94, 95, 96, 97, 98, -1, - 100, -1, -1, 103, -1, -1, 106, -1, 108, -1, - -1, 111, -1, 113, -1, -1, -1, 117, 118, 119, - -1, -1, 122, -1, -1, -1, -1, 127, 128, -1, - -1, -1, 132, 133, -1, 135, -1, -1, -1, -1, - 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, - -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, - 160, -1, 162, 163, -1, 165, 166, 167, -1, 169, - 170, -1, 172, 173, 174, 175, 176, 177, 178, -1, - -1, 181, 182, 183, 184, -1, -1, 187, 188, -1, - 190, 191, 192, -1, -1, 195, -1, -1, -1, 199, - 200, -1, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, -1, 214, -1, -1, 217, 218, 219, - -1, 221, -1, -1, -1, 225, 226, -1, -1, -1, - 230, 231, 232, 233, 234, -1, -1, -1, 238, 239, - 240, -1, -1, 243, -1, -1, -1, -1, 248, 249, - -1, -1, -1, 253, -1, 255, 256, -1, 258, 259, - -1, -1, -1, 263, -1, -1, 266, 267, 268, -1, - -1, 271, -1, -1, 274, 275, -1, -1, -1, -1, - -1, 281, 282, -1, 284, -1, 286, -1, 288, 289, - -1, -1, -1, -1, -1, -1, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, -1, 318, 319, - 320, 321, -1, 323, 324, 325, -1, -1, -1, -1, - 330, 331, 332, 333, 334, 335, -1, -1, 338, 339, - -1, 341, -1, 343, -1, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, -1, -1, 357, -1, -1, - 360, 361, 362, 363, -1, -1, -1, 367, 368, -1, - -1, -1, 372, -1, 374, 375, 376, -1, 378, 379, - 380, 381, -1, 383, 384, -1, -1, -1, -1, -1, - -1, -1, -1, 393, 394, 395, -1, -1, 398, -1, - 400, -1, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, -1, -1, 414, 415, 416, -1, 418, -1, - 420, 421, 422, 423, 424, -1, 426, 427, 428, -1, - -1, 431, -1, -1, -1, 435, 436, 437, 438, 439, - -1, -1, 442, 443, 444, 445, 446, -1, 448, 449, - -1, 451, 452, 453, -1, -1, 456, -1, 458, -1, - 460, 461, -1, 463, 464, -1, 466, -1, 468, -1, - -1, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, -1, 484, 485, -1, -1, -1, 489, - 490, 491, 492, -1, -1, -1, 496, -1, -1, -1, - 500, -1, 502, 503, 504, 505, 506, 507, -1, 509, - 510, 511, 512, 513, 514, -1, -1, -1, -1, -1, - -1, 521, 522, -1, 524, -1, -1, 527, -1, -1, - -1, 531, 532, 533, -1, -1, -1, 537, -1, -1, - 540, 541, -1, 543, 544, 545, 546, 547, 548, -1, - -1, 551, 552, 553, 554, -1, 556, 557, -1, -1, - 560, 561, 562, 563, -1, -1, 566, 567, -1, 569, - 570, 571, 572, -1, -1, -1, -1, -1, 578, 579, - 580, -1, -1, -1, 584, 585, 586, 587, -1, 589, - 590, -1, 592, 593, -1, 595, 596, -1, -1, 599, - -1, -1, 602, -1, 604, -1, 606, 607, -1, -1, - -1, -1, -1, -1, 614, -1, -1, 617, -1, -1, - -1, 621, 622, 623, 624, 625, 626, 627, -1, -1, - -1, -1, -1, -1, 634, 635, -1, 637, 638, 639, - -1, -1, 642, -1, -1, -1, 5, -1, 7, 8, - 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, - 19, -1, -1, 22, 664, 24, 25, 26, 27, 28, - 29, 30, 31, 32, -1, 34, -1, -1, -1, 38, - -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, - 49, -1, 51, 52, -1, -1, 55, -1, -1, 58, - 59, -1, 61, 62, -1, 64, 65, -1, 67, 68, - 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, - 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, - 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, - -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, - -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, - 119, -1, -1, 122, -1, -1, -1, -1, 127, 128, - -1, -1, -1, -1, 133, -1, 135, -1, -1, -1, - -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, - -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, - -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, - 169, 170, -1, 172, 173, 174, 175, 176, 177, 178, - -1, -1, 181, 182, 183, 184, -1, -1, 187, 188, - -1, 190, 191, 192, -1, -1, 195, -1, -1, -1, - 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, - 209, 210, 211, 212, -1, 214, -1, -1, 217, 218, - 219, -1, 221, -1, -1, -1, 225, 226, -1, -1, - -1, 230, 231, 232, 233, 234, -1, -1, -1, 238, - 239, 240, -1, -1, 243, -1, -1, -1, -1, 248, - 249, -1, -1, -1, 253, -1, 255, 256, -1, 258, - 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, - -1, -1, 271, -1, -1, 274, 275, 276, -1, -1, - -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, - 289, -1, -1, -1, -1, -1, -1, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, - 319, 320, 321, -1, 323, 324, 325, -1, -1, -1, - -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, - 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, - -1, 360, 361, 362, 363, -1, -1, -1, 367, 368, - -1, -1, -1, 372, -1, 374, 375, 376, -1, 378, - 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, - -1, -1, -1, -1, 393, 394, 395, -1, -1, 398, - -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, -1, -1, 414, 415, 416, -1, 418, - -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, - -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, - 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, - 449, -1, 451, 452, 453, -1, -1, 456, -1, 458, - -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, - -1, -1, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, - 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, - -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, - 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, - -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, - -1, -1, 531, 532, 533, -1, -1, -1, 537, -1, - -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, - -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, - -1, 560, 561, 562, 563, -1, 565, 566, 567, -1, - 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, - 579, 580, -1, -1, -1, 584, 585, 586, 587, -1, - 589, 590, -1, 592, 593, -1, 595, 596, -1, -1, - 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, - -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, - -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, - -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, - 639, -1, -1, 642, -1, -1, -1, 5, -1, 7, - 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, - -1, 19, -1, -1, 22, 664, 24, 25, 26, 27, - 28, 29, 30, 31, 32, -1, 34, -1, -1, -1, - 38, -1, -1, -1, 42, -1, -1, 45, 46, 47, - -1, 49, -1, 51, 52, -1, -1, 55, -1, -1, - 58, 59, -1, 61, 62, -1, 64, 65, -1, 67, - 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - 88, 89, -1, 91, 92, -1, 94, 95, 96, 97, - 98, -1, 100, -1, -1, 103, -1, -1, 106, -1, - 108, -1, -1, 111, -1, 113, -1, -1, -1, 117, - 118, 119, -1, -1, 122, -1, -1, -1, -1, 127, - 128, -1, -1, -1, -1, 133, -1, 135, -1, -1, - -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, - -1, -1, -1, 151, -1, -1, 154, 155, 156, -1, - -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, - -1, 169, 170, -1, 172, 173, 174, 175, 176, 177, - 178, -1, -1, 181, 182, 183, 184, -1, -1, 187, - 188, -1, 190, 191, 192, -1, -1, 195, -1, -1, - -1, 199, 200, -1, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, -1, 214, -1, -1, 217, - 218, 219, -1, 221, -1, -1, -1, 225, 226, -1, - -1, -1, 230, 231, 232, 233, 234, -1, -1, -1, - 238, 239, 240, -1, -1, 243, -1, -1, -1, -1, - 248, 249, -1, -1, -1, 253, -1, 255, 256, -1, - 258, 259, -1, -1, -1, 263, -1, -1, 266, 267, - 268, -1, -1, 271, -1, -1, 274, 275, 276, -1, - -1, -1, -1, 281, 282, -1, 284, -1, 286, -1, - 288, 289, -1, -1, -1, -1, -1, -1, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, -1, - 318, 319, 320, 321, -1, 323, 324, 325, -1, -1, - -1, -1, 330, 331, 332, 333, 334, 335, -1, -1, - 338, 339, -1, 341, -1, 343, -1, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, -1, -1, 357, - -1, -1, 360, 361, 362, 363, -1, -1, -1, 367, - 368, -1, -1, -1, 372, -1, 374, 375, 376, -1, - 378, 379, 380, 381, -1, 383, 384, -1, -1, -1, - -1, -1, -1, -1, -1, 393, 394, 395, -1, -1, - 398, -1, 400, -1, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, -1, -1, 414, 415, 416, -1, - 418, -1, 420, 421, 422, 423, 424, -1, 426, 427, - 428, -1, -1, 431, -1, -1, -1, 435, 436, 437, - 438, 439, -1, -1, 442, 443, 444, 445, 446, -1, - 448, 449, -1, 451, 452, 453, -1, -1, 456, -1, - 458, -1, 460, 461, -1, 463, 464, -1, 466, -1, - 468, -1, -1, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, -1, 484, 485, -1, -1, - -1, 489, 490, 491, 492, -1, -1, -1, 496, -1, - -1, -1, 500, -1, 502, 503, 504, 505, 506, 507, - -1, 509, 510, 511, 512, 513, 514, -1, -1, -1, - -1, -1, -1, 521, 522, -1, 524, -1, -1, 527, - -1, -1, -1, 531, 532, 533, -1, -1, -1, 537, - -1, -1, 540, 541, -1, 543, 544, 545, 546, 547, - 548, -1, -1, 551, 552, 553, 554, -1, 556, 557, - -1, -1, 560, 561, 562, 563, -1, 565, 566, 567, - -1, 569, 570, 571, 572, -1, -1, -1, -1, -1, - 578, 579, 580, -1, -1, -1, 584, 585, 586, 587, - -1, 589, 590, -1, 592, 593, -1, 595, 596, -1, - -1, 599, -1, -1, 602, -1, 604, -1, 606, 607, - -1, -1, -1, -1, -1, -1, 614, -1, -1, 617, - -1, -1, -1, 621, 622, 623, 624, 625, 626, 627, - -1, -1, -1, -1, -1, -1, 634, 635, -1, 637, - 638, 639, -1, -1, 642, -1, -1, -1, 5, -1, - 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, - -1, -1, 19, -1, -1, 22, 664, 24, 25, 26, - 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, - -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, - 47, -1, 49, -1, 51, 52, -1, -1, 55, -1, - -1, 58, 59, -1, 61, 62, -1, 64, 65, -1, - 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, - 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, - 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, - 97, 98, -1, 100, -1, -1, 103, -1, -1, 106, - -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, - 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, - 127, 128, -1, -1, -1, -1, 133, -1, 135, -1, - -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, - -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, - -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, - 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, - 177, 178, -1, -1, 181, 182, 183, 184, -1, -1, - 187, 188, -1, 190, 191, 192, -1, -1, 195, -1, - -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, - 207, 208, 209, 210, 211, 212, -1, 214, -1, -1, - 217, 218, 219, -1, 221, -1, -1, -1, 225, 226, - -1, -1, -1, 230, 231, 232, 233, 234, -1, -1, - -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, - -1, 248, 249, -1, -1, -1, 253, -1, 255, 256, - -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, - 267, 268, -1, -1, 271, -1, -1, 274, 275, 276, - -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, - -1, 288, 289, -1, -1, -1, -1, -1, -1, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - -1, 318, 319, 320, 321, -1, 323, 324, 325, -1, - -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, - -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, - 357, -1, -1, 360, 361, 362, 363, -1, -1, -1, - 367, 368, -1, -1, -1, 372, -1, 374, 375, 376, - -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, - -1, -1, -1, -1, -1, -1, 393, 394, 395, -1, - -1, 398, -1, 400, -1, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, -1, -1, 414, 415, 416, - -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, - 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, - 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, - -1, 448, 449, -1, 451, 452, 453, -1, -1, 456, - -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, - -1, 468, -1, -1, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, - -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, - -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, - 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, - -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, - 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, - 537, -1, -1, 540, 541, -1, 543, 544, 545, 546, - 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, - 557, -1, -1, 560, 561, 562, 563, -1, 565, 566, - 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, - -1, 578, 579, 580, -1, -1, -1, 584, 585, 586, - 587, -1, 589, 590, -1, 592, 593, -1, 595, 596, - -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, - 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, - 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, - 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, - 637, 638, 639, -1, -1, 642, -1, -1, -1, 5, - -1, 7, 8, 9, 10, 11, 12, -1, -1, 15, - -1, -1, -1, 19, -1, -1, 22, 664, 24, 25, - 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, - -1, -1, 38, -1, -1, -1, 42, -1, -1, 45, - 46, 47, -1, 49, -1, 51, 52, -1, -1, 55, - -1, -1, 58, 59, -1, 61, 62, 63, 64, 65, - -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, - 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, - 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, - 96, 97, 98, -1, 100, -1, -1, 103, -1, -1, - 106, -1, 108, -1, -1, 111, -1, 113, -1, -1, - -1, 117, 118, 119, -1, -1, 122, -1, -1, -1, - -1, 127, 128, -1, -1, -1, 132, 133, -1, 135, - -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, - 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, - 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, - 166, 167, -1, 169, 170, -1, 172, 173, 174, 175, - 176, 177, 178, -1, -1, 181, 182, 183, 184, -1, - -1, 187, 188, -1, 190, 191, 192, -1, -1, 195, - -1, -1, -1, 199, 200, -1, 202, -1, 204, -1, - 206, 207, 208, 209, 210, 211, 212, -1, 214, -1, - -1, 217, 218, 219, -1, 221, -1, -1, -1, 225, - 226, -1, -1, -1, 230, 231, 232, 233, 234, -1, - -1, -1, 238, 239, 240, -1, -1, 243, -1, -1, - -1, -1, 248, 249, -1, -1, -1, 253, -1, 255, - 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, - 266, 267, 268, -1, -1, 271, -1, -1, 274, 275, - -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, - 286, -1, 288, 289, -1, -1, -1, -1, -1, -1, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, -1, 318, 319, 320, 321, -1, 323, 324, 325, - -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, - -1, -1, 338, 339, -1, 341, -1, 343, -1, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, - -1, 357, -1, -1, 360, 361, 362, 363, -1, -1, - -1, 367, 368, -1, -1, -1, 372, -1, 374, 375, - 376, -1, 378, 379, 380, 381, -1, 383, 384, -1, - -1, -1, -1, -1, -1, -1, -1, 393, 394, 395, - -1, -1, 398, -1, 400, -1, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, -1, -1, 414, 415, - 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, - 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, - 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, - 446, -1, 448, 449, -1, 451, 452, 453, -1, -1, - 456, -1, 458, -1, 460, 461, -1, 463, 464, -1, - 466, -1, 468, -1, -1, 471, 472, 473, 474, 475, - 476, 477, 478, 479, 480, 481, 482, -1, 484, 485, - -1, -1, -1, 489, 490, 491, 492, -1, -1, -1, - 496, -1, -1, -1, 500, -1, 502, 503, 504, 505, - 506, 507, -1, 509, 510, 511, 512, 513, 514, -1, - -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, - -1, 527, -1, -1, -1, 531, 532, 533, -1, -1, - -1, 537, -1, -1, 540, 541, -1, 543, 544, 545, - 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, - 556, 557, -1, -1, 560, 561, 562, 563, -1, -1, - 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, - -1, -1, 578, 579, 580, -1, -1, -1, 584, 585, - 586, 587, -1, 589, 590, -1, 592, 593, -1, 595, - 596, -1, -1, 599, -1, -1, 602, -1, 604, -1, - 606, 607, -1, -1, -1, -1, -1, -1, 614, -1, - -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, - 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, - -1, 637, 638, 639, -1, -1, 642, -1, -1, -1, - 5, -1, 7, 8, 9, 10, 11, 12, -1, -1, - 15, -1, -1, -1, 19, -1, -1, 22, 664, 24, - 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, - -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, - 45, 46, 47, -1, 49, -1, 51, 52, -1, -1, - 55, -1, -1, 58, 59, -1, 61, 62, -1, 64, - 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, - 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, -1, 94, - 95, 96, 97, 98, -1, 100, -1, -1, 103, -1, - -1, 106, -1, 108, -1, -1, 111, -1, 113, -1, - -1, -1, 117, 118, 119, -1, -1, 122, -1, -1, - -1, -1, 127, 128, -1, -1, -1, -1, 133, -1, - 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, - 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, - 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, - 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, - 175, 176, 177, 178, -1, -1, 181, 182, 183, 184, - -1, -1, 187, 188, -1, 190, 191, 192, -1, -1, - 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, - -1, 206, 207, 208, 209, 210, 211, 212, -1, 214, - -1, -1, 217, 218, 219, -1, 221, -1, -1, -1, - 225, 226, -1, -1, -1, 230, 231, 232, 233, 234, - -1, -1, -1, 238, 239, 240, -1, -1, 243, -1, - -1, -1, -1, 248, 249, -1, -1, -1, 253, -1, - 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, - -1, 266, 267, 268, -1, -1, 271, -1, -1, 274, - 275, -1, -1, -1, -1, -1, 281, 282, -1, 284, - -1, 286, -1, 288, 289, -1, -1, -1, -1, -1, - -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, - 315, 316, -1, 318, 319, 320, 321, -1, 323, 324, - 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, - 335, -1, -1, 338, 339, -1, 341, -1, 343, -1, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - -1, -1, 357, -1, -1, 360, 361, 362, 363, -1, - -1, -1, 367, 368, -1, -1, -1, 372, -1, 374, - 375, 376, -1, 378, 379, 380, 381, -1, 383, 384, - -1, -1, -1, -1, -1, -1, -1, -1, 393, 394, - 395, -1, -1, 398, -1, 400, -1, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, -1, -1, 414, - 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, - -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, - 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, - 445, 446, -1, 448, 449, -1, 451, 452, 453, -1, - -1, 456, -1, 458, -1, 460, 461, -1, 463, 464, - -1, 466, -1, 468, -1, -1, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, - 485, -1, -1, -1, 489, 490, 491, 492, -1, -1, - -1, 496, -1, -1, -1, 500, -1, 502, 503, 504, - 505, 506, 507, -1, 509, 510, 511, 512, 513, 514, - -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, - -1, -1, 527, -1, -1, -1, 531, 532, 533, -1, - -1, -1, 537, -1, -1, 540, 541, -1, 543, 544, - 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, - -1, 556, 557, -1, -1, 560, 561, 562, 563, -1, - -1, 566, 567, -1, 569, 570, 571, 572, -1, -1, - -1, -1, -1, 578, 579, 580, -1, -1, -1, 584, - 585, 586, 587, -1, 589, 590, -1, 592, 593, -1, - 595, 596, -1, -1, 599, -1, -1, 602, -1, 604, - -1, 606, 607, -1, -1, -1, -1, -1, -1, 614, - -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, - 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, - 635, -1, 637, 638, 639, -1, -1, 642, -1, -1, - -1, 5, -1, 7, 8, 9, 10, 11, 12, -1, - -1, 15, -1, -1, -1, 19, -1, -1, 22, 664, - 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, - 34, -1, -1, -1, 38, -1, -1, -1, 42, -1, - -1, 45, 46, 47, -1, 49, -1, 51, 52, -1, - -1, 55, -1, -1, 58, 59, -1, 61, 62, -1, - 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, - 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, - 94, 95, 96, 97, 98, -1, 100, -1, -1, 103, - -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, - -1, -1, -1, 117, 118, 119, -1, -1, 122, -1, - -1, -1, -1, 127, 128, -1, -1, -1, -1, 133, - -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, - 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, - 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, - -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, - 174, 175, 176, 177, 178, -1, -1, 181, 182, 183, - 184, -1, -1, 187, 188, -1, 190, 191, 192, -1, - -1, 195, -1, -1, -1, 199, 200, -1, 202, -1, - 204, -1, 206, 207, 208, 209, 210, 211, 212, -1, - 214, -1, -1, 217, 218, 219, -1, 221, -1, -1, - -1, 225, 226, -1, -1, -1, 230, 231, 232, 233, - 234, -1, -1, -1, 238, 239, 240, -1, -1, 243, - -1, -1, -1, -1, 248, 249, -1, -1, -1, 253, - -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, - -1, -1, 266, 267, 268, -1, -1, 271, -1, -1, - 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, - 284, -1, 286, -1, 288, 289, -1, -1, -1, -1, - -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, -1, 318, 319, 320, 321, -1, 323, - 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, - 334, 335, -1, -1, 338, 339, -1, 341, -1, 343, - -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, -1, -1, 357, -1, -1, 360, 361, 362, 363, - -1, -1, -1, 367, 368, -1, -1, -1, 372, -1, - 374, 375, 376, -1, 378, 379, 380, 381, -1, 383, - 384, -1, -1, -1, -1, -1, -1, -1, -1, 393, - 394, 395, -1, -1, 398, -1, 400, -1, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, -1, -1, - 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, - 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, - -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, - 444, 445, 446, -1, 448, 449, -1, 451, 452, 453, - -1, -1, 456, -1, 458, -1, 460, 461, -1, 463, - 464, -1, 466, -1, 468, -1, -1, 471, 472, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, - 484, 485, -1, -1, -1, 489, 490, 491, 492, -1, - -1, -1, 496, -1, -1, -1, 500, -1, 502, 503, - 504, 505, 506, 507, -1, 509, 510, 511, 512, 513, - 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, - 524, -1, -1, 527, -1, -1, -1, 531, 532, 533, - -1, -1, -1, 537, -1, -1, 540, 541, -1, 543, - 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, - 554, -1, 556, 557, -1, -1, 560, 561, 562, 563, - -1, -1, 566, 567, -1, 569, 570, 571, 572, -1, - -1, -1, -1, -1, 578, 579, 580, -1, -1, -1, - 584, 585, 586, 587, -1, 589, 590, -1, 592, 593, - -1, 595, 596, -1, -1, 599, -1, -1, 602, -1, - 604, -1, 606, 607, -1, -1, -1, -1, -1, -1, - 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, - 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, - 634, 635, -1, 637, 638, 639, -1, -1, 642, -1, - -1, -1, 5, -1, 7, 8, 9, 10, 11, 12, - -1, -1, 15, -1, -1, -1, 19, -1, -1, -1, - 664, 24, 25, 26, 27, 28, 29, 30, 31, -1, - -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, - -1, -1, 45, 46, 47, -1, 49, -1, -1, -1, - -1, -1, 55, 56, -1, 58, 59, -1, 61, -1, - -1, -1, -1, -1, 67, 68, 69, 70, 71, 72, - -1, 74, 75, -1, -1, -1, -1, -1, -1, 82, - -1, 84, -1, 86, 87, 88, 89, -1, 91, 92, - -1, 94, 95, 96, -1, 98, -1, 100, -1, -1, - 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, - 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, - -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, - 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, - 143, 144, 145, 146, -1, -1, -1, -1, -1, -1, - -1, 154, 155, 156, -1, -1, -1, 160, -1, -1, - 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, - 173, 174, 175, 176, -1, -1, -1, -1, 181, 182, - 183, 184, -1, -1, 187, 188, 189, 190, 191, 192, - -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, - -1, 204, -1, 206, 207, 208, 209, 210, -1, 212, - -1, 214, -1, -1, -1, 218, 219, -1, -1, -1, - -1, -1, -1, 226, -1, -1, -1, 230, 231, 232, - 233, 234, 235, -1, -1, 238, 239, 240, -1, -1, - 243, -1, -1, -1, -1, 248, -1, -1, -1, -1, - 253, -1, 255, 256, -1, 258, 259, 260, -1, -1, - 263, -1, -1, -1, 267, 268, -1, -1, 271, 272, - -1, 274, 275, -1, -1, -1, -1, -1, 281, 282, - -1, 284, -1, 286, -1, 288, 289, -1, -1, -1, - -1, 294, -1, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, - 313, 314, 315, 316, -1, 318, 319, 320, 321, -1, - 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, - 333, 334, 335, -1, -1, 338, 339, -1, 341, -1, - 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, -1, -1, 357, -1, -1, 360, 361, 362, - 363, -1, -1, -1, -1, 368, -1, -1, -1, 372, - -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 394, 395, -1, -1, -1, -1, 400, -1, 402, - 403, 404, 405, 406, 407, 408, 409, 410, -1, -1, - -1, -1, 415, 416, -1, 418, -1, 420, 421, 422, - 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, - -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, - 443, 444, 445, 446, -1, 448, -1, -1, 451, -1, - 453, 454, -1, 456, -1, -1, -1, 460, -1, -1, - 463, 464, -1, 466, 467, 468, -1, -1, 471, -1, - 473, 474, 475, 476, 477, 478, 479, -1, 481, 482, - -1, 484, -1, -1, -1, -1, 489, 490, 491, -1, - -1, -1, -1, 496, -1, -1, -1, -1, -1, -1, - 503, -1, -1, 506, 507, -1, 509, -1, 511, -1, - 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, - -1, 524, -1, -1, 527, -1, -1, -1, 531, -1, - 533, -1, -1, -1, 537, -1, -1, -1, 541, -1, - 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, - 553, 554, -1, 556, 557, -1, -1, 560, 561, 562, - 563, -1, -1, 566, 567, -1, 569, 570, 571, 572, - -1, -1, -1, -1, -1, 578, 579, 580, -1, -1, - -1, -1, 585, 586, 587, -1, 589, 590, -1, 592, - 593, -1, -1, -1, -1, -1, 599, -1, -1, 602, - -1, -1, -1, 606, 607, -1, -1, -1, -1, -1, - -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, - 623, 624, 625, 626, 627, -1, -1, 630, -1, -1, - -1, 634, -1, -1, 637, -1, 639, -1, 5, 642, - 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, - -1, -1, 19, -1, -1, 22, 659, 24, 25, 26, - 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, - -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, - 47, -1, 49, -1, 51, 52, -1, -1, 55, -1, - -1, 58, 59, -1, 61, 62, -1, 64, 65, -1, - 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, - 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, - 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, - 97, 98, -1, 100, -1, -1, 103, -1, -1, 106, - -1, 108, 109, -1, 111, -1, 113, -1, -1, -1, - 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, - 127, 128, -1, -1, -1, -1, 133, -1, 135, -1, - -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, - -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, - -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, - 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, - 177, 178, -1, -1, 181, 182, 183, 184, -1, -1, - 187, 188, -1, 190, 191, 192, -1, -1, 195, -1, - -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, - 207, 208, 209, 210, 211, 212, -1, 214, -1, -1, - 217, 218, 219, -1, 221, -1, -1, -1, 225, 226, - -1, -1, -1, 230, 231, 232, 233, 234, -1, -1, - -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, - -1, 248, 249, -1, -1, -1, 253, -1, 255, 256, - -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, - 267, 268, -1, -1, 271, -1, -1, 274, 275, 276, - -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, - -1, 288, 289, -1, -1, -1, -1, -1, -1, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - -1, 318, 319, 320, 321, -1, 323, 324, 325, -1, - -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, - -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, - 357, -1, -1, 360, 361, 362, 363, -1, -1, -1, - 367, 368, -1, -1, -1, 372, -1, 374, 375, 376, - -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, - -1, -1, -1, -1, -1, -1, 393, 394, 395, -1, - -1, 398, -1, 400, -1, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, -1, -1, 414, 415, 416, - -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, - 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, - 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, - -1, 448, 449, -1, 451, 452, 453, -1, -1, 456, - -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, - -1, 468, -1, -1, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, - -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, - -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, - 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, - -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, - 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, - 537, -1, -1, 540, 541, -1, 543, 544, 545, 546, - 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, - 557, -1, -1, 560, 561, 562, 563, -1, 565, 566, - 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, - -1, 578, 579, 580, -1, -1, -1, 584, 585, 586, - 587, -1, 589, 590, -1, 592, 593, -1, 595, 596, - -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, - 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, - 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, - 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, - 637, 638, 639, -1, 5, 642, 7, 8, 9, 10, - 11, 12, -1, -1, 15, -1, -1, -1, 19, -1, - 657, 22, -1, 24, 25, 26, 27, 28, 29, 30, - 31, 32, -1, 34, -1, -1, -1, 38, -1, -1, - -1, 42, -1, -1, 45, 46, 47, -1, 49, -1, - 51, 52, -1, -1, 55, -1, -1, 58, 59, -1, - 61, 62, -1, 64, 65, -1, 67, 68, 69, 70, - 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, - -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, - 91, 92, -1, 94, 95, 96, 97, 98, -1, 100, - -1, -1, 103, -1, -1, 106, -1, 108, -1, -1, - 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, - -1, 122, -1, -1, -1, -1, 127, 128, -1, -1, - -1, -1, 133, -1, 135, -1, -1, -1, -1, 140, - -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, - 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, - -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, - -1, 172, 173, 174, 175, 176, 177, 178, -1, -1, - 181, 182, 183, 184, -1, -1, 187, 188, -1, 190, - 191, 192, -1, -1, 195, -1, -1, -1, 199, 200, - -1, 202, -1, 204, -1, 206, 207, 208, 209, 210, - 211, 212, -1, 214, -1, -1, 217, 218, 219, -1, - 221, -1, -1, -1, 225, 226, -1, -1, -1, 230, - 231, 232, 233, 234, -1, -1, -1, 238, 239, 240, - -1, -1, 243, -1, -1, -1, -1, 248, 249, -1, - -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, - -1, -1, 263, -1, -1, 266, 267, 268, -1, -1, - 271, -1, -1, 274, 275, -1, -1, -1, -1, -1, - 281, 282, -1, 284, -1, 286, -1, 288, 289, -1, - -1, -1, -1, -1, -1, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -1, 313, 314, 315, 316, -1, 318, 319, 320, - 321, -1, 323, 324, 325, -1, -1, -1, -1, 330, - 331, 332, 333, 334, 335, -1, -1, 338, 339, -1, - 341, -1, 343, -1, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, -1, -1, 357, -1, -1, 360, - 361, 362, 363, -1, -1, -1, 367, 368, -1, -1, - -1, 372, -1, 374, 375, 376, -1, 378, 379, 380, - 381, -1, 383, 384, -1, -1, -1, -1, -1, -1, - -1, -1, 393, 394, 395, -1, -1, 398, -1, 400, - -1, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, -1, -1, 414, 415, 416, -1, 418, -1, 420, - 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, - 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, - -1, 442, 443, 444, 445, 446, -1, 448, 449, -1, - 451, 452, 453, -1, -1, 456, -1, 458, -1, 460, - 461, -1, 463, 464, -1, 466, -1, 468, -1, -1, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, -1, 484, 485, -1, -1, -1, 489, 490, - 491, 492, -1, -1, -1, 496, -1, -1, -1, 500, - -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, - 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, - 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, - 531, 532, 533, -1, -1, -1, 537, -1, -1, 540, - 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, - 551, 552, 553, 554, -1, 556, 557, -1, -1, 560, - 561, 562, 563, -1, -1, 566, 567, -1, 569, 570, - 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, - -1, -1, -1, 584, 585, 586, 587, -1, 589, 590, - -1, 592, 593, -1, 595, 596, -1, -1, 599, -1, - -1, 602, -1, 604, -1, 606, 607, -1, -1, -1, - -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, - 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, - -1, -1, -1, 634, 635, -1, 637, 638, 639, -1, - 5, 642, 7, 8, 9, 10, 11, 12, -1, -1, - 15, 652, -1, -1, 19, -1, -1, 22, -1, 24, - 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, - -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, - 45, 46, 47, -1, 49, -1, 51, 52, -1, -1, - 55, -1, -1, 58, 59, -1, 61, 62, -1, 64, - 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, - 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, - 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, - 95, 96, 97, 98, -1, 100, -1, -1, 103, -1, - -1, 106, -1, 108, -1, -1, 111, -1, 113, -1, - -1, -1, 117, 118, 119, -1, -1, 122, -1, -1, - -1, -1, 127, 128, -1, -1, -1, -1, 133, -1, - 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, - 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, - 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, - 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, - 175, 176, 177, 178, -1, -1, 181, 182, 183, 184, - -1, -1, 187, 188, -1, 190, 191, 192, -1, -1, - 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, - -1, 206, 207, 208, 209, 210, 211, 212, -1, 214, - -1, -1, 217, 218, 219, -1, 221, -1, -1, -1, - 225, 226, -1, -1, -1, 230, 231, 232, 233, 234, - -1, -1, -1, 238, 239, 240, -1, -1, 243, -1, - -1, -1, -1, 248, 249, -1, -1, -1, 253, -1, - 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, - -1, 266, 267, 268, -1, -1, 271, -1, -1, 274, - 275, -1, -1, -1, -1, -1, 281, 282, -1, 284, - -1, 286, -1, 288, 289, -1, -1, -1, -1, -1, - -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, - 315, 316, -1, 318, 319, 320, 321, -1, 323, 324, - 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, - 335, -1, -1, 338, 339, -1, 341, -1, 343, -1, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - -1, -1, 357, -1, -1, 360, 361, 362, 363, -1, - -1, -1, 367, 368, -1, -1, -1, 372, -1, 374, - 375, 376, -1, 378, 379, 380, 381, -1, 383, 384, - -1, -1, -1, -1, -1, -1, -1, -1, 393, 394, - 395, -1, -1, 398, -1, 400, -1, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, -1, -1, 414, - 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, - -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, - 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, - 445, 446, -1, 448, 449, -1, 451, 452, 453, -1, - -1, 456, -1, 458, -1, 460, 461, -1, 463, 464, - -1, 466, -1, 468, -1, -1, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, - 485, -1, -1, -1, 489, 490, 491, 492, -1, -1, - -1, 496, -1, -1, -1, 500, -1, 502, 503, 504, - 505, 506, 507, -1, 509, 510, 511, 512, 513, 514, - -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, - -1, -1, 527, -1, -1, -1, 531, 532, 533, -1, - -1, -1, 537, -1, -1, 540, 541, -1, 543, 544, - 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, - -1, 556, 557, -1, -1, 560, 561, 562, 563, -1, - -1, 566, 567, -1, 569, 570, 571, 572, -1, -1, - -1, -1, -1, 578, 579, 580, -1, -1, -1, 584, - 585, 586, 587, -1, 589, 590, -1, 592, 593, -1, - 595, 596, -1, -1, 599, -1, -1, 602, -1, 604, - -1, 606, 607, -1, -1, -1, -1, -1, -1, 614, - -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, - 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, - 635, -1, 637, 638, 639, -1, 5, 642, 7, 8, - 9, 10, 11, 12, -1, -1, 15, 652, -1, -1, - 19, -1, -1, 22, -1, 24, 25, 26, 27, 28, - 29, 30, 31, 32, -1, 34, -1, -1, -1, 38, - -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, - 49, -1, 51, 52, -1, -1, 55, -1, -1, 58, - 59, -1, 61, 62, -1, 64, 65, -1, 67, 68, - 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, - 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, - 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, - -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, - -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, - 119, -1, -1, 122, -1, -1, -1, -1, 127, 128, - -1, -1, -1, -1, 133, -1, 135, -1, -1, -1, - -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, - -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, - -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, - 169, 170, -1, 172, 173, 174, 175, 176, 177, 178, - -1, -1, 181, 182, 183, 184, -1, -1, 187, 188, - -1, 190, 191, 192, -1, -1, 195, -1, -1, -1, - 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, - 209, 210, 211, 212, -1, 214, -1, -1, 217, 218, - 219, -1, 221, -1, -1, -1, 225, 226, -1, -1, - -1, 230, 231, 232, 233, 234, -1, -1, -1, 238, - 239, 240, -1, -1, 243, -1, -1, -1, -1, 248, - 249, -1, -1, -1, 253, -1, 255, 256, -1, 258, - 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, - -1, -1, 271, -1, -1, 274, 275, -1, -1, -1, - -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, - 289, -1, -1, -1, -1, -1, -1, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, - 319, 320, 321, -1, 323, 324, 325, -1, -1, -1, - -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, - 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, - -1, 360, 361, 362, 363, -1, -1, -1, 367, 368, - -1, -1, -1, 372, -1, 374, 375, 376, -1, 378, - 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, - -1, -1, -1, -1, 393, 394, 395, -1, -1, 398, - -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, -1, -1, 414, 415, 416, -1, 418, - -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, - -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, - 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, - 449, -1, 451, 452, 453, -1, -1, 456, -1, 458, - -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, - -1, -1, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, - 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, - -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, - 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, - -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, - -1, -1, 531, 532, 533, -1, -1, -1, 537, -1, - -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, - -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, - -1, 560, 561, 562, 563, -1, -1, 566, 567, -1, - 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, - 579, 580, -1, -1, -1, 584, 585, 586, 587, -1, - 589, 590, -1, 592, 593, -1, 595, 596, -1, -1, - 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, - -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, - -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, - -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, - 639, -1, 5, 642, 7, 8, 9, 10, 11, 12, - -1, -1, 15, 652, -1, -1, 19, -1, -1, 22, - -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, - -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, - -1, -1, 45, 46, 47, -1, 49, -1, 51, 52, - -1, -1, 55, -1, -1, 58, 59, -1, 61, 62, - -1, 64, 65, -1, 67, 68, 69, 70, 71, 72, - -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, - 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, - -1, 94, 95, 96, 97, 98, -1, 100, -1, -1, - 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, - 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, - -1, -1, -1, -1, 127, 128, -1, -1, -1, -1, - 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, - 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, - -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, - 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, - 173, 174, 175, 176, 177, 178, -1, -1, 181, 182, - 183, 184, -1, -1, 187, 188, -1, 190, 191, 192, - -1, -1, 195, -1, -1, -1, 199, 200, -1, 202, - -1, 204, -1, 206, 207, 208, 209, 210, 211, 212, - -1, 214, -1, -1, 217, 218, 219, -1, 221, -1, - -1, -1, 225, 226, -1, -1, -1, 230, 231, 232, - 233, 234, -1, -1, -1, 238, 239, 240, -1, -1, - 243, -1, -1, -1, -1, 248, 249, -1, -1, -1, - 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, - 263, -1, -1, 266, 267, 268, -1, -1, 271, -1, - -1, 274, 275, -1, -1, -1, -1, -1, 281, 282, - -1, 284, -1, 286, -1, 288, 289, -1, -1, -1, - -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, - 313, 314, 315, 316, -1, 318, 319, 320, 321, -1, - 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, - 333, 334, 335, -1, -1, 338, 339, -1, 341, -1, - 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, -1, -1, 357, -1, -1, 360, 361, 362, - 363, -1, -1, -1, 367, 368, -1, -1, -1, 372, - -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, - 383, 384, -1, -1, -1, -1, -1, -1, -1, -1, - 393, 394, 395, -1, -1, 398, -1, 400, -1, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, -1, - -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, - 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, - -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, - 443, 444, 445, 446, -1, 448, 449, -1, 451, 452, - 453, -1, -1, 456, -1, 458, -1, 460, 461, -1, - 463, 464, -1, 466, -1, 468, -1, -1, 471, 472, - 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, - -1, 484, 485, -1, -1, -1, 489, 490, 491, 492, - -1, -1, -1, 496, -1, -1, -1, 500, -1, 502, - 503, 504, 505, 506, 507, -1, 509, 510, 511, 512, - 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, - -1, 524, -1, -1, 527, -1, -1, -1, 531, 532, - 533, -1, -1, -1, 537, -1, -1, 540, 541, -1, - 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, - 553, 554, -1, 556, 557, -1, -1, 560, 561, 562, - 563, -1, -1, 566, 567, -1, 569, 570, 571, 572, - -1, -1, -1, -1, -1, 578, 579, 580, -1, -1, - -1, 584, 585, 586, 587, -1, 589, 590, -1, 592, - 593, -1, 595, 596, -1, -1, 599, -1, -1, 602, - -1, 604, -1, 606, 607, -1, -1, -1, -1, -1, - -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, - 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, - -1, 634, 635, -1, 637, 638, 639, -1, 5, 642, - 7, 8, 9, 10, 11, 12, -1, -1, 15, 652, - -1, -1, 19, -1, -1, 22, -1, 24, 25, 26, - 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, - 37, 38, -1, -1, -1, 42, -1, -1, 45, 46, - 47, -1, 49, -1, 51, 52, -1, -1, 55, -1, - -1, 58, 59, -1, 61, 62, -1, 64, 65, -1, - 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, - 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, - 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, - 97, 98, -1, 100, -1, -1, 103, -1, -1, 106, - -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, - 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, - 127, 128, -1, -1, -1, 132, 133, -1, 135, -1, - -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, - -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, - -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, - 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, - 177, 178, -1, -1, 181, 182, 183, 184, -1, -1, - 187, 188, -1, 190, 191, 192, -1, -1, 195, -1, - -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, - 207, 208, 209, 210, 211, 212, -1, 214, -1, -1, - 217, 218, 219, -1, 221, -1, -1, -1, 225, 226, - -1, -1, -1, 230, 231, 232, 233, 234, -1, -1, - -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, - -1, 248, 249, -1, -1, -1, 253, -1, 255, 256, - -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, - 267, 268, -1, -1, 271, -1, -1, 274, 275, 276, - -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, - -1, 288, 289, -1, -1, -1, -1, -1, -1, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, - -1, 318, 319, 320, 321, -1, 323, 324, 325, -1, - -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, - -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, - 357, -1, -1, 360, 361, 362, 363, -1, -1, -1, - 367, 368, -1, -1, -1, 372, -1, 374, 375, 376, - -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, - -1, -1, -1, -1, -1, -1, 393, 394, 395, -1, - -1, 398, -1, 400, -1, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, -1, -1, 414, 415, 416, - -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, - 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, - 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, - -1, 448, 449, -1, 451, 452, 453, -1, -1, 456, - -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, - -1, 468, -1, -1, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, - -1, -1, 489, 490, 491, 492, -1, -1, 495, 496, - -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, - 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, - -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, - 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, - 537, -1, -1, 540, 541, -1, 543, 544, 545, 546, - 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, - 557, -1, -1, 560, 561, 562, 563, -1, 565, 566, - 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, - -1, 578, 579, 580, -1, -1, -1, 584, 585, 586, - 587, -1, 589, 590, -1, 592, 593, -1, 595, 596, - -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, - 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, - 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, - 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, - 637, 638, 639, -1, -1, 642, -1, 5, 645, 7, - 8, 9, 10, 11, 12, 13, 14, 15, -1, -1, - -1, 19, -1, -1, 22, -1, 24, 25, 26, 27, - 28, 29, 30, 31, 32, -1, 34, -1, -1, -1, - 38, -1, -1, -1, 42, -1, -1, 45, 46, 47, - -1, 49, -1, 51, 52, -1, -1, 55, -1, -1, - 58, 59, -1, 61, 62, -1, 64, 65, -1, 67, - 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - 88, 89, -1, 91, 92, -1, 94, 95, 96, 97, - 98, -1, 100, -1, -1, 103, 104, -1, 106, -1, - 108, -1, 110, 111, -1, 113, -1, -1, -1, 117, - 118, 119, -1, -1, 122, -1, -1, -1, -1, 127, - 128, -1, -1, -1, -1, 133, -1, 135, 136, -1, - -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, - -1, -1, -1, 151, 152, -1, 154, 155, 156, -1, - -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, - -1, 169, 170, -1, 172, 173, 174, 175, 176, 177, - 178, -1, -1, 181, 182, 183, 184, -1, -1, 187, - 188, -1, 190, 191, 192, -1, -1, 195, -1, -1, - -1, 199, 200, -1, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, 213, 214, -1, -1, 217, - 218, 219, -1, 221, -1, -1, -1, 225, 226, -1, - -1, -1, 230, 231, 232, 233, 234, -1, -1, -1, - 238, 239, 240, 241, -1, 243, -1, -1, -1, 247, - 248, 249, -1, -1, -1, 253, -1, 255, 256, -1, - 258, 259, -1, -1, -1, 263, -1, -1, 266, 267, - 268, -1, -1, 271, -1, -1, 274, 275, 276, -1, - -1, -1, -1, 281, 282, -1, 284, -1, 286, 287, - 288, 289, -1, -1, -1, -1, -1, -1, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, -1, - 318, 319, 320, 321, -1, 323, 324, 325, -1, -1, - -1, -1, 330, 331, 332, 333, 334, 335, -1, -1, - 338, 339, -1, 341, -1, 343, -1, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, -1, -1, 357, - -1, -1, 360, 361, 362, 363, -1, -1, -1, 367, - 368, -1, -1, -1, 372, -1, 374, 375, 376, -1, - 378, 379, 380, 381, -1, 383, 384, -1, -1, -1, - -1, -1, -1, -1, -1, 393, 394, 395, -1, -1, - 398, -1, 400, -1, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, -1, -1, 414, 415, 416, -1, - 418, -1, 420, 421, 422, 423, 424, -1, 426, 427, - 428, -1, -1, 431, -1, -1, -1, 435, 436, 437, - 438, 439, 440, -1, 442, 443, 444, 445, 446, -1, - 448, 449, -1, 451, 452, 453, -1, -1, 456, -1, - 458, -1, 460, 461, -1, 463, 464, -1, 466, -1, - 468, -1, -1, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, -1, 484, 485, 486, -1, - -1, 489, 490, 491, 492, -1, -1, -1, 496, -1, - -1, 499, 500, -1, 502, 503, 504, 505, 506, 507, - -1, 509, 510, 511, 512, 513, 514, -1, -1, -1, - -1, -1, -1, 521, 522, -1, 524, -1, -1, 527, - -1, -1, -1, 531, 532, 533, -1, -1, -1, 537, - -1, -1, 540, 541, -1, 543, 544, 545, 546, 547, - 548, -1, -1, 551, 552, 553, 554, -1, 556, 557, - -1, -1, 560, 561, 562, 563, -1, 565, 566, 567, - -1, 569, 570, 571, 572, -1, -1, -1, -1, -1, - 578, 579, 580, 581, -1, -1, 584, 585, 586, 587, - -1, 589, 590, -1, 592, 593, -1, 595, 596, -1, - -1, 599, -1, -1, 602, 603, 604, 605, 606, 607, - -1, -1, -1, -1, -1, -1, 614, -1, -1, 617, - -1, -1, -1, 621, 622, 623, 624, 625, 626, 627, - -1, -1, -1, -1, -1, -1, 634, 635, -1, 637, - 638, 639, -1, 5, 642, 7, 8, 9, 10, 11, - 12, 13, 14, 15, -1, -1, -1, 19, -1, -1, - 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, - 32, -1, 34, -1, -1, -1, 38, -1, -1, -1, - 42, -1, -1, 45, 46, 47, -1, 49, -1, 51, - 52, -1, -1, 55, -1, -1, 58, 59, -1, 61, - 62, -1, 64, 65, -1, 67, 68, 69, 70, 71, - 72, -1, 74, 75, 76, 77, 78, 79, 80, -1, - 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, - 92, -1, 94, 95, 96, 97, 98, -1, 100, -1, - -1, 103, 104, -1, 106, -1, 108, -1, 110, 111, - -1, 113, -1, -1, -1, 117, 118, 119, -1, -1, - 122, -1, -1, -1, -1, 127, 128, -1, -1, -1, - -1, 133, -1, 135, 136, -1, -1, -1, 140, -1, - 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, - 152, -1, 154, 155, 156, -1, -1, -1, 160, -1, - 162, 163, -1, 165, 166, 167, -1, 169, 170, -1, - 172, 173, 174, 175, 176, 177, 178, -1, -1, 181, - 182, 183, 184, -1, -1, 187, 188, -1, 190, 191, - 192, -1, -1, 195, -1, -1, -1, 199, 200, -1, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, 213, 214, -1, -1, 217, 218, 219, -1, 221, - -1, -1, -1, 225, 226, -1, -1, -1, 230, 231, - 232, 233, 234, -1, -1, -1, 238, 239, 240, 241, - -1, 243, -1, -1, -1, 247, 248, 249, -1, -1, - -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, - -1, 263, -1, -1, 266, 267, 268, -1, -1, 271, - -1, -1, 274, 275, 276, -1, -1, -1, -1, 281, - 282, -1, 284, -1, 286, 287, 288, 289, -1, -1, - -1, -1, -1, -1, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, -1, 318, 319, 320, 321, - -1, 323, 324, 325, -1, -1, -1, -1, 330, 331, - 332, 333, 334, 335, -1, -1, 338, 339, -1, 341, - -1, 343, -1, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, -1, -1, 357, -1, -1, 360, 361, - 362, 363, -1, -1, -1, 367, 368, -1, -1, -1, - 372, -1, 374, 375, 376, -1, 378, 379, 380, 381, - -1, 383, 384, -1, -1, -1, -1, -1, -1, -1, - -1, 393, 394, 395, -1, -1, 398, -1, 400, -1, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - -1, -1, 414, 415, 416, -1, 418, -1, 420, 421, - 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, - -1, -1, -1, 435, 436, 437, 438, 439, 440, -1, - 442, 443, 444, 445, 446, -1, 448, 449, -1, 451, - 452, 453, -1, -1, 456, -1, 458, -1, 460, 461, - -1, 463, 464, -1, 466, -1, 468, -1, -1, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, -1, 484, 485, 486, -1, -1, 489, 490, 491, - 492, -1, -1, -1, 496, -1, -1, 499, 500, -1, - 502, 503, 504, 505, 506, 507, -1, 509, 510, 511, - 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, - 522, -1, 524, -1, -1, 527, -1, -1, -1, 531, - 532, 533, -1, -1, -1, 537, -1, -1, 540, 541, - -1, 543, 544, 545, 546, 547, 548, -1, -1, 551, - 552, 553, 554, -1, 556, 557, -1, -1, 560, 561, - 562, 563, -1, 565, 566, 567, -1, 569, 570, 571, - 572, -1, -1, -1, -1, -1, 578, 579, 580, 581, - -1, -1, 584, 585, 586, 587, -1, 589, 590, -1, - 592, 593, -1, 595, 596, -1, -1, 599, -1, -1, - 602, 603, 604, 605, 606, 607, -1, -1, -1, -1, - -1, -1, 614, -1, -1, 617, -1, -1, -1, 621, - 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, - -1, -1, 634, 635, -1, 637, 638, 639, -1, 5, - 642, 7, 8, 9, 10, 11, 12, -1, -1, 15, - -1, -1, -1, 19, -1, -1, 22, -1, 24, 25, - 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, - -1, -1, 38, -1, -1, -1, 42, -1, -1, 45, - 46, 47, -1, 49, -1, 51, 52, -1, -1, 55, - -1, -1, 58, 59, -1, 61, 62, -1, 64, 65, - -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, - 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, - 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, - 96, 97, 98, -1, 100, -1, -1, 103, -1, -1, - 106, -1, 108, -1, -1, 111, -1, 113, -1, -1, - -1, 117, 118, 119, -1, -1, 122, -1, -1, -1, - -1, 127, 128, 129, -1, -1, -1, 133, -1, 135, - -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, - 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, - 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, - 166, 167, -1, 169, 170, -1, 172, 173, 174, 175, - 176, 177, 178, -1, -1, 181, 182, 183, 184, -1, - -1, 187, 188, -1, 190, 191, 192, 193, -1, 195, - -1, -1, -1, 199, 200, -1, 202, -1, 204, -1, - 206, 207, 208, 209, 210, 211, 212, -1, 214, -1, - -1, 217, 218, 219, -1, 221, 222, -1, -1, 225, - 226, -1, -1, -1, 230, 231, 232, 233, 234, -1, - -1, -1, 238, 239, 240, -1, -1, 243, -1, -1, - -1, -1, 248, 249, -1, -1, -1, 253, -1, 255, - 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, - 266, 267, 268, -1, -1, 271, -1, -1, 274, 275, - -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, - 286, -1, 288, 289, -1, -1, 292, -1, -1, -1, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, -1, 318, 319, 320, 321, -1, 323, 324, 325, - -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, - -1, -1, 338, 339, -1, 341, -1, 343, -1, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, - -1, 357, -1, -1, 360, 361, 362, 363, 364, 365, - -1, 367, 368, -1, -1, 371, 372, -1, 374, 375, - 376, -1, 378, 379, 380, 381, -1, 383, 384, -1, - -1, -1, -1, -1, -1, -1, -1, 393, 394, 395, - -1, -1, 398, -1, 400, -1, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, -1, -1, 414, 415, - 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, - 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, - 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, - 446, -1, 448, 449, -1, 451, 452, 453, -1, -1, - 456, -1, 458, -1, 460, 461, -1, 463, 464, -1, - 466, -1, 468, -1, -1, 471, 472, 473, 474, 475, - 476, 477, 478, 479, 480, 481, 482, -1, 484, 485, - -1, -1, -1, 489, 490, 491, 492, -1, -1, -1, - 496, -1, -1, -1, 500, -1, 502, 503, 504, 505, - 506, 507, -1, 509, 510, 511, 512, 513, 514, -1, - -1, 517, 518, 519, -1, 521, 522, -1, 524, -1, - -1, 527, -1, -1, -1, 531, 532, 533, -1, -1, - -1, 537, -1, -1, 540, 541, -1, 543, 544, 545, - 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, - 556, 557, -1, -1, 560, 561, 562, 563, -1, -1, - 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, - -1, -1, 578, 579, 580, -1, -1, -1, 584, 585, - 586, 587, 588, 589, 590, -1, 592, 593, -1, 595, - 596, -1, -1, 599, -1, -1, 602, -1, 604, -1, - 606, 607, -1, -1, -1, -1, -1, -1, 614, -1, - -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, - 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, - -1, 637, 638, 639, -1, 5, 642, 7, 8, 9, - 10, 11, 12, -1, -1, 15, -1, -1, -1, 19, - -1, -1, 22, -1, 24, 25, 26, 27, 28, 29, - 30, 31, 32, -1, 34, -1, -1, -1, 38, -1, - -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, - -1, 51, 52, -1, -1, 55, -1, -1, 58, 59, - -1, 61, 62, -1, 64, 65, -1, 67, 68, 69, - 70, 71, 72, -1, 74, 75, 76, 77, 78, 79, - 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, - -1, 91, 92, -1, 94, 95, 96, 97, 98, -1, - 100, -1, -1, 103, -1, -1, 106, -1, 108, -1, - -1, 111, -1, 113, -1, -1, -1, 117, 118, 119, - -1, -1, 122, -1, -1, -1, -1, 127, 128, 129, - -1, -1, 132, 133, -1, 135, -1, -1, -1, -1, - 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, - -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, - 160, -1, 162, 163, -1, 165, 166, 167, -1, 169, - 170, -1, 172, 173, 174, 175, 176, 177, 178, -1, - -1, 181, 182, 183, 184, -1, -1, 187, 188, -1, - 190, 191, 192, 193, -1, 195, -1, -1, -1, 199, - 200, -1, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, -1, 214, -1, -1, 217, 218, 219, - -1, 221, 222, -1, -1, 225, 226, -1, -1, -1, - 230, 231, 232, 233, 234, -1, -1, -1, 238, 239, - 240, -1, -1, 243, -1, -1, -1, -1, 248, 249, - -1, -1, -1, 253, -1, 255, 256, -1, 258, 259, - -1, -1, -1, 263, -1, -1, 266, 267, 268, -1, - -1, 271, -1, -1, 274, 275, -1, -1, -1, -1, - -1, 281, 282, -1, 284, -1, 286, -1, 288, 289, - -1, -1, 292, -1, -1, -1, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, -1, 318, 319, - 320, 321, -1, 323, 324, 325, -1, -1, -1, -1, - 330, 331, 332, 333, 334, 335, -1, -1, 338, 339, - -1, 341, -1, 343, -1, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, -1, -1, 357, -1, -1, - 360, 361, 362, 363, -1, -1, -1, 367, 368, -1, - -1, 371, 372, -1, 374, 375, 376, -1, 378, 379, - 380, 381, -1, 383, 384, -1, -1, -1, -1, -1, - -1, -1, -1, 393, 394, 395, -1, -1, 398, -1, - 400, -1, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, -1, -1, 414, 415, 416, -1, 418, -1, - 420, 421, 422, 423, 424, -1, 426, 427, 428, -1, - -1, 431, -1, -1, -1, 435, 436, 437, 438, 439, - -1, -1, 442, 443, 444, 445, 446, -1, 448, 449, - -1, 451, 452, 453, -1, -1, 456, -1, 458, -1, - 460, 461, -1, 463, 464, -1, 466, -1, 468, -1, - -1, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, -1, 484, 485, -1, -1, -1, 489, - 490, 491, 492, -1, -1, -1, 496, -1, -1, -1, - 500, -1, 502, 503, 504, 505, 506, 507, -1, 509, - 510, 511, 512, 513, 514, -1, -1, -1, -1, -1, - -1, 521, 522, -1, 524, -1, -1, 527, -1, -1, - -1, 531, 532, 533, -1, -1, -1, 537, -1, -1, - 540, 541, -1, 543, 544, 545, 546, 547, 548, -1, - -1, 551, 552, 553, 554, -1, 556, 557, -1, -1, - 560, 561, 562, 563, -1, 565, 566, 567, -1, 569, - 570, 571, 572, -1, -1, -1, -1, -1, 578, 579, - 580, -1, -1, -1, 584, 585, 586, 587, 588, 589, - 590, -1, 592, 593, -1, 595, 596, -1, -1, 599, - -1, -1, 602, -1, 604, -1, 606, 607, -1, -1, - -1, -1, -1, -1, 614, -1, -1, 617, -1, -1, - -1, 621, 622, 623, 624, 625, 626, 627, -1, -1, - -1, -1, -1, -1, 634, 635, -1, 637, 638, 639, - -1, 5, 642, 7, 8, 9, 10, 11, 12, -1, - -1, 15, -1, -1, -1, 19, -1, -1, 22, -1, - 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, - 34, -1, -1, -1, 38, -1, -1, -1, 42, -1, - -1, 45, 46, 47, -1, 49, -1, 51, 52, -1, - -1, 55, -1, -1, 58, 59, -1, 61, 62, -1, - 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, - 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, - 94, 95, 96, 97, 98, -1, 100, -1, -1, 103, - -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, - -1, -1, -1, 117, 118, 119, -1, -1, 122, -1, - -1, -1, -1, 127, 128, 129, -1, -1, 132, 133, - -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, - 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, - 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, - -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, - 174, 175, 176, 177, 178, -1, -1, 181, 182, 183, - 184, -1, -1, 187, 188, -1, 190, 191, 192, 193, - -1, 195, -1, -1, -1, 199, 200, -1, 202, -1, - 204, -1, 206, 207, 208, 209, 210, 211, 212, -1, - 214, -1, -1, 217, 218, 219, -1, 221, 222, -1, - -1, 225, 226, -1, -1, -1, 230, 231, 232, 233, - 234, -1, -1, -1, 238, 239, 240, -1, -1, 243, - -1, -1, -1, -1, 248, 249, -1, -1, -1, 253, - -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, - -1, -1, 266, 267, 268, -1, -1, 271, -1, -1, - 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, - 284, -1, 286, -1, 288, 289, -1, -1, 292, -1, - -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, -1, 318, 319, 320, 321, -1, 323, - 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, - 334, 335, -1, -1, 338, 339, -1, 341, -1, 343, - -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, -1, -1, 357, -1, -1, 360, 361, 362, 363, - -1, -1, -1, 367, 368, -1, -1, 371, 372, -1, - 374, 375, 376, -1, 378, 379, 380, 381, -1, 383, - 384, -1, -1, -1, -1, -1, -1, -1, -1, 393, - 394, 395, -1, -1, 398, -1, 400, -1, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, -1, -1, - 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, - 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, - -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, - 444, 445, 446, -1, 448, 449, -1, 451, 452, 453, - -1, -1, 456, -1, 458, -1, 460, 461, -1, 463, - 464, -1, 466, -1, 468, -1, -1, 471, 472, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, - 484, 485, -1, -1, -1, 489, 490, 491, 492, -1, - -1, -1, 496, -1, -1, -1, 500, -1, 502, 503, - 504, 505, 506, 507, -1, 509, 510, 511, 512, 513, - 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, - 524, -1, -1, 527, -1, -1, -1, 531, 532, 533, - -1, -1, -1, 537, -1, -1, 540, 541, -1, 543, - 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, - 554, -1, 556, 557, -1, -1, 560, 561, 562, 563, - -1, 565, 566, 567, -1, 569, 570, 571, 572, -1, - -1, -1, -1, -1, 578, 579, 580, -1, -1, -1, - 584, 585, 586, 587, 588, 589, 590, -1, 592, 593, - -1, 595, 596, -1, -1, 599, -1, -1, 602, -1, - 604, -1, 606, 607, -1, -1, -1, -1, -1, -1, - 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, - 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, - 634, 635, -1, 637, 638, 639, -1, 5, 642, 7, - 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, - -1, 19, -1, -1, 22, -1, 24, 25, 26, 27, - 28, 29, 30, 31, 32, -1, 34, -1, -1, -1, - 38, -1, -1, -1, 42, -1, -1, 45, 46, 47, - -1, 49, -1, 51, 52, -1, -1, 55, -1, -1, - 58, 59, -1, 61, 62, -1, 64, 65, -1, 67, - 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - 88, 89, -1, 91, 92, -1, 94, 95, 96, 97, - 98, -1, 100, -1, -1, 103, -1, -1, 106, -1, - 108, -1, -1, 111, -1, 113, -1, -1, -1, 117, - 118, 119, -1, -1, 122, -1, -1, -1, -1, 127, - 128, 129, -1, -1, 132, 133, -1, 135, -1, -1, - -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, - -1, -1, -1, 151, -1, -1, 154, 155, 156, -1, - -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, - -1, 169, 170, -1, 172, 173, 174, 175, 176, 177, - 178, -1, -1, 181, 182, 183, 184, -1, -1, 187, - 188, -1, 190, 191, 192, 193, -1, 195, -1, -1, - -1, 199, 200, -1, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, -1, 214, -1, -1, 217, - 218, 219, -1, 221, 222, -1, -1, 225, 226, -1, - -1, -1, 230, 231, 232, 233, 234, -1, -1, -1, - 238, 239, 240, -1, -1, 243, -1, -1, -1, -1, - 248, 249, -1, -1, -1, 253, -1, 255, 256, -1, - 258, 259, -1, -1, -1, 263, -1, -1, 266, 267, - 268, -1, -1, 271, -1, -1, 274, 275, -1, -1, - -1, -1, -1, 281, 282, -1, 284, -1, 286, -1, - 288, 289, -1, -1, 292, -1, -1, -1, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, -1, - 318, 319, 320, 321, -1, 323, 324, 325, -1, -1, - -1, -1, 330, 331, 332, 333, 334, 335, -1, -1, - 338, 339, -1, 341, -1, 343, -1, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, -1, -1, 357, - -1, -1, 360, 361, 362, 363, -1, -1, -1, 367, - 368, -1, -1, 371, 372, -1, 374, 375, 376, -1, - 378, 379, 380, 381, -1, 383, 384, -1, -1, -1, - -1, -1, -1, -1, -1, 393, 394, 395, -1, -1, - 398, -1, 400, -1, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, -1, -1, 414, 415, 416, -1, - 418, -1, 420, 421, 422, 423, 424, -1, 426, 427, - 428, -1, -1, 431, -1, -1, -1, 435, 436, 437, - 438, 439, -1, -1, 442, 443, 444, 445, 446, -1, - 448, 449, -1, 451, 452, 453, -1, -1, 456, -1, - 458, -1, 460, 461, -1, 463, 464, -1, 466, -1, - 468, -1, -1, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, -1, 484, 485, -1, -1, - -1, 489, 490, 491, 492, -1, -1, -1, 496, -1, - -1, -1, 500, -1, 502, 503, 504, 505, 506, 507, - -1, 509, 510, 511, 512, 513, 514, -1, -1, -1, - -1, -1, -1, 521, 522, -1, 524, -1, -1, 527, - -1, -1, -1, 531, 532, 533, -1, -1, -1, 537, - -1, -1, 540, 541, -1, 543, 544, 545, 546, 547, - 548, -1, -1, 551, 552, 553, 554, -1, 556, 557, - -1, -1, 560, 561, 562, 563, -1, 565, 566, 567, - -1, 569, 570, 571, 572, -1, -1, -1, -1, -1, - 578, 579, 580, -1, -1, -1, 584, 585, 586, 587, - 588, 589, 590, -1, 592, 593, -1, 595, 596, -1, - -1, 599, -1, -1, 602, -1, 604, -1, 606, 607, - -1, -1, -1, -1, -1, -1, 614, -1, -1, 617, - -1, -1, -1, 621, 622, 623, 624, 625, 626, 627, - -1, -1, -1, -1, -1, -1, 634, 635, -1, 637, - 638, 639, -1, 5, 642, 7, 8, 9, 10, 11, - 12, -1, -1, 15, -1, -1, -1, 19, -1, -1, - 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, - 32, -1, 34, -1, -1, -1, 38, -1, -1, -1, - 42, -1, -1, 45, 46, 47, -1, 49, -1, 51, - 52, -1, -1, 55, -1, -1, 58, 59, -1, 61, - 62, -1, 64, 65, -1, 67, 68, 69, 70, 71, - 72, -1, 74, 75, 76, 77, 78, 79, 80, -1, - 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, - 92, -1, 94, 95, 96, 97, 98, -1, 100, -1, - -1, 103, -1, -1, 106, -1, 108, 109, 110, 111, - -1, 113, -1, -1, -1, 117, 118, 119, -1, -1, - 122, -1, -1, -1, -1, 127, 128, -1, -1, -1, - -1, 133, -1, 135, -1, -1, -1, -1, 140, -1, - 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, - -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, - 162, 163, -1, 165, 166, 167, -1, 169, 170, -1, - 172, 173, 174, 175, 176, 177, 178, -1, -1, 181, - 182, 183, 184, -1, -1, 187, 188, -1, 190, 191, - 192, -1, -1, 195, -1, -1, -1, 199, 200, -1, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, -1, 214, -1, -1, 217, 218, 219, -1, 221, - -1, -1, -1, 225, 226, -1, -1, -1, 230, 231, - 232, 233, 234, -1, -1, -1, 238, 239, 240, -1, - -1, 243, -1, -1, -1, -1, 248, 249, -1, -1, - -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, - -1, 263, -1, -1, 266, 267, 268, -1, -1, 271, - -1, -1, 274, 275, 276, -1, -1, -1, -1, 281, - 282, -1, 284, -1, 286, -1, 288, 289, -1, -1, - -1, -1, -1, -1, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, -1, 318, 319, 320, 321, - -1, 323, 324, 325, -1, -1, -1, -1, 330, 331, - 332, 333, 334, 335, -1, -1, 338, 339, -1, 341, - -1, 343, -1, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, -1, -1, 357, -1, -1, 360, 361, - 362, 363, -1, -1, -1, 367, 368, -1, -1, -1, - 372, -1, 374, 375, 376, -1, 378, 379, 380, 381, - -1, 383, 384, -1, -1, -1, -1, -1, -1, -1, - -1, 393, 394, 395, -1, -1, 398, -1, 400, -1, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - -1, -1, 414, 415, 416, -1, 418, -1, 420, 421, - 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, - -1, -1, -1, 435, 436, 437, 438, 439, -1, -1, - 442, 443, 444, 445, 446, -1, 448, 449, -1, 451, - 452, 453, -1, -1, 456, -1, 458, -1, 460, 461, - -1, 463, 464, -1, 466, -1, 468, -1, -1, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, -1, 484, 485, -1, -1, -1, 489, 490, 491, - 492, -1, -1, -1, 496, -1, -1, -1, 500, -1, - 502, 503, 504, 505, 506, 507, -1, 509, 510, 511, - 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, - 522, -1, 524, -1, -1, 527, -1, -1, -1, 531, - 532, 533, -1, -1, -1, 537, -1, -1, 540, 541, - -1, 543, 544, 545, 546, 547, 548, -1, -1, 551, - 552, 553, 554, -1, 556, 557, -1, -1, 560, 561, - 562, 563, -1, 565, 566, 567, -1, 569, 570, 571, - 572, -1, -1, -1, -1, -1, 578, 579, 580, -1, - -1, -1, 584, 585, 586, 587, -1, 589, 590, -1, - 592, 593, -1, 595, 596, -1, -1, 599, -1, -1, - 602, -1, 604, -1, 606, 607, -1, -1, -1, -1, - -1, -1, 614, -1, -1, 617, -1, -1, -1, 621, - 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, - -1, -1, 634, 635, -1, 637, 638, 639, -1, 5, - 642, 7, 8, 9, 10, 11, 12, -1, -1, 15, - -1, -1, -1, 19, -1, -1, 22, -1, 24, 25, - 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, - -1, 37, 38, -1, -1, -1, 42, -1, -1, 45, - 46, 47, -1, 49, -1, 51, 52, -1, -1, 55, - -1, -1, 58, 59, -1, 61, 62, -1, 64, 65, - -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, - 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, - 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, - 96, 97, 98, -1, 100, -1, -1, 103, -1, -1, - 106, -1, 108, -1, -1, 111, -1, 113, -1, -1, - -1, 117, 118, 119, -1, -1, 122, -1, -1, -1, - -1, 127, 128, -1, -1, -1, 132, 133, -1, 135, - -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, - 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, - 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, - 166, 167, -1, 169, 170, -1, 172, 173, 174, 175, - 176, 177, 178, -1, -1, 181, 182, 183, 184, -1, - -1, 187, 188, -1, 190, 191, 192, -1, -1, 195, - -1, -1, -1, 199, 200, -1, 202, -1, 204, -1, - 206, 207, 208, 209, 210, 211, 212, -1, 214, -1, - -1, 217, 218, 219, -1, 221, -1, -1, -1, 225, - 226, -1, -1, -1, 230, 231, 232, 233, 234, -1, - -1, -1, 238, 239, 240, -1, -1, 243, -1, -1, - -1, -1, 248, 249, -1, -1, -1, 253, -1, 255, - 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, - 266, 267, 268, -1, -1, 271, -1, -1, 274, 275, - 276, -1, -1, -1, -1, 281, 282, -1, 284, -1, - 286, -1, 288, 289, -1, -1, -1, -1, -1, -1, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, -1, 318, 319, 320, 321, -1, 323, 324, 325, - -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, - -1, -1, 338, 339, -1, 341, -1, 343, -1, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, - -1, 357, -1, -1, 360, 361, 362, 363, -1, -1, - -1, 367, 368, -1, -1, -1, 372, -1, 374, 375, - 376, -1, 378, 379, 380, 381, -1, 383, 384, -1, - -1, -1, -1, -1, -1, -1, -1, 393, 394, 395, - -1, -1, 398, -1, 400, -1, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, -1, -1, 414, 415, - 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, - 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, - 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, - 446, -1, 448, 449, -1, 451, 452, 453, -1, -1, - 456, -1, 458, -1, 460, 461, -1, 463, 464, -1, - 466, -1, 468, -1, -1, 471, 472, 473, 474, 475, - 476, 477, 478, 479, 480, 481, 482, -1, 484, 485, - -1, -1, -1, 489, 490, 491, 492, -1, -1, -1, - 496, -1, -1, -1, 500, -1, 502, 503, 504, 505, - 506, 507, -1, 509, 510, 511, 512, 513, 514, -1, - -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, - -1, 527, -1, -1, -1, 531, 532, 533, -1, -1, - -1, 537, -1, -1, 540, 541, -1, 543, 544, 545, - 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, - 556, 557, -1, -1, 560, 561, 562, 563, -1, 565, - 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, - -1, -1, 578, 579, 580, -1, -1, -1, 584, 585, - 586, 587, -1, 589, 590, -1, 592, 593, -1, 595, - 596, -1, -1, 599, -1, -1, 602, -1, 604, -1, - 606, 607, -1, -1, -1, -1, -1, -1, 614, -1, - -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, - 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, - -1, 637, 638, 639, -1, 5, 642, 7, 8, 9, - 10, 11, 12, -1, -1, 15, -1, -1, -1, 19, - -1, -1, 22, -1, 24, 25, 26, 27, 28, 29, - 30, 31, 32, -1, 34, -1, -1, -1, 38, 39, - -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, - -1, 51, 52, -1, -1, 55, -1, -1, 58, 59, - -1, 61, 62, -1, 64, 65, -1, 67, 68, 69, - 70, 71, 72, -1, 74, 75, 76, 77, 78, 79, - 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, - -1, 91, 92, -1, 94, 95, 96, 97, 98, -1, - 100, -1, -1, 103, -1, -1, 106, -1, 108, -1, - -1, 111, -1, 113, -1, -1, -1, 117, 118, 119, - -1, -1, 122, -1, -1, -1, -1, 127, 128, -1, - -1, -1, -1, 133, -1, 135, -1, -1, -1, -1, - 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, - -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, - 160, -1, 162, 163, -1, 165, 166, 167, -1, 169, - 170, -1, 172, 173, 174, 175, 176, 177, 178, -1, - -1, 181, 182, 183, 184, -1, -1, 187, 188, -1, - 190, 191, 192, -1, -1, 195, -1, -1, -1, 199, - 200, -1, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, -1, 214, -1, -1, 217, 218, 219, - -1, 221, 222, 223, -1, 225, 226, -1, -1, -1, - 230, 231, 232, 233, 234, -1, -1, -1, 238, 239, - 240, -1, -1, 243, -1, -1, -1, -1, 248, 249, - -1, -1, -1, 253, -1, 255, 256, -1, 258, 259, - -1, -1, -1, 263, -1, -1, 266, 267, 268, -1, - -1, 271, -1, -1, 274, 275, -1, -1, -1, -1, - -1, 281, 282, -1, 284, -1, 286, -1, 288, 289, - -1, -1, -1, -1, -1, -1, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, -1, 318, 319, - 320, 321, -1, 323, 324, 325, -1, -1, -1, -1, - 330, 331, 332, 333, 334, 335, -1, -1, 338, 339, - -1, 341, -1, 343, -1, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, -1, -1, 357, -1, -1, - 360, 361, 362, 363, -1, -1, -1, 367, 368, -1, - -1, -1, 372, -1, 374, 375, 376, -1, 378, 379, - 380, 381, -1, 383, 384, -1, -1, -1, -1, -1, - -1, -1, -1, 393, 394, 395, -1, -1, 398, -1, - 400, -1, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, -1, -1, 414, 415, 416, -1, 418, -1, - 420, 421, 422, 423, 424, -1, 426, 427, 428, -1, - -1, 431, -1, -1, -1, 435, 436, 437, 438, 439, - -1, -1, 442, 443, 444, 445, 446, -1, 448, 449, - -1, 451, 452, 453, -1, -1, 456, -1, 458, -1, - 460, 461, -1, 463, 464, -1, 466, -1, 468, -1, - -1, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, -1, 484, 485, -1, -1, -1, 489, - 490, 491, 492, -1, -1, -1, 496, -1, -1, -1, - 500, -1, 502, 503, 504, 505, 506, 507, -1, 509, - 510, 511, 512, 513, 514, -1, -1, -1, -1, -1, - -1, 521, 522, -1, 524, -1, -1, 527, -1, -1, - -1, 531, 532, 533, -1, -1, -1, 537, -1, -1, - 540, 541, -1, 543, 544, 545, 546, 547, 548, -1, - -1, 551, 552, 553, 554, -1, 556, 557, -1, -1, - 560, 561, 562, 563, -1, 565, 566, 567, -1, 569, - 570, 571, 572, -1, -1, -1, -1, -1, 578, 579, - 580, -1, -1, -1, 584, 585, 586, 587, -1, 589, - 590, -1, 592, 593, -1, 595, 596, -1, -1, 599, - -1, -1, 602, -1, 604, -1, 606, 607, -1, -1, - -1, -1, -1, -1, 614, -1, -1, 617, -1, -1, - -1, 621, 622, 623, 624, 625, 626, 627, -1, -1, - -1, -1, -1, -1, 634, 635, -1, 637, 638, 639, - -1, 5, 642, 7, 8, 9, 10, 11, 12, -1, - -1, 15, -1, -1, -1, 19, -1, -1, 22, -1, - 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, - 34, -1, -1, -1, 38, -1, -1, -1, 42, -1, - -1, 45, 46, 47, -1, 49, -1, 51, 52, -1, - -1, 55, -1, -1, 58, 59, -1, 61, 62, -1, - 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, - 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, - 94, 95, 96, 97, 98, -1, 100, -1, -1, 103, - -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, - -1, -1, -1, 117, 118, 119, -1, -1, 122, -1, - -1, -1, -1, 127, 128, -1, -1, -1, -1, 133, - -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, - 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, - 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, - -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, - 174, 175, 176, 177, 178, -1, -1, 181, 182, 183, - 184, -1, -1, 187, 188, -1, 190, 191, 192, -1, - -1, 195, -1, -1, -1, 199, 200, -1, 202, -1, - 204, -1, 206, 207, 208, 209, 210, 211, 212, -1, - 214, -1, -1, 217, 218, 219, -1, 221, -1, -1, - -1, 225, 226, -1, -1, -1, 230, 231, 232, 233, - 234, -1, -1, -1, 238, 239, 240, -1, -1, 243, - -1, -1, -1, -1, 248, 249, -1, -1, -1, 253, - -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, - -1, -1, 266, 267, 268, -1, -1, 271, -1, -1, - 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, - 284, -1, 286, -1, 288, 289, -1, -1, 292, -1, - -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, -1, 318, 319, 320, 321, -1, 323, - 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, - 334, 335, -1, -1, 338, 339, -1, 341, -1, 343, - -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, -1, -1, 357, -1, -1, 360, 361, 362, 363, - -1, -1, -1, 367, 368, -1, -1, 371, 372, -1, - 374, 375, 376, -1, 378, 379, 380, 381, -1, 383, - 384, -1, -1, -1, -1, -1, -1, -1, -1, 393, - 394, 395, -1, 397, 398, -1, 400, -1, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, -1, -1, - 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, - 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, - -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, - 444, 445, 446, -1, 448, 449, -1, 451, 452, 453, - -1, -1, 456, -1, 458, -1, 460, 461, -1, 463, - 464, -1, 466, -1, 468, -1, -1, 471, 472, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, - 484, 485, -1, -1, -1, 489, 490, 491, 492, -1, - -1, -1, 496, -1, -1, -1, 500, -1, 502, 503, - 504, 505, 506, 507, -1, 509, 510, 511, 512, 513, - 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, - 524, -1, -1, 527, -1, -1, -1, 531, 532, 533, - -1, -1, -1, 537, -1, -1, 540, 541, -1, 543, - 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, - 554, -1, 556, 557, -1, -1, 560, 561, 562, 563, - -1, -1, 566, 567, -1, 569, 570, 571, 572, -1, - -1, -1, -1, -1, 578, 579, 580, -1, -1, -1, - 584, 585, 586, 587, 588, 589, 590, -1, 592, 593, - -1, 595, 596, -1, -1, 599, -1, -1, 602, -1, - 604, -1, 606, 607, -1, -1, -1, -1, -1, -1, - 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, - 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, - 634, 635, -1, 637, 638, 639, -1, 5, 642, 7, - 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, - -1, 19, -1, -1, 22, -1, 24, 25, 26, 27, - 28, 29, 30, 31, 32, -1, 34, -1, -1, -1, - 38, -1, -1, -1, 42, -1, -1, 45, 46, 47, - -1, 49, -1, 51, 52, -1, -1, 55, -1, -1, - 58, 59, -1, 61, 62, -1, 64, 65, -1, 67, - 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, - 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - 88, 89, -1, 91, 92, -1, 94, 95, 96, 97, - 98, -1, 100, -1, -1, 103, -1, -1, 106, -1, - 108, -1, -1, 111, -1, 113, -1, -1, -1, 117, - 118, 119, -1, -1, 122, -1, -1, -1, -1, 127, - 128, -1, -1, -1, -1, 133, -1, 135, -1, -1, - -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, - -1, -1, -1, 151, -1, -1, 154, 155, 156, -1, - -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, - -1, 169, 170, -1, 172, 173, 174, 175, 176, 177, - 178, -1, -1, 181, 182, 183, 184, -1, -1, 187, - 188, -1, 190, 191, 192, -1, -1, 195, -1, -1, - -1, 199, 200, -1, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, -1, 214, -1, -1, 217, - 218, 219, -1, 221, -1, -1, -1, 225, 226, -1, - -1, -1, 230, 231, 232, 233, 234, -1, -1, -1, - 238, 239, 240, -1, -1, 243, -1, -1, -1, -1, - 248, 249, -1, -1, -1, 253, -1, 255, 256, -1, - 258, 259, -1, -1, -1, 263, -1, -1, 266, 267, - 268, -1, -1, 271, -1, -1, 274, 275, -1, -1, - -1, -1, -1, 281, 282, -1, 284, -1, 286, -1, - 288, 289, -1, -1, 292, -1, -1, -1, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, -1, - 318, 319, 320, 321, -1, 323, 324, 325, -1, -1, - -1, -1, 330, 331, 332, 333, 334, 335, -1, -1, - 338, 339, -1, 341, -1, 343, -1, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, -1, -1, 357, - -1, -1, 360, 361, 362, 363, -1, -1, -1, 367, - 368, -1, -1, 371, 372, -1, 374, 375, 376, -1, - 378, 379, 380, 381, -1, 383, 384, -1, -1, -1, - -1, -1, -1, -1, -1, 393, 394, 395, -1, 397, - 398, -1, 400, -1, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, -1, -1, 414, 415, 416, -1, - 418, -1, 420, 421, 422, 423, 424, -1, 426, 427, - 428, -1, -1, 431, -1, -1, -1, 435, 436, 437, - 438, 439, -1, -1, 442, 443, 444, 445, 446, -1, - 448, 449, -1, 451, 452, 453, -1, -1, 456, -1, - 458, -1, 460, 461, -1, 463, 464, -1, 466, -1, - 468, -1, -1, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, -1, 484, 485, -1, -1, - -1, 489, 490, 491, 492, -1, -1, -1, 496, -1, - -1, -1, 500, -1, 502, 503, 504, 505, 506, 507, - -1, 509, 510, 511, 512, 513, 514, -1, -1, -1, - -1, -1, -1, 521, 522, -1, 524, -1, -1, 527, - -1, -1, -1, 531, 532, 533, -1, -1, -1, 537, - -1, -1, 540, 541, -1, 543, 544, 545, 546, 547, - 548, -1, -1, 551, 552, 553, 554, -1, 556, 557, - -1, -1, 560, 561, 562, 563, -1, -1, 566, 567, - -1, 569, 570, 571, 572, -1, -1, -1, -1, -1, - 578, 579, 580, -1, -1, -1, 584, 585, 586, 587, - 588, 589, 590, -1, 592, 593, -1, 595, 596, -1, - -1, 599, -1, -1, 602, -1, 604, -1, 606, 607, - -1, -1, -1, -1, -1, -1, 614, -1, -1, 617, - -1, -1, -1, 621, 622, 623, 624, 625, 626, 627, - -1, -1, -1, -1, -1, -1, 634, 635, -1, 637, - 638, 639, -1, 5, 642, 7, 8, 9, 10, 11, - 12, -1, -1, 15, -1, -1, -1, 19, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4257, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 4317, -1, 4319, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 4450, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 4575, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 4684, -1, -1, -1, -1, -1, -1, + -1, 4692, 5, -1, 7, 8, 9, 10, 11, 12, + -1, -1, 15, -1, -1, -1, 19, -1, -1, 22, + -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, + -1, 34, 4723, -1, 37, 38, 39, 40, 41, 42, + 43, -1, 45, 46, 47, 48, 49, -1, 51, 52, + -1, -1, 55, 56, 57, 58, 59, -1, 61, 62, + 63, 64, 65, -1, 67, 68, 69, 70, 71, 72, + -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, + 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, + -1, 94, 95, 96, 97, 98, -1, 100, 101, 102, + 103, -1, -1, 106, 107, 108, 109, 110, 111, -1, + 113, 114, 115, -1, 117, 118, 119, 120, 121, 122, + -1, -1, -1, -1, 127, 128, 129, -1, -1, 132, + 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, + 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, + -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, + 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, + 173, 174, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, 185, 186, 187, 188, -1, 190, 191, 192, + 193, -1, 195, -1, -1, -1, 199, 200, -1, 202, + -1, 204, -1, 206, 207, 208, 209, 210, 211, 212, + -1, 214, 4903, 216, 217, 218, 219, -1, 221, 222, + 223, -1, 225, 226, -1, -1, -1, 230, 231, 232, + 233, 234, 235, -1, -1, 238, 239, 240, -1, -1, + 243, -1, -1, -1, 247, 248, 249, 250, -1, -1, + 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, + 263, -1, -1, 266, 267, 268, -1, 270, 271, -1, + 273, 274, 275, -1, -1, -1, -1, -1, 281, 282, + -1, 284, -1, 286, -1, 288, 289, -1, -1, 292, + -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, + 333, 334, 335, -1, -1, 338, 339, 340, 341, -1, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, -1, 356, 357, -1, -1, 360, 361, 362, + 363, 364, 365, 366, 367, 368, -1, 370, 371, 372, + -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, + 383, 384, -1, -1, -1, -1, -1, -1, -1, -1, + 393, 394, 395, -1, 397, 398, -1, 400, -1, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, + 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, + -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, + 443, 444, 445, 446, -1, 448, 449, -1, 451, 452, + 453, 454, 455, 456, -1, 458, -1, 460, 461, -1, + 463, 464, -1, 466, -1, 468, -1, 470, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + -1, 484, 485, -1, -1, -1, 489, 490, 491, 492, + -1, -1, -1, 496, -1, -1, -1, 500, -1, 502, + 503, 504, 505, 506, 507, -1, 509, 510, 511, 512, + 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, + -1, 524, -1, -1, 527, -1, -1, -1, 531, 532, + 533, -1, -1, -1, 537, 538, 539, 540, 541, -1, + 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, + 553, 554, 555, 556, 557, -1, -1, 560, 561, 562, + 563, -1, 565, 566, 567, -1, 569, 570, 571, 572, + -1, -1, -1, -1, 577, 578, 579, 580, -1, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 593, -1, 595, 596, -1, -1, 599, -1, -1, 602, + -1, 604, -1, 606, 607, -1, -1, 610, 611, 612, + 613, 614, -1, -1, 617, 618, -1, 620, 621, 622, + 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, + -1, 634, 635, -1, 637, 638, 639, -1, -1, 642, + -1, -1, -1, -1, -1, -1, -1, 650, 651, -1, + -1, -1, -1, 656, 657, -1, -1, 660, 661, -1, + -1, 664, 665, 5, -1, 7, 8, 9, 10, 11, + 12, 13, -1, 15, -1, -1, -1, 19, -1, -1, 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, - 32, -1, 34, -1, -1, 37, 38, -1, -1, -1, - 42, -1, -1, 45, 46, 47, -1, 49, -1, 51, - 52, -1, -1, 55, -1, -1, 58, 59, -1, 61, - 62, -1, 64, 65, -1, 67, 68, 69, 70, 71, + 32, -1, 34, -1, -1, 37, 38, 39, 40, 41, + 42, 43, -1, 45, 46, 47, -1, 49, -1, 51, + 52, -1, -1, 55, 56, 57, 58, 59, -1, 61, + 62, 63, 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, - 92, -1, 94, 95, 96, 97, 98, -1, 100, -1, - -1, 103, -1, -1, 106, -1, 108, -1, -1, 111, - -1, 113, -1, -1, -1, 117, 118, 119, -1, -1, - 122, -1, -1, -1, -1, 127, 128, -1, -1, -1, + 92, -1, 94, 95, 96, 97, 98, -1, 100, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, 111, + -1, 113, 114, 115, -1, 117, 118, 119, 120, 121, + 122, -1, -1, -1, -1, 127, 128, 129, -1, -1, 132, 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, -1, - 172, 173, 174, 175, 176, 177, 178, -1, -1, 181, - 182, 183, 184, -1, -1, 187, 188, -1, 190, 191, - 192, -1, -1, 195, -1, -1, -1, 199, 200, -1, + 172, 173, 174, 175, 176, 177, 178, 179, -1, 181, + 182, 183, 184, 185, 186, 187, 188, -1, 190, 191, + 192, 193, -1, 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, -1, 214, -1, -1, 217, 218, 219, -1, 221, - -1, -1, -1, 225, 226, -1, -1, -1, 230, 231, - 232, 233, 234, -1, -1, -1, 238, 239, 240, -1, - -1, 243, -1, -1, -1, -1, 248, 249, -1, -1, - -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, - -1, 263, -1, -1, 266, 267, 268, -1, -1, 271, - -1, -1, 274, 275, 276, -1, -1, -1, -1, 281, - 282, -1, 284, -1, 286, -1, 288, 289, -1, -1, - -1, -1, -1, -1, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, -1, 318, 319, 320, 321, - -1, 323, 324, 325, -1, -1, -1, -1, 330, 331, - 332, 333, 334, 335, -1, -1, 338, 339, -1, 341, - -1, 343, -1, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, -1, -1, 357, -1, -1, 360, 361, - 362, 363, -1, -1, -1, 367, 368, -1, -1, -1, - 372, -1, 374, 375, 376, -1, 378, 379, 380, 381, - -1, 383, 384, -1, -1, -1, -1, -1, -1, -1, - -1, 393, 394, 395, -1, -1, 398, -1, 400, -1, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - -1, -1, 414, 415, 416, -1, 418, -1, 420, 421, - 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, - -1, -1, -1, 435, 436, 437, 438, 439, -1, -1, - 442, 443, 444, 445, 446, -1, 448, 449, -1, 451, - 452, 453, -1, -1, 456, -1, 458, -1, 460, 461, - -1, 463, 464, -1, 466, -1, 468, -1, -1, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, -1, 484, 485, -1, -1, -1, 489, 490, 491, - 492, -1, -1, -1, 496, -1, -1, -1, 500, -1, - 502, 503, 504, 505, 506, 507, -1, 509, 510, 511, - 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, - 522, -1, 524, -1, -1, 527, -1, -1, -1, 531, - 532, 533, -1, -1, -1, 537, -1, -1, 540, 541, - -1, 543, 544, 545, 546, 547, 548, -1, -1, 551, - 552, 553, 554, -1, 556, 557, -1, -1, 560, 561, - 562, 563, -1, 565, 566, 567, -1, 569, 570, 571, - 572, -1, -1, -1, -1, -1, 578, 579, 580, -1, - -1, -1, 584, 585, 586, 587, -1, 589, 590, -1, - 592, 593, -1, 595, 596, -1, -1, 599, -1, -1, - 602, -1, 604, -1, 606, 607, -1, -1, -1, -1, - -1, -1, 614, -1, -1, 617, -1, -1, -1, 621, - 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, - -1, -1, 634, 635, -1, 637, 638, 639, -1, 5, - 642, 7, 8, 9, 10, 11, 12, -1, -1, 15, - -1, -1, -1, 19, -1, -1, 22, -1, 24, 25, - 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, - -1, -1, 38, -1, -1, -1, 42, -1, -1, 45, - 46, 47, -1, 49, -1, 51, 52, -1, -1, 55, - -1, -1, 58, 59, -1, 61, 62, -1, 64, 65, - -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, - 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, - 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, - 96, 97, 98, -1, 100, -1, -1, 103, -1, -1, - 106, -1, 108, -1, -1, 111, -1, 113, -1, -1, - -1, 117, 118, 119, -1, -1, 122, -1, -1, -1, - -1, 127, 128, -1, -1, -1, -1, 133, -1, 135, - -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, - 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, - 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, - 166, 167, -1, 169, 170, -1, 172, 173, 174, 175, - 176, 177, 178, -1, -1, 181, 182, 183, 184, -1, - -1, 187, 188, -1, 190, 191, 192, -1, -1, 195, - -1, -1, -1, 199, 200, -1, 202, -1, 204, -1, - 206, 207, 208, 209, 210, 211, 212, -1, 214, -1, - -1, 217, 218, 219, -1, 221, -1, -1, -1, 225, - 226, -1, -1, -1, 230, 231, 232, 233, 234, -1, - -1, -1, 238, 239, 240, -1, -1, 243, -1, -1, - -1, -1, 248, 249, -1, -1, -1, 253, -1, 255, - 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, - 266, 267, 268, -1, -1, 271, -1, -1, 274, 275, - -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, - 286, -1, 288, 289, -1, -1, 292, -1, -1, -1, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, -1, 318, 319, 320, 321, -1, 323, 324, 325, - -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, - -1, -1, 338, 339, -1, 341, -1, 343, -1, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, - -1, 357, -1, -1, 360, 361, 362, 363, -1, -1, - -1, 367, 368, -1, -1, 371, 372, -1, 374, 375, - 376, -1, 378, 379, 380, 381, -1, 383, 384, -1, - -1, -1, -1, -1, -1, -1, -1, 393, 394, 395, - -1, 397, 398, -1, 400, -1, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, -1, -1, 414, 415, - 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, - 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, - 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, - 446, -1, 448, 449, -1, 451, 452, 453, -1, -1, - 456, -1, 458, -1, 460, 461, -1, 463, 464, -1, - 466, -1, 468, -1, -1, 471, 472, 473, 474, 475, - 476, 477, 478, 479, 480, 481, 482, -1, 484, 485, - -1, -1, -1, 489, 490, 491, 492, -1, -1, -1, - 496, -1, -1, -1, 500, -1, 502, 503, 504, 505, - 506, 507, -1, 509, 510, 511, 512, 513, 514, -1, - -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, - -1, 527, -1, -1, -1, 531, 532, 533, -1, -1, - -1, 537, -1, -1, 540, 541, -1, 543, 544, 545, - 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, - 556, 557, -1, -1, 560, 561, 562, 563, -1, -1, - 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, - -1, -1, 578, 579, 580, -1, -1, -1, 584, 585, - 586, 587, 588, 589, 590, -1, 592, 593, -1, 595, - 596, -1, -1, 599, -1, -1, 602, -1, 604, -1, - 606, 607, -1, -1, -1, -1, -1, -1, 614, -1, - -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, - 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, - -1, 637, 638, 639, -1, 5, 642, 7, 8, 9, + 212, -1, 214, -1, 216, 217, 218, 219, -1, 221, + 222, 223, -1, 225, 226, -1, -1, -1, 230, 231, + 232, 233, 234, 235, -1, -1, 238, 239, 240, -1, + -1, 243, -1, -1, -1, 247, 248, 249, 250, -1, + -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, + -1, 263, -1, -1, 266, 267, 268, -1, -1, 271, + -1, 273, 274, 275, -1, -1, -1, -1, -1, 281, + 282, -1, 284, -1, 286, -1, 288, 289, -1, -1, + 292, -1, -1, -1, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, -1, -1, -1, 330, 331, + 332, 333, 334, 335, -1, -1, 338, 339, 340, 341, + -1, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, -1, 356, 357, -1, -1, 360, 361, + 362, 363, 364, 365, 366, 367, 368, -1, 370, 371, + 372, -1, 374, 375, 376, 377, 378, 379, 380, 381, + -1, 383, 384, -1, -1, -1, -1, -1, -1, -1, + -1, 393, 394, 395, -1, 397, 398, -1, 400, -1, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, -1, 414, 415, 416, -1, 418, -1, 420, 421, + 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, + -1, -1, -1, 435, 436, 437, 438, 439, -1, -1, + 442, 443, 444, 445, 446, -1, 448, 449, -1, 451, + 452, 453, 454, 455, 456, -1, 458, -1, 460, 461, + -1, 463, 464, -1, 466, -1, 468, -1, 470, 471, + 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, + 482, -1, 484, 485, -1, -1, -1, 489, 490, 491, + 492, -1, -1, -1, 496, -1, -1, -1, 500, -1, + 502, 503, 504, 505, 506, 507, -1, 509, 510, 511, + 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, + 522, -1, 524, -1, -1, 527, -1, -1, -1, 531, + 532, 533, -1, -1, -1, 537, 538, 539, 540, 541, + -1, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, -1, -1, 560, 561, + 562, 563, -1, 565, 566, 567, -1, 569, 570, 571, + 572, -1, -1, -1, -1, -1, 578, 579, 580, -1, + 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, + 592, 593, -1, 595, 596, -1, -1, 599, -1, -1, + 602, -1, 604, -1, 606, 607, -1, -1, 610, 611, + 612, 613, 614, -1, -1, 617, 618, -1, 620, 621, + 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, + -1, -1, 634, 635, -1, 637, 638, 639, -1, -1, + 642, -1, -1, -1, -1, -1, -1, -1, 650, 651, + -1, -1, -1, -1, 656, 657, -1, -1, 660, 661, + -1, -1, 664, 665, 5, -1, 7, 8, 9, 10, + 11, 12, -1, -1, 15, -1, -1, -1, 19, -1, + -1, 22, -1, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, 34, -1, -1, 37, 38, 39, 40, + 41, 42, 43, -1, 45, 46, 47, -1, 49, -1, + 51, 52, -1, -1, 55, 56, 57, 58, 59, -1, + 61, 62, 63, 64, 65, -1, 67, 68, 69, 70, + 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, + -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, + 91, 92, -1, 94, 95, 96, 97, 98, -1, 100, + 101, 102, 103, -1, -1, 106, 107, 108, 109, 110, + 111, -1, 113, 114, 115, -1, 117, 118, 119, 120, + 121, 122, -1, -1, -1, -1, 127, 128, 129, -1, + -1, 132, 133, -1, 135, -1, -1, -1, -1, 140, + -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, + 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, + -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, + -1, 172, 173, 174, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, 185, 186, 187, 188, -1, 190, + 191, 192, 193, -1, 195, -1, -1, -1, 199, 200, + 201, 202, -1, 204, -1, 206, 207, 208, 209, 210, + 211, 212, -1, 214, -1, 216, 217, 218, 219, -1, + 221, 222, 223, -1, 225, 226, -1, -1, -1, 230, + 231, 232, 233, 234, 235, -1, -1, 238, 239, 240, + -1, -1, 243, -1, -1, -1, 247, 248, 249, 250, + -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, + -1, -1, 263, -1, -1, 266, 267, 268, -1, -1, + 271, -1, 273, 274, 275, -1, -1, -1, -1, -1, + 281, 282, -1, 284, -1, 286, -1, 288, 289, -1, + -1, 292, -1, -1, -1, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, -1, -1, -1, -1, 330, + 331, 332, 333, 334, 335, -1, -1, 338, 339, 340, + 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, -1, 356, 357, -1, -1, 360, + 361, 362, 363, 364, 365, 366, 367, 368, -1, 370, + 371, 372, -1, 374, 375, 376, -1, 378, 379, 380, + 381, -1, 383, 384, -1, -1, -1, -1, -1, -1, + -1, -1, 393, 394, 395, -1, 397, 398, -1, 400, + -1, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, -1, 414, 415, 416, -1, 418, -1, 420, + 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, + 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, + -1, 442, 443, 444, 445, 446, -1, 448, 449, -1, + 451, 452, 453, 454, 455, 456, -1, 458, -1, 460, + 461, -1, 463, 464, -1, 466, -1, 468, -1, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, -1, 484, 485, -1, -1, -1, 489, 490, + 491, 492, -1, -1, -1, 496, -1, -1, -1, 500, + -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, + 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, + 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, + 531, 532, 533, -1, -1, -1, 537, 538, 539, 540, + 541, -1, 543, 544, 545, 546, 547, 548, 549, 550, + 551, 552, 553, 554, 555, 556, 557, -1, -1, 560, + 561, 562, 563, -1, 565, 566, 567, -1, 569, 570, + 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, + -1, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 592, 593, -1, 595, 596, -1, -1, 599, -1, + -1, 602, -1, 604, -1, 606, 607, -1, -1, 610, + 611, 612, 613, 614, -1, -1, 617, 618, -1, 620, + 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, + -1, -1, -1, 634, 635, -1, 637, 638, 639, -1, + -1, 642, -1, -1, -1, -1, -1, -1, -1, 650, + 651, -1, -1, -1, -1, 656, 657, -1, -1, 660, + 661, -1, -1, 664, 665, 5, -1, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, 19, -1, -1, 22, -1, 24, 25, 26, 27, 28, 29, - 30, 31, 32, -1, 34, -1, -1, -1, 38, -1, - -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, - -1, 51, 52, -1, -1, 55, -1, -1, 58, 59, - -1, 61, 62, -1, 64, 65, -1, 67, 68, 69, + 30, 31, 32, -1, 34, -1, -1, 37, 38, 39, + 40, 41, 42, 43, -1, 45, 46, 47, -1, 49, + -1, 51, 52, -1, -1, 55, 56, 57, 58, 59, + -1, 61, 62, 63, 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, -1, - 100, -1, -1, 103, -1, -1, 106, -1, 108, 109, - -1, 111, -1, 113, -1, -1, -1, 117, 118, 119, - -1, -1, 122, -1, -1, -1, -1, 127, 128, -1, - -1, -1, -1, 133, -1, 135, -1, -1, -1, -1, + 100, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, 111, -1, 113, 114, 115, -1, 117, 118, 119, + 120, 121, 122, -1, -1, -1, -1, 127, 128, 129, + -1, -1, 132, 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, 169, - 170, -1, 172, 173, 174, 175, 176, 177, 178, -1, - -1, 181, 182, 183, 184, -1, -1, 187, 188, -1, - 190, 191, 192, -1, -1, 195, -1, -1, -1, 199, - 200, -1, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, -1, 214, -1, -1, 217, 218, 219, - -1, 221, -1, -1, -1, 225, 226, -1, -1, -1, - 230, 231, 232, 233, 234, -1, -1, -1, 238, 239, - 240, -1, -1, 243, -1, -1, -1, -1, 248, 249, - -1, -1, -1, 253, -1, 255, 256, -1, 258, 259, + 170, -1, 172, 173, 174, 175, 176, 177, 178, 179, + -1, 181, 182, 183, 184, 185, 186, 187, 188, -1, + 190, 191, 192, 193, -1, 195, -1, -1, -1, 199, + 200, 201, 202, -1, 204, -1, 206, 207, 208, 209, + 210, 211, 212, -1, 214, -1, 216, 217, 218, 219, + -1, 221, 222, 223, -1, 225, 226, -1, -1, -1, + 230, 231, 232, 233, 234, 235, -1, -1, 238, 239, + 240, -1, -1, 243, -1, -1, -1, 247, 248, 249, + 250, -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, -1, - -1, 271, -1, -1, 274, 275, 276, -1, -1, -1, + -1, 271, -1, 273, 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, 289, - -1, -1, -1, -1, -1, -1, 296, 297, 298, 299, + -1, -1, 292, -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, -1, 318, 319, - 320, 321, -1, 323, 324, 325, -1, -1, -1, -1, + 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, 339, - -1, 341, -1, 343, -1, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, -1, -1, 357, -1, -1, - 360, 361, 362, 363, -1, -1, -1, 367, 368, -1, - -1, -1, 372, -1, 374, 375, 376, -1, 378, 379, + 340, 341, -1, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, -1, 356, 357, -1, -1, + 360, 361, 362, 363, 364, 365, 366, 367, 368, -1, + 370, 371, 372, -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, -1, - -1, -1, -1, 393, 394, 395, -1, -1, 398, -1, + -1, -1, -1, 393, 394, 395, -1, 397, 398, -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, -1, -1, 414, 415, 416, -1, 418, -1, + 410, 411, 412, -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, 449, - -1, 451, 452, 453, -1, -1, 456, -1, 458, -1, + -1, 451, 452, 453, 454, 455, 456, -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, -1, - -1, 471, 472, 473, 474, 475, 476, 477, 478, 479, + 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, -1, - -1, 531, 532, 533, -1, -1, -1, 537, -1, -1, - 540, 541, -1, 543, 544, 545, 546, 547, 548, -1, - -1, 551, 552, 553, 554, -1, 556, 557, -1, -1, + -1, 531, 532, 533, -1, -1, -1, 537, 538, 539, + 540, 541, -1, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, -1, -1, 560, 561, 562, 563, -1, 565, 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, 579, - 580, -1, -1, -1, 584, 585, 586, 587, -1, 589, - 590, -1, 592, 593, -1, 595, 596, -1, -1, 599, + 580, -1, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 591, 592, 593, -1, 595, 596, -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, -1, - -1, -1, -1, -1, 614, -1, -1, 617, -1, -1, - -1, 621, 622, 623, 624, 625, 626, 627, -1, -1, + 610, 611, 612, 613, 614, -1, -1, 617, 618, -1, + 620, 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, 639, - -1, 5, 642, 7, 8, 9, 10, 11, 12, 13, - -1, 15, -1, -1, -1, 19, -1, -1, 22, -1, - 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, - 34, -1, -1, -1, 38, -1, -1, -1, 42, -1, - -1, 45, 46, 47, -1, 49, -1, 51, 52, -1, - -1, 55, -1, -1, 58, 59, -1, 61, 62, -1, - 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, - 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, - 94, 95, 96, 97, 98, -1, 100, -1, -1, 103, - -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, - -1, -1, -1, 117, 118, 119, -1, -1, 122, -1, - -1, -1, -1, 127, 128, -1, -1, -1, -1, 133, - -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, - 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, - 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, - -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, - 174, 175, 176, 177, 178, -1, -1, 181, 182, 183, - 184, -1, -1, 187, 188, -1, 190, 191, 192, -1, - -1, 195, -1, -1, -1, 199, 200, -1, 202, -1, - 204, -1, 206, 207, 208, 209, 210, 211, 212, -1, - 214, -1, -1, 217, 218, 219, -1, 221, -1, -1, - -1, 225, 226, -1, -1, -1, 230, 231, 232, 233, - 234, -1, -1, -1, 238, 239, 240, -1, -1, 243, - -1, -1, -1, -1, 248, 249, -1, -1, -1, 253, - -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, - -1, -1, 266, 267, 268, -1, -1, 271, -1, -1, - 274, 275, 276, -1, -1, -1, -1, 281, 282, -1, - 284, -1, 286, -1, 288, 289, -1, -1, -1, -1, - -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, -1, 318, 319, 320, 321, -1, 323, - 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, - 334, 335, -1, -1, 338, 339, -1, 341, -1, 343, - -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, -1, -1, 357, -1, -1, 360, 361, 362, 363, - -1, -1, -1, 367, 368, -1, -1, -1, 372, -1, - 374, 375, 376, -1, 378, 379, 380, 381, -1, 383, - 384, -1, -1, -1, -1, -1, -1, -1, -1, 393, - 394, 395, -1, -1, 398, -1, 400, -1, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, -1, -1, - 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, - 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, - -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, - 444, 445, 446, -1, 448, 449, -1, 451, 452, 453, - -1, -1, 456, -1, 458, -1, 460, 461, -1, 463, - 464, -1, 466, -1, 468, -1, -1, 471, 472, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, - 484, 485, -1, -1, -1, 489, 490, 491, 492, -1, - -1, -1, 496, -1, -1, -1, 500, -1, 502, 503, - 504, 505, 506, 507, -1, 509, 510, 511, 512, 513, - 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, - 524, -1, -1, 527, -1, -1, -1, 531, 532, 533, - -1, -1, -1, 537, -1, -1, 540, 541, -1, 543, - 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, - 554, -1, 556, 557, -1, -1, 560, 561, 562, 563, - -1, 565, 566, 567, -1, 569, 570, 571, 572, -1, - -1, -1, -1, -1, 578, 579, 580, -1, -1, -1, - 584, 585, 586, 587, -1, 589, 590, -1, 592, 593, - -1, 595, 596, -1, -1, 599, -1, -1, 602, -1, - 604, -1, 606, 607, -1, -1, -1, -1, -1, -1, - 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, - 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, - 634, 635, -1, 637, 638, 639, -1, 5, 642, 7, + -1, -1, 642, -1, -1, -1, -1, -1, -1, -1, + 650, 651, -1, -1, -1, -1, 656, 657, -1, -1, + 660, 661, -1, -1, 664, 665, 5, -1, 7, 8, + 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, + 19, -1, -1, 22, -1, 24, 25, 26, 27, 28, + 29, 30, 31, 32, -1, 34, -1, -1, 37, 38, + 39, 40, 41, 42, 43, -1, 45, 46, 47, -1, + 49, -1, 51, 52, -1, -1, 55, 56, 57, 58, + 59, -1, 61, 62, 63, 64, 65, -1, 67, 68, + 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, + 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, + 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, + -1, 100, 101, 102, 103, -1, -1, 106, 107, 108, + 109, 110, 111, -1, 113, 114, 115, -1, 117, 118, + 119, 120, 121, 122, -1, -1, -1, -1, 127, 128, + 129, -1, -1, 132, 133, -1, 135, -1, -1, -1, + -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, + -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, + -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, + 169, 170, -1, 172, 173, 174, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, 185, 186, 187, 188, + -1, 190, 191, 192, 193, -1, 195, -1, -1, -1, + 199, 200, 201, 202, -1, 204, -1, 206, 207, 208, + 209, 210, 211, 212, -1, 214, -1, 216, 217, 218, + 219, -1, 221, 222, 223, -1, 225, 226, -1, -1, + -1, 230, 231, 232, 233, 234, 235, -1, -1, 238, + 239, 240, -1, -1, 243, -1, -1, -1, 247, 248, + 249, 250, -1, -1, 253, -1, 255, 256, -1, 258, + 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, + -1, -1, 271, -1, 273, 274, 275, -1, -1, -1, + -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, + 289, -1, -1, 292, -1, -1, -1, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, -1, -1, + -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, + 339, 340, 341, -1, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, -1, 356, 357, -1, + -1, 360, 361, 362, 363, 364, 365, 366, 367, 368, + -1, 370, 371, 372, -1, 374, 375, 376, -1, 378, + 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 394, 395, -1, 397, 398, + -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, -1, 414, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, + -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, + 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, + 449, -1, 451, 452, 453, 454, 455, 456, -1, 458, + -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, + -1, 470, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, + 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, + -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, + 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, + -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, + -1, -1, 531, 532, 533, -1, -1, -1, 537, 538, + 539, 540, 541, -1, 543, 544, 545, 546, 547, 548, + 549, 550, 551, 552, 553, 554, 555, 556, 557, -1, + -1, 560, 561, 562, 563, -1, 565, 566, 567, -1, + 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, + 579, 580, -1, 582, 583, 584, 585, 586, 587, 588, + 589, 590, 591, 592, 593, -1, 595, 596, -1, -1, + 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, + -1, 610, 611, 612, 613, 614, -1, -1, 617, 618, + -1, 620, 621, 622, 623, 624, 625, 626, 627, -1, + -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, + 639, -1, -1, 642, -1, -1, -1, -1, -1, -1, + -1, 650, 651, -1, -1, -1, -1, 656, 657, -1, + -1, 660, 661, -1, -1, 664, 665, 5, -1, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, 19, -1, -1, 22, -1, 24, 25, 26, 27, - 28, 29, 30, 31, 32, -1, 34, -1, -1, -1, - 38, -1, -1, -1, 42, -1, -1, 45, 46, 47, - -1, 49, -1, 51, 52, -1, -1, 55, -1, -1, - 58, 59, -1, 61, 62, -1, 64, 65, -1, 67, + 28, 29, 30, 31, 32, -1, 34, -1, -1, 37, + 38, 39, 40, 41, 42, 43, -1, 45, 46, 47, + -1, 49, -1, 51, 52, -1, -1, 55, 56, 57, + 58, 59, -1, 61, 62, 63, 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, 97, - 98, -1, 100, -1, -1, 103, -1, -1, 106, -1, - 108, -1, 110, 111, -1, 113, -1, -1, -1, 117, - 118, 119, -1, -1, 122, -1, -1, -1, -1, 127, - 128, -1, -1, -1, -1, 133, -1, 135, -1, -1, + 98, -1, 100, 101, 102, 103, -1, -1, 106, 107, + 108, 109, 110, 111, -1, 113, 114, 115, -1, 117, + 118, 119, 120, 121, 122, -1, -1, -1, -1, 127, + 128, 129, -1, -1, 132, 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, 177, - 178, -1, -1, 181, 182, 183, 184, -1, -1, 187, - 188, -1, 190, 191, 192, -1, -1, 195, -1, -1, + 178, 179, -1, 181, 182, 183, 184, 185, 186, 187, + 188, -1, 190, 191, 192, 193, -1, 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, -1, 214, -1, -1, 217, - 218, 219, -1, 221, -1, -1, -1, 225, 226, -1, - -1, -1, 230, 231, 232, 233, 234, -1, -1, -1, - 238, 239, 240, -1, -1, 243, -1, -1, -1, -1, - 248, 249, -1, -1, -1, 253, -1, 255, 256, -1, + 208, 209, 210, 211, 212, -1, 214, -1, 216, 217, + 218, 219, -1, 221, 222, 223, -1, 225, 226, -1, + -1, -1, 230, 231, 232, 233, 234, 235, -1, -1, + 238, 239, 240, -1, -1, 243, -1, -1, -1, 247, + 248, 249, 250, -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, 267, - 268, -1, -1, 271, -1, -1, 274, 275, 276, -1, + 268, -1, -1, 271, -1, 273, 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, -1, - 288, 289, -1, -1, -1, -1, -1, -1, 296, 297, + 288, 289, -1, -1, 292, -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, -1, - 318, 319, 320, 321, -1, 323, 324, 325, -1, -1, + 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, -1, - 338, 339, -1, 341, -1, 343, -1, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, -1, -1, 357, - -1, -1, 360, 361, 362, 363, -1, -1, -1, 367, - 368, -1, -1, -1, 372, -1, 374, 375, 376, -1, + 338, 339, 340, 341, -1, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, -1, 356, 357, + -1, -1, 360, 361, 362, 363, 364, 365, 366, 367, + 368, -1, 370, 371, 372, -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, -1, - -1, -1, -1, -1, -1, 393, 394, 395, -1, -1, + -1, -1, -1, -1, -1, 393, 394, 395, -1, 397, 398, -1, 400, -1, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, -1, -1, 414, 415, 416, -1, + 408, 409, 410, 411, 412, -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, -1, - 448, 449, -1, 451, 452, 453, -1, -1, 456, -1, + 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, -1, - 468, -1, -1, 471, 472, 473, 474, 475, 476, 477, + 468, -1, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, 537, - -1, -1, 540, 541, -1, 543, 544, 545, 546, 547, - 548, -1, -1, 551, 552, 553, 554, -1, 556, 557, + 538, 539, 540, 541, -1, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, -1, -1, 560, 561, 562, 563, -1, 565, 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, -1, - 578, 579, 580, -1, -1, -1, 584, 585, 586, 587, - -1, 589, 590, -1, 592, 593, -1, 595, 596, -1, + 578, 579, 580, -1, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 591, 592, 593, -1, 595, 596, -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, 607, - -1, -1, -1, -1, -1, -1, 614, -1, -1, 617, - -1, -1, -1, 621, 622, 623, 624, 625, 626, 627, + -1, -1, 610, 611, 612, 613, 614, -1, -1, 617, + 618, -1, 620, 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, 637, - 638, 639, -1, 5, 642, 7, 8, 9, 10, 11, - 12, -1, -1, 15, -1, -1, -1, 19, -1, -1, - 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, - 32, -1, 34, -1, -1, -1, 38, -1, -1, -1, - 42, -1, -1, 45, 46, 47, -1, 49, -1, 51, - 52, -1, -1, 55, -1, -1, 58, 59, -1, 61, - 62, -1, 64, 65, -1, 67, 68, 69, 70, 71, - 72, -1, 74, 75, 76, 77, 78, 79, 80, -1, - 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, - 92, -1, 94, 95, 96, 97, 98, -1, 100, -1, - -1, 103, -1, -1, 106, -1, 108, -1, -1, 111, - -1, 113, -1, -1, -1, 117, 118, 119, -1, -1, - 122, -1, -1, -1, -1, 127, 128, -1, -1, -1, - 132, 133, -1, 135, -1, -1, -1, -1, 140, -1, - 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, - -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, - 162, 163, -1, 165, 166, 167, -1, 169, 170, -1, - 172, 173, 174, 175, 176, 177, 178, -1, -1, 181, - 182, 183, 184, -1, -1, 187, 188, -1, 190, 191, - 192, -1, -1, 195, -1, -1, -1, 199, 200, -1, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, -1, 214, -1, -1, 217, 218, 219, -1, 221, - -1, -1, -1, 225, 226, -1, -1, -1, 230, 231, - 232, 233, 234, -1, -1, -1, 238, 239, 240, -1, - -1, 243, -1, -1, -1, -1, 248, 249, -1, -1, - -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, - -1, 263, -1, -1, 266, 267, 268, -1, -1, 271, - -1, -1, 274, 275, 276, -1, -1, -1, -1, 281, - 282, -1, 284, -1, 286, -1, 288, 289, -1, -1, - -1, -1, -1, -1, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, -1, 318, 319, 320, 321, - -1, 323, 324, 325, -1, -1, -1, -1, 330, 331, - 332, 333, 334, 335, -1, -1, 338, 339, -1, 341, - -1, 343, -1, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, -1, -1, 357, -1, -1, 360, 361, - 362, 363, -1, -1, -1, 367, 368, -1, -1, -1, - 372, -1, 374, 375, 376, -1, 378, 379, 380, 381, - -1, 383, 384, -1, -1, -1, -1, -1, -1, -1, - -1, 393, 394, 395, -1, -1, 398, -1, 400, -1, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - -1, -1, 414, 415, 416, -1, 418, -1, 420, 421, - 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, - -1, -1, -1, 435, 436, 437, 438, 439, -1, -1, - 442, 443, 444, 445, 446, -1, 448, 449, -1, 451, - 452, 453, -1, -1, 456, -1, 458, -1, 460, 461, - -1, 463, 464, -1, 466, -1, 468, -1, -1, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, -1, 484, 485, -1, -1, -1, 489, 490, 491, - 492, -1, -1, -1, 496, -1, -1, -1, 500, -1, - 502, 503, 504, 505, 506, 507, -1, 509, 510, 511, - 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, - 522, -1, 524, -1, -1, 527, -1, -1, -1, 531, - 532, 533, -1, -1, -1, 537, -1, -1, 540, 541, - -1, 543, 544, 545, 546, 547, 548, -1, -1, 551, - 552, 553, 554, -1, 556, 557, -1, -1, 560, 561, - 562, 563, -1, 565, 566, 567, -1, 569, 570, 571, - 572, -1, -1, -1, -1, -1, 578, 579, 580, -1, - -1, -1, 584, 585, 586, 587, -1, 589, 590, -1, - 592, 593, -1, 595, 596, -1, -1, 599, -1, -1, - 602, -1, 604, -1, 606, 607, -1, -1, -1, -1, - -1, -1, 614, -1, -1, 617, -1, -1, -1, 621, - 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, - -1, -1, 634, 635, -1, 637, 638, 639, -1, 5, - 642, 7, 8, 9, 10, 11, 12, -1, -1, 15, + 638, 639, -1, -1, 642, -1, -1, -1, -1, -1, + -1, -1, 650, 651, -1, -1, -1, -1, 656, 657, + -1, -1, 660, 661, -1, -1, 664, 665, 5, -1, + 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, + -1, -1, 19, -1, -1, 22, -1, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, + 37, 38, 39, 40, 41, 42, 43, -1, 45, 46, + 47, -1, 49, -1, 51, 52, -1, -1, 55, 56, + 57, 58, 59, -1, 61, 62, 63, 64, 65, -1, + 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, + 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, + 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, + 97, 98, -1, 100, 101, 102, 103, -1, -1, 106, + 107, 108, 109, 110, 111, -1, 113, 114, 115, -1, + 117, 118, 119, 120, 121, 122, -1, -1, -1, -1, + 127, 128, 129, -1, -1, 132, 133, -1, 135, -1, + -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, + -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, + -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, + 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, + 177, 178, 179, -1, 181, 182, 183, 184, 185, 186, + 187, 188, -1, 190, 191, 192, 193, -1, 195, -1, + -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, + 207, 208, 209, 210, 211, 212, -1, 214, -1, 216, + 217, 218, 219, -1, 221, 222, 223, -1, 225, 226, + -1, -1, -1, 230, 231, 232, 233, 234, 235, -1, + -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, + 247, 248, 249, 250, -1, -1, 253, -1, 255, 256, + -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, + 267, 268, -1, -1, 271, -1, 273, 274, 275, -1, + -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, + -1, 288, 289, -1, -1, 292, -1, -1, -1, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, + -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, + -1, 338, 339, 340, 341, -1, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, -1, 356, + 357, -1, -1, 360, 361, 362, 363, 364, 365, 366, + 367, 368, -1, 370, 371, 372, -1, 374, 375, 376, + -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, + -1, -1, -1, -1, -1, -1, 393, 394, 395, -1, + 397, 398, -1, 400, -1, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, + -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, + 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, + 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, + -1, 448, 449, -1, 451, 452, 453, 454, 455, 456, + -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, + -1, 468, -1, 470, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, + -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, + -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, + 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, + -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, + 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, + 537, 538, 539, 540, 541, -1, 543, 544, 545, 546, + 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, + 557, -1, -1, 560, 561, 562, 563, -1, 565, 566, + 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, + -1, 578, 579, 580, -1, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, -1, 595, 596, + -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, + 607, -1, -1, 610, 611, 612, 613, 614, -1, -1, + 617, 618, -1, 620, 621, 622, 623, 624, 625, 626, + 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, + 637, 638, 639, -1, -1, 642, -1, -1, -1, -1, + -1, -1, -1, 650, 651, -1, -1, -1, -1, 656, + 657, -1, -1, 660, 661, -1, -1, 664, 665, 5, + -1, 7, 8, 9, 10, 11, 12, 13, -1, 15, -1, -1, -1, 19, -1, -1, 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, - -1, 37, 38, -1, -1, -1, 42, -1, -1, 45, + -1, 37, 38, 39, 40, 41, 42, 43, -1, 45, 46, 47, -1, 49, -1, 51, 52, -1, -1, 55, - -1, -1, 58, 59, -1, 61, 62, -1, 64, 65, + 56, 57, 58, 59, -1, 61, 62, 63, 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, - 96, 97, 98, -1, 100, -1, -1, 103, -1, -1, - 106, -1, 108, -1, -1, 111, -1, 113, -1, -1, - -1, 117, 118, 119, -1, -1, 122, -1, -1, -1, - -1, 127, 128, -1, -1, -1, -1, 133, -1, 135, + 96, 97, 98, -1, 100, 101, 102, 103, -1, -1, + 106, 107, 108, 109, 110, 111, -1, 113, 114, 115, + -1, 117, 118, 119, 120, 121, 122, -1, -1, -1, + -1, 127, 128, 129, -1, -1, 132, 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, 175, - 176, 177, 178, -1, -1, 181, 182, 183, 184, -1, - -1, 187, 188, -1, 190, 191, 192, -1, -1, 195, + 176, 177, 178, 179, -1, 181, 182, 183, 184, 185, + 186, 187, 188, -1, 190, 191, 192, 193, -1, 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, 212, -1, 214, -1, - -1, 217, 218, 219, -1, 221, -1, -1, -1, 225, - 226, -1, -1, -1, 230, 231, 232, 233, 234, -1, + 216, 217, 218, 219, -1, 221, 222, 223, -1, 225, + 226, -1, -1, -1, 230, 231, 232, 233, 234, 235, -1, -1, 238, 239, 240, -1, -1, 243, -1, -1, - -1, -1, 248, 249, -1, -1, -1, 253, -1, 255, + -1, 247, 248, 249, 250, -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, - 266, 267, 268, -1, -1, 271, -1, -1, 274, 275, - 276, -1, -1, -1, -1, 281, 282, -1, 284, -1, - 286, -1, 288, 289, -1, -1, -1, -1, -1, -1, + 266, 267, 268, -1, -1, 271, -1, 273, 274, 275, + -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, + 286, -1, 288, 289, -1, -1, 292, -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, -1, 318, 319, 320, 321, -1, 323, 324, 325, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, - -1, -1, 338, 339, -1, 341, -1, 343, -1, 345, + -1, -1, 338, 339, 340, 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, - -1, 357, -1, -1, 360, 361, 362, 363, -1, -1, - -1, 367, 368, -1, -1, -1, 372, -1, 374, 375, + 356, 357, -1, -1, 360, 361, 362, 363, 364, -1, + 366, 367, 368, -1, 370, 371, 372, -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, -1, -1, -1, -1, 393, 394, 395, - -1, -1, 398, -1, 400, -1, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, -1, -1, 414, 415, + -1, 397, 398, -1, 400, -1, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, - 446, -1, 448, 449, -1, 451, 452, 453, -1, -1, + 446, -1, 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, 458, -1, 460, 461, -1, 463, 464, -1, - 466, -1, 468, -1, -1, 471, 472, 473, 474, 475, + 466, -1, 468, -1, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, 531, 532, 533, -1, -1, - -1, 537, -1, -1, 540, 541, -1, 543, 544, 545, - 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, + -1, 537, 538, 539, 540, 541, -1, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, -1, -1, 560, 561, 562, 563, -1, 565, 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, - -1, -1, 578, 579, 580, -1, -1, -1, 584, 585, - 586, 587, -1, 589, 590, -1, 592, 593, -1, 595, + -1, -1, 578, 579, 580, -1, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, -1, 595, 596, -1, -1, 599, -1, -1, 602, -1, 604, -1, - 606, 607, -1, -1, -1, -1, -1, -1, 614, -1, - -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, + 606, 607, -1, -1, 610, 611, 612, 613, 614, -1, + -1, 617, 618, -1, 620, 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, - -1, 637, 638, 639, -1, 5, 642, 7, 8, 9, + -1, 637, 638, 639, -1, -1, 642, -1, -1, -1, + -1, -1, -1, -1, 650, 651, -1, -1, -1, -1, + 656, 657, -1, -1, 660, 661, -1, -1, 664, 665, + 5, -1, 7, 8, 9, 10, 11, 12, -1, -1, + 15, -1, -1, -1, 19, -1, -1, 22, -1, 24, + 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, + -1, -1, 37, 38, 39, 40, 41, 42, 43, -1, + 45, 46, 47, -1, 49, -1, 51, 52, -1, -1, + 55, 56, 57, 58, 59, -1, 61, 62, 63, 64, + 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, + 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, + 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, + 95, 96, 97, 98, -1, 100, 101, 102, 103, -1, + -1, 106, 107, 108, 109, 110, 111, -1, 113, 114, + 115, -1, 117, 118, 119, 120, 121, 122, -1, -1, + -1, -1, 127, 128, 129, -1, -1, 132, 133, -1, + 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, + 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, + 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, + 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, + 175, 176, 177, 178, 179, -1, 181, 182, 183, 184, + 185, 186, 187, 188, -1, 190, 191, 192, 193, -1, + 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, + -1, 206, 207, 208, 209, 210, 211, 212, -1, 214, + -1, 216, 217, 218, 219, -1, 221, 222, 223, -1, + 225, 226, -1, -1, -1, 230, 231, 232, 233, 234, + 235, -1, -1, 238, 239, 240, -1, -1, 243, -1, + -1, -1, 247, 248, 249, 250, -1, -1, 253, -1, + 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, + -1, 266, 267, 268, -1, -1, 271, -1, 273, 274, + 275, -1, -1, -1, -1, -1, 281, 282, -1, 284, + -1, 286, -1, 288, 289, -1, -1, 292, -1, -1, + -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, + 335, -1, -1, 338, 339, 340, 341, -1, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + -1, 356, 357, -1, -1, 360, 361, 362, 363, 364, + 365, 366, 367, 368, -1, 370, 371, 372, -1, 374, + 375, 376, -1, 378, 379, 380, 381, -1, 383, 384, + -1, -1, -1, -1, -1, -1, -1, -1, 393, 394, + 395, -1, 397, 398, -1, 400, -1, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, -1, 414, + 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, + -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, + 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, + 445, 446, -1, 448, 449, -1, 451, 452, 453, 454, + 455, 456, -1, 458, -1, 460, 461, -1, 463, 464, + -1, 466, -1, 468, -1, 470, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, + 485, -1, -1, -1, 489, 490, 491, 492, -1, -1, + -1, 496, -1, -1, -1, 500, -1, 502, 503, 504, + 505, 506, 507, -1, 509, 510, 511, 512, 513, 514, + -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, + -1, -1, 527, -1, -1, -1, 531, 532, 533, -1, + -1, -1, 537, 538, 539, 540, 541, -1, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 556, 557, -1, -1, 560, 561, 562, 563, -1, + 565, 566, 567, -1, 569, 570, 571, 572, -1, -1, + -1, -1, -1, 578, 579, 580, -1, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 591, 592, 593, -1, + 595, 596, -1, -1, 599, -1, -1, 602, -1, 604, + -1, 606, 607, -1, -1, 610, 611, 612, 613, 614, + -1, -1, 617, 618, -1, 620, 621, 622, 623, 624, + 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, + 635, -1, 637, 638, 639, -1, -1, 642, -1, -1, + -1, -1, -1, -1, -1, 650, 651, -1, -1, -1, + -1, 656, 657, -1, -1, 660, 661, -1, -1, 664, + 665, 5, -1, 7, 8, 9, 10, 11, 12, -1, + -1, 15, -1, -1, -1, 19, -1, -1, 22, -1, + 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, + 34, -1, -1, 37, 38, 39, 40, 41, 42, 43, + -1, 45, 46, 47, -1, 49, -1, 51, 52, -1, + -1, 55, 56, 57, 58, 59, -1, 61, 62, 63, + 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, + 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, + 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, + 94, 95, 96, 97, 98, -1, 100, 101, 102, 103, + -1, -1, 106, 107, 108, 109, 110, 111, -1, 113, + 114, 115, -1, 117, 118, 119, 120, 121, 122, -1, + -1, -1, -1, 127, 128, 129, -1, -1, 132, 133, + -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, + 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, + 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, + -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, + 174, 175, 176, 177, 178, 179, -1, 181, 182, 183, + 184, 185, 186, 187, 188, -1, 190, 191, 192, 193, + -1, 195, -1, -1, -1, 199, 200, -1, 202, -1, + 204, -1, 206, 207, 208, 209, 210, 211, 212, -1, + 214, -1, 216, 217, 218, 219, -1, 221, 222, 223, + -1, 225, 226, -1, -1, -1, 230, 231, 232, 233, + 234, 235, -1, -1, 238, 239, 240, -1, -1, 243, + -1, -1, -1, 247, 248, 249, 250, -1, -1, 253, + -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, + -1, -1, 266, 267, 268, -1, -1, 271, -1, 273, + 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, + 284, -1, 286, -1, 288, 289, -1, -1, 292, -1, + -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, + 334, 335, -1, -1, 338, 339, 340, 341, -1, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, -1, 356, 357, -1, -1, 360, 361, 362, 363, + 364, 365, 366, 367, 368, -1, 370, 371, 372, -1, + 374, 375, 376, -1, 378, 379, 380, 381, -1, 383, + 384, -1, -1, -1, -1, -1, -1, -1, -1, 393, + 394, 395, -1, 397, 398, -1, 400, -1, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, -1, + 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, + 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, + -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, + 444, 445, 446, -1, 448, 449, -1, 451, 452, 453, + 454, 455, 456, -1, 458, -1, 460, 461, -1, 463, + 464, -1, 466, -1, 468, -1, 470, 471, 472, 473, + 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, + 484, 485, -1, -1, -1, 489, 490, 491, 492, -1, + -1, -1, 496, -1, -1, -1, 500, -1, 502, 503, + 504, 505, 506, 507, -1, 509, 510, 511, 512, 513, + 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, + 524, -1, -1, 527, -1, -1, -1, 531, 532, 533, + -1, -1, -1, 537, 538, 539, 540, 541, -1, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, -1, -1, 560, 561, 562, 563, + -1, 565, 566, 567, -1, 569, 570, 571, 572, -1, + -1, -1, -1, -1, 578, 579, 580, -1, 582, 583, + 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, + -1, 595, 596, -1, -1, 599, -1, -1, 602, -1, + 604, -1, 606, 607, -1, -1, 610, 611, 612, 613, + 614, -1, -1, 617, 618, -1, 620, 621, 622, 623, + 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, + 634, 635, -1, 637, 638, 639, -1, -1, 642, -1, + -1, -1, -1, -1, -1, -1, 650, 651, -1, -1, + -1, -1, 656, 657, -1, -1, 660, 661, -1, -1, + 664, 665, 5, -1, 7, 8, 9, 10, 11, 12, + -1, -1, 15, -1, -1, -1, 19, -1, -1, 22, + -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, + -1, 34, -1, -1, 37, 38, 39, 40, 41, 42, + 43, -1, 45, 46, 47, -1, 49, -1, 51, 52, + -1, -1, 55, 56, 57, 58, 59, -1, 61, 62, + 63, 64, 65, -1, 67, 68, 69, 70, 71, 72, + -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, + 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, + -1, 94, 95, 96, 97, 98, -1, 100, 101, 102, + 103, -1, -1, 106, 107, 108, 109, 110, 111, -1, + 113, 114, 115, -1, 117, 118, 119, 120, 121, 122, + -1, -1, -1, -1, 127, 128, 129, -1, -1, 132, + 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, + 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, + -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, + 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, + 173, 174, 175, 176, 177, 178, 179, -1, 181, 182, + 183, 184, 185, 186, 187, 188, -1, 190, 191, 192, + 193, -1, 195, -1, -1, -1, 199, 200, -1, 202, + -1, 204, -1, 206, 207, 208, 209, 210, 211, 212, + -1, 214, -1, 216, 217, 218, 219, -1, 221, 222, + 223, -1, 225, 226, -1, -1, -1, 230, 231, 232, + 233, 234, 235, -1, -1, 238, 239, 240, -1, -1, + 243, -1, -1, -1, 247, 248, 249, 250, -1, -1, + 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, + 263, -1, -1, 266, 267, 268, -1, -1, 271, -1, + 273, 274, 275, -1, -1, -1, -1, -1, 281, 282, + -1, 284, -1, 286, -1, 288, 289, -1, -1, 292, + -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, + 333, 334, 335, -1, -1, 338, 339, 340, 341, -1, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, -1, 356, 357, -1, -1, 360, 361, 362, + 363, 364, 365, 366, 367, 368, -1, 370, 371, 372, + -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, + 383, 384, -1, -1, -1, -1, -1, -1, -1, -1, + 393, 394, 395, -1, 397, 398, -1, 400, -1, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, + 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, + -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, + 443, 444, 445, 446, -1, 448, 449, -1, 451, 452, + 453, 454, 455, 456, -1, 458, -1, 460, 461, -1, + 463, 464, -1, 466, -1, 468, -1, 470, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + -1, 484, 485, -1, -1, -1, 489, 490, 491, 492, + -1, -1, -1, 496, -1, -1, -1, 500, -1, 502, + 503, 504, 505, 506, 507, -1, 509, 510, 511, 512, + 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, + -1, 524, -1, -1, 527, -1, -1, -1, 531, 532, + 533, -1, -1, -1, 537, 538, 539, 540, 541, -1, + 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, + 553, 554, 555, 556, 557, -1, -1, 560, 561, 562, + 563, -1, 565, 566, 567, -1, 569, 570, 571, 572, + -1, -1, -1, -1, -1, 578, 579, 580, -1, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 593, -1, 595, 596, -1, -1, 599, -1, -1, 602, + -1, 604, -1, 606, 607, -1, -1, 610, 611, 612, + 613, 614, -1, -1, 617, 618, -1, 620, 621, 622, + 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, + -1, 634, 635, -1, 637, 638, 639, -1, -1, 642, + -1, -1, -1, -1, -1, -1, -1, 650, 651, -1, + -1, -1, -1, 656, 657, -1, -1, 660, 661, -1, + -1, 664, 665, 5, -1, 7, 8, 9, 10, 11, + 12, -1, -1, 15, -1, -1, -1, 19, -1, -1, + 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, + 32, -1, 34, -1, -1, 37, 38, 39, 40, 41, + 42, 43, -1, 45, 46, 47, -1, 49, -1, 51, + 52, -1, -1, 55, 56, 57, 58, 59, -1, 61, + 62, 63, 64, 65, -1, 67, 68, 69, 70, 71, + 72, -1, 74, 75, 76, 77, 78, 79, 80, -1, + 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, + 92, -1, 94, 95, 96, 97, 98, -1, 100, 101, + 102, 103, -1, -1, 106, 107, 108, 109, 110, 111, + -1, 113, 114, 115, -1, 117, 118, 119, 120, 121, + 122, -1, -1, -1, -1, 127, 128, 129, -1, -1, + 132, 133, -1, 135, -1, -1, -1, -1, 140, -1, + 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, + -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, + 162, 163, -1, 165, 166, 167, -1, 169, 170, -1, + 172, 173, 174, 175, 176, 177, 178, 179, -1, 181, + 182, 183, 184, 185, 186, 187, 188, -1, 190, 191, + 192, 193, -1, 195, -1, -1, -1, 199, 200, -1, + 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, + 212, -1, 214, -1, 216, 217, 218, 219, -1, 221, + 222, 223, -1, 225, 226, -1, -1, -1, 230, 231, + 232, 233, 234, 235, -1, -1, 238, 239, 240, -1, + -1, 243, -1, -1, -1, 247, 248, 249, 250, -1, + -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, + -1, 263, -1, -1, 266, 267, 268, -1, -1, 271, + -1, 273, 274, 275, -1, -1, -1, -1, -1, 281, + 282, -1, 284, -1, 286, -1, 288, 289, -1, -1, + 292, -1, -1, -1, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, -1, -1, -1, -1, 330, 331, + 332, 333, 334, 335, -1, -1, 338, 339, 340, 341, + -1, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, -1, 356, 357, -1, -1, 360, 361, + 362, 363, 364, 365, 366, 367, 368, -1, 370, 371, + 372, -1, 374, 375, 376, -1, 378, 379, 380, 381, + -1, 383, 384, -1, -1, -1, -1, -1, -1, -1, + -1, 393, 394, 395, -1, 397, 398, -1, 400, -1, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, -1, 414, 415, 416, -1, 418, -1, 420, 421, + 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, + -1, -1, -1, 435, 436, 437, 438, 439, -1, -1, + 442, 443, 444, 445, 446, -1, 448, 449, -1, 451, + 452, 453, 454, 455, 456, -1, 458, -1, 460, 461, + -1, 463, 464, -1, 466, -1, 468, -1, 470, 471, + 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, + 482, -1, 484, 485, -1, -1, -1, 489, 490, 491, + 492, -1, -1, -1, 496, -1, -1, -1, 500, -1, + 502, 503, 504, 505, 506, 507, -1, 509, 510, 511, + 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, + 522, -1, 524, -1, -1, 527, -1, -1, -1, 531, + 532, 533, -1, -1, -1, 537, 538, 539, 540, 541, + -1, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, -1, -1, 560, 561, + 562, 563, -1, 565, 566, 567, -1, 569, 570, 571, + 572, -1, -1, -1, -1, -1, 578, 579, 580, -1, + 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, + 592, 593, -1, 595, 596, -1, -1, 599, -1, -1, + 602, -1, 604, -1, 606, 607, -1, -1, 610, 611, + 612, 613, 614, -1, -1, 617, 618, -1, 620, 621, + 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, + -1, -1, 634, 635, -1, 637, 638, 639, -1, -1, + 642, -1, -1, -1, -1, -1, -1, -1, 650, 651, + -1, -1, -1, -1, 656, 657, -1, -1, 660, 661, + -1, -1, 664, 665, 5, -1, 7, 8, 9, 10, + 11, 12, -1, -1, 15, -1, -1, -1, 19, -1, + -1, 22, -1, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, 34, -1, -1, 37, 38, 39, 40, + 41, 42, 43, -1, 45, 46, 47, -1, 49, -1, + 51, 52, -1, -1, 55, 56, 57, 58, 59, -1, + 61, 62, 63, 64, 65, -1, 67, 68, 69, 70, + 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, + -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, + 91, 92, -1, 94, 95, 96, 97, 98, -1, 100, + 101, 102, 103, -1, -1, 106, 107, 108, 109, 110, + 111, -1, 113, 114, 115, -1, 117, 118, 119, 120, + 121, 122, -1, -1, -1, -1, 127, 128, 129, -1, + -1, 132, 133, -1, 135, -1, -1, -1, -1, 140, + -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, + 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, + -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, + -1, 172, 173, 174, 175, 176, 177, 178, 179, -1, + 181, 182, 183, 184, 185, 186, 187, 188, -1, 190, + 191, 192, 193, -1, 195, -1, -1, -1, 199, 200, + -1, 202, -1, 204, -1, 206, 207, 208, 209, 210, + 211, 212, -1, 214, -1, 216, 217, 218, 219, -1, + 221, 222, 223, -1, 225, 226, -1, -1, -1, 230, + 231, 232, 233, 234, 235, -1, -1, 238, 239, 240, + -1, -1, 243, -1, -1, -1, 247, 248, 249, 250, + -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, + -1, -1, 263, -1, -1, 266, 267, 268, -1, -1, + 271, -1, 273, 274, 275, -1, -1, -1, -1, -1, + 281, 282, -1, 284, -1, 286, -1, 288, 289, -1, + -1, 292, -1, -1, -1, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, -1, -1, -1, 330, + 331, 332, 333, 334, 335, -1, -1, 338, 339, 340, + 341, -1, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, -1, 356, 357, -1, -1, 360, + 361, 362, 363, 364, -1, 366, 367, 368, -1, 370, + 371, 372, -1, 374, 375, 376, -1, 378, 379, 380, + 381, -1, 383, 384, -1, -1, -1, -1, -1, -1, + -1, -1, 393, 394, 395, -1, 397, 398, -1, 400, + -1, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, -1, 414, 415, 416, -1, 418, -1, 420, + 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, + 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, + -1, 442, 443, 444, 445, 446, -1, 448, 449, -1, + 451, 452, 453, 454, 455, 456, -1, 458, -1, 460, + 461, -1, 463, 464, -1, 466, -1, 468, -1, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, -1, 484, 485, -1, -1, -1, 489, 490, + 491, 492, -1, -1, -1, 496, -1, -1, -1, 500, + -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, + 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, + 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, + 531, 532, 533, -1, -1, -1, 537, 538, 539, 540, + 541, -1, 543, 544, 545, 546, 547, 548, 549, 550, + 551, 552, 553, 554, 555, 556, 557, -1, -1, 560, + 561, 562, 563, -1, 565, 566, 567, -1, 569, 570, + 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, + -1, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 592, 593, -1, 595, 596, -1, -1, 599, -1, + -1, 602, -1, 604, -1, 606, 607, -1, -1, 610, + 611, 612, 613, 614, -1, -1, 617, 618, -1, 620, + 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, + -1, -1, -1, 634, 635, -1, 637, 638, 639, -1, + -1, 642, -1, -1, -1, -1, -1, -1, -1, 650, + 651, -1, -1, -1, -1, 656, 657, -1, -1, 660, + 661, -1, -1, 664, 665, 5, -1, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, 19, -1, -1, 22, -1, 24, 25, 26, 27, 28, 29, - 30, 31, 32, -1, 34, -1, -1, -1, 38, -1, - -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, - -1, 51, 52, -1, -1, 55, -1, -1, 58, 59, - -1, 61, 62, -1, 64, 65, -1, 67, 68, 69, + 30, 31, 32, -1, 34, -1, -1, 37, 38, 39, + 40, 41, 42, 43, -1, 45, 46, 47, -1, 49, + -1, 51, 52, -1, -1, 55, 56, 57, 58, 59, + -1, 61, 62, 63, 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, -1, - 100, -1, -1, 103, -1, -1, 106, -1, 108, -1, - -1, 111, -1, 113, -1, -1, -1, 117, 118, 119, - -1, -1, 122, -1, -1, -1, -1, 127, 128, -1, - -1, -1, -1, 133, -1, 135, -1, -1, -1, -1, + 100, 101, 102, 103, -1, -1, 106, 107, 108, 109, + 110, 111, -1, 113, 114, 115, -1, 117, 118, 119, + 120, 121, 122, -1, -1, -1, -1, 127, 128, 129, + -1, -1, 132, 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, 169, - 170, -1, 172, 173, 174, 175, 176, 177, 178, -1, - -1, 181, 182, 183, 184, -1, -1, 187, 188, -1, - 190, 191, 192, -1, -1, 195, -1, -1, -1, 199, + 170, -1, 172, 173, 174, 175, 176, 177, 178, 179, + -1, 181, 182, 183, 184, 185, 186, 187, 188, -1, + 190, 191, 192, 193, -1, 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, -1, 214, -1, -1, 217, 218, 219, - -1, 221, -1, -1, -1, 225, 226, -1, -1, -1, - 230, 231, 232, 233, 234, -1, -1, -1, 238, 239, - 240, -1, -1, 243, -1, -1, -1, -1, 248, 249, - -1, -1, -1, 253, -1, 255, 256, -1, 258, 259, + 210, 211, 212, -1, 214, -1, 216, 217, 218, 219, + -1, 221, 222, 223, -1, 225, 226, -1, -1, -1, + 230, 231, 232, 233, 234, 235, -1, -1, 238, 239, + 240, -1, -1, 243, -1, -1, -1, 247, 248, 249, + 250, -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, -1, - -1, 271, -1, -1, 274, 275, 276, -1, -1, -1, + -1, 271, -1, 273, 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, 289, - -1, -1, -1, -1, -1, -1, 296, 297, 298, 299, + -1, -1, 292, -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, -1, 318, 319, - 320, 321, -1, 323, 324, 325, -1, -1, -1, -1, + 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, 339, - -1, 341, -1, 343, -1, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, -1, -1, 357, -1, -1, - 360, 361, 362, 363, -1, -1, -1, 367, 368, -1, - -1, -1, 372, -1, 374, 375, 376, -1, 378, 379, + 340, 341, -1, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, -1, 356, 357, -1, -1, + 360, 361, 362, 363, 364, -1, 366, 367, 368, -1, + 370, 371, 372, -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, -1, - -1, -1, -1, 393, 394, 395, -1, -1, 398, -1, + -1, -1, -1, 393, 394, 395, -1, 397, 398, -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, -1, -1, 414, 415, 416, -1, 418, -1, + 410, 411, 412, -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, 449, - -1, 451, 452, 453, -1, -1, 456, -1, 458, -1, + -1, 451, 452, 453, 454, 455, 456, -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, -1, - -1, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, -1, 484, 485, -1, -1, -1, 489, - 490, 491, 492, -1, -1, -1, 496, -1, -1, -1, - 500, -1, 502, 503, 504, 505, 506, 507, -1, 509, - 510, 511, 512, 513, 514, -1, -1, -1, -1, -1, - -1, 521, 522, -1, 524, -1, -1, 527, -1, -1, - -1, 531, 532, 533, -1, -1, -1, 537, -1, -1, - 540, 541, -1, 543, 544, 545, 546, 547, 548, -1, - -1, 551, 552, 553, 554, -1, 556, 557, -1, -1, - 560, 561, 562, 563, -1, 565, 566, 567, -1, 569, - 570, 571, 572, -1, -1, -1, -1, -1, 578, 579, - 580, -1, -1, -1, 584, 585, 586, 587, -1, 589, - 590, -1, 592, 593, -1, 595, 596, -1, -1, 599, - -1, -1, 602, -1, 604, -1, 606, 607, -1, -1, - -1, -1, -1, -1, 614, -1, -1, 617, -1, -1, - -1, 621, 622, 623, 624, 625, 626, 627, -1, -1, - -1, -1, -1, -1, 634, 635, -1, 637, 638, 639, - -1, 5, 642, 7, 8, 9, 10, 11, 12, -1, - -1, 15, -1, -1, -1, 19, 20, -1, 22, -1, - 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, - 34, -1, -1, -1, 38, -1, -1, -1, 42, -1, - -1, 45, 46, 47, -1, 49, -1, 51, 52, -1, - -1, 55, -1, -1, 58, 59, -1, 61, 62, -1, - 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, - 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, - 94, 95, 96, 97, 98, -1, 100, -1, -1, 103, - -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, - -1, -1, -1, 117, 118, 119, -1, -1, 122, -1, - -1, -1, -1, 127, 128, -1, -1, -1, -1, 133, - -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, - 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, - 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, - -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, - 174, 175, 176, 177, 178, -1, -1, 181, 182, 183, - 184, -1, -1, 187, 188, -1, 190, 191, 192, -1, - -1, 195, -1, -1, -1, 199, 200, -1, 202, -1, - 204, -1, 206, 207, 208, 209, 210, 211, 212, -1, - 214, -1, -1, 217, 218, 219, -1, 221, -1, -1, - -1, 225, 226, -1, -1, -1, 230, 231, 232, 233, - 234, -1, -1, -1, 238, 239, 240, -1, -1, 243, - -1, -1, -1, -1, 248, 249, -1, -1, -1, 253, - -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, - -1, -1, 266, 267, 268, -1, -1, 271, -1, -1, - 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, - 284, -1, 286, -1, 288, 289, -1, -1, -1, -1, - -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, -1, 318, 319, 320, 321, -1, 323, - 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, - 334, 335, -1, -1, 338, 339, -1, 341, -1, 343, - -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, -1, -1, 357, -1, -1, 360, 361, 362, 363, - -1, -1, -1, 367, 368, -1, -1, -1, 372, -1, - 374, 375, 376, -1, 378, 379, 380, 381, -1, 383, - 384, -1, -1, -1, -1, -1, -1, -1, -1, 393, - 394, 395, -1, -1, 398, -1, 400, -1, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, -1, -1, - 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, - 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, - -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, - 444, 445, 446, -1, 448, 449, -1, 451, 452, 453, - -1, -1, 456, -1, 458, -1, 460, 461, -1, 463, - 464, -1, 466, -1, 468, -1, -1, 471, 472, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, - 484, 485, -1, -1, -1, 489, 490, 491, 492, -1, - -1, -1, 496, -1, -1, -1, 500, -1, 502, 503, - 504, 505, 506, 507, -1, 509, 510, 511, 512, 513, - 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, - 524, -1, -1, 527, -1, -1, -1, 531, 532, 533, - -1, -1, -1, 537, -1, -1, 540, 541, -1, 543, - 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, - 554, -1, 556, 557, -1, -1, 560, 561, 562, 563, - -1, 565, 566, 567, -1, 569, 570, 571, 572, -1, - -1, -1, -1, -1, 578, 579, 580, -1, -1, -1, - 584, 585, 586, 587, -1, 589, 590, -1, 592, 593, - -1, 595, 596, -1, -1, 599, -1, -1, 602, -1, - 604, -1, 606, 607, -1, -1, -1, -1, -1, -1, - 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, - 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, - 634, 635, -1, 637, 638, 639, -1, 5, 642, 7, + 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, + 480, 481, 482, -1, 484, 485, -1, -1, -1, 489, + 490, 491, 492, -1, -1, -1, 496, -1, -1, -1, + 500, -1, 502, 503, 504, 505, 506, 507, -1, 509, + 510, 511, 512, 513, 514, -1, -1, -1, -1, -1, + -1, 521, 522, -1, 524, -1, -1, 527, -1, -1, + -1, 531, 532, 533, -1, -1, -1, 537, 538, 539, + 540, 541, -1, 543, 544, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, -1, -1, + 560, 561, 562, 563, -1, 565, 566, 567, -1, 569, + 570, 571, 572, -1, -1, -1, -1, -1, 578, 579, + 580, -1, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 591, 592, 593, -1, 595, 596, -1, -1, 599, + -1, -1, 602, -1, 604, -1, 606, 607, -1, -1, + 610, 611, 612, 613, 614, -1, -1, 617, 618, -1, + 620, 621, 622, 623, 624, 625, 626, 627, -1, -1, + -1, -1, -1, -1, 634, 635, -1, 637, 638, 639, + -1, -1, 642, -1, -1, -1, -1, -1, -1, -1, + 650, 651, -1, -1, -1, -1, 656, 657, -1, -1, + 660, 661, -1, -1, 664, 665, 5, -1, 7, 8, + 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, + 19, -1, -1, 22, -1, 24, 25, 26, 27, 28, + 29, 30, 31, 32, -1, 34, -1, -1, 37, 38, + 39, 40, 41, 42, 43, -1, 45, 46, 47, -1, + 49, -1, 51, 52, -1, -1, 55, 56, 57, 58, + 59, -1, 61, 62, 63, 64, 65, -1, 67, 68, + 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, + 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, + 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, + -1, 100, 101, 102, 103, -1, -1, 106, 107, 108, + 109, 110, 111, -1, 113, 114, 115, -1, 117, 118, + 119, 120, 121, 122, -1, -1, -1, -1, 127, 128, + 129, -1, -1, 132, 133, -1, 135, -1, -1, -1, + -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, + -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, + -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, + 169, 170, -1, 172, 173, 174, 175, 176, 177, 178, + 179, -1, 181, 182, 183, 184, 185, 186, 187, 188, + -1, 190, 191, 192, 193, -1, 195, -1, -1, -1, + 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, + 209, 210, 211, 212, -1, 214, -1, 216, 217, 218, + 219, -1, 221, 222, 223, -1, 225, 226, -1, -1, + -1, 230, 231, 232, 233, 234, 235, -1, -1, 238, + 239, 240, -1, -1, 243, -1, -1, -1, 247, 248, + 249, 250, -1, -1, 253, -1, 255, 256, -1, 258, + 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, + -1, -1, 271, -1, 273, 274, 275, -1, -1, -1, + -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, + 289, -1, -1, 292, -1, -1, -1, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, -1, -1, -1, + -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, + 339, 340, 341, -1, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, -1, 356, 357, -1, + -1, 360, 361, 362, 363, 364, -1, 366, 367, 368, + -1, 370, 371, 372, -1, 374, 375, 376, -1, 378, + 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 394, 395, -1, 397, 398, + -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, -1, 414, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, + -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, + 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, + 449, -1, 451, 452, 453, 454, 455, 456, -1, 458, + -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, + -1, 470, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, + 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, + -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, + 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, + -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, + -1, -1, 531, 532, 533, -1, -1, -1, 537, 538, + 539, 540, 541, -1, 543, 544, 545, 546, 547, 548, + 549, 550, 551, 552, 553, 554, 555, 556, 557, -1, + -1, 560, 561, 562, 563, -1, 565, 566, 567, -1, + 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, + 579, 580, -1, 582, 583, 584, 585, 586, 587, 588, + 589, 590, 591, 592, 593, -1, 595, 596, -1, -1, + 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, + -1, 610, 611, 612, 613, 614, -1, -1, 617, 618, + -1, 620, 621, 622, 623, 624, 625, 626, 627, -1, + -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, + 639, -1, -1, 642, -1, -1, -1, -1, -1, -1, + -1, 650, 651, -1, -1, -1, -1, 656, 657, -1, + -1, 660, 661, -1, -1, 664, 665, 5, -1, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, 19, -1, -1, 22, -1, 24, 25, 26, 27, - 28, 29, 30, 31, 32, -1, 34, -1, -1, -1, - 38, -1, -1, -1, 42, -1, -1, 45, 46, 47, - -1, 49, -1, 51, 52, -1, -1, 55, -1, -1, - 58, 59, -1, 61, 62, -1, 64, 65, -1, 67, + 28, 29, 30, 31, 32, -1, 34, -1, -1, 37, + 38, 39, 40, 41, 42, 43, -1, 45, 46, 47, + -1, 49, -1, 51, 52, -1, -1, 55, 56, 57, + 58, 59, -1, 61, 62, 63, 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, 97, - 98, 99, 100, -1, -1, 103, -1, -1, 106, -1, - 108, -1, -1, 111, -1, 113, -1, -1, -1, 117, - 118, 119, -1, -1, 122, -1, -1, -1, -1, 127, - 128, -1, -1, -1, -1, 133, -1, 135, -1, -1, + 98, -1, 100, 101, 102, 103, -1, -1, 106, 107, + 108, 109, 110, 111, -1, 113, 114, 115, -1, 117, + 118, 119, 120, 121, 122, -1, -1, -1, -1, 127, + 128, 129, -1, -1, 132, 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, 177, - 178, -1, 180, 181, 182, 183, 184, -1, -1, 187, - 188, -1, 190, 191, 192, -1, -1, 195, -1, -1, + 178, 179, -1, 181, 182, 183, 184, 185, 186, 187, + 188, -1, 190, 191, 192, 193, -1, 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, 207, - 208, 209, 210, 211, 212, -1, 214, -1, -1, 217, - 218, 219, -1, 221, -1, -1, -1, 225, 226, -1, - -1, -1, 230, 231, 232, 233, 234, -1, -1, -1, - 238, 239, 240, -1, -1, 243, -1, -1, -1, -1, - 248, 249, -1, -1, -1, 253, -1, 255, 256, -1, + 208, 209, 210, 211, 212, -1, 214, -1, 216, 217, + 218, 219, -1, 221, 222, 223, -1, 225, 226, -1, + -1, -1, 230, 231, 232, 233, 234, 235, -1, -1, + 238, 239, 240, -1, -1, 243, -1, -1, -1, 247, + 248, 249, 250, -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, 267, - 268, -1, -1, 271, -1, -1, 274, 275, -1, -1, + 268, -1, -1, 271, -1, 273, 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, -1, - 288, 289, -1, -1, -1, -1, -1, -1, 296, 297, + 288, 289, -1, -1, 292, -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, -1, - 318, 319, 320, 321, -1, 323, 324, 325, -1, -1, + 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, -1, - 338, 339, -1, 341, -1, 343, -1, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, -1, -1, 357, - -1, -1, 360, 361, 362, 363, -1, -1, -1, 367, - 368, -1, -1, -1, 372, -1, 374, 375, 376, -1, + 338, 339, 340, 341, -1, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, -1, 356, 357, + -1, -1, 360, 361, 362, 363, 364, -1, 366, 367, + 368, -1, 370, 371, 372, -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, -1, - -1, -1, -1, -1, -1, 393, 394, 395, -1, -1, + -1, -1, -1, -1, -1, 393, 394, 395, -1, 397, 398, -1, 400, -1, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, -1, -1, 414, 415, 416, -1, + 408, 409, 410, 411, 412, -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, -1, - 448, 449, -1, 451, 452, 453, -1, -1, 456, -1, + 448, 449, -1, 451, 452, 453, 454, 455, 456, -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, -1, - 468, -1, -1, 471, 472, 473, 474, 475, 476, 477, + 468, -1, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, 537, - -1, -1, 540, 541, -1, 543, 544, 545, 546, 547, - 548, -1, -1, 551, 552, 553, 554, -1, 556, 557, - -1, -1, 560, 561, 562, 563, -1, -1, 566, 567, + 538, 539, 540, 541, -1, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + -1, -1, 560, 561, 562, 563, -1, 565, 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, -1, - 578, 579, 580, -1, -1, -1, 584, 585, 586, 587, - -1, 589, 590, -1, 592, 593, -1, 595, 596, -1, + 578, 579, 580, -1, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 591, 592, 593, -1, 595, 596, -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, 607, - -1, -1, -1, -1, -1, -1, 614, -1, -1, 617, - -1, -1, -1, 621, 622, 623, 624, 625, 626, 627, + -1, -1, 610, 611, 612, 613, 614, -1, -1, 617, + 618, -1, 620, 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, 637, - 638, 639, -1, 5, 642, 7, 8, 9, 10, 11, + 638, 639, -1, -1, 642, -1, -1, -1, -1, -1, + -1, -1, 650, 651, -1, -1, -1, -1, 656, 657, + -1, -1, 660, 661, -1, -1, 664, 665, 5, -1, + 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, + -1, -1, 19, -1, -1, 22, -1, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, + -1, 38, 39, -1, -1, 42, -1, -1, 45, 46, + 47, -1, 49, -1, 51, 52, -1, -1, 55, -1, + -1, 58, 59, -1, 61, 62, -1, 64, 65, -1, + 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, + 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, + 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, + 97, 98, -1, 100, -1, -1, 103, -1, -1, 106, + -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, + 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, + 127, 128, 129, -1, -1, -1, 133, -1, 135, -1, + -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, + -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, + -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, + 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, + 177, 178, -1, -1, 181, 182, 183, 184, -1, 186, + 187, 188, -1, 190, 191, 192, 193, -1, 195, -1, + -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, + 207, 208, 209, 210, 211, 212, -1, 214, -1, -1, + 217, 218, 219, -1, 221, 222, 223, -1, 225, 226, + -1, -1, -1, 230, 231, 232, 233, 234, -1, -1, + -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, + -1, 248, 249, -1, -1, -1, 253, -1, 255, 256, + -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, + 267, 268, -1, -1, 271, -1, -1, 274, 275, -1, + -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, + -1, 288, 289, -1, -1, 292, -1, -1, -1, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + -1, 318, 319, 320, 321, -1, 323, 324, 325, -1, + -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, + -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, -1, 356, + 357, -1, -1, 360, 361, 362, 363, -1, -1, -1, + 367, 368, -1, 370, 371, 372, -1, 374, 375, 376, + -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, + -1, -1, -1, -1, -1, -1, 393, 394, 395, -1, + -1, 398, -1, 400, -1, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, -1, -1, 414, 415, 416, + -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, + 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, + 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, + -1, 448, 449, -1, 451, 452, 453, -1, -1, 456, + -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, + -1, 468, -1, -1, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, + -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, + -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, + 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, + -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, + 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, + 537, -1, -1, 540, 541, -1, 543, 544, 545, 546, + 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, + 557, -1, -1, 560, 561, 562, 563, -1, 565, 566, + 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, + -1, 578, 579, 580, -1, -1, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, -1, 595, 596, + -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, + 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, + 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, + 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, + 637, 638, 639, -1, -1, 642, -1, -1, -1, -1, + -1, -1, 5, -1, 7, 8, 9, 10, 11, 12, + -1, -1, 15, -1, -1, -1, 19, 664, 665, 22, + -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, + -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, + -1, -1, 45, 46, 47, -1, 49, -1, 51, 52, + -1, -1, 55, -1, -1, 58, 59, -1, 61, 62, + -1, 64, 65, -1, 67, 68, 69, 70, 71, 72, + -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, + 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, + 93, 94, 95, 96, 97, 98, -1, 100, -1, -1, + 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, + 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, + -1, -1, -1, -1, 127, 128, -1, -1, -1, -1, + 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, + 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, + -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, + 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, + 173, 174, 175, 176, 177, 178, -1, -1, 181, 182, + 183, 184, -1, -1, 187, 188, -1, 190, 191, 192, + -1, -1, 195, -1, -1, -1, 199, 200, -1, 202, + 203, 204, -1, 206, 207, 208, 209, 210, 211, 212, + -1, 214, -1, -1, 217, 218, 219, -1, 221, -1, + -1, -1, 225, 226, -1, -1, -1, 230, 231, 232, + 233, 234, -1, -1, -1, 238, 239, 240, 241, -1, + 243, -1, -1, -1, -1, 248, 249, -1, -1, -1, + 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, + 263, 264, -1, 266, 267, 268, -1, -1, 271, -1, + -1, 274, 275, -1, 277, -1, -1, -1, 281, 282, + -1, 284, -1, 286, -1, 288, 289, -1, -1, -1, + -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, -1, 318, 319, 320, 321, -1, + 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, + 333, 334, 335, -1, -1, 338, 339, -1, 341, -1, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, -1, -1, 357, -1, -1, 360, 361, 362, + 363, -1, -1, -1, 367, 368, -1, -1, -1, 372, + -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, + 383, 384, -1, -1, -1, -1, -1, -1, -1, -1, + 393, 394, 395, -1, -1, 398, -1, 400, -1, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, -1, + -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, + 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, + -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, + 443, 444, 445, 446, -1, 448, 449, -1, 451, 452, + 453, -1, -1, 456, -1, 458, -1, 460, 461, -1, + 463, 464, -1, 466, -1, 468, -1, -1, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + -1, 484, 485, 486, -1, -1, 489, 490, 491, 492, + -1, -1, -1, 496, -1, -1, -1, 500, -1, 502, + 503, 504, 505, 506, 507, -1, 509, 510, 511, 512, + 513, 514, 515, -1, -1, -1, -1, -1, 521, 522, + -1, 524, -1, -1, 527, -1, -1, -1, 531, 532, + 533, -1, -1, -1, 537, -1, -1, 540, 541, -1, + 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, + 553, 554, -1, 556, 557, -1, -1, 560, 561, 562, + 563, -1, -1, 566, 567, -1, 569, 570, 571, 572, + -1, -1, -1, -1, -1, 578, 579, 580, -1, -1, + -1, 584, 585, 586, 587, -1, 589, 590, -1, 592, + 593, -1, 595, 596, -1, -1, 599, -1, -1, 602, + -1, 604, -1, 606, 607, -1, -1, -1, -1, -1, + -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, + 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, + -1, 634, 635, -1, 637, 638, 639, -1, -1, 642, + -1, -1, -1, -1, 5, -1, 7, 8, 9, 10, + 11, 12, -1, -1, 15, -1, -1, -1, 19, -1, + -1, 22, 665, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, 34, -1, -1, -1, 38, -1, -1, + -1, 42, -1, -1, 45, 46, 47, -1, 49, -1, + 51, 52, -1, -1, 55, -1, -1, 58, 59, -1, + 61, 62, -1, 64, 65, -1, 67, 68, 69, 70, + 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, + -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, + 91, 92, 93, 94, 95, 96, 97, 98, -1, 100, + -1, -1, 103, -1, -1, 106, -1, 108, -1, -1, + 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, + -1, 122, -1, -1, -1, -1, 127, 128, -1, -1, + -1, -1, 133, -1, 135, -1, -1, -1, -1, 140, + -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, + 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, + -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, + -1, 172, 173, 174, 175, 176, 177, 178, -1, -1, + 181, 182, 183, 184, -1, -1, 187, 188, -1, 190, + 191, 192, -1, -1, 195, -1, -1, -1, 199, 200, + -1, 202, 203, 204, -1, 206, 207, 208, 209, 210, + 211, 212, -1, 214, -1, -1, 217, 218, 219, -1, + 221, -1, -1, -1, 225, 226, -1, -1, -1, 230, + 231, 232, 233, 234, -1, -1, -1, 238, 239, 240, + 241, -1, 243, -1, -1, -1, -1, 248, 249, -1, + -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, + -1, -1, 263, 264, -1, 266, 267, 268, -1, -1, + 271, -1, -1, 274, 275, -1, -1, -1, -1, -1, + 281, 282, -1, 284, -1, 286, -1, 288, 289, -1, + -1, -1, -1, -1, -1, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, -1, 318, 319, 320, + 321, -1, 323, 324, 325, -1, -1, -1, -1, 330, + 331, 332, 333, 334, 335, -1, -1, 338, 339, -1, + 341, -1, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, -1, -1, 357, -1, -1, 360, + 361, 362, 363, -1, -1, -1, 367, 368, -1, -1, + -1, 372, -1, 374, 375, 376, -1, 378, 379, 380, + 381, -1, 383, 384, -1, -1, -1, -1, -1, -1, + -1, -1, 393, 394, 395, -1, -1, 398, -1, 400, + -1, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, -1, -1, 414, 415, 416, -1, 418, -1, 420, + 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, + 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, + -1, 442, 443, 444, 445, 446, -1, 448, 449, -1, + 451, 452, 453, -1, -1, 456, -1, 458, -1, 460, + 461, -1, 463, 464, -1, 466, -1, 468, -1, -1, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, -1, 484, 485, -1, -1, -1, 489, 490, + 491, 492, -1, -1, -1, 496, -1, -1, -1, 500, + -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, + 511, 512, 513, 514, 515, -1, -1, -1, -1, -1, + 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, + 531, 532, 533, -1, -1, -1, 537, -1, -1, 540, + 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, + 551, 552, 553, 554, -1, 556, 557, -1, -1, 560, + 561, 562, 563, -1, -1, 566, 567, -1, 569, 570, + 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, + -1, -1, -1, 584, 585, 586, 587, -1, 589, 590, + -1, 592, 593, -1, 595, 596, -1, -1, 599, -1, + -1, 602, -1, 604, -1, 606, 607, -1, -1, -1, + -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, + 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, + -1, -1, -1, 634, 635, -1, 637, 638, 639, -1, + -1, 642, -1, -1, -1, -1, 5, -1, 7, 8, + 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, + 19, -1, -1, 22, 665, 24, 25, 26, 27, 28, + 29, 30, 31, 32, -1, 34, -1, -1, -1, 38, + -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, + 49, -1, 51, 52, -1, -1, 55, -1, -1, 58, + 59, -1, 61, 62, -1, 64, 65, -1, 67, 68, + 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, + 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, + 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, + -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, + -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, + 119, -1, -1, 122, -1, -1, -1, -1, 127, 128, + -1, -1, -1, -1, 133, -1, 135, -1, -1, -1, + -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, + -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, + -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, + 169, 170, -1, 172, 173, 174, 175, 176, 177, 178, + -1, -1, 181, 182, 183, 184, -1, -1, 187, 188, + -1, 190, 191, 192, -1, -1, 195, -1, -1, -1, + 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, + 209, 210, 211, 212, -1, 214, -1, -1, 217, 218, + 219, -1, 221, -1, -1, -1, 225, 226, -1, -1, + -1, 230, 231, 232, 233, 234, -1, -1, -1, 238, + 239, 240, -1, -1, 243, -1, -1, -1, -1, 248, + 249, -1, -1, -1, 253, -1, 255, 256, -1, 258, + 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, + -1, -1, 271, -1, -1, 274, 275, -1, -1, -1, + -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, + 289, -1, -1, -1, -1, -1, -1, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, + 319, 320, 321, -1, 323, 324, 325, -1, -1, -1, + -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, + 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, + -1, 360, 361, 362, 363, -1, -1, -1, 367, 368, + -1, -1, -1, 372, -1, 374, 375, 376, -1, 378, + 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 394, 395, -1, -1, 398, + -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, -1, -1, 414, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, + -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, + 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, + 449, -1, 451, 452, 453, -1, -1, 456, -1, 458, + -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, + -1, -1, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, -1, 484, 485, 486, -1, -1, + 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, + -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, + 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, + -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, + -1, -1, 531, 532, 533, -1, -1, -1, 537, -1, + -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, + -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, + -1, 560, 561, 562, 563, -1, -1, 566, 567, -1, + 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, + 579, 580, -1, -1, -1, 584, 585, 586, 587, -1, + 589, 590, -1, 592, 593, -1, 595, 596, -1, -1, + 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, + -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, + -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, + -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, + 639, -1, -1, 642, -1, -1, -1, -1, 5, -1, + 7, 8, 9, 10, 11, 12, -1, -1, 15, 658, + -1, -1, 19, -1, -1, 22, 665, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, + -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, + 47, -1, 49, -1, 51, 52, -1, -1, 55, -1, + -1, 58, 59, -1, 61, 62, -1, 64, 65, -1, + 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, + 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, + 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, + 97, 98, -1, 100, -1, -1, 103, -1, -1, 106, + -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, + 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, + 127, 128, -1, -1, -1, -1, 133, -1, 135, -1, + -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, + -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, + -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, + 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, + 177, 178, -1, -1, 181, 182, 183, 184, -1, -1, + 187, 188, -1, 190, 191, 192, -1, -1, 195, -1, + -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, + 207, 208, 209, 210, 211, 212, -1, 214, -1, -1, + 217, 218, 219, -1, 221, -1, -1, -1, 225, 226, + -1, -1, -1, 230, 231, 232, 233, 234, -1, -1, + -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, + -1, 248, 249, -1, -1, -1, 253, -1, 255, 256, + -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, + 267, 268, -1, -1, 271, -1, -1, 274, 275, -1, + -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, + -1, 288, 289, -1, -1, -1, -1, -1, -1, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + -1, 318, 319, 320, 321, -1, 323, 324, 325, -1, + -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, + -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, + 357, -1, -1, 360, 361, 362, 363, -1, -1, -1, + 367, 368, -1, -1, -1, 372, -1, 374, 375, 376, + -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, + -1, -1, -1, -1, -1, -1, 393, 394, 395, -1, + -1, 398, -1, 400, -1, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, -1, -1, 414, 415, 416, + -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, + 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, + 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, + -1, 448, 449, -1, 451, 452, 453, -1, -1, 456, + -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, + -1, 468, -1, -1, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, + -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, + -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, + 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, + -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, + 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, + 537, -1, -1, 540, 541, -1, 543, 544, 545, 546, + 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, + 557, -1, -1, 560, 561, 562, 563, -1, -1, 566, + 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, + -1, 578, 579, 580, -1, -1, -1, 584, 585, 586, + 587, -1, 589, 590, -1, 592, 593, -1, 595, 596, + -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, + 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, + 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, + 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, + 637, 638, 639, -1, -1, 642, -1, -1, -1, -1, + -1, -1, 5, -1, 7, 8, 9, 10, 11, 12, + -1, 658, 15, -1, -1, -1, 19, 664, 665, 22, + -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, + -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, + -1, -1, 45, 46, 47, -1, 49, -1, 51, 52, + -1, -1, 55, -1, -1, 58, 59, -1, 61, 62, + -1, 64, 65, -1, 67, 68, 69, 70, 71, 72, + -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, + 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, + -1, 94, 95, 96, 97, 98, -1, 100, -1, -1, + 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, + 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, + -1, -1, -1, -1, 127, 128, -1, -1, -1, -1, + 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, + 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, + -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, + 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, + 173, 174, 175, 176, 177, 178, -1, -1, 181, 182, + 183, 184, -1, -1, 187, 188, -1, 190, 191, 192, + -1, -1, 195, -1, -1, -1, 199, 200, -1, 202, + -1, 204, -1, 206, 207, 208, 209, 210, 211, 212, + -1, 214, -1, -1, 217, 218, 219, -1, 221, -1, + -1, -1, 225, 226, -1, -1, -1, 230, 231, 232, + 233, 234, -1, -1, -1, 238, 239, 240, -1, -1, + 243, -1, -1, -1, -1, 248, 249, -1, -1, -1, + 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, + 263, -1, -1, 266, 267, 268, -1, -1, 271, -1, + -1, 274, 275, -1, -1, -1, -1, -1, 281, 282, + -1, 284, -1, 286, -1, 288, 289, -1, -1, -1, + -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, -1, 318, 319, 320, 321, -1, + 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, + 333, 334, 335, -1, -1, 338, 339, -1, 341, -1, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, -1, -1, 357, -1, -1, 360, 361, 362, + 363, -1, -1, -1, 367, 368, -1, -1, -1, 372, + -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, + 383, 384, -1, -1, -1, -1, -1, -1, -1, -1, + 393, 394, 395, -1, -1, 398, -1, 400, -1, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, -1, + -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, + 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, + -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, + 443, 444, 445, 446, -1, 448, 449, -1, 451, 452, + 453, -1, -1, 456, -1, 458, -1, 460, 461, -1, + 463, 464, -1, 466, -1, 468, -1, -1, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + -1, 484, 485, -1, -1, -1, 489, 490, 491, 492, + -1, -1, -1, 496, -1, -1, -1, 500, -1, 502, + 503, 504, 505, 506, 507, -1, 509, 510, 511, 512, + 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, + -1, 524, -1, -1, 527, -1, -1, -1, 531, 532, + 533, -1, -1, -1, 537, -1, -1, 540, 541, -1, + 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, + 553, 554, -1, 556, 557, -1, -1, 560, 561, 562, + 563, -1, -1, 566, 567, -1, 569, 570, 571, 572, + -1, -1, -1, -1, -1, 578, 579, 580, -1, -1, + -1, 584, 585, 586, 587, -1, 589, 590, -1, 592, + 593, -1, 595, 596, -1, -1, 599, -1, -1, 602, + -1, 604, -1, 606, 607, -1, -1, -1, -1, -1, + -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, + 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, + -1, 634, 635, -1, 637, 638, 639, -1, -1, 642, + -1, -1, -1, -1, -1, -1, 5, -1, 7, 8, + 9, 10, 11, 12, 657, -1, 15, -1, -1, -1, + 19, -1, 665, 22, -1, 24, 25, 26, 27, 28, + 29, 30, 31, 32, -1, 34, -1, -1, -1, 38, + -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, + 49, -1, 51, 52, -1, -1, 55, -1, -1, 58, + 59, -1, 61, 62, -1, 64, 65, -1, 67, 68, + 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, + 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, + 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, + -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, + -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, + 119, -1, -1, 122, -1, -1, -1, -1, 127, 128, + -1, -1, -1, -1, 133, -1, 135, -1, -1, -1, + -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, + -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, + -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, + 169, 170, -1, 172, 173, 174, 175, 176, 177, 178, + -1, -1, 181, 182, 183, 184, -1, -1, 187, 188, + -1, 190, 191, 192, -1, -1, 195, -1, -1, -1, + 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, + 209, 210, 211, 212, -1, 214, -1, -1, 217, 218, + 219, -1, 221, -1, -1, -1, 225, 226, -1, -1, + -1, 230, 231, 232, 233, 234, -1, -1, -1, 238, + 239, 240, -1, -1, 243, -1, -1, -1, -1, 248, + 249, -1, 251, -1, 253, -1, 255, 256, -1, 258, + 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, + -1, -1, 271, -1, -1, 274, 275, -1, -1, -1, + -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, + 289, -1, -1, -1, -1, -1, -1, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, + 319, 320, 321, -1, 323, 324, 325, -1, -1, -1, + -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, + 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, + -1, 360, 361, 362, 363, -1, -1, -1, 367, 368, + -1, -1, -1, 372, -1, 374, 375, 376, -1, 378, + 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 394, 395, -1, -1, 398, + -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, -1, -1, 414, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, + -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, + 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, + 449, -1, 451, 452, 453, -1, -1, 456, -1, 458, + -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, + -1, -1, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, + 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, + -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, + 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, + -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, + -1, -1, 531, 532, 533, -1, -1, -1, 537, -1, + -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, + -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, + -1, 560, 561, 562, 563, -1, -1, 566, 567, -1, + 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, + 579, 580, -1, -1, -1, 584, 585, 586, 587, -1, + 589, 590, -1, 592, 593, -1, 595, 596, -1, -1, + 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, + -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, + -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, + -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, + 639, -1, -1, 642, -1, -1, -1, -1, 5, -1, + 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, + -1, -1, 19, -1, -1, 22, 665, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, + -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, + 47, -1, 49, -1, 51, 52, -1, -1, 55, -1, + -1, 58, 59, -1, 61, 62, -1, 64, 65, -1, + 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, + 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, + 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, + 97, 98, -1, 100, -1, -1, 103, -1, -1, 106, + -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, + 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, + 127, 128, -1, -1, -1, -1, 133, -1, 135, -1, + -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, + -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, + -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, + 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, + 177, 178, -1, -1, 181, 182, 183, 184, -1, -1, + 187, 188, -1, 190, 191, 192, -1, -1, 195, -1, + -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, + 207, 208, 209, 210, 211, 212, -1, 214, -1, -1, + 217, 218, 219, -1, 221, -1, -1, -1, 225, 226, + -1, -1, -1, 230, 231, 232, 233, 234, -1, -1, + -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, + -1, 248, 249, -1, -1, -1, 253, -1, 255, 256, + -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, + 267, 268, -1, -1, 271, -1, -1, 274, 275, -1, + -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, + -1, 288, 289, -1, -1, -1, -1, -1, -1, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + -1, 318, 319, 320, 321, -1, 323, 324, 325, -1, + -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, + -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, + 357, -1, -1, 360, 361, 362, 363, -1, -1, -1, + 367, 368, -1, -1, -1, 372, -1, 374, 375, 376, + -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, + -1, -1, -1, -1, -1, -1, 393, 394, 395, -1, + -1, 398, -1, 400, -1, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, -1, -1, 414, 415, 416, + -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, + 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, + 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, + -1, 448, 449, -1, 451, 452, 453, -1, -1, 456, + -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, + -1, 468, -1, -1, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, + -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, + -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, + 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, + -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, + 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, + 537, -1, -1, 540, 541, -1, 543, 544, 545, 546, + 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, + 557, -1, -1, 560, 561, 562, 563, -1, -1, 566, + 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, + -1, 578, 579, 580, -1, -1, -1, 584, 585, 586, + 587, -1, 589, 590, -1, 592, 593, -1, 595, 596, + -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, + 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, + 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, + 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, + 637, 638, 639, -1, -1, 642, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 652, 5, -1, 7, 8, + 9, 10, 11, 12, -1, -1, 15, -1, 665, -1, + 19, -1, -1, 22, -1, 24, 25, 26, 27, 28, + 29, 30, 31, 32, -1, 34, -1, -1, -1, 38, + -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, + 49, -1, 51, 52, -1, -1, 55, -1, -1, 58, + 59, -1, 61, 62, -1, 64, 65, -1, 67, 68, + 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, + 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, + 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, + -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, + -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, + 119, -1, -1, 122, -1, -1, -1, -1, 127, 128, + -1, -1, -1, -1, 133, -1, 135, -1, -1, -1, + -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, + -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, + -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, + 169, 170, -1, 172, 173, 174, 175, 176, 177, 178, + -1, -1, 181, 182, 183, 184, -1, -1, 187, 188, + -1, 190, 191, 192, -1, -1, 195, -1, -1, -1, + 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, + 209, 210, 211, 212, -1, 214, -1, -1, 217, 218, + 219, -1, 221, -1, -1, -1, 225, 226, -1, -1, + -1, 230, 231, 232, 233, 234, -1, -1, -1, 238, + 239, 240, -1, -1, 243, -1, -1, -1, -1, 248, + 249, -1, -1, -1, 253, -1, 255, 256, -1, 258, + 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, + -1, -1, 271, -1, -1, 274, 275, -1, -1, -1, + -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, + 289, -1, -1, -1, -1, -1, -1, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, + 319, 320, 321, -1, 323, 324, 325, -1, -1, -1, + -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, + 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, + -1, 360, 361, 362, 363, -1, -1, -1, 367, 368, + -1, -1, -1, 372, -1, 374, 375, 376, -1, 378, + 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 394, 395, -1, -1, 398, + -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, -1, -1, 414, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, + -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, + 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, + 449, -1, 451, 452, 453, -1, -1, 456, -1, 458, + -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, + -1, -1, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, + 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, + -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, + 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, + -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, + -1, -1, 531, 532, 533, -1, -1, -1, 537, -1, + -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, + -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, + -1, 560, 561, 562, 563, -1, -1, 566, 567, -1, + 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, + 579, 580, -1, -1, -1, 584, 585, 586, 587, -1, + 589, 590, -1, 592, 593, -1, 595, 596, -1, -1, + 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, + -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, + -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, + -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, + 639, -1, -1, 642, -1, -1, -1, -1, -1, -1, + 5, -1, 7, 8, 9, 10, 11, 12, 657, -1, + 15, -1, -1, -1, 19, -1, 665, 22, -1, 24, + 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, + -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, + 45, 46, 47, -1, 49, -1, 51, 52, -1, -1, + 55, -1, -1, 58, 59, -1, 61, 62, -1, 64, + 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, + 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, + 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, + 95, 96, 97, 98, -1, 100, -1, -1, 103, -1, + -1, 106, -1, 108, -1, -1, 111, -1, 113, -1, + -1, -1, 117, 118, 119, -1, -1, 122, -1, -1, + -1, -1, 127, 128, -1, -1, -1, -1, 133, -1, + 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, + 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, + 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, + 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, + 175, 176, 177, 178, -1, -1, 181, 182, 183, 184, + -1, -1, 187, 188, -1, 190, 191, 192, -1, -1, + 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, + -1, 206, 207, 208, 209, 210, 211, 212, -1, 214, + -1, -1, 217, 218, 219, -1, 221, -1, -1, -1, + 225, 226, -1, -1, -1, 230, 231, 232, 233, 234, + -1, -1, -1, 238, 239, 240, -1, -1, 243, -1, + -1, -1, -1, 248, 249, -1, -1, -1, 253, -1, + 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, + -1, 266, 267, 268, -1, -1, 271, -1, -1, 274, + 275, -1, -1, -1, -1, -1, 281, 282, -1, 284, + -1, 286, -1, 288, 289, -1, -1, -1, -1, -1, + -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, -1, 318, 319, 320, 321, -1, 323, 324, + 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, + 335, -1, -1, 338, 339, -1, 341, -1, 343, -1, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + -1, -1, 357, -1, -1, 360, 361, 362, 363, -1, + -1, -1, 367, 368, -1, -1, -1, 372, -1, 374, + 375, 376, -1, 378, 379, 380, 381, -1, 383, 384, + -1, -1, -1, -1, -1, -1, -1, -1, 393, 394, + 395, -1, -1, 398, -1, 400, -1, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, -1, -1, 414, + 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, + -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, + 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, + 445, 446, -1, 448, 449, -1, 451, 452, 453, -1, + -1, 456, -1, 458, -1, 460, 461, -1, 463, 464, + -1, 466, -1, 468, -1, -1, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, + 485, -1, -1, -1, 489, 490, 491, 492, -1, -1, + -1, 496, -1, -1, -1, 500, -1, 502, 503, 504, + 505, 506, 507, -1, 509, 510, 511, 512, 513, 514, + -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, + -1, -1, 527, -1, -1, -1, 531, 532, 533, -1, + -1, -1, 537, -1, -1, 540, 541, -1, 543, 544, + 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, + -1, 556, 557, -1, -1, 560, 561, 562, 563, -1, + -1, 566, 567, -1, 569, 570, 571, 572, -1, -1, + -1, -1, -1, 578, 579, 580, -1, -1, -1, 584, + 585, 586, 587, -1, 589, 590, -1, 592, 593, -1, + 595, 596, -1, -1, 599, -1, -1, 602, -1, 604, + -1, 606, 607, -1, -1, -1, -1, -1, -1, 614, + -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, + 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, + 635, -1, 637, 638, 639, -1, -1, 642, -1, -1, + -1, -1, -1, -1, 5, -1, 7, 8, 9, 10, + 11, 12, -1, -1, 15, -1, -1, -1, 19, 664, + 665, 22, -1, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, 34, -1, -1, -1, 38, -1, -1, + -1, 42, -1, -1, 45, 46, 47, -1, 49, -1, + 51, 52, -1, -1, 55, -1, -1, 58, 59, -1, + 61, 62, -1, 64, 65, -1, 67, 68, 69, 70, + 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, + -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, + 91, 92, -1, 94, 95, 96, 97, 98, -1, 100, + -1, -1, 103, -1, -1, 106, -1, 108, -1, -1, + 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, + -1, 122, -1, -1, -1, -1, 127, 128, -1, -1, + -1, -1, 133, -1, 135, -1, -1, -1, -1, 140, + -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, + 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, + -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, + -1, 172, 173, 174, 175, 176, 177, 178, -1, -1, + 181, 182, 183, 184, -1, -1, 187, 188, -1, 190, + 191, 192, -1, -1, 195, -1, -1, -1, 199, 200, + -1, 202, -1, 204, -1, 206, 207, 208, 209, 210, + 211, 212, -1, 214, -1, -1, 217, 218, 219, -1, + 221, -1, -1, -1, 225, 226, -1, -1, -1, 230, + 231, 232, 233, 234, -1, -1, -1, 238, 239, 240, + -1, -1, 243, -1, -1, -1, -1, 248, 249, -1, + -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, + -1, -1, 263, -1, -1, 266, 267, 268, -1, -1, + 271, -1, -1, 274, 275, -1, -1, -1, -1, -1, + 281, 282, -1, 284, -1, 286, -1, 288, 289, -1, + -1, -1, -1, -1, -1, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, -1, 318, 319, 320, + 321, -1, 323, 324, 325, -1, -1, -1, -1, 330, + 331, 332, 333, 334, 335, -1, -1, 338, 339, -1, + 341, -1, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, -1, -1, 357, -1, -1, 360, + 361, 362, 363, -1, -1, -1, 367, 368, -1, -1, + -1, 372, -1, 374, 375, 376, -1, 378, 379, 380, + 381, -1, 383, 384, -1, -1, -1, -1, -1, -1, + -1, -1, 393, 394, 395, -1, -1, 398, -1, 400, + -1, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, -1, -1, 414, 415, 416, -1, 418, -1, 420, + 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, + 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, + -1, 442, 443, 444, 445, 446, -1, 448, 449, -1, + 451, 452, 453, -1, -1, 456, -1, 458, -1, 460, + 461, -1, 463, 464, -1, 466, -1, 468, -1, -1, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, -1, 484, 485, -1, -1, -1, 489, 490, + 491, 492, -1, -1, -1, 496, -1, -1, -1, 500, + -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, + 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, + 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, + 531, 532, 533, -1, -1, -1, 537, -1, -1, 540, + 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, + 551, 552, 553, 554, -1, 556, 557, -1, -1, 560, + 561, 562, 563, -1, -1, 566, 567, -1, 569, 570, + 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, + -1, -1, -1, 584, 585, 586, 587, -1, 589, 590, + -1, 592, 593, -1, 595, 596, -1, -1, 599, -1, + -1, 602, -1, 604, -1, 606, 607, -1, -1, -1, + -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, + 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, + -1, -1, -1, 634, 635, -1, 637, 638, 639, -1, + -1, 642, -1, -1, -1, -1, 5, -1, 7, 8, + 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, + 19, -1, -1, 22, 665, 24, 25, 26, 27, 28, + 29, 30, 31, 32, -1, 34, -1, -1, -1, 38, + -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, + 49, -1, 51, 52, -1, -1, 55, -1, -1, 58, + 59, -1, 61, 62, -1, 64, 65, -1, 67, 68, + 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, + 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, + 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, + -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, + -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, + 119, -1, -1, 122, -1, -1, -1, -1, 127, 128, + -1, -1, -1, -1, 133, -1, 135, -1, -1, -1, + -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, + -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, + -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, + 169, 170, -1, 172, 173, 174, 175, 176, 177, 178, + -1, -1, 181, 182, 183, 184, -1, -1, 187, 188, + -1, 190, 191, 192, -1, -1, 195, -1, -1, -1, + 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, + 209, 210, 211, 212, -1, 214, -1, -1, 217, 218, + 219, -1, 221, -1, -1, -1, 225, 226, -1, -1, + -1, 230, 231, 232, 233, 234, -1, -1, -1, 238, + 239, 240, -1, -1, 243, -1, -1, -1, -1, 248, + 249, -1, -1, -1, 253, -1, 255, 256, -1, 258, + 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, + -1, -1, 271, -1, -1, 274, 275, -1, -1, -1, + -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, + 289, -1, -1, -1, -1, -1, -1, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, + 319, 320, 321, -1, 323, 324, 325, -1, -1, -1, + -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, + 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, + -1, 360, 361, 362, 363, -1, -1, -1, 367, 368, + -1, -1, -1, 372, -1, 374, 375, 376, -1, 378, + 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 394, 395, -1, -1, 398, + -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, -1, -1, 414, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, + -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, + 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, + 449, -1, 451, 452, 453, -1, -1, 456, -1, 458, + -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, + -1, -1, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, + 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, + -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, + 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, + -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, + -1, -1, 531, 532, 533, -1, -1, -1, 537, -1, + -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, + -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, + -1, 560, 561, 562, 563, -1, -1, 566, 567, -1, + 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, + 579, 580, -1, -1, -1, 584, 585, 586, 587, -1, + 589, 590, -1, 592, 593, -1, 595, 596, -1, -1, + 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, + -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, + -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, + -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, + 639, -1, -1, 642, -1, -1, -1, -1, 5, -1, + 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, + -1, -1, 19, -1, -1, 22, 665, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, + -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, + 47, -1, 49, -1, 51, 52, -1, -1, 55, -1, + -1, 58, 59, -1, 61, 62, -1, 64, 65, -1, + 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, + 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, + 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, + 97, 98, -1, 100, -1, -1, 103, -1, -1, 106, + -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, + 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, + 127, 128, -1, -1, -1, -1, 133, -1, 135, -1, + -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, + -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, + -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, + 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, + 177, 178, -1, -1, 181, 182, 183, 184, -1, -1, + 187, 188, -1, 190, 191, 192, -1, -1, 195, -1, + -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, + 207, 208, 209, 210, 211, 212, -1, 214, -1, -1, + 217, 218, 219, -1, 221, -1, -1, -1, 225, 226, + -1, -1, -1, 230, 231, 232, 233, 234, -1, -1, + -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, + -1, 248, 249, -1, -1, -1, 253, -1, 255, 256, + -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, + 267, 268, -1, -1, 271, -1, -1, 274, 275, -1, + -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, + -1, 288, 289, -1, -1, -1, -1, -1, -1, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + -1, 318, 319, 320, 321, -1, 323, 324, 325, -1, + -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, + -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, + 357, -1, -1, 360, 361, 362, 363, -1, -1, -1, + 367, 368, -1, -1, -1, 372, -1, 374, 375, 376, + -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, + -1, -1, -1, -1, -1, -1, 393, 394, 395, -1, + -1, 398, -1, 400, -1, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, -1, -1, 414, 415, 416, + -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, + 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, + 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, + -1, 448, 449, -1, 451, 452, 453, -1, -1, 456, + -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, + -1, 468, -1, -1, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, + -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, + -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, + 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, + -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, + 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, + 537, -1, -1, 540, 541, -1, 543, 544, 545, 546, + 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, + 557, -1, -1, 560, 561, 562, 563, -1, -1, 566, + 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, + -1, 578, 579, 580, -1, -1, -1, 584, 585, 586, + 587, -1, 589, 590, -1, 592, 593, -1, 595, 596, + -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, + 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, + 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, + 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, + 637, 638, 639, -1, -1, 642, -1, -1, -1, -1, + 5, -1, 7, 8, 9, 10, 11, 12, -1, -1, + 15, -1, -1, -1, 19, -1, -1, 22, 665, 24, + 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, + -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, + 45, 46, 47, -1, 49, -1, 51, 52, -1, -1, + 55, -1, -1, 58, 59, -1, 61, 62, -1, 64, + 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, + 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, + 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, + 95, 96, 97, 98, -1, 100, -1, -1, 103, -1, + -1, 106, -1, 108, -1, -1, 111, -1, 113, -1, + -1, -1, 117, 118, 119, -1, -1, 122, -1, -1, + -1, -1, 127, 128, -1, -1, -1, -1, 133, -1, + 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, + 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, + 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, + 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, + 175, 176, 177, 178, -1, -1, 181, 182, 183, 184, + -1, -1, 187, 188, -1, 190, 191, 192, -1, -1, + 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, + -1, 206, 207, 208, 209, 210, 211, 212, -1, 214, + -1, -1, 217, 218, 219, -1, 221, -1, -1, -1, + 225, 226, -1, -1, -1, 230, 231, 232, 233, 234, + -1, -1, -1, 238, 239, 240, -1, -1, 243, -1, + -1, -1, -1, 248, 249, -1, -1, -1, 253, -1, + 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, + -1, 266, 267, 268, -1, -1, 271, -1, -1, 274, + 275, -1, -1, -1, -1, -1, 281, 282, -1, 284, + -1, 286, -1, 288, 289, -1, -1, -1, -1, -1, + -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, -1, 318, 319, 320, 321, -1, 323, 324, + 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, + 335, -1, -1, 338, 339, -1, 341, -1, 343, -1, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + -1, -1, 357, -1, -1, 360, 361, 362, 363, -1, + -1, -1, 367, 368, -1, -1, -1, 372, -1, 374, + 375, 376, -1, 378, 379, 380, 381, -1, 383, 384, + -1, -1, -1, -1, -1, -1, -1, -1, 393, 394, + 395, -1, -1, 398, -1, 400, -1, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, -1, -1, 414, + 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, + -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, + 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, + 445, 446, -1, 448, 449, -1, 451, 452, 453, -1, + -1, 456, -1, 458, -1, 460, 461, -1, 463, 464, + -1, 466, -1, 468, -1, -1, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, + 485, -1, -1, -1, 489, 490, 491, 492, -1, -1, + -1, 496, -1, -1, -1, 500, -1, 502, 503, 504, + 505, 506, 507, -1, 509, 510, 511, 512, 513, 514, + -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, + -1, -1, 527, -1, -1, -1, 531, 532, 533, -1, + -1, -1, 537, -1, -1, 540, 541, -1, 543, 544, + 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, + -1, 556, 557, -1, -1, 560, 561, 562, 563, -1, + -1, 566, 567, -1, 569, 570, 571, 572, -1, -1, + -1, -1, -1, 578, 579, 580, -1, -1, -1, 584, + 585, 586, 587, -1, 589, 590, -1, 592, 593, -1, + 595, 596, -1, -1, 599, -1, -1, 602, -1, 604, + -1, 606, 607, -1, -1, -1, -1, -1, -1, 614, + -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, + 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, + 635, -1, 637, 638, 639, -1, -1, 642, -1, -1, + -1, -1, 5, -1, 7, 8, 9, 10, 11, 12, + -1, -1, 15, -1, -1, -1, 19, -1, -1, 22, + 665, 24, 25, 26, 27, 28, 29, 30, 31, 32, + -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, + -1, -1, 45, 46, 47, -1, 49, -1, 51, 52, + -1, -1, 55, -1, -1, 58, 59, -1, 61, 62, + 63, 64, 65, -1, 67, 68, 69, 70, 71, 72, + -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, + 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, + -1, 94, 95, 96, 97, 98, -1, 100, -1, -1, + 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, + 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, + -1, -1, -1, -1, 127, 128, -1, -1, -1, 132, + 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, + 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, + -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, + 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, + 173, 174, 175, 176, 177, 178, -1, -1, 181, 182, + 183, 184, -1, -1, 187, 188, -1, 190, 191, 192, + -1, -1, 195, -1, -1, -1, 199, 200, -1, 202, + -1, 204, -1, 206, 207, 208, 209, 210, 211, 212, + -1, 214, -1, -1, 217, 218, 219, -1, 221, -1, + -1, -1, 225, 226, -1, -1, -1, 230, 231, 232, + 233, 234, -1, -1, -1, 238, 239, 240, -1, -1, + 243, -1, -1, -1, -1, 248, 249, -1, -1, -1, + 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, + 263, -1, -1, 266, 267, 268, -1, -1, 271, -1, + -1, 274, 275, -1, -1, -1, -1, -1, 281, 282, + -1, 284, -1, 286, -1, 288, 289, -1, -1, -1, + -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, -1, 318, 319, 320, 321, -1, + 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, + 333, 334, 335, -1, -1, 338, 339, -1, 341, -1, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, -1, -1, 357, -1, -1, 360, 361, 362, + 363, -1, -1, -1, 367, 368, -1, -1, -1, 372, + -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, + 383, 384, -1, -1, -1, -1, -1, -1, -1, -1, + 393, 394, 395, -1, -1, 398, -1, 400, -1, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, -1, + -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, + 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, + -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, + 443, 444, 445, 446, -1, 448, 449, -1, 451, 452, + 453, -1, -1, 456, -1, 458, -1, 460, 461, -1, + 463, 464, -1, 466, -1, 468, -1, -1, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + -1, 484, 485, -1, -1, -1, 489, 490, 491, 492, + -1, -1, -1, 496, -1, -1, -1, 500, -1, 502, + 503, 504, 505, 506, 507, -1, 509, 510, 511, 512, + 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, + -1, 524, -1, -1, 527, -1, -1, -1, 531, 532, + 533, -1, -1, -1, 537, -1, -1, 540, 541, -1, + 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, + 553, 554, -1, 556, 557, -1, -1, 560, 561, 562, + 563, -1, -1, 566, 567, -1, 569, 570, 571, 572, + -1, -1, -1, -1, -1, 578, 579, 580, -1, -1, + -1, 584, 585, 586, 587, -1, 589, 590, -1, 592, + 593, -1, 595, 596, -1, -1, 599, -1, -1, 602, + -1, 604, -1, 606, 607, -1, -1, -1, -1, -1, + -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, + 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, + -1, 634, 635, -1, 637, 638, 639, -1, -1, 642, + -1, -1, -1, 5, -1, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, 19, -1, -1, - 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, + 22, 664, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, -1, 51, 52, -1, -1, 55, -1, -1, 58, 59, -1, 61, @@ -16566,7 +14506,7 @@ static const yytype_int16 yycheck[] = -1, 243, -1, -1, -1, -1, 248, 249, -1, -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, -1, -1, 271, - -1, -1, 274, 275, -1, -1, -1, -1, -1, 281, + -1, -1, 274, 275, 276, -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, 289, -1, -1, -1, -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, @@ -16590,85 +14530,86 @@ static const yytype_int16 yycheck[] = 482, -1, 484, 485, -1, -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, 511, - 512, 513, 514, -1, -1, -1, 518, -1, -1, 521, + 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, 537, -1, -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, -1, 560, 561, - 562, 563, -1, -1, 566, 567, -1, 569, 570, 571, + 562, 563, -1, 565, 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, -1, -1, -1, 584, 585, 586, 587, -1, 589, 590, -1, 592, 593, -1, 595, 596, -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, - -1, -1, 634, 635, -1, 637, 638, 639, -1, 5, - 642, 7, 8, 9, 10, 11, 12, -1, -1, 15, - -1, -1, -1, 19, -1, -1, 22, -1, 24, 25, - 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, - -1, -1, 38, -1, -1, -1, 42, -1, -1, 45, - 46, 47, -1, 49, -1, 51, 52, -1, -1, 55, - -1, -1, 58, 59, -1, 61, 62, -1, 64, 65, - -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, - 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, - 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, - 96, 97, 98, -1, 100, -1, -1, 103, -1, -1, - 106, -1, 108, -1, -1, 111, -1, 113, -1, -1, - -1, 117, 118, 119, -1, -1, 122, -1, -1, -1, - -1, 127, 128, -1, -1, -1, -1, 133, -1, 135, - -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, - 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, - 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, - 166, 167, -1, 169, 170, -1, 172, 173, 174, 175, - 176, 177, 178, -1, -1, 181, 182, 183, 184, -1, - -1, 187, 188, -1, 190, 191, 192, -1, -1, 195, - -1, -1, -1, 199, 200, 201, 202, -1, 204, -1, - 206, 207, 208, 209, 210, 211, 212, -1, 214, -1, - -1, 217, 218, 219, -1, 221, -1, -1, -1, 225, - 226, -1, -1, -1, 230, 231, 232, 233, 234, -1, - -1, -1, 238, 239, 240, -1, -1, 243, -1, -1, - -1, -1, 248, 249, -1, -1, -1, 253, -1, 255, - 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, - 266, 267, 268, -1, -1, 271, -1, -1, 274, 275, - -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, - 286, -1, 288, 289, -1, -1, -1, -1, -1, -1, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, -1, 318, 319, 320, 321, -1, 323, 324, 325, - -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, - -1, -1, 338, 339, -1, 341, -1, 343, -1, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, - -1, 357, -1, -1, 360, 361, 362, 363, -1, -1, - -1, 367, 368, -1, -1, -1, 372, -1, 374, 375, - 376, -1, 378, 379, 380, 381, -1, 383, 384, -1, - -1, -1, -1, -1, -1, -1, -1, 393, 394, 395, - -1, -1, 398, -1, 400, -1, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, -1, -1, 414, 415, - 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, - 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, - 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, - 446, -1, 448, 449, -1, 451, 452, 453, -1, -1, - 456, -1, 458, -1, 460, 461, -1, 463, 464, -1, - 466, -1, 468, -1, -1, 471, 472, 473, 474, 475, - 476, 477, 478, 479, 480, 481, 482, -1, 484, 485, - -1, -1, -1, 489, 490, 491, 492, -1, -1, -1, - 496, -1, -1, -1, 500, -1, 502, 503, 504, 505, - 506, 507, -1, 509, 510, 511, 512, 513, 514, -1, - -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, - -1, 527, -1, -1, -1, 531, 532, 533, -1, -1, - -1, 537, -1, -1, 540, 541, -1, 543, 544, 545, - 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, - 556, 557, -1, -1, 560, 561, 562, 563, -1, -1, - 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, - -1, -1, 578, 579, 580, -1, -1, -1, 584, 585, - 586, 587, -1, 589, 590, -1, 592, 593, -1, 595, - 596, -1, -1, 599, -1, -1, 602, -1, 604, -1, - 606, 607, -1, -1, -1, -1, -1, -1, 614, -1, - -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, - 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, - -1, 637, 638, 639, -1, 5, 642, 7, 8, 9, + -1, -1, 634, 635, -1, 637, 638, 639, -1, -1, + 642, -1, -1, -1, 5, -1, 7, 8, 9, 10, + 11, 12, -1, -1, 15, -1, -1, -1, 19, -1, + -1, 22, 664, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, 34, -1, -1, -1, 38, -1, -1, + -1, 42, -1, -1, 45, 46, 47, -1, 49, -1, + 51, 52, -1, -1, 55, -1, -1, 58, 59, -1, + 61, 62, -1, 64, 65, -1, 67, 68, 69, 70, + 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, + -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, + 91, 92, -1, 94, 95, 96, 97, 98, -1, 100, + -1, -1, 103, -1, -1, 106, -1, 108, -1, -1, + 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, + -1, 122, -1, -1, -1, -1, 127, 128, -1, -1, + -1, -1, 133, -1, 135, -1, -1, -1, -1, 140, + -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, + 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, + -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, + -1, 172, 173, 174, 175, 176, 177, 178, -1, -1, + 181, 182, 183, 184, -1, -1, 187, 188, -1, 190, + 191, 192, -1, -1, 195, -1, -1, -1, 199, 200, + -1, 202, -1, 204, -1, 206, 207, 208, 209, 210, + 211, 212, -1, 214, -1, -1, 217, 218, 219, -1, + 221, -1, -1, -1, 225, 226, -1, -1, -1, 230, + 231, 232, 233, 234, -1, -1, -1, 238, 239, 240, + -1, -1, 243, -1, -1, -1, -1, 248, 249, -1, + -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, + -1, -1, 263, -1, -1, 266, 267, 268, -1, -1, + 271, -1, -1, 274, 275, 276, -1, -1, -1, -1, + 281, 282, -1, 284, -1, 286, -1, 288, 289, -1, + -1, -1, -1, -1, -1, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, -1, 318, 319, 320, + 321, -1, 323, 324, 325, -1, -1, -1, -1, 330, + 331, 332, 333, 334, 335, -1, -1, 338, 339, -1, + 341, -1, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, -1, -1, 357, -1, -1, 360, + 361, 362, 363, -1, -1, -1, 367, 368, -1, -1, + -1, 372, -1, 374, 375, 376, -1, 378, 379, 380, + 381, -1, 383, 384, -1, -1, -1, -1, -1, -1, + -1, -1, 393, 394, 395, -1, -1, 398, -1, 400, + -1, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, -1, -1, 414, 415, 416, -1, 418, -1, 420, + 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, + 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, + -1, 442, 443, 444, 445, 446, -1, 448, 449, -1, + 451, 452, 453, -1, -1, 456, -1, 458, -1, 460, + 461, -1, 463, 464, -1, 466, -1, 468, -1, -1, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, -1, 484, 485, -1, -1, -1, 489, 490, + 491, 492, -1, -1, -1, 496, -1, -1, -1, 500, + -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, + 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, + 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, + 531, 532, 533, -1, -1, -1, 537, -1, -1, 540, + 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, + 551, 552, 553, 554, -1, 556, 557, -1, -1, 560, + 561, 562, 563, -1, 565, 566, 567, -1, 569, 570, + 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, + -1, -1, -1, 584, 585, 586, 587, -1, 589, 590, + -1, 592, 593, -1, 595, 596, -1, -1, 599, -1, + -1, 602, -1, 604, -1, 606, 607, -1, -1, -1, + -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, + 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, + -1, -1, -1, 634, 635, -1, 637, 638, 639, -1, + -1, 642, -1, -1, -1, 5, -1, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, 19, - -1, -1, 22, -1, 24, 25, 26, 27, 28, 29, + -1, -1, 22, 664, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, -1, 51, 52, -1, -1, 55, -1, -1, 58, 59, @@ -16679,7 +14620,7 @@ static const yytype_int16 yycheck[] = 100, -1, -1, 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, 127, 128, -1, - -1, -1, 132, 133, -1, 135, -1, -1, -1, -1, + -1, -1, -1, 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, 169, @@ -16693,7 +14634,7 @@ static const yytype_int16 yycheck[] = 240, -1, -1, 243, -1, -1, -1, -1, 248, 249, -1, -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, -1, - -1, 271, -1, -1, 274, 275, -1, -1, -1, -1, + -1, 271, -1, -1, 274, 275, 276, -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, 289, -1, -1, -1, -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, @@ -16722,7 +14663,7 @@ static const yytype_int16 yycheck[] = -1, 531, 532, 533, -1, -1, -1, 537, -1, -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, -1, - 560, 561, 562, 563, -1, -1, 566, 567, -1, 569, + 560, 561, 562, 563, -1, 565, 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, -1, -1, -1, 584, 585, 586, 587, -1, 589, 590, -1, 592, 593, -1, 595, 596, -1, -1, 599, @@ -16730,83 +14671,84 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, 639, - -1, 5, 642, 7, 8, 9, 10, 11, 12, -1, - -1, 15, -1, -1, -1, 19, -1, -1, 22, -1, - 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, - 34, -1, -1, -1, 38, -1, -1, -1, 42, -1, - -1, 45, 46, 47, -1, 49, -1, 51, 52, -1, - -1, 55, -1, -1, 58, 59, -1, 61, 62, -1, - 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, - 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, - 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, - 94, 95, 96, 97, 98, -1, 100, -1, -1, 103, - -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, - -1, -1, -1, 117, 118, 119, -1, -1, 122, -1, - -1, -1, -1, 127, 128, -1, -1, -1, 132, 133, - -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, - 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, - 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, - -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, - 174, 175, 176, 177, 178, -1, -1, 181, 182, 183, - 184, -1, -1, 187, 188, -1, 190, 191, 192, -1, - -1, 195, -1, -1, -1, 199, 200, -1, 202, -1, - 204, -1, 206, 207, 208, 209, 210, 211, 212, -1, - 214, -1, -1, 217, 218, 219, -1, 221, -1, -1, - -1, 225, 226, -1, -1, -1, 230, 231, 232, 233, - 234, -1, -1, -1, 238, 239, 240, -1, -1, 243, - -1, -1, -1, -1, 248, 249, -1, -1, -1, 253, - -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, - -1, -1, 266, 267, 268, -1, -1, 271, -1, -1, - 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, - 284, -1, 286, -1, 288, 289, -1, -1, -1, -1, - -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, -1, 318, 319, 320, 321, -1, 323, - 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, - 334, 335, -1, -1, 338, 339, -1, 341, -1, 343, - -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, -1, -1, 357, -1, -1, 360, 361, 362, 363, - -1, -1, -1, 367, 368, -1, -1, -1, 372, -1, - 374, 375, 376, -1, 378, 379, 380, 381, -1, 383, - 384, -1, -1, -1, -1, -1, -1, -1, -1, 393, - 394, 395, -1, -1, 398, -1, 400, -1, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, -1, -1, - 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, - 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, - -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, - 444, 445, 446, -1, 448, 449, -1, 451, 452, 453, - -1, -1, 456, -1, 458, -1, 460, 461, -1, 463, - 464, -1, 466, -1, 468, -1, -1, 471, 472, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, -1, - 484, 485, -1, -1, -1, 489, 490, 491, 492, -1, - -1, -1, 496, -1, -1, -1, 500, -1, 502, 503, - 504, 505, 506, 507, -1, 509, 510, 511, 512, 513, - 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, - 524, -1, -1, 527, -1, -1, -1, 531, 532, 533, - -1, -1, -1, 537, -1, -1, 540, 541, -1, 543, - 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, - 554, -1, 556, 557, -1, -1, 560, 561, 562, 563, - -1, -1, 566, 567, -1, 569, 570, 571, 572, -1, - -1, -1, -1, -1, 578, 579, 580, -1, -1, -1, - 584, 585, 586, 587, -1, 589, 590, -1, 592, 593, - -1, 595, 596, -1, -1, 599, -1, -1, 602, -1, - 604, -1, 606, 607, -1, -1, -1, -1, -1, -1, - 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, - 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, - 634, 635, -1, 637, 638, 639, -1, 5, 642, 7, + -1, -1, 642, -1, -1, -1, 5, -1, 7, 8, + 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, + 19, -1, -1, 22, 664, 24, 25, 26, 27, 28, + 29, 30, 31, 32, -1, 34, -1, -1, -1, 38, + -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, + 49, -1, 51, 52, -1, -1, 55, -1, -1, 58, + 59, -1, 61, 62, 63, 64, 65, -1, 67, 68, + 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, + 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, + 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, + -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, + -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, + 119, -1, -1, 122, -1, -1, -1, -1, 127, 128, + -1, -1, -1, 132, 133, -1, 135, -1, -1, -1, + -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, + -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, + -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, + 169, 170, -1, 172, 173, 174, 175, 176, 177, 178, + -1, -1, 181, 182, 183, 184, -1, -1, 187, 188, + -1, 190, 191, 192, -1, -1, 195, -1, -1, -1, + 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, + 209, 210, 211, 212, -1, 214, -1, -1, 217, 218, + 219, -1, 221, -1, -1, -1, 225, 226, -1, -1, + -1, 230, 231, 232, 233, 234, -1, -1, -1, 238, + 239, 240, -1, -1, 243, -1, -1, -1, -1, 248, + 249, -1, -1, -1, 253, -1, 255, 256, -1, 258, + 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, + -1, -1, 271, -1, -1, 274, 275, -1, -1, -1, + -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, + 289, -1, -1, -1, -1, -1, -1, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, + 319, 320, 321, -1, 323, 324, 325, -1, -1, -1, + -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, + 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, + -1, 360, 361, 362, 363, -1, -1, -1, 367, 368, + -1, -1, -1, 372, -1, 374, 375, 376, -1, 378, + 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 394, 395, -1, -1, 398, + -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, -1, -1, 414, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, + -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, + 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, + 449, -1, 451, 452, 453, -1, -1, 456, -1, 458, + -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, + -1, -1, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, + 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, + -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, + 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, + -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, + -1, -1, 531, 532, 533, -1, -1, -1, 537, -1, + -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, + -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, + -1, 560, 561, 562, 563, -1, -1, 566, 567, -1, + 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, + 579, 580, -1, -1, -1, 584, 585, 586, 587, -1, + 589, 590, -1, 592, 593, -1, 595, 596, -1, -1, + 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, + -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, + -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, + -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, + 639, -1, -1, 642, -1, -1, -1, 5, -1, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, - -1, 19, -1, -1, 22, -1, 24, 25, 26, 27, + -1, 19, -1, -1, 22, 664, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, -1, 51, 52, -1, -1, 55, -1, -1, 58, 59, -1, 61, 62, -1, 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, - 88, 89, -1, 91, 92, -1, 94, 95, 96, 97, + 88, 89, 90, 91, 92, -1, 94, 95, 96, 97, 98, -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, 127, - 128, -1, -1, -1, 132, 133, -1, 135, -1, -1, + 128, -1, -1, -1, -1, 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, @@ -16857,99 +14799,100 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, 637, - 638, 639, -1, 5, 642, 7, 8, 9, 10, 11, - 12, -1, -1, 15, -1, -1, -1, 19, -1, -1, - 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, - 32, -1, 34, -1, -1, -1, 38, -1, -1, -1, - 42, -1, -1, 45, 46, 47, -1, 49, -1, 51, - 52, -1, -1, 55, -1, -1, 58, 59, -1, 61, - 62, -1, 64, 65, -1, 67, 68, 69, 70, 71, - 72, -1, 74, 75, 76, 77, 78, 79, 80, -1, - 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, - 92, -1, 94, 95, 96, 97, 98, -1, 100, -1, - -1, 103, -1, -1, 106, -1, 108, -1, -1, 111, - -1, 113, -1, -1, -1, 117, 118, 119, -1, -1, - 122, -1, -1, -1, -1, 127, 128, -1, -1, -1, - -1, 133, -1, 135, -1, -1, -1, -1, 140, -1, - 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, - -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, - 162, 163, -1, 165, 166, 167, -1, 169, 170, -1, - 172, 173, 174, 175, 176, 177, 178, -1, -1, 181, - 182, 183, 184, -1, -1, 187, 188, -1, 190, 191, - 192, -1, -1, 195, -1, -1, -1, 199, 200, -1, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, -1, 214, -1, -1, 217, 218, 219, -1, 221, - -1, -1, -1, 225, 226, -1, -1, -1, 230, 231, - 232, 233, 234, -1, -1, -1, 238, 239, 240, -1, - -1, 243, -1, -1, -1, -1, 248, 249, -1, -1, - -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, - -1, 263, -1, -1, 266, 267, 268, -1, -1, 271, - -1, -1, 274, 275, -1, -1, -1, -1, -1, 281, - 282, -1, 284, -1, 286, -1, 288, 289, -1, -1, - -1, -1, -1, -1, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, -1, 318, 319, 320, 321, - -1, 323, 324, 325, -1, -1, -1, -1, 330, 331, - 332, 333, 334, 335, -1, -1, 338, 339, -1, 341, - -1, 343, -1, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, -1, -1, 357, -1, -1, 360, 361, - 362, 363, -1, -1, -1, 367, 368, -1, -1, -1, - 372, -1, 374, 375, 376, -1, 378, 379, 380, 381, - -1, 383, 384, -1, -1, -1, -1, -1, -1, -1, - -1, 393, 394, 395, -1, -1, 398, -1, 400, -1, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - -1, -1, 414, 415, 416, 417, 418, -1, 420, 421, - 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, - -1, -1, -1, 435, 436, 437, 438, 439, -1, -1, - 442, 443, 444, 445, 446, -1, 448, 449, -1, 451, - 452, 453, -1, -1, 456, -1, 458, -1, 460, 461, - -1, 463, 464, -1, 466, -1, 468, -1, -1, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, -1, 484, 485, -1, -1, -1, 489, 490, 491, - 492, -1, -1, -1, 496, -1, -1, -1, 500, -1, - 502, 503, 504, 505, 506, 507, -1, 509, 510, 511, - 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, - 522, -1, 524, -1, -1, 527, -1, -1, -1, 531, - 532, 533, -1, -1, -1, 537, -1, -1, 540, 541, - -1, 543, 544, 545, 546, 547, 548, -1, -1, 551, - 552, 553, 554, -1, 556, 557, -1, -1, 560, 561, - 562, 563, -1, -1, 566, 567, -1, 569, 570, 571, - 572, -1, -1, -1, -1, -1, 578, 579, 580, -1, - -1, -1, 584, 585, 586, 587, -1, 589, 590, -1, - 592, 593, -1, 595, 596, -1, -1, 599, -1, -1, - 602, -1, 604, -1, 606, 607, -1, -1, -1, -1, - -1, -1, 614, -1, -1, 617, -1, -1, -1, 621, - 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, - -1, -1, 634, 635, -1, 637, 638, 639, -1, 5, - 642, 7, 8, 9, 10, 11, 12, -1, -1, 15, - -1, -1, -1, 19, -1, -1, 22, -1, 24, 25, - 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, + 638, 639, -1, -1, 642, -1, -1, -1, 5, -1, + 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, + -1, -1, 19, -1, -1, 22, 664, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, + -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, + 47, -1, 49, -1, 51, 52, -1, -1, 55, -1, + -1, 58, 59, -1, 61, 62, -1, 64, 65, -1, + 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, + 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, + 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, + 97, 98, -1, 100, -1, -1, 103, -1, -1, 106, + -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, + 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, + 127, 128, -1, -1, -1, -1, 133, -1, 135, -1, + -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, + -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, + -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, + 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, + 177, 178, -1, -1, 181, 182, 183, 184, -1, -1, + 187, 188, -1, 190, 191, 192, -1, -1, 195, -1, + -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, + 207, 208, 209, 210, 211, 212, -1, 214, -1, -1, + 217, 218, 219, -1, 221, -1, -1, -1, 225, 226, + -1, -1, -1, 230, 231, 232, 233, 234, -1, -1, + -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, + -1, 248, 249, -1, -1, -1, 253, -1, 255, 256, + -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, + 267, 268, -1, -1, 271, -1, -1, 274, 275, -1, + -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, + -1, 288, 289, -1, -1, -1, -1, -1, -1, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + -1, 318, 319, 320, 321, -1, 323, 324, 325, -1, + -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, + -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, + 357, -1, -1, 360, 361, 362, 363, -1, -1, -1, + 367, 368, -1, -1, -1, 372, -1, 374, 375, 376, + -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, + -1, -1, -1, -1, -1, -1, 393, 394, 395, -1, + -1, 398, -1, 400, -1, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, -1, -1, 414, 415, 416, + -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, + 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, + 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, + -1, 448, 449, -1, 451, 452, 453, -1, -1, 456, + -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, + -1, 468, -1, -1, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, + -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, + -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, + 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, + -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, + 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, + 537, -1, -1, 540, 541, -1, 543, 544, 545, 546, + 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, + 557, -1, -1, 560, 561, 562, 563, -1, -1, 566, + 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, + -1, 578, 579, 580, -1, -1, -1, 584, 585, 586, + 587, -1, 589, 590, -1, 592, 593, -1, 595, 596, + -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, + 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, + 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, + 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, + 637, 638, 639, -1, -1, 642, -1, -1, -1, 5, + -1, 7, 8, 9, 10, 11, 12, -1, -1, 15, + -1, -1, -1, 19, -1, -1, -1, 664, 24, 25, + 26, 27, 28, 29, 30, 31, -1, -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, 45, - 46, 47, -1, 49, -1, 51, 52, -1, -1, 55, - -1, -1, 58, 59, -1, 61, 62, -1, 64, 65, + 46, 47, -1, 49, -1, -1, -1, -1, -1, 55, + 56, -1, 58, 59, -1, 61, -1, -1, -1, -1, -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, - 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, + -1, -1, -1, -1, -1, -1, 82, -1, 84, -1, 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, - 96, 97, 98, -1, 100, -1, -1, 103, -1, -1, + 96, -1, 98, -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, -1, -1, -1, - -1, 127, 128, -1, -1, -1, -1, 133, -1, 135, + -1, 127, -1, -1, -1, -1, -1, 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, - 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, - 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, + 146, -1, -1, -1, -1, -1, -1, -1, 154, 155, + 156, -1, -1, -1, 160, -1, -1, 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, 175, - 176, 177, 178, -1, -1, 181, 182, 183, 184, -1, - -1, 187, 188, -1, 190, 191, 192, -1, -1, 195, - -1, -1, -1, 199, 200, -1, 202, -1, 204, -1, - 206, 207, 208, 209, 210, 211, 212, -1, 214, -1, - -1, 217, 218, 219, -1, 221, -1, -1, -1, 225, - 226, -1, -1, -1, 230, 231, 232, 233, 234, -1, + 176, -1, -1, -1, -1, 181, 182, 183, 184, -1, + -1, 187, 188, 189, 190, 191, 192, -1, -1, -1, + -1, -1, -1, -1, 200, -1, 202, -1, 204, -1, + 206, 207, 208, 209, 210, -1, 212, -1, 214, -1, + -1, -1, 218, 219, -1, -1, -1, -1, -1, -1, + 226, -1, -1, -1, 230, 231, 232, 233, 234, 235, -1, -1, 238, 239, 240, -1, -1, 243, -1, -1, - -1, -1, 248, 249, -1, -1, -1, 253, -1, 255, - 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, - 266, 267, 268, -1, -1, 271, -1, -1, 274, 275, + -1, -1, 248, -1, -1, -1, -1, 253, -1, 255, + 256, -1, 258, 259, 260, -1, -1, 263, -1, -1, + -1, 267, 268, -1, -1, 271, 272, -1, 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, - 286, -1, 288, 289, -1, -1, -1, -1, -1, -1, + 286, -1, 288, 289, -1, -1, -1, -1, 294, -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, 319, 320, 321, -1, 323, 324, 325, @@ -16957,36 +14900,36 @@ static const yytype_int16 yycheck[] = -1, -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, -1, 360, 361, 362, 363, -1, -1, - -1, 367, 368, -1, -1, -1, 372, -1, 374, 375, - 376, -1, 378, 379, 380, 381, -1, 383, 384, -1, - -1, -1, -1, -1, -1, -1, -1, 393, 394, 395, - -1, -1, 398, -1, 400, -1, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, -1, -1, 414, 415, + -1, -1, 368, -1, -1, -1, 372, -1, 374, 375, + 376, -1, 378, 379, 380, 381, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 394, 395, + -1, -1, -1, -1, 400, -1, 402, 403, 404, 405, + 406, 407, 408, 409, 410, -1, -1, -1, -1, 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, - 446, -1, 448, 449, -1, 451, 452, 453, -1, -1, - 456, -1, 458, -1, 460, 461, -1, 463, 464, -1, - 466, -1, 468, -1, -1, 471, 472, 473, 474, 475, - 476, 477, 478, 479, 480, 481, 482, -1, 484, 485, - -1, -1, -1, 489, 490, 491, 492, -1, -1, -1, - 496, -1, -1, -1, 500, -1, 502, 503, 504, 505, - 506, 507, -1, 509, 510, 511, 512, 513, 514, -1, + 446, -1, 448, -1, -1, 451, -1, 453, 454, -1, + 456, -1, -1, -1, 460, -1, -1, 463, 464, -1, + 466, 467, 468, -1, -1, 471, -1, 473, 474, 475, + 476, 477, 478, 479, -1, 481, 482, -1, 484, -1, + -1, -1, -1, 489, 490, 491, -1, -1, -1, -1, + 496, -1, -1, -1, -1, -1, -1, 503, -1, -1, + 506, 507, -1, 509, -1, 511, -1, 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, - -1, 527, -1, -1, -1, 531, 532, 533, -1, -1, - -1, 537, -1, -1, 540, 541, -1, 543, 544, 545, + -1, 527, -1, -1, -1, 531, -1, 533, -1, -1, + -1, 537, -1, -1, -1, 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, - 556, 557, -1, -1, 560, 561, 562, 563, -1, 565, + 556, 557, -1, -1, 560, 561, 562, 563, -1, -1, 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, - -1, -1, 578, 579, 580, -1, -1, -1, 584, 585, - 586, 587, -1, 589, 590, -1, 592, 593, -1, 595, - 596, -1, -1, 599, -1, -1, 602, -1, 604, -1, + -1, -1, 578, 579, 580, -1, -1, -1, -1, 585, + 586, 587, -1, 589, 590, -1, 592, 593, -1, -1, + -1, -1, -1, 599, -1, -1, 602, -1, -1, -1, 606, 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, - 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, - -1, 637, 638, 639, -1, 5, 642, 7, 8, 9, + 626, 627, -1, -1, 630, -1, -1, -1, 634, -1, + -1, 637, -1, 639, -1, 5, 642, 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, 19, - -1, -1, 22, -1, 24, 25, 26, 27, 28, 29, + -1, -1, 22, 659, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, -1, 51, 52, -1, -1, 55, -1, -1, 58, 59, @@ -16994,10 +14937,10 @@ static const yytype_int16 yycheck[] = 70, 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, -1, - 100, -1, -1, 103, -1, -1, 106, -1, 108, -1, + 100, -1, -1, 103, -1, -1, 106, -1, 108, 109, -1, 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, 127, 128, -1, - -1, -1, 132, 133, -1, 135, -1, -1, -1, -1, + -1, -1, -1, 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, 169, @@ -17011,7 +14954,7 @@ static const yytype_int16 yycheck[] = 240, -1, -1, 243, -1, -1, -1, -1, 248, 249, -1, -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, -1, - -1, 271, -1, -1, 274, 275, -1, -1, -1, -1, + -1, 271, -1, -1, 274, 275, 276, -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, 289, -1, -1, -1, -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, @@ -17040,7 +14983,7 @@ static const yytype_int16 yycheck[] = -1, 531, 532, 533, -1, -1, -1, 537, -1, -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, -1, - 560, 561, 562, 563, -1, -1, 566, 567, -1, 569, + 560, 561, 562, 563, -1, 565, 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, -1, -1, -1, 584, 585, 586, 587, -1, 589, 590, -1, 592, 593, -1, 595, 596, -1, -1, 599, @@ -17048,8 +14991,8 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, 639, - -1, 5, 642, 7, 8, 9, 10, 11, 12, 13, - -1, 15, -1, -1, -1, 19, -1, -1, 22, -1, + -1, 5, 642, 7, 8, 9, 10, 11, 12, -1, + -1, 15, -1, -1, -1, 19, -1, 657, 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, -1, 51, 52, -1, @@ -17112,7 +15055,7 @@ static const yytype_int16 yycheck[] = 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, 639, -1, 5, 642, 7, - 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, + 8, 9, 10, 11, 12, -1, -1, 15, 652, -1, -1, 19, -1, -1, 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, 47, @@ -17124,7 +15067,7 @@ static const yytype_int16 yycheck[] = 98, -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, 127, - 128, -1, -1, -1, 132, 133, -1, 135, -1, -1, + 128, -1, -1, -1, -1, 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, @@ -17164,428 +15107,110 @@ static const yytype_int16 yycheck[] = -1, -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, 527, - -1, -1, -1, 531, 532, 533, -1, -1, -1, 537, - -1, -1, 540, 541, -1, 543, 544, 545, 546, 547, - 548, -1, -1, 551, 552, 553, 554, -1, 556, 557, - -1, -1, 560, 561, 562, 563, -1, -1, 566, 567, - -1, 569, 570, 571, 572, -1, -1, -1, -1, -1, - 578, 579, 580, -1, -1, -1, 584, 585, 586, 587, - -1, 589, 590, -1, 592, 593, -1, 595, 596, -1, - -1, 599, -1, -1, 602, -1, 604, -1, 606, 607, - -1, -1, -1, -1, -1, -1, 614, -1, -1, 617, - -1, -1, -1, 621, 622, 623, 624, 625, 626, 627, - -1, -1, -1, -1, -1, -1, 634, 635, -1, 637, - 638, 639, -1, 5, 642, 7, 8, 9, 10, 11, - 12, -1, -1, 15, -1, -1, -1, 19, -1, -1, - 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, - 32, -1, 34, -1, -1, -1, 38, -1, -1, -1, - 42, -1, -1, 45, 46, 47, -1, 49, -1, 51, - 52, -1, -1, 55, -1, -1, 58, 59, -1, 61, - 62, -1, 64, 65, -1, 67, 68, 69, 70, 71, - 72, -1, 74, 75, 76, 77, 78, 79, 80, -1, - 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, - 92, -1, 94, 95, 96, 97, 98, -1, 100, -1, - -1, 103, -1, -1, 106, -1, 108, -1, -1, 111, - -1, 113, -1, -1, -1, 117, 118, 119, -1, -1, - 122, -1, -1, -1, -1, 127, 128, -1, -1, -1, - -1, 133, -1, 135, -1, -1, -1, -1, 140, -1, - 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, - -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, - 162, 163, -1, 165, 166, 167, -1, 169, 170, -1, - 172, 173, 174, 175, 176, 177, 178, -1, -1, 181, - 182, 183, 184, -1, -1, 187, 188, -1, 190, 191, - 192, -1, -1, 195, -1, -1, -1, 199, 200, -1, - 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, - 212, -1, 214, -1, -1, 217, 218, 219, -1, 221, - -1, -1, -1, 225, 226, -1, -1, -1, 230, 231, - 232, 233, 234, -1, -1, -1, 238, 239, 240, -1, - -1, 243, -1, -1, -1, -1, 248, 249, -1, -1, - -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, - -1, 263, -1, -1, 266, 267, 268, -1, -1, 271, - -1, -1, 274, 275, -1, -1, -1, -1, -1, 281, - 282, -1, 284, -1, 286, -1, 288, 289, -1, -1, - -1, -1, -1, -1, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, -1, 318, 319, 320, 321, - -1, 323, 324, 325, -1, -1, -1, -1, 330, 331, - 332, 333, 334, 335, -1, -1, 338, 339, -1, 341, - -1, 343, -1, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, -1, -1, 357, -1, -1, 360, 361, - 362, 363, -1, -1, -1, 367, 368, -1, -1, -1, - 372, -1, 374, 375, 376, -1, 378, 379, 380, 381, - -1, 383, 384, -1, -1, -1, -1, -1, -1, -1, - -1, 393, 394, 395, -1, -1, 398, -1, 400, -1, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - -1, -1, 414, 415, 416, 417, 418, -1, 420, 421, - 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, - -1, -1, -1, 435, 436, 437, 438, 439, -1, -1, - 442, 443, 444, 445, 446, -1, 448, 449, -1, 451, - 452, 453, -1, -1, 456, -1, 458, -1, 460, 461, - -1, 463, 464, -1, 466, -1, 468, -1, -1, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, -1, 484, 485, -1, -1, -1, 489, 490, 491, - 492, -1, -1, -1, 496, -1, -1, -1, 500, -1, - 502, 503, 504, 505, 506, 507, -1, 509, 510, 511, - 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, - 522, -1, 524, -1, -1, 527, -1, -1, -1, 531, - 532, 533, -1, -1, -1, 537, -1, -1, 540, 541, - -1, 543, 544, 545, 546, 547, 548, -1, -1, 551, - 552, 553, 554, -1, 556, 557, -1, -1, 560, 561, - 562, 563, -1, -1, 566, 567, -1, 569, 570, 571, - 572, -1, -1, -1, -1, -1, 578, 579, 580, -1, - -1, -1, 584, 585, 586, 587, -1, 589, 590, -1, - 592, 593, -1, 595, 596, -1, -1, 599, -1, -1, - 602, -1, 604, -1, 606, 607, -1, -1, -1, -1, - -1, -1, 614, -1, -1, 617, -1, -1, -1, 621, - 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, - -1, -1, 634, 635, -1, 637, 638, 639, -1, 5, - 642, 7, 8, 9, 10, 11, 12, -1, -1, 15, - -1, -1, -1, 19, -1, -1, 22, -1, 24, 25, - 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, - -1, -1, 38, -1, -1, -1, 42, -1, -1, 45, - 46, 47, -1, 49, -1, 51, 52, -1, -1, 55, - -1, -1, 58, 59, -1, 61, 62, -1, 64, 65, - -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, - 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, - 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, - 96, 97, 98, -1, 100, -1, -1, 103, -1, -1, - 106, -1, 108, -1, -1, 111, -1, 113, -1, -1, - -1, 117, 118, 119, -1, -1, 122, -1, -1, -1, - -1, 127, 128, -1, -1, -1, -1, 133, -1, 135, - -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, - 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, - 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, - 166, 167, -1, 169, 170, -1, 172, 173, 174, 175, - 176, 177, 178, -1, -1, 181, 182, 183, 184, -1, - -1, 187, 188, -1, 190, 191, 192, -1, -1, 195, - -1, -1, -1, 199, 200, -1, 202, -1, 204, -1, - 206, 207, 208, 209, 210, 211, 212, -1, 214, -1, - -1, 217, 218, 219, -1, 221, -1, -1, -1, 225, - 226, -1, -1, -1, 230, 231, 232, 233, 234, -1, - -1, -1, 238, 239, 240, -1, -1, 243, -1, -1, - -1, -1, 248, 249, -1, -1, -1, 253, -1, 255, - 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, - 266, 267, 268, -1, -1, 271, -1, -1, 274, 275, - -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, - 286, -1, 288, 289, -1, -1, -1, -1, -1, -1, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, -1, 318, 319, 320, 321, -1, 323, 324, 325, - -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, - -1, -1, 338, 339, -1, 341, -1, 343, -1, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, - -1, 357, -1, -1, 360, 361, 362, 363, -1, -1, - -1, 367, 368, -1, -1, -1, 372, -1, 374, 375, - 376, -1, 378, 379, 380, 381, -1, 383, 384, -1, - -1, -1, -1, -1, -1, -1, -1, 393, 394, 395, - -1, -1, 398, -1, 400, -1, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, -1, -1, 414, 415, - 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, - 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, - 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, - 446, -1, 448, 449, -1, 451, 452, 453, -1, -1, - 456, -1, 458, -1, 460, 461, -1, 463, 464, -1, - 466, -1, 468, -1, -1, 471, 472, 473, 474, 475, - 476, 477, 478, 479, 480, 481, 482, -1, 484, 485, - -1, -1, -1, 489, 490, 491, 492, -1, -1, -1, - 496, -1, -1, -1, 500, -1, 502, 503, 504, 505, - 506, 507, -1, 509, 510, 511, 512, 513, 514, -1, - -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, - -1, 527, -1, -1, -1, 531, 532, 533, -1, -1, - -1, 537, -1, -1, 540, 541, -1, 543, 544, 545, - 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, - 556, 557, -1, -1, 560, 561, 562, 563, -1, -1, - 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, - -1, -1, 578, 579, 580, -1, -1, -1, 584, 585, - 586, 587, -1, 589, 590, -1, 592, 593, -1, 595, - 596, -1, -1, 599, -1, -1, 602, -1, 604, -1, - 606, 607, -1, -1, -1, -1, -1, -1, 614, -1, - -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, - 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, - -1, 637, 638, 639, -1, 5, 642, 7, 8, 9, - 10, 11, 12, -1, -1, 15, -1, -1, -1, 19, - -1, -1, 22, -1, 24, 25, 26, 27, 28, 29, - 30, 31, 32, -1, 34, -1, -1, -1, 38, -1, - -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, - -1, 51, 52, -1, -1, 55, -1, -1, 58, 59, - -1, 61, 62, -1, 64, 65, -1, 67, 68, 69, - 70, 71, 72, -1, 74, 75, 76, 77, 78, 79, - 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, - -1, 91, 92, -1, 94, 95, 96, 97, 98, -1, - 100, -1, -1, 103, -1, -1, 106, -1, 108, -1, - -1, 111, -1, 113, -1, -1, -1, 117, 118, 119, - -1, -1, 122, -1, -1, -1, -1, 127, 128, -1, - -1, -1, -1, 133, -1, 135, -1, -1, -1, -1, - 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, - -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, - 160, -1, 162, 163, -1, 165, 166, 167, -1, 169, - 170, -1, 172, 173, 174, 175, 176, 177, 178, -1, - -1, 181, 182, 183, 184, -1, -1, 187, 188, -1, - 190, 191, 192, -1, -1, 195, -1, -1, -1, 199, - 200, -1, 202, -1, 204, -1, 206, 207, 208, 209, - 210, 211, 212, -1, 214, -1, -1, 217, 218, 219, - -1, 221, -1, -1, -1, 225, 226, -1, -1, -1, - 230, 231, 232, 233, 234, -1, -1, -1, 238, 239, - 240, -1, -1, 243, -1, -1, -1, -1, 248, 249, - -1, -1, -1, 253, -1, 255, 256, -1, 258, 259, - -1, -1, -1, 263, -1, -1, 266, 267, 268, -1, - -1, 271, -1, -1, 274, 275, -1, -1, -1, -1, - -1, 281, 282, -1, 284, -1, 286, -1, 288, 289, - -1, -1, -1, -1, -1, -1, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, -1, 318, 319, - 320, 321, -1, 323, 324, 325, -1, -1, -1, -1, - 330, 331, 332, 333, 334, 335, -1, -1, 338, 339, - -1, 341, -1, 343, -1, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, -1, -1, 357, -1, -1, - 360, 361, 362, 363, -1, -1, -1, 367, 368, -1, - -1, -1, 372, -1, 374, 375, 376, -1, 378, 379, - 380, 381, -1, 383, 384, -1, -1, -1, -1, -1, - -1, -1, -1, 393, 394, 395, -1, -1, 398, -1, - 400, -1, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, -1, -1, 414, 415, 416, -1, 418, -1, - 420, 421, 422, 423, 424, -1, 426, 427, 428, -1, - -1, 431, -1, -1, -1, 435, 436, 437, 438, 439, - -1, -1, 442, 443, 444, 445, 446, -1, 448, 449, - -1, 451, 452, 453, -1, -1, 456, -1, 458, -1, - 460, 461, -1, 463, 464, -1, 466, -1, 468, -1, - -1, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, -1, 484, 485, -1, -1, -1, 489, - 490, 491, 492, -1, -1, -1, 496, -1, -1, -1, - 500, -1, 502, 503, 504, 505, 506, 507, -1, 509, - 510, 511, 512, 513, 514, -1, -1, -1, -1, -1, - -1, 521, 522, -1, 524, -1, -1, 527, -1, -1, - -1, 531, 532, 533, -1, -1, -1, 537, -1, -1, - 540, 541, -1, 543, 544, 545, 546, 547, 548, -1, - -1, 551, 552, 553, 554, -1, 556, 557, -1, -1, - 560, 561, 562, 563, -1, -1, 566, 567, -1, 569, - 570, 571, 572, -1, -1, -1, -1, -1, 578, 579, - 580, -1, -1, -1, 584, 585, 586, 587, -1, 589, - 590, -1, 592, 593, -1, 595, 596, -1, -1, 599, - -1, -1, 602, -1, 604, -1, 606, 607, -1, -1, - -1, -1, -1, -1, 614, -1, -1, 617, -1, -1, - -1, 621, 622, 623, 624, 625, 626, 627, -1, -1, - -1, -1, -1, -1, 634, 635, -1, 637, 638, 639, - -1, 5, 642, 7, 8, 9, 10, 11, 12, -1, - -1, 15, -1, -1, -1, 19, -1, -1, -1, -1, - 24, 25, 26, 27, 28, 29, 30, 31, -1, -1, - 34, -1, -1, -1, 38, -1, -1, -1, 42, -1, - -1, 45, 46, 47, -1, 49, -1, -1, -1, -1, - -1, 55, 56, -1, 58, 59, -1, 61, -1, -1, - -1, -1, -1, 67, 68, 69, 70, 71, 72, -1, - 74, 75, -1, -1, -1, -1, -1, -1, 82, -1, - 84, -1, 86, 87, 88, 89, -1, 91, 92, -1, - 94, 95, 96, -1, 98, -1, 100, -1, -1, 103, - -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, - -1, -1, -1, 117, 118, 119, -1, -1, 122, -1, - -1, -1, -1, 127, -1, -1, -1, -1, -1, 133, - -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, - 144, 145, 146, -1, -1, -1, -1, -1, -1, -1, - 154, 155, 156, -1, 158, 159, 160, -1, 162, 163, - -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, - 174, 175, 176, -1, -1, -1, -1, 181, 182, 183, - 184, -1, -1, 187, 188, 189, 190, 191, 192, -1, - -1, -1, -1, -1, -1, -1, 200, -1, 202, -1, - 204, -1, 206, 207, 208, 209, 210, -1, 212, -1, - 214, -1, -1, -1, 218, 219, -1, -1, -1, -1, - -1, -1, 226, -1, -1, -1, 230, 231, 232, 233, - 234, 235, -1, -1, 238, 239, 240, -1, -1, 243, - -1, -1, -1, -1, 248, -1, -1, -1, -1, 253, - -1, 255, 256, -1, 258, 259, 260, -1, -1, 263, - -1, -1, -1, 267, 268, -1, -1, 271, 272, -1, - 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, - 284, -1, 286, -1, 288, 289, -1, -1, -1, -1, - 294, -1, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, -1, 318, 319, 320, 321, -1, 323, - 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, - 334, 335, -1, -1, 338, 339, -1, 341, -1, 343, - -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, -1, -1, 357, -1, -1, 360, 361, 362, 363, - -1, -1, -1, -1, 368, -1, -1, -1, 372, -1, - 374, 375, 376, -1, 378, 379, 380, 381, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 394, 395, -1, -1, -1, -1, 400, -1, 402, 403, - 404, 405, 406, 407, 408, 409, 410, -1, -1, -1, - -1, 415, 416, -1, 418, -1, 420, 421, 422, 423, - 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, - -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, - 444, 445, 446, -1, 448, -1, -1, 451, -1, 453, - 454, -1, 456, -1, -1, -1, 460, -1, -1, 463, - 464, -1, 466, 467, 468, -1, -1, 471, -1, 473, - 474, 475, 476, 477, 478, 479, -1, 481, 482, -1, - 484, -1, -1, -1, -1, 489, 490, 491, -1, -1, - -1, -1, 496, -1, -1, -1, -1, -1, -1, 503, - -1, -1, 506, 507, -1, 509, -1, 511, -1, 513, - 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, - 524, -1, -1, 527, -1, -1, -1, 531, -1, 533, - -1, -1, -1, 537, -1, -1, -1, 541, -1, 543, - 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, - 554, -1, 556, 557, -1, -1, 560, 561, 562, 563, - -1, -1, 566, 567, -1, 569, 570, 571, 572, -1, - -1, -1, -1, -1, 578, 579, 580, -1, -1, -1, - -1, 585, 586, 587, -1, 589, 590, -1, 592, 593, - -1, -1, -1, -1, -1, 599, -1, -1, 602, -1, - -1, -1, 606, 607, -1, -1, -1, -1, -1, -1, - 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, - 624, 625, 626, 627, -1, -1, 630, -1, -1, -1, - 634, -1, -1, 637, -1, 639, -1, 5, 642, 7, - 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, - -1, 19, -1, -1, -1, -1, 24, 25, 26, 27, - 28, 29, 30, 31, -1, -1, 34, -1, -1, -1, - 38, -1, -1, -1, 42, -1, -1, 45, 46, 47, - -1, 49, -1, -1, -1, -1, -1, 55, 56, -1, - 58, 59, -1, 61, -1, -1, -1, -1, -1, 67, - 68, 69, 70, 71, 72, -1, 74, 75, -1, -1, - -1, -1, -1, -1, 82, -1, 84, -1, 86, 87, - 88, 89, -1, 91, 92, -1, 94, 95, 96, -1, - 98, -1, 100, -1, -1, 103, -1, -1, 106, -1, - 108, -1, -1, 111, -1, 113, -1, -1, -1, 117, - 118, 119, -1, -1, 122, -1, -1, -1, -1, 127, - -1, -1, -1, -1, -1, 133, -1, 135, -1, -1, - -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, - -1, -1, -1, -1, -1, -1, 154, 155, 156, -1, - 158, -1, 160, -1, 162, 163, -1, 165, 166, 167, - -1, 169, 170, -1, 172, 173, 174, 175, 176, -1, - -1, -1, -1, 181, 182, 183, 184, -1, -1, 187, - 188, 189, 190, 191, 192, -1, -1, -1, -1, -1, - -1, -1, 200, -1, 202, -1, 204, -1, 206, 207, - 208, 209, 210, -1, 212, -1, 214, -1, -1, -1, - 218, 219, -1, -1, -1, -1, -1, -1, 226, -1, - -1, -1, 230, 231, 232, 233, 234, 235, -1, -1, - 238, 239, 240, -1, -1, 243, -1, -1, -1, -1, - 248, -1, -1, -1, -1, 253, -1, 255, 256, -1, - 258, 259, 260, -1, -1, 263, -1, -1, -1, 267, - 268, -1, -1, 271, 272, -1, 274, 275, -1, -1, - -1, -1, -1, 281, 282, -1, 284, -1, 286, -1, - 288, 289, -1, -1, -1, -1, 294, -1, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, -1, - 318, 319, 320, 321, -1, 323, 324, 325, -1, -1, - -1, -1, 330, 331, 332, 333, 334, 335, -1, -1, - 338, 339, -1, 341, -1, 343, -1, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, -1, -1, 357, - -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, - 368, -1, -1, -1, 372, -1, 374, 375, 376, -1, - 378, 379, 380, 381, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 394, 395, -1, -1, - -1, -1, 400, -1, 402, 403, 404, 405, 406, 407, - 408, 409, 410, -1, -1, -1, -1, 415, 416, -1, - 418, -1, 420, 421, 422, 423, 424, -1, 426, 427, - 428, -1, -1, 431, -1, -1, -1, 435, 436, 437, - 438, 439, -1, -1, 442, 443, 444, 445, 446, -1, - 448, -1, -1, 451, -1, 453, 454, -1, 456, -1, - -1, -1, 460, -1, -1, 463, 464, -1, 466, 467, - 468, -1, -1, 471, -1, 473, 474, 475, 476, 477, - 478, 479, -1, 481, 482, -1, 484, -1, -1, -1, - -1, 489, 490, 491, -1, -1, -1, -1, 496, -1, - -1, -1, -1, -1, -1, 503, -1, -1, 506, 507, - -1, 509, -1, 511, -1, 513, 514, -1, -1, -1, - -1, -1, -1, 521, 522, -1, 524, -1, -1, 527, - -1, -1, -1, 531, -1, 533, -1, -1, -1, 537, - -1, -1, -1, 541, -1, 543, 544, 545, 546, 547, + -1, -1, -1, 531, 532, 533, -1, -1, -1, 537, + -1, -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, -1, 560, 561, 562, 563, -1, -1, 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, -1, - 578, 579, 580, -1, -1, -1, -1, 585, 586, 587, - -1, 589, 590, -1, 592, 593, -1, -1, -1, -1, - -1, 599, -1, -1, 602, -1, -1, -1, 606, 607, + 578, 579, 580, -1, -1, -1, 584, 585, 586, 587, + -1, 589, 590, -1, 592, 593, -1, 595, 596, -1, + -1, 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, 627, - 628, -1, 630, -1, -1, -1, 634, -1, -1, 637, - -1, 639, -1, 5, 642, 7, 8, 9, 10, 11, - 12, -1, -1, 15, -1, -1, -1, 19, -1, -1, - -1, -1, 24, 25, 26, 27, 28, 29, 30, 31, - -1, -1, 34, -1, -1, -1, 38, -1, -1, -1, - 42, -1, -1, 45, 46, 47, -1, 49, -1, -1, - -1, -1, -1, 55, 56, -1, 58, 59, -1, 61, - -1, -1, -1, -1, -1, 67, 68, 69, 70, 71, - 72, -1, 74, 75, -1, -1, -1, -1, -1, -1, - 82, -1, 84, -1, 86, 87, 88, 89, -1, 91, - 92, -1, 94, 95, 96, -1, 98, -1, 100, -1, + -1, -1, -1, -1, -1, -1, 634, 635, -1, 637, + 638, 639, -1, 5, 642, 7, 8, 9, 10, 11, + 12, -1, -1, 15, 652, -1, -1, 19, -1, -1, + 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, + 32, -1, 34, -1, -1, -1, 38, -1, -1, -1, + 42, -1, -1, 45, 46, 47, -1, 49, -1, 51, + 52, -1, -1, 55, -1, -1, 58, 59, -1, 61, + 62, -1, 64, 65, -1, 67, 68, 69, 70, 71, + 72, -1, 74, 75, 76, 77, 78, 79, 80, -1, + 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, + 92, -1, 94, 95, 96, 97, 98, -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, -1, - 122, -1, -1, -1, -1, 127, -1, -1, -1, -1, + 122, -1, -1, -1, -1, 127, 128, -1, -1, -1, -1, 133, -1, 135, -1, -1, -1, -1, 140, -1, - 142, 143, 144, 145, 146, -1, -1, -1, -1, -1, - -1, -1, 154, 155, 156, -1, 158, -1, 160, -1, + 142, 143, 144, 145, 146, -1, -1, -1, -1, 151, + -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, -1, - 172, 173, 174, 175, 176, -1, -1, -1, -1, 181, - 182, 183, 184, -1, -1, 187, 188, 189, 190, 191, - 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, - 202, -1, 204, -1, 206, 207, 208, 209, 210, -1, - 212, -1, 214, -1, -1, -1, 218, 219, -1, -1, - -1, -1, -1, -1, 226, -1, -1, -1, 230, 231, - 232, 233, 234, 235, -1, -1, 238, 239, 240, -1, - -1, 243, -1, -1, -1, -1, 248, -1, -1, -1, - -1, 253, -1, 255, 256, -1, 258, 259, 260, -1, - -1, 263, -1, -1, -1, 267, 268, -1, -1, 271, - 272, -1, 274, 275, -1, -1, -1, -1, -1, 281, + 172, 173, 174, 175, 176, 177, 178, -1, -1, 181, + 182, 183, 184, -1, -1, 187, 188, -1, 190, 191, + 192, -1, -1, 195, -1, -1, -1, 199, 200, -1, + 202, -1, 204, -1, 206, 207, 208, 209, 210, 211, + 212, -1, 214, -1, -1, 217, 218, 219, -1, 221, + -1, -1, -1, 225, 226, -1, -1, -1, 230, 231, + 232, 233, 234, -1, -1, -1, 238, 239, 240, -1, + -1, 243, -1, -1, -1, -1, 248, 249, -1, -1, + -1, 253, -1, 255, 256, -1, 258, 259, -1, -1, + -1, 263, -1, -1, 266, 267, 268, -1, -1, 271, + -1, -1, 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, 289, -1, -1, - -1, -1, 294, -1, 296, 297, 298, 299, 300, 301, + -1, -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, 319, 320, 321, -1, 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, -1, 360, 361, - 362, 363, -1, -1, -1, -1, 368, -1, -1, -1, + 362, 363, -1, -1, -1, 367, 368, -1, -1, -1, 372, -1, 374, 375, 376, -1, 378, 379, 380, 381, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 394, 395, -1, -1, -1, -1, 400, -1, - 402, 403, 404, 405, 406, 407, 408, 409, 410, -1, - -1, -1, -1, 415, 416, -1, 418, -1, 420, 421, + -1, 383, 384, -1, -1, -1, -1, -1, -1, -1, + -1, 393, 394, 395, -1, -1, 398, -1, 400, -1, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + -1, -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, -1, - 442, 443, 444, 445, 446, -1, 448, -1, -1, 451, - -1, 453, 454, -1, 456, -1, -1, -1, 460, -1, - -1, 463, 464, -1, 466, 467, 468, -1, -1, 471, - -1, 473, 474, 475, 476, 477, 478, 479, -1, 481, - 482, -1, 484, -1, -1, -1, -1, 489, 490, 491, - -1, -1, -1, -1, 496, -1, -1, -1, -1, -1, - -1, 503, -1, -1, 506, 507, -1, 509, -1, 511, - -1, 513, 514, -1, -1, -1, -1, -1, -1, 521, + 442, 443, 444, 445, 446, -1, 448, 449, -1, 451, + 452, 453, -1, -1, 456, -1, 458, -1, 460, 461, + -1, 463, 464, -1, 466, -1, 468, -1, -1, 471, + 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, + 482, -1, 484, 485, -1, -1, -1, 489, 490, 491, + 492, -1, -1, -1, 496, -1, -1, -1, 500, -1, + 502, 503, 504, 505, 506, 507, -1, 509, 510, 511, + 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, 531, - -1, 533, -1, -1, -1, 537, -1, -1, -1, 541, + 532, 533, -1, -1, -1, 537, -1, -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, -1, 560, 561, 562, 563, -1, -1, 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, -1, - -1, -1, -1, 585, 586, 587, -1, 589, 590, -1, - 592, 593, -1, -1, -1, -1, -1, 599, -1, -1, - 602, -1, -1, -1, 606, 607, -1, -1, -1, -1, + -1, -1, 584, 585, 586, 587, -1, 589, 590, -1, + 592, 593, -1, 595, 596, -1, -1, 599, -1, -1, + 602, -1, 604, -1, 606, 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, 621, - 622, 623, 624, 625, 626, 627, 628, -1, 630, -1, - -1, -1, 634, -1, -1, 637, -1, 639, -1, 5, + 622, 623, 624, 625, 626, 627, -1, -1, -1, -1, + -1, -1, 634, 635, -1, 637, 638, 639, -1, 5, 642, 7, 8, 9, 10, 11, 12, -1, -1, 15, - -1, -1, -1, 19, -1, -1, -1, -1, 24, 25, - 26, 27, 28, 29, 30, 31, -1, -1, 34, -1, + 652, -1, -1, 19, -1, -1, 22, -1, 24, 25, + 26, 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, 45, - 46, 47, -1, 49, -1, -1, -1, -1, -1, 55, - 56, -1, 58, 59, -1, 61, -1, -1, -1, -1, + 46, 47, -1, 49, -1, 51, 52, -1, -1, 55, + -1, -1, 58, 59, -1, 61, 62, -1, 64, 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, - -1, -1, -1, -1, -1, -1, 82, -1, 84, -1, + 76, 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, - 96, -1, 98, -1, 100, -1, -1, 103, -1, -1, + 96, 97, 98, -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, -1, -1, -1, - -1, 127, -1, -1, -1, -1, -1, 133, -1, 135, + -1, 127, 128, -1, -1, -1, -1, 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, - 146, -1, -1, -1, -1, -1, -1, -1, 154, 155, + 146, -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, 175, - 176, -1, -1, -1, -1, 181, 182, 183, 184, -1, - -1, 187, 188, 189, 190, 191, 192, -1, -1, -1, - -1, -1, -1, -1, 200, -1, 202, -1, 204, -1, - 206, 207, 208, 209, 210, -1, 212, -1, 214, -1, - -1, -1, 218, 219, -1, -1, -1, -1, -1, -1, - 226, -1, -1, -1, 230, 231, 232, 233, 234, 235, + 176, 177, 178, -1, -1, 181, 182, 183, 184, -1, + -1, 187, 188, -1, 190, 191, 192, -1, -1, 195, + -1, -1, -1, 199, 200, -1, 202, -1, 204, -1, + 206, 207, 208, 209, 210, 211, 212, -1, 214, -1, + -1, 217, 218, 219, -1, 221, -1, -1, -1, 225, + 226, -1, -1, -1, 230, 231, 232, 233, 234, -1, -1, -1, 238, 239, 240, -1, -1, 243, -1, -1, - -1, -1, 248, -1, -1, -1, -1, 253, -1, 255, - 256, -1, 258, 259, 260, -1, -1, 263, -1, -1, - -1, 267, 268, -1, -1, 271, 272, -1, 274, 275, + -1, -1, 248, 249, -1, -1, -1, 253, -1, 255, + 256, -1, 258, 259, -1, -1, -1, 263, -1, -1, + 266, 267, 268, -1, -1, 271, -1, -1, 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, - 286, -1, 288, 289, -1, -1, -1, -1, 294, -1, + 286, -1, 288, 289, -1, -1, -1, -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, 319, 320, 321, -1, 323, 324, 325, @@ -17593,479 +15218,2960 @@ static const yytype_int16 yycheck[] = -1, -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, -1, 360, 361, 362, 363, -1, -1, - -1, -1, 368, -1, -1, -1, 372, -1, 374, 375, - 376, -1, 378, 379, 380, 381, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 394, 395, - -1, -1, -1, -1, 400, -1, 402, 403, 404, 405, - 406, 407, 408, 409, 410, -1, -1, -1, -1, 415, + -1, 367, 368, -1, -1, -1, 372, -1, 374, 375, + 376, -1, 378, 379, 380, 381, -1, 383, 384, -1, + -1, -1, -1, -1, -1, -1, -1, 393, 394, 395, + -1, -1, 398, -1, 400, -1, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, -1, -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, - 446, -1, 448, -1, -1, 451, -1, 453, 454, -1, - 456, -1, -1, -1, 460, -1, -1, 463, 464, -1, - 466, 467, 468, -1, -1, 471, -1, 473, 474, 475, - 476, 477, 478, 479, -1, 481, 482, -1, 484, -1, - -1, -1, -1, 489, 490, 491, -1, -1, -1, -1, - 496, -1, -1, -1, -1, -1, -1, 503, -1, -1, - 506, 507, -1, 509, -1, 511, -1, 513, 514, -1, + 446, -1, 448, 449, -1, 451, 452, 453, -1, -1, + 456, -1, 458, -1, 460, 461, -1, 463, 464, -1, + 466, -1, 468, -1, -1, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, 481, 482, -1, 484, 485, + -1, -1, -1, 489, 490, 491, 492, -1, -1, -1, + 496, -1, -1, -1, 500, -1, 502, 503, 504, 505, + 506, 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, - -1, 527, -1, -1, -1, 531, -1, 533, -1, -1, - -1, 537, -1, -1, -1, 541, -1, 543, 544, 545, + -1, 527, -1, -1, -1, 531, 532, 533, -1, -1, + -1, 537, -1, -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, -1, 560, 561, 562, 563, -1, -1, 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, - -1, -1, 578, 579, 580, -1, -1, -1, -1, 585, - 586, 587, -1, 589, 590, -1, 592, 593, -1, -1, - -1, -1, -1, 599, -1, -1, 602, -1, -1, -1, + -1, -1, 578, 579, 580, -1, -1, -1, 584, 585, + 586, 587, -1, 589, 590, -1, 592, 593, -1, 595, + 596, -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, - 626, 627, -1, -1, 630, -1, -1, -1, 634, -1, - -1, 637, -1, 639, -1, 5, 642, 7, 8, 9, - 10, 11, 12, -1, -1, 15, -1, -1, -1, 19, - -1, -1, -1, -1, 24, 25, 26, 27, 28, 29, - 30, 31, -1, -1, 34, -1, -1, -1, 38, -1, + 626, 627, -1, -1, -1, -1, -1, -1, 634, 635, + -1, 637, 638, 639, -1, 5, 642, 7, 8, 9, + 10, 11, 12, -1, -1, 15, 652, -1, -1, 19, + -1, -1, 22, -1, 24, 25, 26, 27, 28, 29, + 30, 31, 32, -1, 34, -1, -1, 37, 38, -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, - -1, -1, -1, -1, -1, 55, 56, -1, 58, 59, - -1, 61, -1, -1, -1, -1, -1, 67, 68, 69, - 70, 71, 72, -1, 74, 75, -1, -1, -1, -1, - -1, -1, 82, -1, 84, -1, 86, 87, 88, 89, - -1, 91, 92, -1, 94, 95, 96, -1, 98, -1, + -1, 51, 52, -1, -1, 55, -1, -1, 58, 59, + -1, 61, 62, -1, 64, 65, -1, 67, 68, 69, + 70, 71, 72, -1, 74, 75, 76, 77, 78, 79, + 80, -1, 82, 83, 84, 85, 86, 87, 88, 89, + -1, 91, 92, -1, 94, 95, 96, 97, 98, -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, 119, - -1, -1, 122, -1, -1, -1, -1, 127, -1, -1, - -1, -1, -1, 133, -1, 135, -1, -1, -1, -1, + -1, -1, 122, -1, -1, -1, -1, 127, 128, -1, + -1, -1, 132, 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, - -1, -1, -1, -1, 154, 155, 156, -1, -1, -1, + -1, 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, 169, - 170, -1, 172, 173, 174, 175, 176, -1, -1, -1, - -1, 181, 182, 183, 184, -1, -1, 187, 188, 189, - 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, + 170, -1, 172, 173, 174, 175, 176, 177, 178, -1, + -1, 181, 182, 183, 184, -1, -1, 187, 188, -1, + 190, 191, 192, -1, -1, 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, 209, - 210, -1, 212, -1, 214, -1, -1, -1, 218, 219, - -1, -1, -1, -1, -1, -1, 226, -1, -1, -1, - 230, 231, 232, 233, 234, 235, -1, -1, 238, 239, - 240, -1, -1, 243, -1, -1, -1, -1, 248, -1, + 210, 211, 212, -1, 214, -1, -1, 217, 218, 219, + -1, 221, -1, -1, -1, 225, 226, -1, -1, -1, + 230, 231, 232, 233, 234, -1, -1, -1, 238, 239, + 240, -1, -1, 243, -1, -1, -1, -1, 248, 249, -1, -1, -1, 253, -1, 255, 256, -1, 258, 259, - 260, -1, -1, 263, -1, -1, -1, 267, 268, -1, - -1, 271, 272, -1, 274, 275, -1, -1, -1, -1, + -1, -1, -1, 263, -1, -1, 266, 267, 268, -1, + -1, 271, -1, -1, 274, 275, 276, -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, 289, - -1, -1, -1, -1, 294, -1, 296, 297, 298, 299, + -1, -1, -1, -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, 319, 320, 321, -1, 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, -1, - 360, 361, 362, 363, -1, -1, -1, -1, 368, -1, + 360, 361, 362, 363, -1, -1, -1, 367, 368, -1, -1, -1, 372, -1, 374, 375, 376, -1, 378, 379, - 380, 381, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 394, 395, -1, -1, -1, -1, + 380, 381, -1, 383, 384, -1, -1, -1, -1, -1, + -1, -1, -1, 393, 394, 395, -1, -1, 398, -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, 409, - 410, -1, -1, -1, -1, 415, 416, -1, 418, -1, + 410, 411, -1, -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, 439, - -1, -1, 442, 443, 444, 445, 446, -1, 448, -1, - -1, 451, -1, 453, 454, -1, 456, -1, -1, -1, - 460, -1, -1, 463, 464, -1, 466, 467, 468, -1, - -1, 471, -1, 473, 474, 475, 476, 477, 478, 479, - -1, 481, 482, -1, 484, -1, -1, -1, -1, 489, - 490, 491, -1, -1, -1, -1, 496, -1, -1, -1, - -1, -1, -1, 503, -1, -1, 506, 507, -1, 509, - -1, 511, -1, 513, 514, -1, -1, -1, -1, -1, + -1, -1, 442, 443, 444, 445, 446, -1, 448, 449, + -1, 451, 452, 453, -1, -1, 456, -1, 458, -1, + 460, 461, -1, 463, 464, -1, 466, -1, 468, -1, + -1, 471, 472, 473, 474, 475, 476, 477, 478, 479, + 480, 481, 482, -1, 484, 485, -1, -1, -1, 489, + 490, 491, 492, -1, -1, 495, 496, -1, -1, -1, + 500, -1, 502, 503, 504, 505, 506, 507, -1, 509, + 510, 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, -1, - -1, 531, -1, 533, -1, -1, -1, 537, -1, -1, - -1, 541, -1, 543, 544, 545, 546, 547, 548, -1, + -1, 531, 532, 533, -1, -1, -1, 537, -1, -1, + 540, 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, -1, - 560, 561, 562, 563, -1, -1, 566, 567, -1, 569, + 560, 561, 562, 563, -1, 565, 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, 579, - 580, -1, -1, -1, -1, 585, 586, 587, -1, 589, - 590, -1, 592, 593, -1, -1, -1, -1, -1, 599, - -1, -1, 602, -1, -1, -1, 606, 607, -1, -1, + 580, -1, -1, -1, 584, 585, 586, 587, -1, 589, + 590, -1, 592, 593, -1, 595, 596, -1, -1, 599, + -1, -1, 602, -1, 604, -1, 606, 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, -1, - 630, -1, -1, -1, 634, -1, -1, 637, -1, 639, - -1, 5, 642, 7, 8, 9, 10, 11, 12, -1, - -1, 15, -1, -1, -1, 19, -1, -1, -1, -1, - 24, 25, 26, 27, 28, 29, 30, 31, -1, -1, - 34, -1, -1, -1, 38, -1, -1, -1, 42, -1, - -1, 45, 46, 47, -1, 49, -1, -1, -1, -1, - -1, 55, 56, -1, 58, 59, -1, 61, -1, -1, - -1, -1, -1, 67, 68, 69, 70, 71, 72, -1, - 74, 75, -1, -1, -1, -1, -1, -1, 82, -1, - 84, -1, 86, 87, 88, 89, -1, 91, 92, -1, - 94, 95, 96, -1, 98, -1, 100, -1, -1, 103, - -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, - -1, -1, -1, 117, 118, 119, -1, -1, 122, -1, - -1, -1, -1, 127, -1, -1, -1, -1, -1, 133, - -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, - 144, 145, 146, -1, -1, -1, -1, -1, -1, -1, - 154, 155, 156, -1, -1, -1, 160, -1, 162, 163, - -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, - 174, 175, 176, -1, -1, -1, -1, 181, 182, 183, - 184, -1, -1, 187, 188, 189, 190, 191, 192, -1, - -1, -1, -1, -1, -1, -1, 200, -1, 202, -1, - 204, -1, 206, 207, 208, 209, 210, -1, 212, -1, - 214, -1, -1, -1, 218, 219, -1, -1, -1, -1, - -1, -1, 226, -1, -1, -1, 230, 231, 232, 233, - 234, 235, -1, -1, 238, 239, 240, -1, -1, 243, - -1, -1, -1, -1, 248, -1, -1, -1, -1, 253, - -1, 255, 256, -1, 258, 259, 260, -1, -1, 263, - -1, -1, -1, 267, 268, -1, -1, 271, 272, -1, - 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, - 284, -1, 286, -1, 288, 289, -1, -1, -1, -1, - 294, -1, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, -1, 318, 319, 320, 321, -1, 323, - 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, - 334, 335, -1, -1, 338, 339, -1, 341, -1, 343, - -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, -1, -1, 357, -1, -1, 360, 361, 362, 363, - -1, -1, -1, -1, 368, -1, -1, -1, 372, -1, - 374, 375, 376, -1, 378, 379, 380, 381, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 394, 395, -1, -1, -1, -1, 400, -1, 402, 403, - 404, 405, 406, 407, 408, 409, 410, -1, -1, -1, - -1, 415, 416, -1, 418, -1, 420, 421, 422, 423, - 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, - -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, - 444, 445, 446, -1, 448, -1, -1, 451, -1, 453, - 454, -1, 456, -1, -1, -1, 460, -1, -1, 463, - 464, -1, 466, 467, 468, -1, -1, 471, -1, 473, - 474, 475, 476, 477, 478, 479, -1, 481, 482, -1, - 484, -1, -1, -1, -1, 489, 490, 491, -1, -1, - -1, -1, 496, -1, -1, -1, -1, -1, -1, 503, - -1, -1, 506, 507, -1, 509, -1, 511, -1, 513, - 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, - 524, -1, -1, 527, -1, -1, -1, 531, -1, 533, - -1, -1, -1, 537, -1, -1, -1, 541, -1, 543, - 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, - 554, -1, 556, 557, -1, -1, 560, 561, 562, 563, - -1, -1, 566, 567, -1, 569, 570, 571, 572, -1, - -1, -1, -1, -1, 578, 579, 580, -1, -1, -1, - -1, 585, 586, 587, -1, 589, 590, -1, 592, 593, - -1, -1, -1, -1, -1, 599, -1, -1, 602, -1, - -1, -1, 606, 607, -1, -1, -1, -1, -1, -1, - 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, - 624, 625, 626, 627, -1, -1, 630, -1, -1, -1, - 634, -1, -1, 637, -1, 639, -1, 5, 642, 7, - 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, - -1, 19, -1, -1, -1, -1, 24, 25, 26, 27, - 28, 29, 30, 31, -1, -1, 34, -1, -1, -1, - 38, -1, -1, -1, 42, -1, -1, 45, 46, 47, - -1, 49, -1, -1, -1, -1, -1, 55, 56, -1, - 58, 59, -1, 61, -1, -1, -1, -1, -1, 67, - 68, 69, 70, 71, 72, -1, 74, 75, -1, -1, - -1, -1, -1, -1, 82, -1, 84, -1, 86, 87, - 88, 89, -1, 91, 92, -1, 94, 95, 96, -1, - 98, -1, 100, -1, -1, 103, -1, -1, 106, -1, - 108, -1, -1, 111, -1, 113, -1, -1, -1, 117, - 118, 119, -1, -1, 122, -1, -1, -1, -1, 127, - -1, -1, -1, -1, -1, 133, -1, 135, -1, -1, - -1, -1, 140, -1, 142, 143, 144, 145, 146, -1, - -1, -1, -1, -1, -1, -1, 154, 155, 156, -1, - -1, -1, 160, -1, 162, 163, -1, 165, 166, 167, - -1, 169, 170, -1, 172, 173, 174, 175, 176, -1, - -1, -1, -1, 181, 182, 183, 184, -1, -1, 187, - 188, 189, 190, 191, 192, -1, -1, -1, -1, -1, - -1, -1, 200, -1, 202, -1, 204, -1, 206, 207, - 208, 209, 210, -1, 212, -1, 214, -1, -1, -1, - 218, 219, -1, -1, -1, -1, -1, -1, 226, -1, - -1, -1, 230, 231, 232, 233, 234, 235, -1, -1, - 238, 239, 240, -1, -1, 243, -1, -1, -1, -1, - 248, -1, -1, -1, -1, 253, -1, 255, 256, -1, - 258, 259, 260, -1, -1, 263, -1, -1, -1, 267, - 268, -1, -1, 271, 272, -1, 274, 275, -1, -1, - -1, -1, -1, 281, 282, -1, 284, -1, 286, -1, - 288, 289, -1, -1, -1, -1, 294, -1, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, -1, 313, 314, 315, 316, -1, - 318, 319, 320, 321, -1, 323, 324, 325, -1, -1, - -1, -1, 330, 331, 332, 333, 334, 335, -1, -1, - 338, 339, -1, 341, -1, 343, -1, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, -1, -1, 357, - -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, - 368, -1, -1, -1, 372, -1, 374, 375, 376, -1, - 378, 379, 380, 381, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 394, 395, -1, -1, - -1, -1, 400, -1, 402, 403, 404, 405, 406, 407, - 408, 409, 410, -1, -1, -1, -1, 415, 416, -1, - 418, -1, 420, 421, 422, 423, 424, -1, 426, 427, - 428, -1, -1, 431, -1, -1, -1, 435, 436, 437, - 438, 439, -1, -1, 442, 443, 444, 445, 446, -1, - 448, -1, -1, 451, -1, 453, 454, -1, 456, -1, - -1, -1, 460, -1, -1, 463, 464, -1, 466, 467, - 468, -1, -1, 471, -1, 473, 474, 475, 476, 477, - 478, 479, -1, 481, 482, -1, 484, -1, -1, -1, - -1, 489, 490, 491, -1, -1, -1, -1, 496, -1, - -1, -1, -1, -1, -1, 503, -1, -1, 506, 507, - -1, 509, -1, 511, -1, 513, 514, -1, -1, -1, - -1, -1, -1, 521, 522, -1, 524, -1, -1, 527, - -1, -1, -1, 531, -1, 533, -1, -1, -1, 537, - -1, -1, -1, 541, -1, 543, 544, 545, 546, 547, - 548, -1, -1, 551, 552, 553, 554, -1, 556, 557, - -1, -1, 560, 561, 562, 563, -1, -1, 566, 567, - -1, 569, 570, 571, 572, -1, -1, -1, -1, -1, - 578, 579, 580, -1, -1, -1, -1, 585, 586, 587, - -1, 589, 590, -1, 592, 593, -1, -1, -1, -1, - -1, 599, -1, -1, 602, -1, -1, -1, 606, 607, - -1, -1, -1, -1, -1, -1, 614, -1, -1, 617, - -1, -1, -1, 621, 622, 623, 624, 625, 626, 627, - -1, -1, 630, -1, -1, -1, 634, -1, -1, 637, - -1, 639, -1, 5, 642, 7, 8, 9, 10, 11, - 12, -1, -1, 15, -1, -1, -1, 19, -1, -1, - -1, -1, 24, 25, 26, 27, 28, 29, 30, 31, - -1, -1, 34, -1, -1, -1, 38, -1, -1, -1, - 42, -1, -1, 45, 46, 47, -1, 49, -1, -1, - -1, -1, -1, 55, 56, -1, 58, 59, -1, 61, - -1, -1, -1, -1, -1, 67, 68, 69, 70, 71, - 72, -1, 74, 75, -1, -1, -1, -1, -1, -1, - 82, -1, 84, -1, 86, 87, 88, 89, -1, 91, - 92, -1, 94, 95, 96, -1, 98, -1, 100, -1, - -1, 103, -1, -1, 106, -1, 108, -1, -1, 111, - -1, 113, -1, -1, -1, 117, 118, 119, -1, -1, - 122, -1, -1, -1, -1, 127, -1, -1, -1, -1, - -1, 133, -1, 135, -1, -1, -1, -1, 140, -1, - 142, 143, 144, 145, 146, -1, -1, -1, -1, -1, - -1, -1, 154, 155, 156, -1, -1, -1, 160, -1, - 162, 163, -1, 165, 166, 167, -1, 169, 170, -1, - 172, 173, 174, 175, 176, -1, -1, -1, -1, 181, - 182, 183, 184, -1, -1, 187, 188, 189, 190, 191, - 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, - 202, -1, 204, -1, 206, 207, 208, 209, 210, -1, - 212, -1, 214, -1, -1, -1, 218, 219, -1, -1, - -1, -1, -1, -1, 226, -1, -1, -1, 230, 231, - 232, 233, 234, 235, -1, -1, 238, 239, 240, -1, - -1, 243, -1, -1, -1, -1, 248, -1, -1, -1, - -1, 253, -1, 255, 256, -1, 258, 259, 260, -1, - -1, 263, -1, -1, -1, 267, 268, -1, -1, 271, - 272, -1, 274, 275, -1, -1, -1, -1, -1, 281, - 282, -1, 284, -1, 286, -1, 288, 289, -1, -1, - -1, -1, 294, -1, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - -1, 313, 314, 315, 316, -1, 318, 319, 320, 321, - -1, 323, 324, 325, -1, -1, -1, -1, 330, 331, - 332, 333, 334, 335, -1, -1, 338, 339, -1, 341, - -1, 343, -1, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, -1, -1, 357, -1, -1, 360, 361, - 362, 363, -1, -1, -1, -1, 368, -1, -1, -1, - 372, -1, 374, 375, 376, -1, 378, 379, 380, 381, + -1, -1, -1, -1, 634, 635, -1, 637, 638, 639, + -1, -1, 642, -1, 5, 645, 7, 8, 9, 10, + 11, 12, 13, 14, 15, -1, -1, -1, 19, -1, + -1, 22, -1, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, 34, -1, -1, -1, 38, -1, -1, + -1, 42, -1, -1, 45, 46, 47, -1, 49, -1, + 51, 52, -1, -1, 55, -1, -1, 58, 59, -1, + 61, 62, -1, 64, 65, -1, 67, 68, 69, 70, + 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, + -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, + 91, 92, -1, 94, 95, 96, 97, 98, -1, 100, + -1, -1, 103, 104, -1, 106, -1, 108, -1, 110, + 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, + -1, 122, -1, -1, -1, -1, 127, 128, -1, -1, + -1, -1, 133, -1, 135, 136, -1, -1, -1, 140, + -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, + 151, 152, -1, 154, 155, 156, -1, -1, -1, 160, + -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, + -1, 172, 173, 174, 175, 176, 177, 178, -1, -1, + 181, 182, 183, 184, -1, -1, 187, 188, -1, 190, + 191, 192, -1, -1, 195, -1, -1, -1, 199, 200, + -1, 202, -1, 204, -1, 206, 207, 208, 209, 210, + 211, 212, 213, 214, -1, -1, 217, 218, 219, -1, + 221, -1, -1, -1, 225, 226, -1, -1, -1, 230, + 231, 232, 233, 234, -1, -1, -1, 238, 239, 240, + 241, -1, 243, -1, -1, -1, 247, 248, 249, -1, + -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, + -1, -1, 263, -1, -1, 266, 267, 268, -1, -1, + 271, -1, -1, 274, 275, 276, -1, -1, -1, -1, + 281, 282, -1, 284, -1, 286, 287, 288, 289, -1, + -1, -1, -1, -1, -1, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, -1, 318, 319, 320, + 321, -1, 323, 324, 325, -1, -1, -1, -1, 330, + 331, 332, 333, 334, 335, -1, -1, 338, 339, -1, + 341, -1, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, -1, -1, 357, -1, -1, 360, + 361, 362, 363, -1, -1, -1, 367, 368, -1, -1, + -1, 372, -1, 374, 375, 376, -1, 378, 379, 380, + 381, -1, 383, 384, -1, -1, -1, -1, -1, -1, + -1, -1, 393, 394, 395, -1, -1, 398, -1, 400, + -1, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, -1, -1, 414, 415, 416, -1, 418, -1, 420, + 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, + 431, -1, -1, -1, 435, 436, 437, 438, 439, 440, + -1, 442, 443, 444, 445, 446, -1, 448, 449, -1, + 451, 452, 453, -1, -1, 456, -1, 458, -1, 460, + 461, -1, 463, 464, -1, 466, -1, 468, -1, -1, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, -1, 484, 485, 486, -1, -1, 489, 490, + 491, 492, -1, -1, -1, 496, -1, -1, 499, 500, + -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, + 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, + 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, + 531, 532, 533, -1, -1, -1, 537, -1, -1, 540, + 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, + 551, 552, 553, 554, -1, 556, 557, -1, -1, 560, + 561, 562, 563, -1, 565, 566, 567, -1, 569, 570, + 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, + 581, -1, -1, 584, 585, 586, 587, -1, 589, 590, + -1, 592, 593, -1, 595, 596, -1, -1, 599, -1, + -1, 602, 603, 604, 605, 606, 607, -1, -1, -1, + -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, + 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, + -1, -1, -1, 634, 635, -1, 637, 638, 639, -1, + 5, 642, 7, 8, 9, 10, 11, 12, 13, 14, + 15, -1, -1, -1, 19, -1, -1, 22, -1, 24, + 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, + -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, + 45, 46, 47, -1, 49, -1, 51, 52, -1, -1, + 55, -1, -1, 58, 59, -1, 61, 62, -1, 64, + 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, + 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, + 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, + 95, 96, 97, 98, -1, 100, -1, -1, 103, 104, + -1, 106, -1, 108, -1, 110, 111, -1, 113, -1, + -1, -1, 117, 118, 119, -1, -1, 122, -1, -1, + -1, -1, 127, 128, -1, -1, -1, -1, 133, -1, + 135, 136, -1, -1, -1, 140, -1, 142, 143, 144, + 145, 146, -1, -1, -1, -1, 151, 152, -1, 154, + 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, + 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, + 175, 176, 177, 178, -1, -1, 181, 182, 183, 184, + -1, -1, 187, 188, -1, 190, 191, 192, -1, -1, + 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, + -1, 206, 207, 208, 209, 210, 211, 212, 213, 214, + -1, -1, 217, 218, 219, -1, 221, -1, -1, -1, + 225, 226, -1, -1, -1, 230, 231, 232, 233, 234, + -1, -1, -1, 238, 239, 240, 241, -1, 243, -1, + -1, -1, 247, 248, 249, -1, -1, -1, 253, -1, + 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, + -1, 266, 267, 268, -1, -1, 271, -1, -1, 274, + 275, 276, -1, -1, -1, -1, 281, 282, -1, 284, + -1, 286, 287, 288, 289, -1, -1, -1, -1, -1, + -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, -1, 318, 319, 320, 321, -1, 323, 324, + 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, + 335, -1, -1, 338, 339, -1, 341, -1, 343, -1, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + -1, -1, 357, -1, -1, 360, 361, 362, 363, -1, + -1, -1, 367, 368, -1, -1, -1, 372, -1, 374, + 375, 376, -1, 378, 379, 380, 381, -1, 383, 384, + -1, -1, -1, -1, -1, -1, -1, -1, 393, 394, + 395, -1, -1, 398, -1, 400, -1, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, -1, -1, 414, + 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, + -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, + 435, 436, 437, 438, 439, 440, -1, 442, 443, 444, + 445, 446, -1, 448, 449, -1, 451, 452, 453, -1, + -1, 456, -1, 458, -1, 460, 461, -1, 463, 464, + -1, 466, -1, 468, -1, -1, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, + 485, 486, -1, -1, 489, 490, 491, 492, -1, -1, + -1, 496, -1, -1, 499, 500, -1, 502, 503, 504, + 505, 506, 507, -1, 509, 510, 511, 512, 513, 514, + -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, + -1, -1, 527, -1, -1, -1, 531, 532, 533, -1, + -1, -1, 537, -1, -1, 540, 541, -1, 543, 544, + 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, + -1, 556, 557, -1, -1, 560, 561, 562, 563, -1, + 565, 566, 567, -1, 569, 570, 571, 572, -1, -1, + -1, -1, -1, 578, 579, 580, 581, -1, -1, 584, + 585, 586, 587, -1, 589, 590, -1, 592, 593, -1, + 595, 596, -1, -1, 599, -1, -1, 602, 603, 604, + 605, 606, 607, -1, -1, -1, -1, -1, -1, 614, + -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, + 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, + 635, -1, 637, 638, 639, -1, 5, 642, 7, 8, + 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, + 19, -1, -1, 22, -1, 24, 25, 26, 27, 28, + 29, 30, 31, 32, -1, 34, -1, -1, -1, 38, + -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, + 49, -1, 51, 52, -1, -1, 55, -1, -1, 58, + 59, -1, 61, 62, -1, 64, 65, -1, 67, 68, + 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, + 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, + 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, + -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, + -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, + 119, -1, -1, 122, -1, -1, -1, -1, 127, 128, + 129, -1, -1, -1, 133, -1, 135, -1, -1, -1, + -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, + -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, + -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, + 169, 170, -1, 172, 173, 174, 175, 176, 177, 178, + -1, -1, 181, 182, 183, 184, -1, -1, 187, 188, + -1, 190, 191, 192, 193, -1, 195, -1, -1, -1, + 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, + 209, 210, 211, 212, -1, 214, -1, -1, 217, 218, + 219, -1, 221, 222, -1, -1, 225, 226, -1, -1, + -1, 230, 231, 232, 233, 234, -1, -1, -1, 238, + 239, 240, -1, -1, 243, -1, -1, -1, -1, 248, + 249, -1, -1, -1, 253, -1, 255, 256, -1, 258, + 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, + -1, -1, 271, -1, -1, 274, 275, -1, -1, -1, + -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, + 289, -1, -1, 292, -1, -1, -1, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, + 319, 320, 321, -1, 323, 324, 325, -1, -1, -1, + -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, + 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, + -1, 360, 361, 362, 363, 364, 365, -1, 367, 368, + -1, -1, 371, 372, -1, 374, 375, 376, -1, 378, + 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 394, 395, -1, -1, 398, + -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, -1, -1, 414, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, + -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, + 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, + 449, -1, 451, 452, 453, -1, -1, 456, -1, 458, + -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, + -1, -1, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, + 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, + -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, + 509, 510, 511, 512, 513, 514, -1, -1, 517, 518, + 519, -1, 521, 522, -1, 524, -1, -1, 527, -1, + -1, -1, 531, 532, 533, -1, -1, -1, 537, -1, + -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, + -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, + -1, 560, 561, 562, 563, -1, -1, 566, 567, -1, + 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, + 579, 580, -1, -1, -1, 584, 585, 586, 587, 588, + 589, 590, -1, 592, 593, -1, 595, 596, -1, -1, + 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, + -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, + -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, + -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, + 639, -1, 5, 642, 7, 8, 9, 10, 11, 12, + -1, -1, 15, -1, -1, -1, 19, -1, -1, 22, + -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, + -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, + -1, -1, 45, 46, 47, -1, 49, -1, 51, 52, + -1, -1, 55, -1, -1, 58, 59, -1, 61, 62, + -1, 64, 65, -1, 67, 68, 69, 70, 71, 72, + -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, + 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, + -1, 94, 95, 96, 97, 98, -1, 100, -1, -1, + 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, + 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, + -1, -1, -1, -1, 127, 128, 129, -1, -1, 132, + 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, + 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, + -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, + 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, + 173, 174, 175, 176, 177, 178, -1, -1, 181, 182, + 183, 184, -1, -1, 187, 188, -1, 190, 191, 192, + 193, -1, 195, -1, -1, -1, 199, 200, -1, 202, + -1, 204, -1, 206, 207, 208, 209, 210, 211, 212, + -1, 214, -1, -1, 217, 218, 219, -1, 221, 222, + -1, -1, 225, 226, -1, -1, -1, 230, 231, 232, + 233, 234, -1, -1, -1, 238, 239, 240, -1, -1, + 243, -1, -1, -1, -1, 248, 249, -1, -1, -1, + 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, + 263, -1, -1, 266, 267, 268, -1, -1, 271, -1, + -1, 274, 275, -1, -1, -1, -1, -1, 281, 282, + -1, 284, -1, 286, -1, 288, 289, -1, -1, 292, + -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, -1, 318, 319, 320, 321, -1, + 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, + 333, 334, 335, -1, -1, 338, 339, -1, 341, -1, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, -1, -1, 357, -1, -1, 360, 361, 362, + 363, -1, -1, -1, 367, 368, -1, -1, 371, 372, + -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, + 383, 384, -1, -1, -1, -1, -1, -1, -1, -1, + 393, 394, 395, -1, -1, 398, -1, 400, -1, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, -1, + -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, + 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, + -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, + 443, 444, 445, 446, -1, 448, 449, -1, 451, 452, + 453, -1, -1, 456, -1, 458, -1, 460, 461, -1, + 463, 464, -1, 466, -1, 468, -1, -1, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + -1, 484, 485, -1, -1, -1, 489, 490, 491, 492, + -1, -1, -1, 496, -1, -1, -1, 500, -1, 502, + 503, 504, 505, 506, 507, -1, 509, 510, 511, 512, + 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, + -1, 524, -1, -1, 527, -1, -1, -1, 531, 532, + 533, -1, -1, -1, 537, -1, -1, 540, 541, -1, + 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, + 553, 554, -1, 556, 557, -1, -1, 560, 561, 562, + 563, -1, 565, 566, 567, -1, 569, 570, 571, 572, + -1, -1, -1, -1, -1, 578, 579, 580, -1, -1, + -1, 584, 585, 586, 587, 588, 589, 590, -1, 592, + 593, -1, 595, 596, -1, -1, 599, -1, -1, 602, + -1, 604, -1, 606, 607, -1, -1, -1, -1, -1, + -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, + 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, + -1, 634, 635, -1, 637, 638, 639, -1, 5, 642, + 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, + -1, -1, 19, -1, -1, 22, -1, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, + -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, + 47, -1, 49, -1, 51, 52, -1, -1, 55, -1, + -1, 58, 59, -1, 61, 62, -1, 64, 65, -1, + 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, + 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, + 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, + 97, 98, -1, 100, -1, -1, 103, -1, -1, 106, + -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, + 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, + 127, 128, 129, -1, -1, 132, 133, -1, 135, -1, + -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, + -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, + -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, + 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, + 177, 178, -1, -1, 181, 182, 183, 184, -1, -1, + 187, 188, -1, 190, 191, 192, 193, -1, 195, -1, + -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, + 207, 208, 209, 210, 211, 212, -1, 214, -1, -1, + 217, 218, 219, -1, 221, 222, -1, -1, 225, 226, + -1, -1, -1, 230, 231, 232, 233, 234, -1, -1, + -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, + -1, 248, 249, -1, -1, -1, 253, -1, 255, 256, + -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, + 267, 268, -1, -1, 271, -1, -1, 274, 275, -1, + -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, + -1, 288, 289, -1, -1, 292, -1, -1, -1, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + -1, 318, 319, 320, 321, -1, 323, 324, 325, -1, + -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, + -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, + 357, -1, -1, 360, 361, 362, 363, -1, -1, -1, + 367, 368, -1, -1, 371, 372, -1, 374, 375, 376, + -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, + -1, -1, -1, -1, -1, -1, 393, 394, 395, -1, + -1, 398, -1, 400, -1, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, -1, -1, 414, 415, 416, + -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, + 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, + 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, + -1, 448, 449, -1, 451, 452, 453, -1, -1, 456, + -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, + -1, 468, -1, -1, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, + -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, + -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, + 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, + -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, + 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, + 537, -1, -1, 540, 541, -1, 543, 544, 545, 546, + 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, + 557, -1, -1, 560, 561, 562, 563, -1, 565, 566, + 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, + -1, 578, 579, 580, -1, -1, -1, 584, 585, 586, + 587, 588, 589, 590, -1, 592, 593, -1, 595, 596, + -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, + 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, + 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, + 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, + 637, 638, 639, -1, 5, 642, 7, 8, 9, 10, + 11, 12, -1, -1, 15, -1, -1, -1, 19, -1, + -1, 22, -1, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, 34, -1, -1, -1, 38, -1, -1, + -1, 42, -1, -1, 45, 46, 47, -1, 49, -1, + 51, 52, -1, -1, 55, -1, -1, 58, 59, -1, + 61, 62, -1, 64, 65, -1, 67, 68, 69, 70, + 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, + -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, + 91, 92, -1, 94, 95, 96, 97, 98, -1, 100, + -1, -1, 103, -1, -1, 106, -1, 108, -1, -1, + 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, + -1, 122, -1, -1, -1, -1, 127, 128, 129, -1, + -1, 132, 133, -1, 135, -1, -1, -1, -1, 140, + -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, + 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, + -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, + -1, 172, 173, 174, 175, 176, 177, 178, -1, -1, + 181, 182, 183, 184, -1, -1, 187, 188, -1, 190, + 191, 192, 193, -1, 195, -1, -1, -1, 199, 200, + -1, 202, -1, 204, -1, 206, 207, 208, 209, 210, + 211, 212, -1, 214, -1, -1, 217, 218, 219, -1, + 221, 222, -1, -1, 225, 226, -1, -1, -1, 230, + 231, 232, 233, 234, -1, -1, -1, 238, 239, 240, + -1, -1, 243, -1, -1, -1, -1, 248, 249, -1, + -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, + -1, -1, 263, -1, -1, 266, 267, 268, -1, -1, + 271, -1, -1, 274, 275, -1, -1, -1, -1, -1, + 281, 282, -1, 284, -1, 286, -1, 288, 289, -1, + -1, 292, -1, -1, -1, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, -1, 318, 319, 320, + 321, -1, 323, 324, 325, -1, -1, -1, -1, 330, + 331, 332, 333, 334, 335, -1, -1, 338, 339, -1, + 341, -1, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, -1, -1, 357, -1, -1, 360, + 361, 362, 363, -1, -1, -1, 367, 368, -1, -1, + 371, 372, -1, 374, 375, 376, -1, 378, 379, 380, + 381, -1, 383, 384, -1, -1, -1, -1, -1, -1, + -1, -1, 393, 394, 395, -1, -1, 398, -1, 400, + -1, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, -1, -1, 414, 415, 416, -1, 418, -1, 420, + 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, + 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, + -1, 442, 443, 444, 445, 446, -1, 448, 449, -1, + 451, 452, 453, -1, -1, 456, -1, 458, -1, 460, + 461, -1, 463, 464, -1, 466, -1, 468, -1, -1, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, -1, 484, 485, -1, -1, -1, 489, 490, + 491, 492, -1, -1, -1, 496, -1, -1, -1, 500, + -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, + 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, + 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, + 531, 532, 533, -1, -1, -1, 537, -1, -1, 540, + 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, + 551, 552, 553, 554, -1, 556, 557, -1, -1, 560, + 561, 562, 563, -1, 565, 566, 567, -1, 569, 570, + 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, + -1, -1, -1, 584, 585, 586, 587, 588, 589, 590, + -1, 592, 593, -1, 595, 596, -1, -1, 599, -1, + -1, 602, -1, 604, -1, 606, 607, -1, -1, -1, + -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, + 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, + -1, -1, -1, 634, 635, -1, 637, 638, 639, -1, + 5, 642, 7, 8, 9, 10, 11, 12, -1, -1, + 15, -1, -1, -1, 19, -1, -1, 22, -1, 24, + 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, + -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, + 45, 46, 47, -1, 49, -1, 51, 52, -1, -1, + 55, -1, -1, 58, 59, -1, 61, 62, -1, 64, + 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, + 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, + 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, + 95, 96, 97, 98, -1, 100, -1, -1, 103, -1, + -1, 106, -1, 108, 109, 110, 111, -1, 113, -1, + -1, -1, 117, 118, 119, -1, -1, 122, -1, -1, + -1, -1, 127, 128, -1, -1, -1, -1, 133, -1, + 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, + 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, + 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, + 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, + 175, 176, 177, 178, -1, -1, 181, 182, 183, 184, + -1, -1, 187, 188, -1, 190, 191, 192, -1, -1, + 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, + -1, 206, 207, 208, 209, 210, 211, 212, -1, 214, + -1, -1, 217, 218, 219, -1, 221, -1, -1, -1, + 225, 226, -1, -1, -1, 230, 231, 232, 233, 234, + -1, -1, -1, 238, 239, 240, -1, -1, 243, -1, + -1, -1, -1, 248, 249, -1, -1, -1, 253, -1, + 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, + -1, 266, 267, 268, -1, -1, 271, -1, -1, 274, + 275, 276, -1, -1, -1, -1, 281, 282, -1, 284, + -1, 286, -1, 288, 289, -1, -1, -1, -1, -1, + -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, -1, 318, 319, 320, 321, -1, 323, 324, + 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, + 335, -1, -1, 338, 339, -1, 341, -1, 343, -1, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + -1, -1, 357, -1, -1, 360, 361, 362, 363, -1, + -1, -1, 367, 368, -1, -1, -1, 372, -1, 374, + 375, 376, -1, 378, 379, 380, 381, -1, 383, 384, + -1, -1, -1, -1, -1, -1, -1, -1, 393, 394, + 395, -1, -1, 398, -1, 400, -1, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, -1, -1, 414, + 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, + -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, + 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, + 445, 446, -1, 448, 449, -1, 451, 452, 453, -1, + -1, 456, -1, 458, -1, 460, 461, -1, 463, 464, + -1, 466, -1, 468, -1, -1, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, + 485, -1, -1, -1, 489, 490, 491, 492, -1, -1, + -1, 496, -1, -1, -1, 500, -1, 502, 503, 504, + 505, 506, 507, -1, 509, 510, 511, 512, 513, 514, + -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, + -1, -1, 527, -1, -1, -1, 531, 532, 533, -1, + -1, -1, 537, -1, -1, 540, 541, -1, 543, 544, + 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, + -1, 556, 557, -1, -1, 560, 561, 562, 563, -1, + 565, 566, 567, -1, 569, 570, 571, 572, -1, -1, + -1, -1, -1, 578, 579, 580, -1, -1, -1, 584, + 585, 586, 587, -1, 589, 590, -1, 592, 593, -1, + 595, 596, -1, -1, 599, -1, -1, 602, -1, 604, + -1, 606, 607, -1, -1, -1, -1, -1, -1, 614, + -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, + 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, + 635, -1, 637, 638, 639, -1, 5, 642, 7, 8, + 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, + 19, -1, -1, 22, -1, 24, 25, 26, 27, 28, + 29, 30, 31, 32, -1, 34, -1, -1, 37, 38, + -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, + 49, -1, 51, 52, -1, -1, 55, -1, -1, 58, + 59, -1, 61, 62, -1, 64, 65, -1, 67, 68, + 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, + 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, + 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, + -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, + -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, + 119, -1, -1, 122, -1, -1, -1, -1, 127, 128, + -1, -1, -1, 132, 133, -1, 135, -1, -1, -1, + -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, + -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, + -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, + 169, 170, -1, 172, 173, 174, 175, 176, 177, 178, + -1, -1, 181, 182, 183, 184, -1, -1, 187, 188, + -1, 190, 191, 192, -1, -1, 195, -1, -1, -1, + 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, + 209, 210, 211, 212, -1, 214, -1, -1, 217, 218, + 219, -1, 221, -1, -1, -1, 225, 226, -1, -1, + -1, 230, 231, 232, 233, 234, -1, -1, -1, 238, + 239, 240, -1, -1, 243, -1, -1, -1, -1, 248, + 249, -1, -1, -1, 253, -1, 255, 256, -1, 258, + 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, + -1, -1, 271, -1, -1, 274, 275, 276, -1, -1, + -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, + 289, -1, -1, -1, -1, -1, -1, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, + 319, 320, 321, -1, 323, 324, 325, -1, -1, -1, + -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, + 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, + -1, 360, 361, 362, 363, -1, -1, -1, 367, 368, + -1, -1, -1, 372, -1, 374, 375, 376, -1, 378, + 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 394, 395, -1, -1, 398, + -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, -1, -1, 414, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, + -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, + 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, + 449, -1, 451, 452, 453, -1, -1, 456, -1, 458, + -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, + -1, -1, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, + 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, + -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, + 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, + -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, + -1, -1, 531, 532, 533, -1, -1, -1, 537, -1, + -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, + -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, + -1, 560, 561, 562, 563, -1, 565, 566, 567, -1, + 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, + 579, 580, -1, -1, -1, 584, 585, 586, 587, -1, + 589, 590, -1, 592, 593, -1, 595, 596, -1, -1, + 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, + -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, + -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, + -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, + 639, -1, 5, 642, 7, 8, 9, 10, 11, 12, + -1, -1, 15, -1, -1, -1, 19, -1, -1, 22, + -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, + -1, 34, -1, -1, -1, 38, 39, -1, -1, 42, + -1, -1, 45, 46, 47, -1, 49, -1, 51, 52, + -1, -1, 55, -1, -1, 58, 59, -1, 61, 62, + -1, 64, 65, -1, 67, 68, 69, 70, 71, 72, + -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, + 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, + -1, 94, 95, 96, 97, 98, -1, 100, -1, -1, + 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, + 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, + -1, -1, -1, -1, 127, 128, -1, -1, -1, -1, + 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, + 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, + -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, + 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, + 173, 174, 175, 176, 177, 178, -1, -1, 181, 182, + 183, 184, -1, -1, 187, 188, -1, 190, 191, 192, + -1, -1, 195, -1, -1, -1, 199, 200, -1, 202, + -1, 204, -1, 206, 207, 208, 209, 210, 211, 212, + -1, 214, -1, -1, 217, 218, 219, -1, 221, 222, + 223, -1, 225, 226, -1, -1, -1, 230, 231, 232, + 233, 234, -1, -1, -1, 238, 239, 240, -1, -1, + 243, -1, -1, -1, -1, 248, 249, -1, -1, -1, + 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, + 263, -1, -1, 266, 267, 268, -1, -1, 271, -1, + -1, 274, 275, -1, -1, -1, -1, -1, 281, 282, + -1, 284, -1, 286, -1, 288, 289, -1, -1, -1, + -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, -1, 318, 319, 320, 321, -1, + 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, + 333, 334, 335, -1, -1, 338, 339, -1, 341, -1, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, -1, -1, 357, -1, -1, 360, 361, 362, + 363, -1, -1, -1, 367, 368, -1, -1, -1, 372, + -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, + 383, 384, -1, -1, -1, -1, -1, -1, -1, -1, + 393, 394, 395, -1, -1, 398, -1, 400, -1, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, -1, + -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, + 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, + -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, + 443, 444, 445, 446, -1, 448, 449, -1, 451, 452, + 453, -1, -1, 456, -1, 458, -1, 460, 461, -1, + 463, 464, -1, 466, -1, 468, -1, -1, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + -1, 484, 485, -1, -1, -1, 489, 490, 491, 492, + -1, -1, -1, 496, -1, -1, -1, 500, -1, 502, + 503, 504, 505, 506, 507, -1, 509, 510, 511, 512, + 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, + -1, 524, -1, -1, 527, -1, -1, -1, 531, 532, + 533, -1, -1, -1, 537, -1, -1, 540, 541, -1, + 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, + 553, 554, -1, 556, 557, -1, -1, 560, 561, 562, + 563, -1, 565, 566, 567, -1, 569, 570, 571, 572, + -1, -1, -1, -1, -1, 578, 579, 580, -1, -1, + -1, 584, 585, 586, 587, -1, 589, 590, -1, 592, + 593, -1, 595, 596, -1, -1, 599, -1, -1, 602, + -1, 604, -1, 606, 607, -1, -1, -1, -1, -1, + -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, + 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, + -1, 634, 635, -1, 637, 638, 639, -1, 5, 642, + 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, + -1, -1, 19, -1, -1, 22, -1, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, + -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, + 47, -1, 49, -1, 51, 52, -1, -1, 55, -1, + -1, 58, 59, -1, 61, 62, -1, 64, 65, -1, + 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, + 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, + 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, + 97, 98, -1, 100, -1, -1, 103, -1, -1, 106, + -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, + 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, + 127, 128, -1, -1, -1, -1, 133, -1, 135, -1, + -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, + -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, + -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, + 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, + 177, 178, -1, -1, 181, 182, 183, 184, -1, -1, + 187, 188, -1, 190, 191, 192, -1, -1, 195, -1, + -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, + 207, 208, 209, 210, 211, 212, -1, 214, -1, -1, + 217, 218, 219, -1, 221, -1, -1, -1, 225, 226, + -1, -1, -1, 230, 231, 232, 233, 234, -1, -1, + -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, + -1, 248, 249, -1, -1, -1, 253, -1, 255, 256, + -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, + 267, 268, -1, -1, 271, -1, -1, 274, 275, -1, + -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, + -1, 288, 289, -1, -1, 292, -1, -1, -1, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + -1, 318, 319, 320, 321, -1, 323, 324, 325, -1, + -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, + -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, + 357, -1, -1, 360, 361, 362, 363, -1, -1, -1, + 367, 368, -1, -1, 371, 372, -1, 374, 375, 376, + -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, + -1, -1, -1, -1, -1, -1, 393, 394, 395, -1, + 397, 398, -1, 400, -1, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, -1, -1, 414, 415, 416, + -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, + 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, + 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, + -1, 448, 449, -1, 451, 452, 453, -1, -1, 456, + -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, + -1, 468, -1, -1, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, + -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, + -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, + 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, + -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, + 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, + 537, -1, -1, 540, 541, -1, 543, 544, 545, 546, + 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, + 557, -1, -1, 560, 561, 562, 563, -1, -1, 566, + 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, + -1, 578, 579, 580, -1, -1, -1, 584, 585, 586, + 587, 588, 589, 590, -1, 592, 593, -1, 595, 596, + -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, + 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, + 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, + 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, + 637, 638, 639, -1, 5, 642, 7, 8, 9, 10, + 11, 12, -1, -1, 15, -1, -1, -1, 19, -1, + -1, 22, -1, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, 34, -1, -1, -1, 38, -1, -1, + -1, 42, -1, -1, 45, 46, 47, -1, 49, -1, + 51, 52, -1, -1, 55, -1, -1, 58, 59, -1, + 61, 62, -1, 64, 65, -1, 67, 68, 69, 70, + 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, + -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, + 91, 92, -1, 94, 95, 96, 97, 98, -1, 100, + -1, -1, 103, -1, -1, 106, -1, 108, -1, -1, + 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, + -1, 122, -1, -1, -1, -1, 127, 128, -1, -1, + -1, -1, 133, -1, 135, -1, -1, -1, -1, 140, + -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, + 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, + -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, + -1, 172, 173, 174, 175, 176, 177, 178, -1, -1, + 181, 182, 183, 184, -1, -1, 187, 188, -1, 190, + 191, 192, -1, -1, 195, -1, -1, -1, 199, 200, + -1, 202, -1, 204, -1, 206, 207, 208, 209, 210, + 211, 212, -1, 214, -1, -1, 217, 218, 219, -1, + 221, -1, -1, -1, 225, 226, -1, -1, -1, 230, + 231, 232, 233, 234, -1, -1, -1, 238, 239, 240, + -1, -1, 243, -1, -1, -1, -1, 248, 249, -1, + -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, + -1, -1, 263, -1, -1, 266, 267, 268, -1, -1, + 271, -1, -1, 274, 275, -1, -1, -1, -1, -1, + 281, 282, -1, 284, -1, 286, -1, 288, 289, -1, + -1, 292, -1, -1, -1, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, -1, 318, 319, 320, + 321, -1, 323, 324, 325, -1, -1, -1, -1, 330, + 331, 332, 333, 334, 335, -1, -1, 338, 339, -1, + 341, -1, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, -1, -1, 357, -1, -1, 360, + 361, 362, 363, -1, -1, -1, 367, 368, -1, -1, + 371, 372, -1, 374, 375, 376, -1, 378, 379, 380, + 381, -1, 383, 384, -1, -1, -1, -1, -1, -1, + -1, -1, 393, 394, 395, -1, 397, 398, -1, 400, + -1, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, -1, -1, 414, 415, 416, -1, 418, -1, 420, + 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, + 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, + -1, 442, 443, 444, 445, 446, -1, 448, 449, -1, + 451, 452, 453, -1, -1, 456, -1, 458, -1, 460, + 461, -1, 463, 464, -1, 466, -1, 468, -1, -1, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, -1, 484, 485, -1, -1, -1, 489, 490, + 491, 492, -1, -1, -1, 496, -1, -1, -1, 500, + -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, + 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, + 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, + 531, 532, 533, -1, -1, -1, 537, -1, -1, 540, + 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, + 551, 552, 553, 554, -1, 556, 557, -1, -1, 560, + 561, 562, 563, -1, -1, 566, 567, -1, 569, 570, + 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, + -1, -1, -1, 584, 585, 586, 587, 588, 589, 590, + -1, 592, 593, -1, 595, 596, -1, -1, 599, -1, + -1, 602, -1, 604, -1, 606, 607, -1, -1, -1, + -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, + 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, + -1, -1, -1, 634, 635, -1, 637, 638, 639, -1, + 5, 642, 7, 8, 9, 10, 11, 12, -1, -1, + 15, -1, -1, -1, 19, -1, -1, 22, -1, 24, + 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, + -1, -1, 37, 38, -1, -1, -1, 42, -1, -1, + 45, 46, 47, -1, 49, -1, 51, 52, -1, -1, + 55, -1, -1, 58, 59, -1, 61, 62, -1, 64, + 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, + 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, + 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, + 95, 96, 97, 98, -1, 100, -1, -1, 103, -1, + -1, 106, -1, 108, -1, -1, 111, -1, 113, -1, + -1, -1, 117, 118, 119, -1, -1, 122, -1, -1, + -1, -1, 127, 128, -1, -1, -1, 132, 133, -1, + 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, + 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, + 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, + 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, + 175, 176, 177, 178, -1, -1, 181, 182, 183, 184, + -1, -1, 187, 188, -1, 190, 191, 192, -1, -1, + 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, + -1, 206, 207, 208, 209, 210, 211, 212, -1, 214, + -1, -1, 217, 218, 219, -1, 221, -1, -1, -1, + 225, 226, -1, -1, -1, 230, 231, 232, 233, 234, + -1, -1, -1, 238, 239, 240, -1, -1, 243, -1, + -1, -1, -1, 248, 249, -1, -1, -1, 253, -1, + 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, + -1, 266, 267, 268, -1, -1, 271, -1, -1, 274, + 275, 276, -1, -1, -1, -1, 281, 282, -1, 284, + -1, 286, -1, 288, 289, -1, -1, -1, -1, -1, + -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, -1, 318, 319, 320, 321, -1, 323, 324, + 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, + 335, -1, -1, 338, 339, -1, 341, -1, 343, -1, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + -1, -1, 357, -1, -1, 360, 361, 362, 363, -1, + -1, -1, 367, 368, -1, -1, -1, 372, -1, 374, + 375, 376, -1, 378, 379, 380, 381, -1, 383, 384, + -1, -1, -1, -1, -1, -1, -1, -1, 393, 394, + 395, -1, -1, 398, -1, 400, -1, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, -1, -1, 414, + 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, + -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, + 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, + 445, 446, -1, 448, 449, -1, 451, 452, 453, -1, + -1, 456, -1, 458, -1, 460, 461, -1, 463, 464, + -1, 466, -1, 468, -1, -1, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, + 485, -1, -1, -1, 489, 490, 491, 492, -1, -1, + -1, 496, -1, -1, -1, 500, -1, 502, 503, 504, + 505, 506, 507, -1, 509, 510, 511, 512, 513, 514, + -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, + -1, -1, 527, -1, -1, -1, 531, 532, 533, -1, + -1, -1, 537, -1, -1, 540, 541, -1, 543, 544, + 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, + -1, 556, 557, -1, -1, 560, 561, 562, 563, -1, + 565, 566, 567, -1, 569, 570, 571, 572, -1, -1, + -1, -1, -1, 578, 579, 580, -1, -1, -1, 584, + 585, 586, 587, -1, 589, 590, -1, 592, 593, -1, + 595, 596, -1, -1, 599, -1, -1, 602, -1, 604, + -1, 606, 607, -1, -1, -1, -1, -1, -1, 614, + -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, + 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, + 635, -1, 637, 638, 639, -1, 5, 642, 7, 8, + 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, + 19, -1, -1, 22, -1, 24, 25, 26, 27, 28, + 29, 30, 31, 32, -1, 34, -1, -1, -1, 38, + -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, + 49, -1, 51, 52, -1, -1, 55, -1, -1, 58, + 59, -1, 61, 62, -1, 64, 65, -1, 67, 68, + 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, + 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, + 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, + -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, + -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, + 119, -1, -1, 122, -1, -1, -1, -1, 127, 128, + -1, -1, -1, -1, 133, -1, 135, -1, -1, -1, + -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, + -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, + -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, + 169, 170, -1, 172, 173, 174, 175, 176, 177, 178, + -1, -1, 181, 182, 183, 184, -1, -1, 187, 188, + -1, 190, 191, 192, -1, -1, 195, -1, -1, -1, + 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, + 209, 210, 211, 212, -1, 214, -1, -1, 217, 218, + 219, -1, 221, -1, -1, -1, 225, 226, -1, -1, + -1, 230, 231, 232, 233, 234, -1, -1, -1, 238, + 239, 240, -1, -1, 243, -1, -1, -1, -1, 248, + 249, -1, -1, -1, 253, -1, 255, 256, -1, 258, + 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, + -1, -1, 271, -1, -1, 274, 275, -1, -1, -1, + -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, + 289, -1, -1, 292, -1, -1, -1, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, + 319, 320, 321, -1, 323, 324, 325, -1, -1, -1, + -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, + 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, + -1, 360, 361, 362, 363, -1, -1, -1, 367, 368, + -1, -1, 371, 372, -1, 374, 375, 376, -1, 378, + 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 394, 395, -1, 397, 398, + -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, -1, -1, 414, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, + -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, + 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, + 449, -1, 451, 452, 453, -1, -1, 456, -1, 458, + -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, + -1, -1, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, + 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, + -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, + 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, + -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, + -1, -1, 531, 532, 533, -1, -1, -1, 537, -1, + -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, + -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, + -1, 560, 561, 562, 563, -1, -1, 566, 567, -1, + 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, + 579, 580, -1, -1, -1, 584, 585, 586, 587, 588, + 589, 590, -1, 592, 593, -1, 595, 596, -1, -1, + 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, + -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, + -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, + -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, + 639, -1, 5, 642, 7, 8, 9, 10, 11, 12, + -1, -1, 15, -1, -1, -1, 19, -1, -1, 22, + -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, + -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, + -1, -1, 45, 46, 47, -1, 49, -1, 51, 52, + -1, -1, 55, -1, -1, 58, 59, -1, 61, 62, + -1, 64, 65, -1, 67, 68, 69, 70, 71, 72, + -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, + 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, + -1, 94, 95, 96, 97, 98, -1, 100, -1, -1, + 103, -1, -1, 106, -1, 108, 109, -1, 111, -1, + 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, + -1, -1, -1, -1, 127, 128, -1, -1, -1, -1, + 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, + 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, + -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, + 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, + 173, 174, 175, 176, 177, 178, -1, -1, 181, 182, + 183, 184, -1, -1, 187, 188, -1, 190, 191, 192, + -1, -1, 195, -1, -1, -1, 199, 200, -1, 202, + -1, 204, -1, 206, 207, 208, 209, 210, 211, 212, + -1, 214, -1, -1, 217, 218, 219, -1, 221, -1, + -1, -1, 225, 226, -1, -1, -1, 230, 231, 232, + 233, 234, -1, -1, -1, 238, 239, 240, -1, -1, + 243, -1, -1, -1, -1, 248, 249, -1, -1, -1, + 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, + 263, -1, -1, 266, 267, 268, -1, -1, 271, -1, + -1, 274, 275, 276, -1, -1, -1, -1, 281, 282, + -1, 284, -1, 286, -1, 288, 289, -1, -1, -1, + -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, -1, 318, 319, 320, 321, -1, + 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, + 333, 334, 335, -1, -1, 338, 339, -1, 341, -1, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, -1, -1, 357, -1, -1, 360, 361, 362, + 363, -1, -1, -1, 367, 368, -1, -1, -1, 372, + -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, + 383, 384, -1, -1, -1, -1, -1, -1, -1, -1, + 393, 394, 395, -1, -1, 398, -1, 400, -1, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, -1, + -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, + 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, + -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, + 443, 444, 445, 446, -1, 448, 449, -1, 451, 452, + 453, -1, -1, 456, -1, 458, -1, 460, 461, -1, + 463, 464, -1, 466, -1, 468, -1, -1, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + -1, 484, 485, -1, -1, -1, 489, 490, 491, 492, + -1, -1, -1, 496, -1, -1, -1, 500, -1, 502, + 503, 504, 505, 506, 507, -1, 509, 510, 511, 512, + 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, + -1, 524, -1, -1, 527, -1, -1, -1, 531, 532, + 533, -1, -1, -1, 537, -1, -1, 540, 541, -1, + 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, + 553, 554, -1, 556, 557, -1, -1, 560, 561, 562, + 563, -1, 565, 566, 567, -1, 569, 570, 571, 572, + -1, -1, -1, -1, -1, 578, 579, 580, -1, -1, + -1, 584, 585, 586, 587, -1, 589, 590, -1, 592, + 593, -1, 595, 596, -1, -1, 599, -1, -1, 602, + -1, 604, -1, 606, 607, -1, -1, -1, -1, -1, + -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, + 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, + -1, 634, 635, -1, 637, 638, 639, -1, 5, 642, + 7, 8, 9, 10, 11, 12, 13, -1, 15, -1, + -1, -1, 19, -1, -1, 22, -1, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, + -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, + 47, -1, 49, -1, 51, 52, -1, -1, 55, -1, + -1, 58, 59, -1, 61, 62, -1, 64, 65, -1, + 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, + 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, + 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, + 97, 98, -1, 100, -1, -1, 103, -1, -1, 106, + -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, + 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, + 127, 128, -1, -1, -1, -1, 133, -1, 135, -1, + -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, + -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, + -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, + 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, + 177, 178, -1, -1, 181, 182, 183, 184, -1, -1, + 187, 188, -1, 190, 191, 192, -1, -1, 195, -1, + -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, + 207, 208, 209, 210, 211, 212, -1, 214, -1, -1, + 217, 218, 219, -1, 221, -1, -1, -1, 225, 226, + -1, -1, -1, 230, 231, 232, 233, 234, -1, -1, + -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, + -1, 248, 249, -1, -1, -1, 253, -1, 255, 256, + -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, + 267, 268, -1, -1, 271, -1, -1, 274, 275, 276, + -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, + -1, 288, 289, -1, -1, -1, -1, -1, -1, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + -1, 318, 319, 320, 321, -1, 323, 324, 325, -1, + -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, + -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, + 357, -1, -1, 360, 361, 362, 363, -1, -1, -1, + 367, 368, -1, -1, -1, 372, -1, 374, 375, 376, + -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, + -1, -1, -1, -1, -1, -1, 393, 394, 395, -1, + -1, 398, -1, 400, -1, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, -1, -1, 414, 415, 416, + -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, + 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, + 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, + -1, 448, 449, -1, 451, 452, 453, -1, -1, 456, + -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, + -1, 468, -1, -1, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, + -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, + -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, + 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, + -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, + 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, + 537, -1, -1, 540, 541, -1, 543, 544, 545, 546, + 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, + 557, -1, -1, 560, 561, 562, 563, -1, 565, 566, + 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, + -1, 578, 579, 580, -1, -1, -1, 584, 585, 586, + 587, -1, 589, 590, -1, 592, 593, -1, 595, 596, + -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, + 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, + 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, + 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, + 637, 638, 639, -1, 5, 642, 7, 8, 9, 10, + 11, 12, -1, -1, 15, -1, -1, -1, 19, -1, + -1, 22, -1, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, 34, -1, -1, -1, 38, -1, -1, + -1, 42, -1, -1, 45, 46, 47, -1, 49, -1, + 51, 52, -1, -1, 55, -1, -1, 58, 59, -1, + 61, 62, -1, 64, 65, -1, 67, 68, 69, 70, + 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, + -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, + 91, 92, -1, 94, 95, 96, 97, 98, -1, 100, + -1, -1, 103, -1, -1, 106, -1, 108, -1, 110, + 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, + -1, 122, -1, -1, -1, -1, 127, 128, -1, -1, + -1, -1, 133, -1, 135, -1, -1, -1, -1, 140, + -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, + 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, + -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, + -1, 172, 173, 174, 175, 176, 177, 178, -1, -1, + 181, 182, 183, 184, -1, -1, 187, 188, -1, 190, + 191, 192, -1, -1, 195, -1, -1, -1, 199, 200, + -1, 202, -1, 204, -1, 206, 207, 208, 209, 210, + 211, 212, -1, 214, -1, -1, 217, 218, 219, -1, + 221, -1, -1, -1, 225, 226, -1, -1, -1, 230, + 231, 232, 233, 234, -1, -1, -1, 238, 239, 240, + -1, -1, 243, -1, -1, -1, -1, 248, 249, -1, + -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, + -1, -1, 263, -1, -1, 266, 267, 268, -1, -1, + 271, -1, -1, 274, 275, 276, -1, -1, -1, -1, + 281, 282, -1, 284, -1, 286, -1, 288, 289, -1, + -1, -1, -1, -1, -1, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, -1, 318, 319, 320, + 321, -1, 323, 324, 325, -1, -1, -1, -1, 330, + 331, 332, 333, 334, 335, -1, -1, 338, 339, -1, + 341, -1, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, -1, -1, 357, -1, -1, 360, + 361, 362, 363, -1, -1, -1, 367, 368, -1, -1, + -1, 372, -1, 374, 375, 376, -1, 378, 379, 380, + 381, -1, 383, 384, -1, -1, -1, -1, -1, -1, + -1, -1, 393, 394, 395, -1, -1, 398, -1, 400, + -1, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, -1, -1, 414, 415, 416, -1, 418, -1, 420, + 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, + 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, + -1, 442, 443, 444, 445, 446, -1, 448, 449, -1, + 451, 452, 453, -1, -1, 456, -1, 458, -1, 460, + 461, -1, 463, 464, -1, 466, -1, 468, -1, -1, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, -1, 484, 485, -1, -1, -1, 489, 490, + 491, 492, -1, -1, -1, 496, -1, -1, -1, 500, + -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, + 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, + 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, + 531, 532, 533, -1, -1, -1, 537, -1, -1, 540, + 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, + 551, 552, 553, 554, -1, 556, 557, -1, -1, 560, + 561, 562, 563, -1, 565, 566, 567, -1, 569, 570, + 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, + -1, -1, -1, 584, 585, 586, 587, -1, 589, 590, + -1, 592, 593, -1, 595, 596, -1, -1, 599, -1, + -1, 602, -1, 604, -1, 606, 607, -1, -1, -1, + -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, + 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, + -1, -1, -1, 634, 635, -1, 637, 638, 639, -1, + 5, 642, 7, 8, 9, 10, 11, 12, -1, -1, + 15, -1, -1, -1, 19, -1, -1, 22, -1, 24, + 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, + -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, + 45, 46, 47, -1, 49, -1, 51, 52, -1, -1, + 55, -1, -1, 58, 59, -1, 61, 62, -1, 64, + 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, + 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, + 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, + 95, 96, 97, 98, -1, 100, -1, -1, 103, -1, + -1, 106, -1, 108, -1, -1, 111, -1, 113, -1, + -1, -1, 117, 118, 119, -1, -1, 122, -1, -1, + -1, -1, 127, 128, -1, -1, -1, 132, 133, -1, + 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, + 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, + 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, + 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, + 175, 176, 177, 178, -1, -1, 181, 182, 183, 184, + -1, -1, 187, 188, -1, 190, 191, 192, -1, -1, + 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, + -1, 206, 207, 208, 209, 210, 211, 212, -1, 214, + -1, -1, 217, 218, 219, -1, 221, -1, -1, -1, + 225, 226, -1, -1, -1, 230, 231, 232, 233, 234, + -1, -1, -1, 238, 239, 240, -1, -1, 243, -1, + -1, -1, -1, 248, 249, -1, -1, -1, 253, -1, + 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, + -1, 266, 267, 268, -1, -1, 271, -1, -1, 274, + 275, 276, -1, -1, -1, -1, 281, 282, -1, 284, + -1, 286, -1, 288, 289, -1, -1, -1, -1, -1, + -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, -1, 318, 319, 320, 321, -1, 323, 324, + 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, + 335, -1, -1, 338, 339, -1, 341, -1, 343, -1, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + -1, -1, 357, -1, -1, 360, 361, 362, 363, -1, + -1, -1, 367, 368, -1, -1, -1, 372, -1, 374, + 375, 376, -1, 378, 379, 380, 381, -1, 383, 384, + -1, -1, -1, -1, -1, -1, -1, -1, 393, 394, + 395, -1, -1, 398, -1, 400, -1, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, -1, -1, 414, + 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, + -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, + 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, + 445, 446, -1, 448, 449, -1, 451, 452, 453, -1, + -1, 456, -1, 458, -1, 460, 461, -1, 463, 464, + -1, 466, -1, 468, -1, -1, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, + 485, -1, -1, -1, 489, 490, 491, 492, -1, -1, + -1, 496, -1, -1, -1, 500, -1, 502, 503, 504, + 505, 506, 507, -1, 509, 510, 511, 512, 513, 514, + -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, + -1, -1, 527, -1, -1, -1, 531, 532, 533, -1, + -1, -1, 537, -1, -1, 540, 541, -1, 543, 544, + 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, + -1, 556, 557, -1, -1, 560, 561, 562, 563, -1, + 565, 566, 567, -1, 569, 570, 571, 572, -1, -1, + -1, -1, -1, 578, 579, 580, -1, -1, -1, 584, + 585, 586, 587, -1, 589, 590, -1, 592, 593, -1, + 595, 596, -1, -1, 599, -1, -1, 602, -1, 604, + -1, 606, 607, -1, -1, -1, -1, -1, -1, 614, + -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, + 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, + 635, -1, 637, 638, 639, -1, 5, 642, 7, 8, + 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, + 19, -1, -1, 22, -1, 24, 25, 26, 27, 28, + 29, 30, 31, 32, -1, 34, -1, -1, 37, 38, + -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, + 49, -1, 51, 52, -1, -1, 55, -1, -1, 58, + 59, -1, 61, 62, -1, 64, 65, -1, 67, 68, + 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, + 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, + 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, + -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, + -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, + 119, -1, -1, 122, -1, -1, -1, -1, 127, 128, + -1, -1, -1, -1, 133, -1, 135, -1, -1, -1, + -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, + -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, + -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, + 169, 170, -1, 172, 173, 174, 175, 176, 177, 178, + -1, -1, 181, 182, 183, 184, -1, -1, 187, 188, + -1, 190, 191, 192, -1, -1, 195, -1, -1, -1, + 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, + 209, 210, 211, 212, -1, 214, -1, -1, 217, 218, + 219, -1, 221, -1, -1, -1, 225, 226, -1, -1, + -1, 230, 231, 232, 233, 234, -1, -1, -1, 238, + 239, 240, -1, -1, 243, -1, -1, -1, -1, 248, + 249, -1, -1, -1, 253, -1, 255, 256, -1, 258, + 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, + -1, -1, 271, -1, -1, 274, 275, 276, -1, -1, + -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, + 289, -1, -1, -1, -1, -1, -1, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, + 319, 320, 321, -1, 323, 324, 325, -1, -1, -1, + -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, + 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, + -1, 360, 361, 362, 363, -1, -1, -1, 367, 368, + -1, -1, -1, 372, -1, 374, 375, 376, -1, 378, + 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 394, 395, -1, -1, 398, + -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, -1, -1, 414, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, + -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, + 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, + 449, -1, 451, 452, 453, -1, -1, 456, -1, 458, + -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, + -1, -1, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, + 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, + -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, + 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, + -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, + -1, -1, 531, 532, 533, -1, -1, -1, 537, -1, + -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, + -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, + -1, 560, 561, 562, 563, -1, 565, 566, 567, -1, + 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, + 579, 580, -1, -1, -1, 584, 585, 586, 587, -1, + 589, 590, -1, 592, 593, -1, 595, 596, -1, -1, + 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, + -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, + -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, + -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, + 639, -1, 5, 642, 7, 8, 9, 10, 11, 12, + -1, -1, 15, -1, -1, -1, 19, -1, -1, 22, + -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, + -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, + -1, -1, 45, 46, 47, -1, 49, -1, 51, 52, + -1, -1, 55, -1, -1, 58, 59, -1, 61, 62, + -1, 64, 65, -1, 67, 68, 69, 70, 71, 72, + -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, + 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, + -1, 94, 95, 96, 97, 98, -1, 100, -1, -1, + 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, + 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, + -1, -1, -1, -1, 127, 128, -1, -1, -1, -1, + 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, + 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, + -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, + 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, + 173, 174, 175, 176, 177, 178, -1, -1, 181, 182, + 183, 184, -1, -1, 187, 188, -1, 190, 191, 192, + -1, -1, 195, -1, -1, -1, 199, 200, -1, 202, + -1, 204, -1, 206, 207, 208, 209, 210, 211, 212, + -1, 214, -1, -1, 217, 218, 219, -1, 221, -1, + -1, -1, 225, 226, -1, -1, -1, 230, 231, 232, + 233, 234, -1, -1, -1, 238, 239, 240, -1, -1, + 243, -1, -1, -1, -1, 248, 249, -1, -1, -1, + 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, + 263, -1, -1, 266, 267, 268, -1, -1, 271, -1, + -1, 274, 275, 276, -1, -1, -1, -1, 281, 282, + -1, 284, -1, 286, -1, 288, 289, -1, -1, -1, + -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, -1, 318, 319, 320, 321, -1, + 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, + 333, 334, 335, -1, -1, 338, 339, -1, 341, -1, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, -1, -1, 357, -1, -1, 360, 361, 362, + 363, -1, -1, -1, 367, 368, -1, -1, -1, 372, + -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, + 383, 384, -1, -1, -1, -1, -1, -1, -1, -1, + 393, 394, 395, -1, -1, 398, -1, 400, -1, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, -1, + -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, + 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, + -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, + 443, 444, 445, 446, -1, 448, 449, -1, 451, 452, + 453, -1, -1, 456, -1, 458, -1, 460, 461, -1, + 463, 464, -1, 466, -1, 468, -1, -1, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + -1, 484, 485, -1, -1, -1, 489, 490, 491, 492, + -1, -1, -1, 496, -1, -1, -1, 500, -1, 502, + 503, 504, 505, 506, 507, -1, 509, 510, 511, 512, + 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, + -1, 524, -1, -1, 527, -1, -1, -1, 531, 532, + 533, -1, -1, -1, 537, -1, -1, 540, 541, -1, + 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, + 553, 554, -1, 556, 557, -1, -1, 560, 561, 562, + 563, -1, 565, 566, 567, -1, 569, 570, 571, 572, + -1, -1, -1, -1, -1, 578, 579, 580, -1, -1, + -1, 584, 585, 586, 587, -1, 589, 590, -1, 592, + 593, -1, 595, 596, -1, -1, 599, -1, -1, 602, + -1, 604, -1, 606, 607, -1, -1, -1, -1, -1, + -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, + 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, + -1, 634, 635, -1, 637, 638, 639, -1, 5, 642, + 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, + -1, -1, 19, 20, -1, 22, -1, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, + -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, + 47, -1, 49, -1, 51, 52, -1, -1, 55, -1, + -1, 58, 59, -1, 61, 62, -1, 64, 65, -1, + 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, + 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, + 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, + 97, 98, -1, 100, -1, -1, 103, -1, -1, 106, + -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, + 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, + 127, 128, -1, -1, -1, -1, 133, -1, 135, -1, + -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, + -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, + -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, + 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, + 177, 178, -1, -1, 181, 182, 183, 184, -1, -1, + 187, 188, -1, 190, 191, 192, -1, -1, 195, -1, + -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, + 207, 208, 209, 210, 211, 212, -1, 214, -1, -1, + 217, 218, 219, -1, 221, -1, -1, -1, 225, 226, + -1, -1, -1, 230, 231, 232, 233, 234, -1, -1, + -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, + -1, 248, 249, -1, -1, -1, 253, -1, 255, 256, + -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, + 267, 268, -1, -1, 271, -1, -1, 274, 275, -1, + -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, + -1, 288, 289, -1, -1, -1, -1, -1, -1, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + -1, 318, 319, 320, 321, -1, 323, 324, 325, -1, + -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, + -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, + 357, -1, -1, 360, 361, 362, 363, -1, -1, -1, + 367, 368, -1, -1, -1, 372, -1, 374, 375, 376, + -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, + -1, -1, -1, -1, -1, -1, 393, 394, 395, -1, + -1, 398, -1, 400, -1, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, -1, -1, 414, 415, 416, + -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, + 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, + 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, + -1, 448, 449, -1, 451, 452, 453, -1, -1, 456, + -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, + -1, 468, -1, -1, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, + -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, + -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, + 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, + -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, + 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, + 537, -1, -1, 540, 541, -1, 543, 544, 545, 546, + 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, + 557, -1, -1, 560, 561, 562, 563, -1, 565, 566, + 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, + -1, 578, 579, 580, -1, -1, -1, 584, 585, 586, + 587, -1, 589, 590, -1, 592, 593, -1, 595, 596, + -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, + 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, + 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, + 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, + 637, 638, 639, -1, 5, 642, 7, 8, 9, 10, + 11, 12, -1, -1, 15, -1, -1, -1, 19, -1, + -1, 22, -1, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, 34, -1, -1, -1, 38, -1, -1, + -1, 42, -1, -1, 45, 46, 47, -1, 49, -1, + 51, 52, -1, -1, 55, -1, -1, 58, 59, -1, + 61, 62, -1, 64, 65, -1, 67, 68, 69, 70, + 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, + -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, + 91, 92, -1, 94, 95, 96, 97, 98, 99, 100, + -1, -1, 103, -1, -1, 106, -1, 108, -1, -1, + 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, + -1, 122, -1, -1, -1, -1, 127, 128, -1, -1, + -1, -1, 133, -1, 135, -1, -1, -1, -1, 140, + -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, + 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, + -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, + -1, 172, 173, 174, 175, 176, 177, 178, -1, 180, + 181, 182, 183, 184, -1, -1, 187, 188, -1, 190, + 191, 192, -1, -1, 195, -1, -1, -1, 199, 200, + -1, 202, -1, 204, -1, 206, 207, 208, 209, 210, + 211, 212, -1, 214, -1, -1, 217, 218, 219, -1, + 221, -1, -1, -1, 225, 226, -1, -1, -1, 230, + 231, 232, 233, 234, -1, -1, -1, 238, 239, 240, + -1, -1, 243, -1, -1, -1, -1, 248, 249, -1, + -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, + -1, -1, 263, -1, -1, 266, 267, 268, -1, -1, + 271, -1, -1, 274, 275, -1, -1, -1, -1, -1, + 281, 282, -1, 284, -1, 286, -1, 288, 289, -1, + -1, -1, -1, -1, -1, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, -1, 318, 319, 320, + 321, -1, 323, 324, 325, -1, -1, -1, -1, 330, + 331, 332, 333, 334, 335, -1, -1, 338, 339, -1, + 341, -1, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, -1, -1, 357, -1, -1, 360, + 361, 362, 363, -1, -1, -1, 367, 368, -1, -1, + -1, 372, -1, 374, 375, 376, -1, 378, 379, 380, + 381, -1, 383, 384, -1, -1, -1, -1, -1, -1, + -1, -1, 393, 394, 395, -1, -1, 398, -1, 400, + -1, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, -1, -1, 414, 415, 416, -1, 418, -1, 420, + 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, + 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, + -1, 442, 443, 444, 445, 446, -1, 448, 449, -1, + 451, 452, 453, -1, -1, 456, -1, 458, -1, 460, + 461, -1, 463, 464, -1, 466, -1, 468, -1, -1, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, -1, 484, 485, -1, -1, -1, 489, 490, + 491, 492, -1, -1, -1, 496, -1, -1, -1, 500, + -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, + 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, + 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, + 531, 532, 533, -1, -1, -1, 537, -1, -1, 540, + 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, + 551, 552, 553, 554, -1, 556, 557, -1, -1, 560, + 561, 562, 563, -1, -1, 566, 567, -1, 569, 570, + 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, + -1, -1, -1, 584, 585, 586, 587, -1, 589, 590, + -1, 592, 593, -1, 595, 596, -1, -1, 599, -1, + -1, 602, -1, 604, -1, 606, 607, -1, -1, -1, + -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, + 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, + -1, -1, -1, 634, 635, -1, 637, 638, 639, -1, + 5, 642, 7, 8, 9, 10, 11, 12, -1, -1, + 15, -1, -1, -1, 19, -1, -1, 22, -1, 24, + 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, + -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, + 45, 46, 47, -1, 49, -1, 51, 52, -1, -1, + 55, -1, -1, 58, 59, -1, 61, 62, -1, 64, + 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, + 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, + 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, + 95, 96, 97, 98, -1, 100, -1, -1, 103, -1, + -1, 106, -1, 108, -1, -1, 111, -1, 113, -1, + -1, -1, 117, 118, 119, -1, -1, 122, -1, -1, + -1, -1, 127, 128, -1, -1, -1, -1, 133, -1, + 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, + 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, + 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, + 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, + 175, 176, 177, 178, -1, -1, 181, 182, 183, 184, + -1, -1, 187, 188, -1, 190, 191, 192, -1, -1, + 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, + -1, 206, 207, 208, 209, 210, 211, 212, -1, 214, + -1, -1, 217, 218, 219, -1, 221, -1, -1, -1, + 225, 226, -1, -1, -1, 230, 231, 232, 233, 234, + -1, -1, -1, 238, 239, 240, -1, -1, 243, -1, + -1, -1, -1, 248, 249, -1, -1, -1, 253, -1, + 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, + -1, 266, 267, 268, -1, -1, 271, -1, -1, 274, + 275, -1, -1, -1, -1, -1, 281, 282, -1, 284, + -1, 286, -1, 288, 289, -1, -1, -1, -1, -1, + -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, -1, 318, 319, 320, 321, -1, 323, 324, + 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, + 335, -1, -1, 338, 339, -1, 341, -1, 343, -1, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + -1, -1, 357, -1, -1, 360, 361, 362, 363, -1, + -1, -1, 367, 368, -1, -1, -1, 372, -1, 374, + 375, 376, -1, 378, 379, 380, 381, -1, 383, 384, + -1, -1, -1, -1, -1, -1, -1, -1, 393, 394, + 395, -1, -1, 398, -1, 400, -1, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, -1, -1, 414, + 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, + -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, + 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, + 445, 446, -1, 448, 449, -1, 451, 452, 453, -1, + -1, 456, -1, 458, -1, 460, 461, -1, 463, 464, + -1, 466, -1, 468, -1, -1, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, + 485, -1, -1, -1, 489, 490, 491, 492, -1, -1, + -1, 496, -1, -1, -1, 500, -1, 502, 503, 504, + 505, 506, 507, -1, 509, 510, 511, 512, 513, 514, + -1, -1, -1, 518, -1, -1, 521, 522, -1, 524, + -1, -1, 527, -1, -1, -1, 531, 532, 533, -1, + -1, -1, 537, -1, -1, 540, 541, -1, 543, 544, + 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, + -1, 556, 557, -1, -1, 560, 561, 562, 563, -1, + -1, 566, 567, -1, 569, 570, 571, 572, -1, -1, + -1, -1, -1, 578, 579, 580, -1, -1, -1, 584, + 585, 586, 587, -1, 589, 590, -1, 592, 593, -1, + 595, 596, -1, -1, 599, -1, -1, 602, -1, 604, + -1, 606, 607, -1, -1, -1, -1, -1, -1, 614, + -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, + 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, + 635, -1, 637, 638, 639, -1, 5, 642, 7, 8, + 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, + 19, -1, -1, 22, -1, 24, 25, 26, 27, 28, + 29, 30, 31, 32, -1, 34, -1, -1, -1, 38, + -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, + 49, -1, 51, 52, -1, -1, 55, -1, -1, 58, + 59, -1, 61, 62, -1, 64, 65, -1, 67, 68, + 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, + 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, + 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, + -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, + -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, + 119, -1, -1, 122, -1, -1, -1, -1, 127, 128, + -1, -1, -1, -1, 133, -1, 135, -1, -1, -1, + -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, + -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, + -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, + 169, 170, -1, 172, 173, 174, 175, 176, 177, 178, + -1, -1, 181, 182, 183, 184, -1, -1, 187, 188, + -1, 190, 191, 192, -1, -1, 195, -1, -1, -1, + 199, 200, 201, 202, -1, 204, -1, 206, 207, 208, + 209, 210, 211, 212, -1, 214, -1, -1, 217, 218, + 219, -1, 221, -1, -1, -1, 225, 226, -1, -1, + -1, 230, 231, 232, 233, 234, -1, -1, -1, 238, + 239, 240, -1, -1, 243, -1, -1, -1, -1, 248, + 249, -1, -1, -1, 253, -1, 255, 256, -1, 258, + 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, + -1, -1, 271, -1, -1, 274, 275, -1, -1, -1, + -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, + 289, -1, -1, -1, -1, -1, -1, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, + 319, 320, 321, -1, 323, 324, 325, -1, -1, -1, + -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, + 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, + -1, 360, 361, 362, 363, -1, -1, -1, 367, 368, + -1, -1, -1, 372, -1, 374, 375, 376, -1, 378, + 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 394, 395, -1, -1, 398, + -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, -1, -1, 414, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, + -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, + 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, + 449, -1, 451, 452, 453, -1, -1, 456, -1, 458, + -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, + -1, -1, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, + 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, + -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, + 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, + -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, + -1, -1, 531, 532, 533, -1, -1, -1, 537, -1, + -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, + -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, + -1, 560, 561, 562, 563, -1, -1, 566, 567, -1, + 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, + 579, 580, -1, -1, -1, 584, 585, 586, 587, -1, + 589, 590, -1, 592, 593, -1, 595, 596, -1, -1, + 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, + -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, + -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, + -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, + 639, -1, 5, 642, 7, 8, 9, 10, 11, 12, + -1, -1, 15, -1, -1, -1, 19, -1, -1, 22, + -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, + -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, + -1, -1, 45, 46, 47, -1, 49, -1, 51, 52, + -1, -1, 55, -1, -1, 58, 59, -1, 61, 62, + -1, 64, 65, -1, 67, 68, 69, 70, 71, 72, + -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, + 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, + -1, 94, 95, 96, 97, 98, -1, 100, -1, -1, + 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, + 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, + -1, -1, -1, -1, 127, 128, -1, -1, -1, 132, + 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, + 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, + -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, + 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, + 173, 174, 175, 176, 177, 178, -1, -1, 181, 182, + 183, 184, -1, -1, 187, 188, -1, 190, 191, 192, + -1, -1, 195, -1, -1, -1, 199, 200, -1, 202, + -1, 204, -1, 206, 207, 208, 209, 210, 211, 212, + -1, 214, -1, -1, 217, 218, 219, -1, 221, -1, + -1, -1, 225, 226, -1, -1, -1, 230, 231, 232, + 233, 234, -1, -1, -1, 238, 239, 240, -1, -1, + 243, -1, -1, -1, -1, 248, 249, -1, -1, -1, + 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, + 263, -1, -1, 266, 267, 268, -1, -1, 271, -1, + -1, 274, 275, -1, -1, -1, -1, -1, 281, 282, + -1, 284, -1, 286, -1, 288, 289, -1, -1, -1, + -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, -1, 318, 319, 320, 321, -1, + 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, + 333, 334, 335, -1, -1, 338, 339, -1, 341, -1, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, -1, -1, 357, -1, -1, 360, 361, 362, + 363, -1, -1, -1, 367, 368, -1, -1, -1, 372, + -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, + 383, 384, -1, -1, -1, -1, -1, -1, -1, -1, + 393, 394, 395, -1, -1, 398, -1, 400, -1, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, -1, + -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, + 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, + -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, + 443, 444, 445, 446, -1, 448, 449, -1, 451, 452, + 453, -1, -1, 456, -1, 458, -1, 460, 461, -1, + 463, 464, -1, 466, -1, 468, -1, -1, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + -1, 484, 485, -1, -1, -1, 489, 490, 491, 492, + -1, -1, -1, 496, -1, -1, -1, 500, -1, 502, + 503, 504, 505, 506, 507, -1, 509, 510, 511, 512, + 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, + -1, 524, -1, -1, 527, -1, -1, -1, 531, 532, + 533, -1, -1, -1, 537, -1, -1, 540, 541, -1, + 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, + 553, 554, -1, 556, 557, -1, -1, 560, 561, 562, + 563, -1, -1, 566, 567, -1, 569, 570, 571, 572, + -1, -1, -1, -1, -1, 578, 579, 580, -1, -1, + -1, 584, 585, 586, 587, -1, 589, 590, -1, 592, + 593, -1, 595, 596, -1, -1, 599, -1, -1, 602, + -1, 604, -1, 606, 607, -1, -1, -1, -1, -1, + -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, + 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, + -1, 634, 635, -1, 637, 638, 639, -1, 5, 642, + 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, + -1, -1, 19, -1, -1, 22, -1, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, + -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, + 47, -1, 49, -1, 51, 52, -1, -1, 55, -1, + -1, 58, 59, -1, 61, 62, -1, 64, 65, -1, + 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, + 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, + 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, + 97, 98, -1, 100, -1, -1, 103, -1, -1, 106, + -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, + 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, + 127, 128, -1, -1, -1, 132, 133, -1, 135, -1, + -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, + -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, + -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, + 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, + 177, 178, -1, -1, 181, 182, 183, 184, -1, -1, + 187, 188, -1, 190, 191, 192, -1, -1, 195, -1, + -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, + 207, 208, 209, 210, 211, 212, -1, 214, -1, -1, + 217, 218, 219, -1, 221, -1, -1, -1, 225, 226, + -1, -1, -1, 230, 231, 232, 233, 234, -1, -1, + -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, + -1, 248, 249, -1, -1, -1, 253, -1, 255, 256, + -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, + 267, 268, -1, -1, 271, -1, -1, 274, 275, -1, + -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, + -1, 288, 289, -1, -1, -1, -1, -1, -1, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + -1, 318, 319, 320, 321, -1, 323, 324, 325, -1, + -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, + -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, + 357, -1, -1, 360, 361, 362, 363, -1, -1, -1, + 367, 368, -1, -1, -1, 372, -1, 374, 375, 376, + -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, + -1, -1, -1, -1, -1, -1, 393, 394, 395, -1, + -1, 398, -1, 400, -1, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, -1, -1, 414, 415, 416, + -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, + 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, + 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, + -1, 448, 449, -1, 451, 452, 453, -1, -1, 456, + -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, + -1, 468, -1, -1, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, + -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, + -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, + 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, + -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, + 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, + 537, -1, -1, 540, 541, -1, 543, 544, 545, 546, + 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, + 557, -1, -1, 560, 561, 562, 563, -1, -1, 566, + 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, + -1, 578, 579, 580, -1, -1, -1, 584, 585, 586, + 587, -1, 589, 590, -1, 592, 593, -1, 595, 596, + -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, + 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, + 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, + 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, + 637, 638, 639, -1, 5, 642, 7, 8, 9, 10, + 11, 12, -1, -1, 15, -1, -1, -1, 19, -1, + -1, 22, -1, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, 34, -1, -1, -1, 38, -1, -1, + -1, 42, -1, -1, 45, 46, 47, -1, 49, -1, + 51, 52, -1, -1, 55, -1, -1, 58, 59, -1, + 61, 62, -1, 64, 65, -1, 67, 68, 69, 70, + 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, + -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, + 91, 92, -1, 94, 95, 96, 97, 98, -1, 100, + -1, -1, 103, -1, -1, 106, -1, 108, -1, -1, + 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, + -1, 122, -1, -1, -1, -1, 127, 128, -1, -1, + -1, 132, 133, -1, 135, -1, -1, -1, -1, 140, + -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, + 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, + -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, + -1, 172, 173, 174, 175, 176, 177, 178, -1, -1, + 181, 182, 183, 184, -1, -1, 187, 188, -1, 190, + 191, 192, -1, -1, 195, -1, -1, -1, 199, 200, + -1, 202, -1, 204, -1, 206, 207, 208, 209, 210, + 211, 212, -1, 214, -1, -1, 217, 218, 219, -1, + 221, -1, -1, -1, 225, 226, -1, -1, -1, 230, + 231, 232, 233, 234, -1, -1, -1, 238, 239, 240, + -1, -1, 243, -1, -1, -1, -1, 248, 249, -1, + -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, + -1, -1, 263, -1, -1, 266, 267, 268, -1, -1, + 271, -1, -1, 274, 275, -1, -1, -1, -1, -1, + 281, 282, -1, 284, -1, 286, -1, 288, 289, -1, + -1, -1, -1, -1, -1, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, -1, 318, 319, 320, + 321, -1, 323, 324, 325, -1, -1, -1, -1, 330, + 331, 332, 333, 334, 335, -1, -1, 338, 339, -1, + 341, -1, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, -1, -1, 357, -1, -1, 360, + 361, 362, 363, -1, -1, -1, 367, 368, -1, -1, + -1, 372, -1, 374, 375, 376, -1, 378, 379, 380, + 381, -1, 383, 384, -1, -1, -1, -1, -1, -1, + -1, -1, 393, 394, 395, -1, -1, 398, -1, 400, + -1, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, -1, -1, 414, 415, 416, -1, 418, -1, 420, + 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, + 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, + -1, 442, 443, 444, 445, 446, -1, 448, 449, -1, + 451, 452, 453, -1, -1, 456, -1, 458, -1, 460, + 461, -1, 463, 464, -1, 466, -1, 468, -1, -1, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, -1, 484, 485, -1, -1, -1, 489, 490, + 491, 492, -1, -1, -1, 496, -1, -1, -1, 500, + -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, + 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, + 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, + 531, 532, 533, -1, -1, -1, 537, -1, -1, 540, + 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, + 551, 552, 553, 554, -1, 556, 557, -1, -1, 560, + 561, 562, 563, -1, -1, 566, 567, -1, 569, 570, + 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, + -1, -1, -1, 584, 585, 586, 587, -1, 589, 590, + -1, 592, 593, -1, 595, 596, -1, -1, 599, -1, + -1, 602, -1, 604, -1, 606, 607, -1, -1, -1, + -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, + 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, + -1, -1, -1, 634, 635, -1, 637, 638, 639, -1, + 5, 642, 7, 8, 9, 10, 11, 12, -1, -1, + 15, -1, -1, -1, 19, -1, -1, 22, -1, 24, + 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, + -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, + 45, 46, 47, -1, 49, -1, 51, 52, -1, -1, + 55, -1, -1, 58, 59, -1, 61, 62, -1, 64, + 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, + 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, + 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, + 95, 96, 97, 98, -1, 100, -1, -1, 103, -1, + -1, 106, -1, 108, -1, -1, 111, -1, 113, -1, + -1, -1, 117, 118, 119, -1, -1, 122, -1, -1, + -1, -1, 127, 128, -1, -1, -1, -1, 133, -1, + 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, + 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, + 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, + 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, + 175, 176, 177, 178, -1, -1, 181, 182, 183, 184, + -1, -1, 187, 188, -1, 190, 191, 192, -1, -1, + 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, + -1, 206, 207, 208, 209, 210, 211, 212, -1, 214, + -1, -1, 217, 218, 219, -1, 221, -1, -1, -1, + 225, 226, -1, -1, -1, 230, 231, 232, 233, 234, + -1, -1, -1, 238, 239, 240, -1, -1, 243, -1, + -1, -1, -1, 248, 249, -1, -1, -1, 253, -1, + 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, + -1, 266, 267, 268, -1, -1, 271, -1, -1, 274, + 275, -1, -1, -1, -1, -1, 281, 282, -1, 284, + -1, 286, -1, 288, 289, -1, -1, -1, -1, -1, + -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, -1, 318, 319, 320, 321, -1, 323, 324, + 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, + 335, -1, -1, 338, 339, -1, 341, -1, 343, -1, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + -1, -1, 357, -1, -1, 360, 361, 362, 363, -1, + -1, -1, 367, 368, -1, -1, -1, 372, -1, 374, + 375, 376, -1, 378, 379, 380, 381, -1, 383, 384, + -1, -1, -1, -1, -1, -1, -1, -1, 393, 394, + 395, -1, -1, 398, -1, 400, -1, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, -1, -1, 414, + 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, + -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, + 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, + 445, 446, -1, 448, 449, -1, 451, 452, 453, -1, + -1, 456, -1, 458, -1, 460, 461, -1, 463, 464, + -1, 466, -1, 468, -1, -1, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, + 485, -1, -1, -1, 489, 490, 491, 492, -1, -1, + -1, 496, -1, -1, -1, 500, -1, 502, 503, 504, + 505, 506, 507, -1, 509, 510, 511, 512, 513, 514, + -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, + -1, -1, 527, -1, -1, -1, 531, 532, 533, -1, + -1, -1, 537, -1, -1, 540, 541, -1, 543, 544, + 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, + -1, 556, 557, -1, -1, 560, 561, 562, 563, -1, + -1, 566, 567, -1, 569, 570, 571, 572, -1, -1, + -1, -1, -1, 578, 579, 580, -1, -1, -1, 584, + 585, 586, 587, -1, 589, 590, -1, 592, 593, -1, + 595, 596, -1, -1, 599, -1, -1, 602, -1, 604, + -1, 606, 607, -1, -1, -1, -1, -1, -1, 614, + -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, + 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, + 635, -1, 637, 638, 639, -1, 5, 642, 7, 8, + 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, + 19, -1, -1, 22, -1, 24, 25, 26, 27, 28, + 29, 30, 31, 32, -1, 34, -1, -1, -1, 38, + -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, + 49, -1, 51, 52, -1, -1, 55, -1, -1, 58, + 59, -1, 61, 62, -1, 64, 65, -1, 67, 68, + 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, + 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, + 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, + -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, + -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, + 119, -1, -1, 122, -1, -1, -1, -1, 127, 128, + -1, -1, -1, -1, 133, -1, 135, -1, -1, -1, + -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, + -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, + -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, + 169, 170, -1, 172, 173, 174, 175, 176, 177, 178, + -1, -1, 181, 182, 183, 184, -1, -1, 187, 188, + -1, 190, 191, 192, -1, -1, 195, -1, -1, -1, + 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, + 209, 210, 211, 212, -1, 214, -1, -1, 217, 218, + 219, -1, 221, -1, -1, -1, 225, 226, -1, -1, + -1, 230, 231, 232, 233, 234, -1, -1, -1, 238, + 239, 240, -1, -1, 243, -1, -1, -1, -1, 248, + 249, -1, -1, -1, 253, -1, 255, 256, -1, 258, + 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, + -1, -1, 271, -1, -1, 274, 275, -1, -1, -1, + -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, + 289, -1, -1, -1, -1, -1, -1, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, + 319, 320, 321, -1, 323, 324, 325, -1, -1, -1, + -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, + 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, + -1, 360, 361, 362, 363, -1, -1, -1, 367, 368, + -1, -1, -1, 372, -1, 374, 375, 376, -1, 378, + 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 394, 395, -1, -1, 398, + -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, -1, -1, 414, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, + -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, + 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, + 449, -1, 451, 452, 453, -1, -1, 456, -1, 458, + -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, + -1, -1, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, + 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, + -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, + 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, + -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, + -1, -1, 531, 532, 533, -1, -1, -1, 537, -1, + -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, + -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, + -1, 560, 561, 562, 563, -1, 565, 566, 567, -1, + 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, + 579, 580, -1, -1, -1, 584, 585, 586, 587, -1, + 589, 590, -1, 592, 593, -1, 595, 596, -1, -1, + 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, + -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, + -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, + -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, + 639, -1, 5, 642, 7, 8, 9, 10, 11, 12, + -1, -1, 15, -1, -1, -1, 19, -1, -1, 22, + -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, + -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, + -1, -1, 45, 46, 47, -1, 49, -1, 51, 52, + -1, -1, 55, -1, -1, 58, 59, -1, 61, 62, + -1, 64, 65, -1, 67, 68, 69, 70, 71, 72, + -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, + 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, + -1, 94, 95, 96, 97, 98, -1, 100, -1, -1, + 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, + 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, + -1, -1, -1, -1, 127, 128, -1, -1, -1, 132, + 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, + 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, + -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, + 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, + 173, 174, 175, 176, 177, 178, -1, -1, 181, 182, + 183, 184, -1, -1, 187, 188, -1, 190, 191, 192, + -1, -1, 195, -1, -1, -1, 199, 200, -1, 202, + -1, 204, -1, 206, 207, 208, 209, 210, 211, 212, + -1, 214, -1, -1, 217, 218, 219, -1, 221, -1, + -1, -1, 225, 226, -1, -1, -1, 230, 231, 232, + 233, 234, -1, -1, -1, 238, 239, 240, -1, -1, + 243, -1, -1, -1, -1, 248, 249, -1, -1, -1, + 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, + 263, -1, -1, 266, 267, 268, -1, -1, 271, -1, + -1, 274, 275, -1, -1, -1, -1, -1, 281, 282, + -1, 284, -1, 286, -1, 288, 289, -1, -1, -1, + -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, -1, 318, 319, 320, 321, -1, + 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, + 333, 334, 335, -1, -1, 338, 339, -1, 341, -1, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, -1, -1, 357, -1, -1, 360, 361, 362, + 363, -1, -1, -1, 367, 368, -1, -1, -1, 372, + -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, + 383, 384, -1, -1, -1, -1, -1, -1, -1, -1, + 393, 394, 395, -1, -1, 398, -1, 400, -1, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, -1, + -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, + 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, + -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, + 443, 444, 445, 446, -1, 448, 449, -1, 451, 452, + 453, -1, -1, 456, -1, 458, -1, 460, 461, -1, + 463, 464, -1, 466, -1, 468, -1, -1, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + -1, 484, 485, -1, -1, -1, 489, 490, 491, 492, + -1, -1, -1, 496, -1, -1, -1, 500, -1, 502, + 503, 504, 505, 506, 507, -1, 509, 510, 511, 512, + 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, + -1, 524, -1, -1, 527, -1, -1, -1, 531, 532, + 533, -1, -1, -1, 537, -1, -1, 540, 541, -1, + 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, + 553, 554, -1, 556, 557, -1, -1, 560, 561, 562, + 563, -1, -1, 566, 567, -1, 569, 570, 571, 572, + -1, -1, -1, -1, -1, 578, 579, 580, -1, -1, + -1, 584, 585, 586, 587, -1, 589, 590, -1, 592, + 593, -1, 595, 596, -1, -1, 599, -1, -1, 602, + -1, 604, -1, 606, 607, -1, -1, -1, -1, -1, + -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, + 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, + -1, 634, 635, -1, 637, 638, 639, -1, 5, 642, + 7, 8, 9, 10, 11, 12, 13, -1, 15, -1, + -1, -1, 19, -1, -1, 22, -1, 24, 25, 26, + 27, 28, 29, 30, 31, 32, -1, 34, -1, -1, + -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, + 47, -1, 49, -1, 51, 52, -1, -1, 55, -1, + -1, 58, 59, -1, 61, 62, -1, 64, 65, -1, + 67, 68, 69, 70, 71, 72, -1, 74, 75, 76, + 77, 78, 79, 80, -1, 82, 83, 84, 85, 86, + 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, + 97, 98, -1, 100, -1, -1, 103, -1, -1, 106, + -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, + 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, + 127, 128, -1, -1, -1, -1, 133, -1, 135, -1, + -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, + -1, -1, -1, -1, 151, -1, -1, 154, 155, 156, + -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, + 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, + 177, 178, -1, -1, 181, 182, 183, 184, -1, -1, + 187, 188, -1, 190, 191, 192, -1, -1, 195, -1, + -1, -1, 199, 200, -1, 202, -1, 204, -1, 206, + 207, 208, 209, 210, 211, 212, -1, 214, -1, -1, + 217, 218, 219, -1, 221, -1, -1, -1, 225, 226, + -1, -1, -1, 230, 231, 232, 233, 234, -1, -1, + -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, + -1, 248, 249, -1, -1, -1, 253, -1, 255, 256, + -1, 258, 259, -1, -1, -1, 263, -1, -1, 266, + 267, 268, -1, -1, 271, -1, -1, 274, 275, -1, + -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, + -1, 288, 289, -1, -1, -1, -1, -1, -1, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + -1, 318, 319, 320, 321, -1, 323, 324, 325, -1, + -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, + -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, + 357, -1, -1, 360, 361, 362, 363, -1, -1, -1, + 367, 368, -1, -1, -1, 372, -1, 374, 375, 376, + -1, 378, 379, 380, 381, -1, 383, 384, -1, -1, + -1, -1, -1, -1, -1, -1, 393, 394, 395, -1, + -1, 398, -1, 400, -1, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, -1, -1, 414, 415, 416, + -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, + 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, + 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, + -1, 448, 449, -1, 451, 452, 453, -1, -1, 456, + -1, 458, -1, 460, 461, -1, 463, 464, -1, 466, + -1, 468, -1, -1, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, -1, 484, 485, -1, + -1, -1, 489, 490, 491, 492, -1, -1, -1, 496, + -1, -1, -1, 500, -1, 502, 503, 504, 505, 506, + 507, -1, 509, 510, 511, 512, 513, 514, -1, -1, + -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, + 527, -1, -1, -1, 531, 532, 533, -1, -1, -1, + 537, -1, -1, 540, 541, -1, 543, 544, 545, 546, + 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, + 557, -1, -1, 560, 561, 562, 563, -1, -1, 566, + 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, + -1, 578, 579, 580, -1, -1, -1, 584, 585, 586, + 587, -1, 589, 590, -1, 592, 593, -1, 595, 596, + -1, -1, 599, -1, -1, 602, -1, 604, -1, 606, + 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, + 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, + 627, -1, -1, -1, -1, -1, -1, 634, 635, -1, + 637, 638, 639, -1, 5, 642, 7, 8, 9, 10, + 11, 12, -1, -1, 15, -1, -1, -1, 19, -1, + -1, 22, -1, 24, 25, 26, 27, 28, 29, 30, + 31, 32, -1, 34, -1, -1, -1, 38, -1, -1, + -1, 42, -1, -1, 45, 46, 47, -1, 49, -1, + 51, 52, -1, -1, 55, -1, -1, 58, 59, -1, + 61, 62, -1, 64, 65, -1, 67, 68, 69, 70, + 71, 72, -1, 74, 75, 76, 77, 78, 79, 80, + -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, + 91, 92, -1, 94, 95, 96, 97, 98, -1, 100, + -1, -1, 103, -1, -1, 106, -1, 108, -1, -1, + 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, + -1, 122, -1, -1, -1, -1, 127, 128, -1, -1, + -1, 132, 133, -1, 135, -1, -1, -1, -1, 140, + -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, + 151, -1, -1, 154, 155, 156, -1, -1, -1, 160, + -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, + -1, 172, 173, 174, 175, 176, 177, 178, -1, -1, + 181, 182, 183, 184, -1, -1, 187, 188, -1, 190, + 191, 192, -1, -1, 195, -1, -1, -1, 199, 200, + -1, 202, -1, 204, -1, 206, 207, 208, 209, 210, + 211, 212, -1, 214, -1, -1, 217, 218, 219, -1, + 221, -1, -1, -1, 225, 226, -1, -1, -1, 230, + 231, 232, 233, 234, -1, -1, -1, 238, 239, 240, + -1, -1, 243, -1, -1, -1, -1, 248, 249, -1, + -1, -1, 253, -1, 255, 256, -1, 258, 259, -1, + -1, -1, 263, -1, -1, 266, 267, 268, -1, -1, + 271, -1, -1, 274, 275, -1, -1, -1, -1, -1, + 281, 282, -1, 284, -1, 286, -1, 288, 289, -1, + -1, -1, -1, -1, -1, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, -1, 318, 319, 320, + 321, -1, 323, 324, 325, -1, -1, -1, -1, 330, + 331, 332, 333, 334, 335, -1, -1, 338, 339, -1, + 341, -1, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, -1, -1, 357, -1, -1, 360, + 361, 362, 363, -1, -1, -1, 367, 368, -1, -1, + -1, 372, -1, 374, 375, 376, -1, 378, 379, 380, + 381, -1, 383, 384, -1, -1, -1, -1, -1, -1, + -1, -1, 393, 394, 395, -1, -1, 398, -1, 400, + -1, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, -1, -1, 414, 415, 416, -1, 418, -1, 420, + 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, + 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, + -1, 442, 443, 444, 445, 446, -1, 448, 449, -1, + 451, 452, 453, -1, -1, 456, -1, 458, -1, 460, + 461, -1, 463, 464, -1, 466, -1, 468, -1, -1, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, -1, 484, 485, -1, -1, -1, 489, 490, + 491, 492, -1, -1, -1, 496, -1, -1, -1, 500, + -1, 502, 503, 504, 505, 506, 507, -1, 509, 510, + 511, 512, 513, 514, -1, -1, -1, -1, -1, -1, + 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, + 531, 532, 533, -1, -1, -1, 537, -1, -1, 540, + 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, + 551, 552, 553, 554, -1, 556, 557, -1, -1, 560, + 561, 562, 563, -1, -1, 566, 567, -1, 569, 570, + 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, + -1, -1, -1, 584, 585, 586, 587, -1, 589, 590, + -1, 592, 593, -1, 595, 596, -1, -1, 599, -1, + -1, 602, -1, 604, -1, 606, 607, -1, -1, -1, + -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, + 621, 622, 623, 624, 625, 626, 627, -1, -1, -1, + -1, -1, -1, 634, 635, -1, 637, 638, 639, -1, + 5, 642, 7, 8, 9, 10, 11, 12, -1, -1, + 15, -1, -1, -1, 19, -1, -1, 22, -1, 24, + 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, + -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, + 45, 46, 47, -1, 49, -1, 51, 52, -1, -1, + 55, -1, -1, 58, 59, -1, 61, 62, -1, 64, + 65, -1, 67, 68, 69, 70, 71, 72, -1, 74, + 75, 76, 77, 78, 79, 80, -1, 82, 83, 84, + 85, 86, 87, 88, 89, -1, 91, 92, -1, 94, + 95, 96, 97, 98, -1, 100, -1, -1, 103, -1, + -1, 106, -1, 108, -1, -1, 111, -1, 113, -1, + -1, -1, 117, 118, 119, -1, -1, 122, -1, -1, + -1, -1, 127, 128, -1, -1, -1, -1, 133, -1, + 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, + 145, 146, -1, -1, -1, -1, 151, -1, -1, 154, + 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, + 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, + 175, 176, 177, 178, -1, -1, 181, 182, 183, 184, + -1, -1, 187, 188, -1, 190, 191, 192, -1, -1, + 195, -1, -1, -1, 199, 200, -1, 202, -1, 204, + -1, 206, 207, 208, 209, 210, 211, 212, -1, 214, + -1, -1, 217, 218, 219, -1, 221, -1, -1, -1, + 225, 226, -1, -1, -1, 230, 231, 232, 233, 234, + -1, -1, -1, 238, 239, 240, -1, -1, 243, -1, + -1, -1, -1, 248, 249, -1, -1, -1, 253, -1, + 255, 256, -1, 258, 259, -1, -1, -1, 263, -1, + -1, 266, 267, 268, -1, -1, 271, -1, -1, 274, + 275, -1, -1, -1, -1, -1, 281, 282, -1, 284, + -1, 286, -1, 288, 289, -1, -1, -1, -1, -1, + -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, -1, 318, 319, 320, 321, -1, 323, 324, + 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, + 335, -1, -1, 338, 339, -1, 341, -1, 343, -1, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + -1, -1, 357, -1, -1, 360, 361, 362, 363, -1, + -1, -1, 367, 368, -1, -1, -1, 372, -1, 374, + 375, 376, -1, 378, 379, 380, 381, -1, 383, 384, + -1, -1, -1, -1, -1, -1, -1, -1, 393, 394, + 395, -1, -1, 398, -1, 400, -1, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, -1, -1, 414, + 415, 416, 417, 418, -1, 420, 421, 422, 423, 424, + -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, + 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, + 445, 446, -1, 448, 449, -1, 451, 452, 453, -1, + -1, 456, -1, 458, -1, 460, 461, -1, 463, 464, + -1, 466, -1, 468, -1, -1, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, -1, 484, + 485, -1, -1, -1, 489, 490, 491, 492, -1, -1, + -1, 496, -1, -1, -1, 500, -1, 502, 503, 504, + 505, 506, 507, -1, 509, 510, 511, 512, 513, 514, + -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, + -1, -1, 527, -1, -1, -1, 531, 532, 533, -1, + -1, -1, 537, -1, -1, 540, 541, -1, 543, 544, + 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, + -1, 556, 557, -1, -1, 560, 561, 562, 563, -1, + -1, 566, 567, -1, 569, 570, 571, 572, -1, -1, + -1, -1, -1, 578, 579, 580, -1, -1, -1, 584, + 585, 586, 587, -1, 589, 590, -1, 592, 593, -1, + 595, 596, -1, -1, 599, -1, -1, 602, -1, 604, + -1, 606, 607, -1, -1, -1, -1, -1, -1, 614, + -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, + 625, 626, 627, -1, -1, -1, -1, -1, -1, 634, + 635, -1, 637, 638, 639, -1, 5, 642, 7, 8, + 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, + 19, -1, -1, 22, -1, 24, 25, 26, 27, 28, + 29, 30, 31, 32, -1, 34, -1, -1, -1, 38, + -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, + 49, -1, 51, 52, -1, -1, 55, -1, -1, 58, + 59, -1, 61, 62, -1, 64, 65, -1, 67, 68, + 69, 70, 71, 72, -1, 74, 75, 76, 77, 78, + 79, 80, -1, 82, 83, 84, 85, 86, 87, 88, + 89, -1, 91, 92, -1, 94, 95, 96, 97, 98, + -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, + -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, + 119, -1, -1, 122, -1, -1, -1, -1, 127, 128, + -1, -1, -1, -1, 133, -1, 135, -1, -1, -1, + -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, + -1, -1, 151, -1, -1, 154, 155, 156, -1, -1, + -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, + 169, 170, -1, 172, 173, 174, 175, 176, 177, 178, + -1, -1, 181, 182, 183, 184, -1, -1, 187, 188, + -1, 190, 191, 192, -1, -1, 195, -1, -1, -1, + 199, 200, -1, 202, -1, 204, -1, 206, 207, 208, + 209, 210, 211, 212, -1, 214, -1, -1, 217, 218, + 219, -1, 221, -1, -1, -1, 225, 226, -1, -1, + -1, 230, 231, 232, 233, 234, -1, -1, -1, 238, + 239, 240, -1, -1, 243, -1, -1, -1, -1, 248, + 249, -1, -1, -1, 253, -1, 255, 256, -1, 258, + 259, -1, -1, -1, 263, -1, -1, 266, 267, 268, + -1, -1, 271, -1, -1, 274, 275, -1, -1, -1, + -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, + 289, -1, -1, -1, -1, -1, -1, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, + 319, 320, 321, -1, 323, 324, 325, -1, -1, -1, + -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, + 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, + -1, 360, 361, 362, 363, -1, -1, -1, 367, 368, + -1, -1, -1, 372, -1, 374, 375, 376, -1, 378, + 379, 380, 381, -1, 383, 384, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 394, 395, -1, -1, 398, + -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, -1, -1, 414, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, + -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, + 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, + 449, -1, 451, 452, 453, -1, -1, 456, -1, 458, + -1, 460, 461, -1, 463, 464, -1, 466, -1, 468, + -1, -1, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, -1, 484, 485, -1, -1, -1, + 489, 490, 491, 492, -1, -1, -1, 496, -1, -1, + -1, 500, -1, 502, 503, 504, 505, 506, 507, -1, + 509, 510, 511, 512, 513, 514, -1, -1, -1, -1, + -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, + -1, -1, 531, 532, 533, -1, -1, -1, 537, -1, + -1, 540, 541, -1, 543, 544, 545, 546, 547, 548, + -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, + -1, 560, 561, 562, 563, -1, -1, 566, 567, -1, + 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, + 579, 580, -1, -1, -1, 584, 585, 586, 587, -1, + 589, 590, -1, 592, 593, -1, 595, 596, -1, -1, + 599, -1, -1, 602, -1, 604, -1, 606, 607, -1, + -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, + -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, + -1, -1, -1, -1, -1, 634, 635, -1, 637, 638, + 639, -1, 5, 642, 7, 8, 9, 10, 11, 12, + -1, -1, 15, -1, -1, -1, 19, -1, -1, 22, + -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, + -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, + -1, -1, 45, 46, 47, -1, 49, -1, 51, 52, + -1, -1, 55, -1, -1, 58, 59, -1, 61, 62, + -1, 64, 65, -1, 67, 68, 69, 70, 71, 72, + -1, 74, 75, 76, 77, 78, 79, 80, -1, 82, + 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, + -1, 94, 95, 96, 97, 98, -1, 100, -1, -1, + 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, + 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, + -1, -1, -1, -1, 127, 128, -1, -1, -1, -1, + 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, + 143, 144, 145, 146, -1, -1, -1, -1, 151, -1, + -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, + 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, + 173, 174, 175, 176, 177, 178, -1, -1, 181, 182, + 183, 184, -1, -1, 187, 188, -1, 190, 191, 192, + -1, -1, 195, -1, -1, -1, 199, 200, -1, 202, + -1, 204, -1, 206, 207, 208, 209, 210, 211, 212, + -1, 214, -1, -1, 217, 218, 219, -1, 221, -1, + -1, -1, 225, 226, -1, -1, -1, 230, 231, 232, + 233, 234, -1, -1, -1, 238, 239, 240, -1, -1, + 243, -1, -1, -1, -1, 248, 249, -1, -1, -1, + 253, -1, 255, 256, -1, 258, 259, -1, -1, -1, + 263, -1, -1, 266, 267, 268, -1, -1, 271, -1, + -1, 274, 275, -1, -1, -1, -1, -1, 281, 282, + -1, 284, -1, 286, -1, 288, 289, -1, -1, -1, + -1, -1, -1, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, -1, 318, 319, 320, 321, -1, + 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, + 333, 334, 335, -1, -1, 338, 339, -1, 341, -1, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, -1, -1, 357, -1, -1, 360, 361, 362, + 363, -1, -1, -1, 367, 368, -1, -1, -1, 372, + -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, + 383, 384, -1, -1, -1, -1, -1, -1, -1, -1, + 393, 394, 395, -1, -1, 398, -1, 400, -1, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, -1, + -1, 414, 415, 416, -1, 418, -1, 420, 421, 422, + 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, + -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, + 443, 444, 445, 446, -1, 448, 449, -1, 451, 452, + 453, -1, -1, 456, -1, 458, -1, 460, 461, -1, + 463, 464, -1, 466, -1, 468, -1, -1, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + -1, 484, 485, -1, -1, -1, 489, 490, 491, 492, + -1, -1, -1, 496, -1, -1, -1, 500, -1, 502, + 503, 504, 505, 506, 507, -1, 509, 510, 511, 512, + 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, + -1, 524, -1, -1, 527, -1, -1, -1, 531, 532, + 533, -1, -1, -1, 537, -1, -1, 540, 541, -1, + 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, + 553, 554, -1, 556, 557, -1, -1, 560, 561, 562, + 563, -1, -1, 566, 567, -1, 569, 570, 571, 572, + -1, -1, -1, -1, -1, 578, 579, 580, -1, -1, + -1, 584, 585, 586, 587, -1, 589, 590, -1, 592, + 593, -1, 595, 596, -1, -1, 599, -1, -1, 602, + -1, 604, -1, 606, 607, -1, -1, -1, -1, -1, + -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, + 623, 624, 625, 626, 627, -1, -1, -1, -1, -1, + -1, 634, 635, -1, 637, 638, 639, -1, 5, 642, + 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, + -1, -1, 19, -1, -1, -1, -1, 24, 25, 26, + 27, 28, 29, 30, 31, -1, -1, 34, -1, -1, + -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, + 47, -1, 49, -1, -1, -1, -1, -1, 55, 56, + -1, 58, 59, -1, 61, -1, -1, -1, -1, -1, + 67, 68, 69, 70, 71, 72, -1, 74, 75, -1, + -1, -1, -1, -1, -1, 82, -1, 84, -1, 86, + 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, + -1, 98, -1, 100, -1, -1, 103, -1, -1, 106, + -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, + 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, + 127, -1, -1, -1, -1, -1, 133, -1, 135, -1, + -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, + -1, -1, -1, -1, -1, -1, -1, 154, 155, 156, + -1, 158, 159, 160, -1, 162, 163, -1, 165, 166, + 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, + -1, -1, -1, -1, 181, 182, 183, 184, -1, -1, + 187, 188, 189, 190, 191, 192, -1, -1, -1, -1, + -1, -1, -1, 200, -1, 202, -1, 204, -1, 206, + 207, 208, 209, 210, -1, 212, -1, 214, -1, -1, + -1, 218, 219, -1, -1, -1, -1, -1, -1, 226, + -1, -1, -1, 230, 231, 232, 233, 234, 235, -1, + -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, + -1, 248, -1, -1, -1, -1, 253, -1, 255, 256, + -1, 258, 259, 260, -1, -1, 263, -1, -1, -1, + 267, 268, -1, -1, 271, 272, -1, 274, 275, -1, + -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, + -1, 288, 289, -1, -1, -1, -1, 294, -1, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + -1, 318, 319, 320, 321, -1, 323, 324, 325, -1, + -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, + -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, + 357, -1, -1, 360, 361, 362, 363, -1, -1, -1, + -1, 368, -1, -1, -1, 372, -1, 374, 375, 376, + -1, 378, 379, 380, 381, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 394, 395, -1, + -1, -1, -1, 400, -1, 402, 403, 404, 405, 406, + 407, 408, 409, 410, -1, -1, -1, -1, 415, 416, + -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, + 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, + 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, + -1, 448, -1, -1, 451, -1, 453, 454, -1, 456, + -1, -1, -1, 460, -1, -1, 463, 464, -1, 466, + 467, 468, -1, -1, 471, -1, 473, 474, 475, 476, + 477, 478, 479, -1, 481, 482, -1, 484, -1, -1, + -1, -1, 489, 490, 491, -1, -1, -1, -1, 496, + -1, -1, -1, -1, -1, -1, 503, -1, -1, 506, + 507, -1, 509, -1, 511, -1, 513, 514, -1, -1, + -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, + 527, -1, -1, -1, 531, -1, 533, -1, -1, -1, + 537, -1, -1, -1, 541, -1, 543, 544, 545, 546, + 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, + 557, -1, -1, 560, 561, 562, 563, -1, -1, 566, + 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, + -1, 578, 579, 580, -1, -1, -1, -1, 585, 586, + 587, -1, 589, 590, -1, 592, 593, -1, -1, -1, + -1, -1, 599, -1, -1, 602, -1, -1, -1, 606, + 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, + 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, + 627, -1, -1, 630, -1, -1, -1, 634, -1, -1, + 637, -1, 639, -1, 5, 642, 7, 8, 9, 10, + 11, 12, -1, -1, 15, -1, -1, -1, 19, -1, + -1, -1, -1, 24, 25, 26, 27, 28, 29, 30, + 31, -1, -1, 34, -1, -1, -1, 38, -1, -1, + -1, 42, -1, -1, 45, 46, 47, -1, 49, -1, + -1, -1, -1, -1, 55, 56, -1, 58, 59, -1, + 61, -1, -1, -1, -1, -1, 67, 68, 69, 70, + 71, 72, -1, 74, 75, -1, -1, -1, -1, -1, + -1, 82, -1, 84, -1, 86, 87, 88, 89, -1, + 91, 92, -1, 94, 95, 96, -1, 98, -1, 100, + -1, -1, 103, -1, -1, 106, -1, 108, -1, -1, + 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, + -1, 122, -1, -1, -1, -1, 127, -1, -1, -1, + -1, -1, 133, -1, 135, -1, -1, -1, -1, 140, + -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, + -1, -1, -1, 154, 155, 156, -1, 158, -1, 160, + -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, + -1, 172, 173, 174, 175, 176, -1, -1, -1, -1, + 181, 182, 183, 184, -1, -1, 187, 188, 189, 190, + 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, + -1, 202, -1, 204, -1, 206, 207, 208, 209, 210, + -1, 212, -1, 214, -1, -1, -1, 218, 219, -1, + -1, -1, -1, -1, -1, 226, -1, -1, -1, 230, + 231, 232, 233, 234, 235, -1, -1, 238, 239, 240, + -1, -1, 243, -1, -1, -1, -1, 248, -1, -1, + -1, -1, 253, -1, 255, 256, -1, 258, 259, 260, + -1, -1, 263, -1, -1, -1, 267, 268, -1, -1, + 271, 272, -1, 274, 275, -1, -1, -1, -1, -1, + 281, 282, -1, 284, -1, 286, -1, 288, 289, -1, + -1, -1, -1, 294, -1, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, -1, 318, 319, 320, + 321, -1, 323, 324, 325, -1, -1, -1, -1, 330, + 331, 332, 333, 334, 335, -1, -1, 338, 339, -1, + 341, -1, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, -1, -1, 357, -1, -1, 360, + 361, 362, 363, -1, -1, -1, -1, 368, -1, -1, + -1, 372, -1, 374, 375, 376, -1, 378, 379, 380, + 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 394, 395, -1, -1, -1, -1, 400, + -1, 402, 403, 404, 405, 406, 407, 408, 409, 410, + -1, -1, -1, -1, 415, 416, -1, 418, -1, 420, + 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, + 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, + -1, 442, 443, 444, 445, 446, -1, 448, -1, -1, + 451, -1, 453, 454, -1, 456, -1, -1, -1, 460, + -1, -1, 463, 464, -1, 466, 467, 468, -1, -1, + 471, -1, 473, 474, 475, 476, 477, 478, 479, -1, + 481, 482, -1, 484, -1, -1, -1, -1, 489, 490, + 491, -1, -1, -1, -1, 496, -1, -1, -1, -1, + -1, -1, 503, -1, -1, 506, 507, -1, 509, -1, + 511, -1, 513, 514, -1, -1, -1, -1, -1, -1, + 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, + 531, -1, 533, -1, -1, -1, 537, -1, -1, -1, + 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, + 551, 552, 553, 554, -1, 556, 557, -1, -1, 560, + 561, 562, 563, -1, -1, 566, 567, -1, 569, 570, + 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, + -1, -1, -1, -1, 585, 586, 587, -1, 589, 590, + -1, 592, 593, -1, -1, -1, -1, -1, 599, -1, + -1, 602, -1, -1, -1, 606, 607, -1, -1, -1, + -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, + 621, 622, 623, 624, 625, 626, 627, 628, -1, 630, + -1, -1, -1, 634, -1, -1, 637, -1, 639, -1, + 5, 642, 7, 8, 9, 10, 11, 12, -1, -1, + 15, -1, -1, -1, 19, -1, -1, -1, -1, 24, + 25, 26, 27, 28, 29, 30, 31, -1, -1, 34, + -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, + 45, 46, 47, -1, 49, -1, -1, -1, -1, -1, + 55, 56, -1, 58, 59, -1, 61, -1, -1, -1, + -1, -1, 67, 68, 69, 70, 71, 72, -1, 74, + 75, -1, -1, -1, -1, -1, -1, 82, -1, 84, + -1, 86, 87, 88, 89, -1, 91, 92, -1, 94, + 95, 96, -1, 98, -1, 100, -1, -1, 103, -1, + -1, 106, -1, 108, -1, -1, 111, -1, 113, -1, + -1, -1, 117, 118, 119, -1, -1, 122, -1, -1, + -1, -1, 127, -1, -1, -1, -1, -1, 133, -1, + 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, + 145, 146, -1, -1, -1, -1, -1, -1, -1, 154, + 155, 156, -1, 158, -1, 160, -1, 162, 163, -1, + 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, + 175, 176, -1, -1, -1, -1, 181, 182, 183, 184, + -1, -1, 187, 188, 189, 190, 191, 192, -1, -1, + -1, -1, -1, -1, -1, 200, -1, 202, -1, 204, + -1, 206, 207, 208, 209, 210, -1, 212, -1, 214, + -1, -1, -1, 218, 219, -1, -1, -1, -1, -1, + -1, 226, -1, -1, -1, 230, 231, 232, 233, 234, + 235, -1, -1, 238, 239, 240, -1, -1, 243, -1, + -1, -1, -1, 248, -1, -1, -1, -1, 253, -1, + 255, 256, -1, 258, 259, 260, -1, -1, 263, -1, + -1, -1, 267, 268, -1, -1, 271, 272, -1, 274, + 275, -1, -1, -1, -1, -1, 281, 282, -1, 284, + -1, 286, -1, 288, 289, -1, -1, -1, -1, 294, + -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, -1, 318, 319, 320, 321, -1, 323, 324, + 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, + 335, -1, -1, 338, 339, -1, 341, -1, 343, -1, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + -1, -1, 357, -1, -1, 360, 361, 362, 363, -1, + -1, -1, -1, 368, -1, -1, -1, 372, -1, 374, + 375, 376, -1, 378, 379, 380, 381, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 394, + 395, -1, -1, -1, -1, 400, -1, 402, 403, 404, + 405, 406, 407, 408, 409, 410, -1, -1, -1, -1, + 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, + -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, + 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, + 445, 446, -1, 448, -1, -1, 451, -1, 453, 454, + -1, 456, -1, -1, -1, 460, -1, -1, 463, 464, + -1, 466, 467, 468, -1, -1, 471, -1, 473, 474, + 475, 476, 477, 478, 479, -1, 481, 482, -1, 484, + -1, -1, -1, -1, 489, 490, 491, -1, -1, -1, + -1, 496, -1, -1, -1, -1, -1, -1, 503, -1, + -1, 506, 507, -1, 509, -1, 511, -1, 513, 514, + -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, + -1, -1, 527, -1, -1, -1, 531, -1, 533, -1, + -1, -1, 537, -1, -1, -1, 541, -1, 543, 544, + 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, + -1, 556, 557, -1, -1, 560, 561, 562, 563, -1, + -1, 566, 567, -1, 569, 570, 571, 572, -1, -1, + -1, -1, -1, 578, 579, 580, -1, -1, -1, -1, + 585, 586, 587, -1, 589, 590, -1, 592, 593, -1, + -1, -1, -1, -1, 599, -1, -1, 602, -1, -1, + -1, 606, 607, -1, -1, -1, -1, -1, -1, 614, + -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, + 625, 626, 627, 628, -1, 630, -1, -1, -1, 634, + -1, -1, 637, -1, 639, -1, 5, 642, 7, 8, + 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, + 19, -1, -1, -1, -1, 24, 25, 26, 27, 28, + 29, 30, 31, -1, -1, 34, -1, -1, -1, 38, + -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, + 49, -1, -1, -1, -1, -1, 55, 56, -1, 58, + 59, -1, 61, -1, -1, -1, -1, -1, 67, 68, + 69, 70, 71, 72, -1, 74, 75, -1, -1, -1, + -1, -1, -1, 82, -1, 84, -1, 86, 87, 88, + 89, -1, 91, 92, -1, 94, 95, 96, -1, 98, + -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, + -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, + 119, -1, -1, 122, -1, -1, -1, -1, 127, -1, + -1, -1, -1, -1, 133, -1, 135, -1, -1, -1, + -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, + -1, -1, -1, -1, -1, 154, 155, 156, -1, -1, + -1, 160, -1, 162, 163, -1, 165, 166, 167, -1, + 169, 170, -1, 172, 173, 174, 175, 176, -1, -1, + -1, -1, 181, 182, 183, 184, -1, -1, 187, 188, + 189, 190, 191, 192, -1, -1, -1, -1, -1, -1, + -1, 200, -1, 202, -1, 204, -1, 206, 207, 208, + 209, 210, -1, 212, -1, 214, -1, -1, -1, 218, + 219, -1, -1, -1, -1, -1, -1, 226, -1, -1, + -1, 230, 231, 232, 233, 234, 235, -1, -1, 238, + 239, 240, -1, -1, 243, -1, -1, -1, -1, 248, + -1, -1, -1, -1, 253, -1, 255, 256, -1, 258, + 259, 260, -1, -1, 263, -1, -1, -1, 267, 268, + -1, -1, 271, 272, -1, 274, 275, -1, -1, -1, + -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, + 289, -1, -1, -1, -1, 294, -1, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, + 319, 320, 321, -1, 323, 324, 325, -1, -1, -1, + -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, + 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, + -1, 360, 361, 362, 363, -1, -1, -1, -1, 368, + -1, -1, -1, 372, -1, 374, 375, 376, -1, 378, + 379, 380, 381, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 394, 395, -1, -1, -1, + -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, + 409, 410, -1, -1, -1, -1, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, + -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, + 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, + -1, -1, 451, -1, 453, 454, -1, 456, -1, -1, + -1, 460, -1, -1, 463, 464, -1, 466, 467, 468, + -1, -1, 471, -1, 473, 474, 475, 476, 477, 478, + 479, -1, 481, 482, -1, 484, -1, -1, -1, -1, + 489, 490, 491, -1, -1, -1, -1, 496, -1, -1, + -1, -1, -1, -1, 503, -1, -1, 506, 507, -1, + 509, -1, 511, -1, 513, 514, -1, -1, -1, -1, + -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, + -1, -1, 531, -1, 533, -1, -1, -1, 537, -1, + -1, -1, 541, -1, 543, 544, 545, 546, 547, 548, + -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, + -1, 560, 561, 562, 563, -1, -1, 566, 567, -1, + 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, + 579, 580, -1, -1, -1, -1, 585, 586, 587, -1, + 589, 590, -1, 592, 593, -1, -1, -1, -1, -1, + 599, -1, -1, 602, -1, -1, -1, 606, 607, -1, + -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, + -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, + -1, 630, -1, -1, -1, 634, -1, -1, 637, -1, + 639, -1, 5, 642, 7, 8, 9, 10, 11, 12, + -1, -1, 15, -1, -1, -1, 19, -1, -1, -1, + -1, 24, 25, 26, 27, 28, 29, 30, 31, -1, + -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, + -1, -1, 45, 46, 47, -1, 49, -1, -1, -1, + -1, -1, 55, 56, -1, 58, 59, -1, 61, -1, + -1, -1, -1, -1, 67, 68, 69, 70, 71, 72, + -1, 74, 75, -1, -1, -1, -1, -1, -1, 82, + -1, 84, -1, 86, 87, 88, 89, -1, 91, 92, + -1, 94, 95, 96, -1, 98, -1, 100, -1, -1, + 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, + 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, + -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, + 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, + 143, 144, 145, 146, -1, -1, -1, -1, -1, -1, + -1, 154, 155, 156, -1, -1, -1, 160, -1, 162, + 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, + 173, 174, 175, 176, -1, -1, -1, -1, 181, 182, + 183, 184, -1, -1, 187, 188, 189, 190, 191, 192, + -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, + -1, 204, -1, 206, 207, 208, 209, 210, -1, 212, + -1, 214, -1, -1, -1, 218, 219, -1, -1, -1, + -1, -1, -1, 226, -1, -1, -1, 230, 231, 232, + 233, 234, 235, -1, -1, 238, 239, 240, -1, -1, + 243, -1, -1, -1, -1, 248, -1, -1, -1, -1, + 253, -1, 255, 256, -1, 258, 259, 260, -1, -1, + 263, -1, -1, -1, 267, 268, -1, -1, 271, 272, + -1, 274, 275, -1, -1, -1, -1, -1, 281, 282, + -1, 284, -1, 286, -1, 288, 289, -1, -1, -1, + -1, 294, -1, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, -1, 318, 319, 320, 321, -1, + 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, + 333, 334, 335, -1, -1, 338, 339, -1, 341, -1, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, -1, -1, 357, -1, -1, 360, 361, 362, + 363, -1, -1, -1, -1, 368, -1, -1, -1, 372, + -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 394, 395, -1, -1, -1, -1, 400, -1, - 402, 403, 404, 405, 406, 407, 408, 409, 410, -1, - -1, -1, -1, 415, 416, -1, 418, -1, 420, 421, - 422, 423, 424, -1, 426, 427, 428, -1, -1, 431, - -1, -1, -1, 435, 436, 437, 438, 439, -1, -1, - 442, 443, 444, 445, 446, -1, 448, -1, -1, 451, - -1, 453, 454, -1, 456, -1, -1, -1, 460, -1, - -1, 463, 464, -1, 466, 467, 468, -1, -1, 471, - -1, 473, 474, 475, 476, 477, 478, 479, -1, 481, - 482, -1, 484, -1, -1, -1, -1, 489, 490, 491, - -1, -1, -1, -1, 496, -1, -1, -1, -1, -1, - -1, 503, -1, -1, 506, 507, -1, 509, -1, 511, - -1, 513, 514, -1, -1, -1, -1, -1, -1, 521, - 522, -1, 524, -1, -1, 527, -1, -1, -1, 531, - -1, 533, -1, -1, -1, 537, -1, -1, -1, 541, - -1, 543, 544, 545, 546, 547, 548, -1, -1, 551, - 552, 553, 554, -1, 556, 557, -1, -1, 560, 561, - 562, 563, -1, -1, 566, 567, -1, 569, 570, 571, - 572, -1, -1, -1, -1, -1, 578, 579, 580, -1, - -1, -1, -1, 585, 586, 587, -1, 589, 590, -1, - 592, 593, -1, -1, -1, -1, -1, 599, -1, -1, - 602, -1, -1, -1, 606, 607, -1, -1, -1, -1, - -1, -1, 614, -1, -1, 617, -1, -1, -1, 621, - 622, 623, 624, 625, 626, 627, -1, -1, 630, -1, - -1, -1, 634, -1, -1, 637, -1, 639, -1, 5, - 642, 7, 8, 9, 10, 11, 12, -1, -1, 15, - -1, -1, -1, 19, -1, -1, -1, -1, 24, 25, - 26, 27, 28, 29, 30, 31, -1, -1, 34, -1, - -1, -1, 38, -1, -1, -1, 42, -1, -1, 45, - 46, 47, -1, 49, -1, -1, -1, -1, -1, 55, - 56, -1, 58, 59, -1, 61, -1, -1, -1, -1, - -1, 67, 68, 69, 70, 71, 72, -1, 74, 75, - -1, -1, -1, -1, -1, -1, 82, -1, 84, -1, - 86, 87, 88, 89, -1, 91, 92, -1, 94, 95, - 96, -1, 98, -1, 100, -1, -1, 103, -1, -1, - 106, -1, 108, -1, -1, 111, -1, 113, -1, -1, - -1, 117, 118, 119, -1, -1, 122, -1, -1, -1, - -1, 127, -1, -1, -1, -1, -1, 133, -1, 135, - -1, -1, -1, -1, 140, -1, 142, 143, 144, 145, - 146, -1, -1, -1, -1, -1, -1, -1, 154, 155, - 156, -1, -1, -1, 160, -1, -1, 163, -1, 165, - 166, 167, -1, 169, 170, -1, 172, 173, 174, 175, - 176, -1, -1, -1, -1, 181, 182, 183, 184, -1, - -1, 187, 188, 189, 190, 191, 192, -1, -1, -1, - -1, -1, -1, -1, 200, -1, 202, -1, 204, -1, - 206, 207, 208, 209, 210, -1, 212, -1, 214, -1, - -1, -1, 218, 219, -1, -1, -1, -1, -1, -1, - 226, -1, -1, -1, 230, 231, 232, 233, 234, 235, - -1, -1, 238, 239, 240, -1, -1, 243, -1, -1, - -1, -1, 248, -1, -1, -1, -1, 253, -1, 255, - 256, -1, 258, 259, 260, -1, -1, 263, -1, -1, - -1, 267, 268, -1, -1, 271, 272, -1, 274, 275, - -1, -1, -1, -1, -1, 281, 282, -1, 284, -1, - 286, -1, 288, 289, -1, -1, -1, -1, 294, -1, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, - 316, -1, 318, 319, 320, 321, -1, 323, 324, 325, - -1, -1, -1, -1, 330, 331, 332, 333, 334, 335, - -1, -1, 338, 339, -1, 341, -1, 343, -1, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 354, -1, - -1, 357, -1, -1, 360, 361, 362, 363, -1, -1, - -1, -1, 368, -1, -1, -1, 372, -1, 374, 375, - 376, -1, 378, 379, 380, 381, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 394, 395, - -1, -1, -1, -1, 400, -1, 402, 403, 404, 405, - 406, 407, 408, 409, 410, -1, -1, -1, -1, 415, - 416, -1, 418, -1, 420, 421, 422, 423, 424, -1, - 426, 427, 428, -1, -1, 431, -1, -1, -1, 435, - 436, 437, 438, 439, -1, -1, 442, 443, 444, 445, - 446, -1, 448, -1, -1, 451, -1, 453, 454, -1, - 456, -1, -1, -1, 460, -1, -1, 463, 464, -1, - 466, 467, 468, -1, -1, 471, -1, 473, 474, 475, - 476, 477, 478, 479, -1, 481, 482, -1, 484, -1, - -1, -1, -1, 489, 490, 491, -1, -1, -1, -1, - 496, -1, -1, -1, -1, -1, -1, 503, -1, -1, - 506, 507, -1, 509, -1, 511, -1, 513, 514, -1, - -1, -1, -1, -1, -1, 521, 522, -1, 524, -1, - -1, 527, -1, -1, -1, 531, -1, 533, -1, -1, - -1, 537, -1, -1, -1, 541, -1, 543, 544, 545, - 546, 547, 548, -1, -1, 551, 552, 553, 554, -1, - 556, 557, -1, -1, 560, 561, 562, 563, -1, -1, - 566, 567, -1, 569, 570, 571, 572, -1, -1, -1, - -1, -1, 578, 579, 580, -1, -1, -1, -1, 585, - 586, 587, -1, 589, 590, -1, 592, 593, -1, -1, - -1, -1, -1, 599, -1, -1, 602, -1, -1, -1, - 606, 607, -1, -1, -1, -1, -1, -1, 614, -1, - -1, 617, -1, -1, -1, 621, 622, 623, 624, 625, - 626, 627, -1, -1, 630, -1, -1, -1, 634, -1, - -1, 637, -1, 639, -1, 5, 642, 7, 8, 9, - 10, 11, 12, -1, -1, 15, -1, -1, -1, 19, - -1, -1, -1, -1, 24, 25, 26, 27, 28, 29, - 30, 31, -1, -1, 34, -1, -1, -1, 38, -1, - -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, - -1, -1, -1, -1, -1, 55, 56, -1, 58, 59, - -1, 61, -1, -1, -1, -1, -1, 67, 68, 69, - 70, 71, 72, -1, 74, 75, -1, -1, -1, -1, - -1, -1, 82, -1, 84, -1, 86, 87, 88, 89, - -1, 91, 92, -1, 94, 95, 96, -1, 98, -1, - 100, -1, -1, 103, -1, -1, 106, -1, 108, -1, - -1, 111, -1, 113, -1, -1, -1, 117, 118, 119, - -1, -1, 122, -1, -1, -1, -1, 127, -1, -1, - -1, -1, -1, 133, -1, 135, -1, -1, -1, -1, - 140, -1, 142, 143, 144, 145, 146, -1, -1, -1, - -1, -1, -1, -1, 154, 155, 156, -1, -1, -1, - 160, -1, -1, 163, -1, 165, 166, 167, -1, 169, - 170, -1, 172, 173, 174, 175, 176, -1, -1, -1, - -1, 181, 182, 183, 184, -1, -1, 187, 188, 189, - 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, - 200, -1, 202, -1, 204, -1, 206, 207, 208, 209, - 210, -1, 212, -1, 214, -1, -1, -1, 218, 219, - -1, -1, -1, -1, -1, -1, 226, -1, -1, -1, - 230, 231, 232, 233, 234, 235, -1, -1, 238, 239, - 240, -1, -1, 243, -1, -1, -1, -1, 248, -1, - -1, -1, -1, 253, -1, 255, 256, -1, 258, 259, - 260, -1, -1, 263, -1, -1, -1, 267, 268, -1, - -1, 271, 272, -1, 274, 275, -1, -1, -1, -1, - -1, 281, 282, -1, 284, -1, 286, -1, 288, 289, - -1, -1, -1, -1, 294, -1, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, -1, 313, 314, 315, 316, -1, 318, 319, - 320, 321, -1, 323, 324, 325, -1, -1, -1, -1, - 330, 331, 332, 333, 334, 335, -1, -1, 338, 339, - -1, 341, -1, 343, -1, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, -1, -1, 357, -1, -1, - 360, 361, 362, 363, -1, -1, -1, -1, 368, -1, - -1, -1, 372, -1, 374, 375, 376, -1, 378, 379, - 380, 381, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 394, 395, -1, -1, -1, -1, - 400, -1, 402, 403, 404, 405, 406, 407, 408, 409, - 410, -1, -1, -1, -1, 415, 416, -1, 418, -1, - 420, 421, 422, 423, 424, -1, 426, 427, 428, -1, - -1, 431, -1, -1, -1, 435, 436, 437, 438, 439, - -1, -1, 442, 443, 444, 445, 446, -1, 448, -1, - -1, 451, -1, 453, 454, -1, 456, -1, -1, -1, - 460, -1, -1, 463, 464, -1, 466, 467, 468, -1, - -1, 471, -1, 473, 474, 475, 476, 477, 478, 479, - -1, 481, 482, -1, 484, -1, -1, -1, -1, 489, - 490, 491, -1, -1, -1, -1, 496, -1, -1, -1, - -1, -1, -1, 503, -1, -1, 506, 507, -1, 509, - -1, 511, -1, 513, 514, -1, -1, -1, -1, -1, - -1, 521, 522, -1, 524, -1, -1, 527, -1, -1, - -1, 531, -1, 533, -1, -1, -1, 537, -1, -1, - -1, 541, -1, 543, 544, 545, 546, 547, 548, -1, - -1, 551, 552, 553, 554, -1, 556, 557, -1, -1, - 560, 561, 562, 563, -1, -1, 566, 567, -1, 569, - 570, 571, 572, -1, -1, -1, -1, -1, 578, 579, - 580, -1, -1, -1, -1, 585, 586, 587, -1, 589, - 590, -1, 592, 593, -1, -1, -1, -1, -1, 599, - -1, -1, 602, -1, -1, -1, 606, 607, -1, -1, - -1, -1, -1, -1, 614, -1, -1, 617, -1, -1, - -1, 621, 622, 623, 624, 625, 626, 627, -1, -1, - 630, -1, -1, -1, 634, -1, -1, 637, -1, 639, - -1, 5, 642, 7, 8, 9, 10, 11, 12, -1, - -1, 15, -1, -1, -1, 19, -1, -1, -1, -1, - 24, 25, 26, 27, 28, 29, 30, 31, -1, -1, - -1, -1, -1, -1, 38, -1, -1, -1, 42, -1, - -1, 45, 46, 47, -1, 49, -1, -1, -1, -1, - -1, 55, -1, -1, 58, 59, -1, 61, -1, -1, - -1, -1, -1, 67, 68, 69, -1, 71, 72, -1, - 74, 75, -1, -1, -1, -1, -1, -1, 82, -1, - 84, -1, 86, 87, 88, 89, -1, 91, 92, -1, - 94, 95, 96, -1, 98, -1, 100, -1, -1, 103, - -1, -1, 106, -1, 108, -1, -1, 111, -1, 113, - -1, -1, -1, 117, 118, 119, -1, -1, 122, -1, - -1, -1, -1, 127, -1, -1, -1, -1, -1, 133, - -1, 135, -1, -1, -1, -1, 140, -1, 142, 143, - 144, 145, 146, -1, -1, -1, -1, -1, -1, -1, - 154, 155, 156, -1, -1, -1, 160, -1, -1, 163, - -1, 165, 166, 167, -1, 169, 170, -1, 172, 173, - 174, 175, 176, -1, -1, -1, -1, 181, 182, 183, - 184, -1, -1, 187, 188, -1, 190, 191, 192, -1, - -1, -1, -1, -1, -1, -1, 200, -1, 202, -1, - 204, -1, 206, 207, 208, 209, 210, -1, 212, -1, - 214, -1, -1, -1, 218, 219, -1, -1, -1, -1, - -1, -1, 226, -1, -1, -1, 230, 231, 232, 233, - 234, -1, -1, -1, 238, 239, 240, -1, -1, 243, - -1, -1, -1, -1, 248, -1, -1, -1, -1, 253, - -1, 255, 256, -1, 258, 259, -1, -1, -1, 263, - -1, -1, -1, 267, 268, -1, -1, 271, -1, -1, - 274, 275, -1, -1, -1, -1, -1, 281, 282, -1, - 284, -1, 286, -1, 288, 289, -1, -1, -1, -1, - -1, -1, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, -1, 318, 319, 320, 321, -1, 323, - 324, 325, -1, -1, -1, -1, 330, 331, 332, 333, - 334, 335, -1, -1, 338, 339, -1, 341, -1, 343, - -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, -1, -1, 357, -1, -1, 360, 361, 362, 363, - -1, -1, -1, -1, 368, -1, -1, -1, 372, -1, - 374, 375, 376, -1, 378, 379, 380, -1, -1, -1, + -1, 394, 395, -1, -1, -1, -1, 400, -1, 402, + 403, 404, 405, 406, 407, 408, 409, 410, -1, -1, + -1, -1, 415, 416, -1, 418, -1, 420, 421, 422, + 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, + -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, + 443, 444, 445, 446, -1, 448, -1, -1, 451, -1, + 453, 454, -1, 456, -1, -1, -1, 460, -1, -1, + 463, 464, -1, 466, 467, 468, -1, -1, 471, -1, + 473, 474, 475, 476, 477, 478, 479, -1, 481, 482, + -1, 484, -1, -1, -1, -1, 489, 490, 491, -1, + -1, -1, -1, 496, -1, -1, -1, -1, -1, -1, + 503, -1, -1, 506, 507, -1, 509, -1, 511, -1, + 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, + -1, 524, -1, -1, 527, -1, -1, -1, 531, -1, + 533, -1, -1, -1, 537, -1, -1, -1, 541, -1, + 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, + 553, 554, -1, 556, 557, -1, -1, 560, 561, 562, + 563, -1, -1, 566, 567, -1, 569, 570, 571, 572, + -1, -1, -1, -1, -1, 578, 579, 580, -1, -1, + -1, -1, 585, 586, 587, -1, 589, 590, -1, 592, + 593, -1, -1, -1, -1, -1, 599, -1, -1, 602, + -1, -1, -1, 606, 607, -1, -1, -1, -1, -1, + -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, + 623, 624, 625, 626, 627, -1, -1, 630, -1, -1, + -1, 634, -1, -1, 637, -1, 639, -1, 5, 642, + 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, + -1, -1, 19, -1, -1, -1, -1, 24, 25, 26, + 27, 28, 29, 30, 31, -1, -1, 34, -1, -1, + -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, + 47, -1, 49, -1, -1, -1, -1, -1, 55, 56, + -1, 58, 59, -1, 61, -1, -1, -1, -1, -1, + 67, 68, 69, 70, 71, 72, -1, 74, 75, -1, + -1, -1, -1, -1, -1, 82, -1, 84, -1, 86, + 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, + -1, 98, -1, 100, -1, -1, 103, -1, -1, 106, + -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, + 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, + 127, -1, -1, -1, -1, -1, 133, -1, 135, -1, + -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, + -1, -1, -1, -1, -1, -1, -1, 154, 155, 156, + -1, -1, -1, 160, -1, 162, 163, -1, 165, 166, + 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, + -1, -1, -1, -1, 181, 182, 183, 184, -1, -1, + 187, 188, 189, 190, 191, 192, -1, -1, -1, -1, + -1, -1, -1, 200, -1, 202, -1, 204, -1, 206, + 207, 208, 209, 210, -1, 212, -1, 214, -1, -1, + -1, 218, 219, -1, -1, -1, -1, -1, -1, 226, + -1, -1, -1, 230, 231, 232, 233, 234, 235, -1, + -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, + -1, 248, -1, -1, -1, -1, 253, -1, 255, 256, + -1, 258, 259, 260, -1, -1, 263, -1, -1, -1, + 267, 268, -1, -1, 271, 272, -1, 274, 275, -1, + -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, + -1, 288, 289, -1, -1, -1, -1, 294, -1, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + -1, 318, 319, 320, 321, -1, 323, 324, 325, -1, + -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, + -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, + 357, -1, -1, 360, 361, 362, 363, -1, -1, -1, + -1, 368, -1, -1, -1, 372, -1, 374, 375, 376, + -1, 378, 379, 380, 381, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 394, 395, -1, + -1, -1, -1, 400, -1, 402, 403, 404, 405, 406, + 407, 408, 409, 410, -1, -1, -1, -1, 415, 416, + -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, + 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, + 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, + -1, 448, -1, -1, 451, -1, 453, 454, -1, 456, + -1, -1, -1, 460, -1, -1, 463, 464, -1, 466, + 467, 468, -1, -1, 471, -1, 473, 474, 475, 476, + 477, 478, 479, -1, 481, 482, -1, 484, -1, -1, + -1, -1, 489, 490, 491, -1, -1, -1, -1, 496, + -1, -1, -1, -1, -1, -1, 503, -1, -1, 506, + 507, -1, 509, -1, 511, -1, 513, 514, -1, -1, + -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, + 527, -1, -1, -1, 531, -1, 533, -1, -1, -1, + 537, -1, -1, -1, 541, -1, 543, 544, 545, 546, + 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, + 557, -1, -1, 560, 561, 562, 563, -1, -1, 566, + 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, + -1, 578, 579, 580, -1, -1, -1, -1, 585, 586, + 587, -1, 589, 590, -1, 592, 593, -1, -1, -1, + -1, -1, 599, -1, -1, 602, -1, -1, -1, 606, + 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, + 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, + 627, -1, -1, 630, -1, -1, -1, 634, -1, -1, + 637, -1, 639, -1, 5, 642, 7, 8, 9, 10, + 11, 12, -1, -1, 15, -1, -1, -1, 19, -1, + -1, -1, -1, 24, 25, 26, 27, 28, 29, 30, + 31, -1, -1, 34, -1, -1, -1, 38, -1, -1, + -1, 42, -1, -1, 45, 46, 47, -1, 49, -1, + -1, -1, -1, -1, 55, 56, -1, 58, 59, -1, + 61, -1, -1, -1, -1, -1, 67, 68, 69, 70, + 71, 72, -1, 74, 75, -1, -1, -1, -1, -1, + -1, 82, -1, 84, -1, 86, 87, 88, 89, -1, + 91, 92, -1, 94, 95, 96, -1, 98, -1, 100, + -1, -1, 103, -1, -1, 106, -1, 108, -1, -1, + 111, -1, 113, -1, -1, -1, 117, 118, 119, -1, + -1, 122, -1, -1, -1, -1, 127, -1, -1, -1, + -1, -1, 133, -1, 135, -1, -1, -1, -1, 140, + -1, 142, 143, 144, 145, 146, -1, -1, -1, -1, + -1, -1, -1, 154, 155, 156, -1, -1, -1, 160, + -1, 162, 163, -1, 165, 166, 167, -1, 169, 170, + -1, 172, 173, 174, 175, 176, -1, -1, -1, -1, + 181, 182, 183, 184, -1, -1, 187, 188, 189, 190, + 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, + -1, 202, -1, 204, -1, 206, 207, 208, 209, 210, + -1, 212, -1, 214, -1, -1, -1, 218, 219, -1, + -1, -1, -1, -1, -1, 226, -1, -1, -1, 230, + 231, 232, 233, 234, 235, -1, -1, 238, 239, 240, + -1, -1, 243, -1, -1, -1, -1, 248, -1, -1, + -1, -1, 253, -1, 255, 256, -1, 258, 259, 260, + -1, -1, 263, -1, -1, -1, 267, 268, -1, -1, + 271, 272, -1, 274, 275, -1, -1, -1, -1, -1, + 281, 282, -1, 284, -1, 286, -1, 288, 289, -1, + -1, -1, -1, 294, -1, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, -1, 313, 314, 315, 316, -1, 318, 319, 320, + 321, -1, 323, 324, 325, -1, -1, -1, -1, 330, + 331, 332, 333, 334, 335, -1, -1, 338, 339, -1, + 341, -1, 343, -1, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, -1, -1, 357, -1, -1, 360, + 361, 362, 363, -1, -1, -1, -1, 368, -1, -1, + -1, 372, -1, 374, 375, 376, -1, 378, 379, 380, + 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 394, 395, -1, -1, -1, -1, 400, + -1, 402, 403, 404, 405, 406, 407, 408, 409, 410, + -1, -1, -1, -1, 415, 416, -1, 418, -1, 420, + 421, 422, 423, 424, -1, 426, 427, 428, -1, -1, + 431, -1, -1, -1, 435, 436, 437, 438, 439, -1, + -1, 442, 443, 444, 445, 446, -1, 448, -1, -1, + 451, -1, 453, 454, -1, 456, -1, -1, -1, 460, + -1, -1, 463, 464, -1, 466, 467, 468, -1, -1, + 471, -1, 473, 474, 475, 476, 477, 478, 479, -1, + 481, 482, -1, 484, -1, -1, -1, -1, 489, 490, + 491, -1, -1, -1, -1, 496, -1, -1, -1, -1, + -1, -1, 503, -1, -1, 506, 507, -1, 509, -1, + 511, -1, 513, 514, -1, -1, -1, -1, -1, -1, + 521, 522, -1, 524, -1, -1, 527, -1, -1, -1, + 531, -1, 533, -1, -1, -1, 537, -1, -1, -1, + 541, -1, 543, 544, 545, 546, 547, 548, -1, -1, + 551, 552, 553, 554, -1, 556, 557, -1, -1, 560, + 561, 562, 563, -1, -1, 566, 567, -1, 569, 570, + 571, 572, -1, -1, -1, -1, -1, 578, 579, 580, + -1, -1, -1, -1, 585, 586, 587, -1, 589, 590, + -1, 592, 593, -1, -1, -1, -1, -1, 599, -1, + -1, 602, -1, -1, -1, 606, 607, -1, -1, -1, + -1, -1, -1, 614, -1, -1, 617, -1, -1, -1, + 621, 622, 623, 624, 625, 626, 627, -1, -1, 630, + -1, -1, -1, 634, -1, -1, 637, -1, 639, -1, + 5, 642, 7, 8, 9, 10, 11, 12, -1, -1, + 15, -1, -1, -1, 19, -1, -1, -1, -1, 24, + 25, 26, 27, 28, 29, 30, 31, -1, -1, 34, + -1, -1, -1, 38, -1, -1, -1, 42, -1, -1, + 45, 46, 47, -1, 49, -1, -1, -1, -1, -1, + 55, 56, -1, 58, 59, -1, 61, -1, -1, -1, + -1, -1, 67, 68, 69, 70, 71, 72, -1, 74, + 75, -1, -1, -1, -1, -1, -1, 82, -1, 84, + -1, 86, 87, 88, 89, -1, 91, 92, -1, 94, + 95, 96, -1, 98, -1, 100, -1, -1, 103, -1, + -1, 106, -1, 108, -1, -1, 111, -1, 113, -1, + -1, -1, 117, 118, 119, -1, -1, 122, -1, -1, + -1, -1, 127, -1, -1, -1, -1, -1, 133, -1, + 135, -1, -1, -1, -1, 140, -1, 142, 143, 144, + 145, 146, -1, -1, -1, -1, -1, -1, -1, 154, + 155, 156, -1, -1, -1, 160, -1, 162, 163, -1, + 165, 166, 167, -1, 169, 170, -1, 172, 173, 174, + 175, 176, -1, -1, -1, -1, 181, 182, 183, 184, + -1, -1, 187, 188, 189, 190, 191, 192, -1, -1, + -1, -1, -1, -1, -1, 200, -1, 202, -1, 204, + -1, 206, 207, 208, 209, 210, -1, 212, -1, 214, + -1, -1, -1, 218, 219, -1, -1, -1, -1, -1, + -1, 226, -1, -1, -1, 230, 231, 232, 233, 234, + 235, -1, -1, 238, 239, 240, -1, -1, 243, -1, + -1, -1, -1, 248, -1, -1, -1, -1, 253, -1, + 255, 256, -1, 258, 259, 260, -1, -1, 263, -1, + -1, -1, 267, 268, -1, -1, 271, 272, -1, 274, + 275, -1, -1, -1, -1, -1, 281, 282, -1, 284, + -1, 286, -1, 288, 289, -1, -1, -1, -1, 294, + -1, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, + 315, 316, -1, 318, 319, 320, 321, -1, 323, 324, + 325, -1, -1, -1, -1, 330, 331, 332, 333, 334, + 335, -1, -1, 338, 339, -1, 341, -1, 343, -1, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + -1, -1, 357, -1, -1, 360, 361, 362, 363, -1, + -1, -1, -1, 368, -1, -1, -1, 372, -1, 374, + 375, 376, -1, 378, 379, 380, 381, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 394, + 395, -1, -1, -1, -1, 400, -1, 402, 403, 404, + 405, 406, 407, 408, 409, 410, -1, -1, -1, -1, + 415, 416, -1, 418, -1, 420, 421, 422, 423, 424, + -1, 426, 427, 428, -1, -1, 431, -1, -1, -1, + 435, 436, 437, 438, 439, -1, -1, 442, 443, 444, + 445, 446, -1, 448, -1, -1, 451, -1, 453, 454, + -1, 456, -1, -1, -1, 460, -1, -1, 463, 464, + -1, 466, 467, 468, -1, -1, 471, -1, 473, 474, + 475, 476, 477, 478, 479, -1, 481, 482, -1, 484, + -1, -1, -1, -1, 489, 490, 491, -1, -1, -1, + -1, 496, -1, -1, -1, -1, -1, -1, 503, -1, + -1, 506, 507, -1, 509, -1, 511, -1, 513, 514, + -1, -1, -1, -1, -1, -1, 521, 522, -1, 524, + -1, -1, 527, -1, -1, -1, 531, -1, 533, -1, + -1, -1, 537, -1, -1, -1, 541, -1, 543, 544, + 545, 546, 547, 548, -1, -1, 551, 552, 553, 554, + -1, 556, 557, -1, -1, 560, 561, 562, 563, -1, + -1, 566, 567, -1, 569, 570, 571, 572, -1, -1, + -1, -1, -1, 578, 579, 580, -1, -1, -1, -1, + 585, 586, 587, -1, 589, 590, -1, 592, 593, -1, + -1, -1, -1, -1, 599, -1, -1, 602, -1, -1, + -1, 606, 607, -1, -1, -1, -1, -1, -1, 614, + -1, -1, 617, -1, -1, -1, 621, 622, 623, 624, + 625, 626, 627, -1, -1, 630, -1, -1, -1, 634, + -1, -1, 637, -1, 639, -1, 5, 642, 7, 8, + 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, + 19, -1, -1, -1, -1, 24, 25, 26, 27, 28, + 29, 30, 31, -1, -1, 34, -1, -1, -1, 38, + -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, + 49, -1, -1, -1, -1, -1, 55, 56, -1, 58, + 59, -1, 61, -1, -1, -1, -1, -1, 67, 68, + 69, 70, 71, 72, -1, 74, 75, -1, -1, -1, + -1, -1, -1, 82, -1, 84, -1, 86, 87, 88, + 89, -1, 91, 92, -1, 94, 95, 96, -1, 98, + -1, 100, -1, -1, 103, -1, -1, 106, -1, 108, + -1, -1, 111, -1, 113, -1, -1, -1, 117, 118, + 119, -1, -1, 122, -1, -1, -1, -1, 127, -1, + -1, -1, -1, -1, 133, -1, 135, -1, -1, -1, + -1, 140, -1, 142, 143, 144, 145, 146, -1, -1, + -1, -1, -1, -1, -1, 154, 155, 156, -1, -1, + -1, 160, -1, -1, 163, -1, 165, 166, 167, -1, + 169, 170, -1, 172, 173, 174, 175, 176, -1, -1, + -1, -1, 181, 182, 183, 184, -1, -1, 187, 188, + 189, 190, 191, 192, -1, -1, -1, -1, -1, -1, + -1, 200, -1, 202, -1, 204, -1, 206, 207, 208, + 209, 210, -1, 212, -1, 214, -1, -1, -1, 218, + 219, -1, -1, -1, -1, -1, -1, 226, -1, -1, + -1, 230, 231, 232, 233, 234, 235, -1, -1, 238, + 239, 240, -1, -1, 243, -1, -1, -1, -1, 248, + -1, -1, -1, -1, 253, -1, 255, 256, -1, 258, + 259, 260, -1, -1, 263, -1, -1, -1, 267, 268, + -1, -1, 271, 272, -1, 274, 275, -1, -1, -1, + -1, -1, 281, 282, -1, 284, -1, 286, -1, 288, + 289, -1, -1, -1, -1, 294, -1, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, -1, 313, 314, 315, 316, -1, 318, + 319, 320, 321, -1, 323, 324, 325, -1, -1, -1, + -1, 330, 331, 332, 333, 334, 335, -1, -1, 338, + 339, -1, 341, -1, 343, -1, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, -1, -1, 357, -1, + -1, 360, 361, 362, 363, -1, -1, -1, -1, 368, + -1, -1, -1, 372, -1, 374, 375, 376, -1, 378, + 379, 380, 381, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 394, 395, -1, -1, -1, + -1, 400, -1, 402, 403, 404, 405, 406, 407, 408, + 409, 410, -1, -1, -1, -1, 415, 416, -1, 418, + -1, 420, 421, 422, 423, 424, -1, 426, 427, 428, + -1, -1, 431, -1, -1, -1, 435, 436, 437, 438, + 439, -1, -1, 442, 443, 444, 445, 446, -1, 448, + -1, -1, 451, -1, 453, 454, -1, 456, -1, -1, + -1, 460, -1, -1, 463, 464, -1, 466, 467, 468, + -1, -1, 471, -1, 473, 474, 475, 476, 477, 478, + 479, -1, 481, 482, -1, 484, -1, -1, -1, -1, + 489, 490, 491, -1, -1, -1, -1, 496, -1, -1, + -1, -1, -1, -1, 503, -1, -1, 506, 507, -1, + 509, -1, 511, -1, 513, 514, -1, -1, -1, -1, + -1, -1, 521, 522, -1, 524, -1, -1, 527, -1, + -1, -1, 531, -1, 533, -1, -1, -1, 537, -1, + -1, -1, 541, -1, 543, 544, 545, 546, 547, 548, + -1, -1, 551, 552, 553, 554, -1, 556, 557, -1, + -1, 560, 561, 562, 563, -1, -1, 566, 567, -1, + 569, 570, 571, 572, -1, -1, -1, -1, -1, 578, + 579, 580, -1, -1, -1, -1, 585, 586, 587, -1, + 589, 590, -1, 592, 593, -1, -1, -1, -1, -1, + 599, -1, -1, 602, -1, -1, -1, 606, 607, -1, + -1, -1, -1, -1, -1, 614, -1, -1, 617, -1, + -1, -1, 621, 622, 623, 624, 625, 626, 627, -1, + -1, 630, -1, -1, -1, 634, -1, -1, 637, -1, + 639, -1, 5, 642, 7, 8, 9, 10, 11, 12, + -1, -1, 15, -1, -1, -1, 19, -1, -1, -1, + -1, 24, 25, 26, 27, 28, 29, 30, 31, -1, + -1, 34, -1, -1, -1, 38, -1, -1, -1, 42, + -1, -1, 45, 46, 47, -1, 49, -1, -1, -1, + -1, -1, 55, 56, -1, 58, 59, -1, 61, -1, + -1, -1, -1, -1, 67, 68, 69, 70, 71, 72, + -1, 74, 75, -1, -1, -1, -1, -1, -1, 82, + -1, 84, -1, 86, 87, 88, 89, -1, 91, 92, + -1, 94, 95, 96, -1, 98, -1, 100, -1, -1, + 103, -1, -1, 106, -1, 108, -1, -1, 111, -1, + 113, -1, -1, -1, 117, 118, 119, -1, -1, 122, + -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, + 133, -1, 135, -1, -1, -1, -1, 140, -1, 142, + 143, 144, 145, 146, -1, -1, -1, -1, -1, -1, + -1, 154, 155, 156, -1, -1, -1, 160, -1, -1, + 163, -1, 165, 166, 167, -1, 169, 170, -1, 172, + 173, 174, 175, 176, -1, -1, -1, -1, 181, 182, + 183, 184, -1, -1, 187, 188, 189, 190, 191, 192, + -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, + -1, 204, -1, 206, 207, 208, 209, 210, -1, 212, + -1, 214, -1, -1, -1, 218, 219, -1, -1, -1, + -1, -1, -1, 226, -1, -1, -1, 230, 231, 232, + 233, 234, 235, -1, -1, 238, 239, 240, -1, -1, + 243, -1, -1, -1, -1, 248, -1, -1, -1, -1, + 253, -1, 255, 256, -1, 258, 259, 260, -1, -1, + 263, -1, -1, -1, 267, 268, -1, -1, 271, 272, + -1, 274, 275, -1, -1, -1, -1, -1, 281, 282, + -1, 284, -1, 286, -1, 288, 289, -1, -1, -1, + -1, 294, -1, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, -1, + 313, 314, 315, 316, -1, 318, 319, 320, 321, -1, + 323, 324, 325, -1, -1, -1, -1, 330, 331, 332, + 333, 334, 335, -1, -1, 338, 339, -1, 341, -1, + 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, -1, -1, 357, -1, -1, 360, 361, 362, + 363, -1, -1, -1, -1, 368, -1, -1, -1, 372, + -1, 374, 375, 376, -1, 378, 379, 380, 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 394, 395, -1, -1, -1, -1, 400, -1, 402, 403, - 404, 405, 406, 407, 408, 409, 410, -1, -1, -1, - -1, 415, 416, -1, 418, -1, 420, 421, 422, 423, - 424, -1, 426, 427, 428, -1, -1, 431, -1, -1, - -1, 435, 436, 437, 438, 439, -1, -1, 442, 443, - 444, 445, 446, -1, 448, -1, -1, 451, -1, 453, - -1, -1, 456, -1, -1, -1, 460, -1, -1, 463, - 464, -1, 466, -1, 468, -1, -1, 471, -1, 473, - 474, 475, 476, 477, 478, 479, -1, 481, 482, -1, - 484, -1, -1, -1, -1, 489, 490, 491, -1, -1, - -1, -1, 496, -1, -1, -1, -1, -1, -1, 503, - -1, -1, 506, 507, -1, 509, -1, 511, -1, 513, - 514, -1, -1, -1, -1, -1, -1, 521, 522, -1, - 524, -1, -1, 527, -1, -1, -1, 531, -1, 533, - -1, -1, -1, 537, -1, -1, -1, 541, -1, 543, - 544, 545, 546, 547, 548, -1, -1, 551, 552, 553, - 554, -1, 556, 557, -1, -1, 560, 561, 562, 563, - -1, -1, 566, 567, -1, 569, 570, 571, 572, -1, - -1, -1, -1, -1, 578, 579, 580, -1, -1, -1, - -1, 585, 586, 587, -1, 589, 590, -1, 592, 593, - -1, -1, -1, -1, -1, 599, -1, -1, 602, -1, - -1, -1, 606, 607, -1, -1, -1, -1, -1, -1, - 614, -1, -1, 617, -1, -1, -1, 621, 622, 623, - 624, 625, 626, 627, -1, -1, -1, -1, -1, -1, - 634, -1, -1, 637, -1, 639, -1, -1, 642 + -1, 394, 395, -1, -1, -1, -1, 400, -1, 402, + 403, 404, 405, 406, 407, 408, 409, 410, -1, -1, + -1, -1, 415, 416, -1, 418, -1, 420, 421, 422, + 423, 424, -1, 426, 427, 428, -1, -1, 431, -1, + -1, -1, 435, 436, 437, 438, 439, -1, -1, 442, + 443, 444, 445, 446, -1, 448, -1, -1, 451, -1, + 453, 454, -1, 456, -1, -1, -1, 460, -1, -1, + 463, 464, -1, 466, 467, 468, -1, -1, 471, -1, + 473, 474, 475, 476, 477, 478, 479, -1, 481, 482, + -1, 484, -1, -1, -1, -1, 489, 490, 491, -1, + -1, -1, -1, 496, -1, -1, -1, -1, -1, -1, + 503, -1, -1, 506, 507, -1, 509, -1, 511, -1, + 513, 514, -1, -1, -1, -1, -1, -1, 521, 522, + -1, 524, -1, -1, 527, -1, -1, -1, 531, -1, + 533, -1, -1, -1, 537, -1, -1, -1, 541, -1, + 543, 544, 545, 546, 547, 548, -1, -1, 551, 552, + 553, 554, -1, 556, 557, -1, -1, 560, 561, 562, + 563, -1, -1, 566, 567, -1, 569, 570, 571, 572, + -1, -1, -1, -1, -1, 578, 579, 580, -1, -1, + -1, -1, 585, 586, 587, -1, 589, 590, -1, 592, + 593, -1, -1, -1, -1, -1, 599, -1, -1, 602, + -1, -1, -1, 606, 607, -1, -1, -1, -1, -1, + -1, 614, -1, -1, 617, -1, -1, -1, 621, 622, + 623, 624, 625, 626, 627, -1, -1, 630, -1, -1, + -1, 634, -1, -1, 637, -1, 639, -1, 5, 642, + 7, 8, 9, 10, 11, 12, -1, -1, 15, -1, + -1, -1, 19, -1, -1, -1, -1, 24, 25, 26, + 27, 28, 29, 30, 31, -1, -1, -1, -1, -1, + -1, 38, -1, -1, -1, 42, -1, -1, 45, 46, + 47, -1, 49, -1, -1, -1, -1, -1, 55, -1, + -1, 58, 59, -1, 61, -1, -1, -1, -1, -1, + 67, 68, 69, -1, 71, 72, -1, 74, 75, -1, + -1, -1, -1, -1, -1, 82, -1, 84, -1, 86, + 87, 88, 89, -1, 91, 92, -1, 94, 95, 96, + -1, 98, -1, 100, -1, -1, 103, -1, -1, 106, + -1, 108, -1, -1, 111, -1, 113, -1, -1, -1, + 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, + 127, -1, -1, -1, -1, -1, 133, -1, 135, -1, + -1, -1, -1, 140, -1, 142, 143, 144, 145, 146, + -1, -1, -1, -1, -1, -1, -1, 154, 155, 156, + -1, -1, -1, 160, -1, -1, 163, -1, 165, 166, + 167, -1, 169, 170, -1, 172, 173, 174, 175, 176, + -1, -1, -1, -1, 181, 182, 183, 184, -1, -1, + 187, 188, -1, 190, 191, 192, -1, -1, -1, -1, + -1, -1, -1, 200, -1, 202, -1, 204, -1, 206, + 207, 208, 209, 210, -1, 212, -1, 214, -1, -1, + -1, 218, 219, -1, -1, -1, -1, -1, -1, 226, + -1, -1, -1, 230, 231, 232, 233, 234, -1, -1, + -1, 238, 239, 240, -1, -1, 243, -1, -1, -1, + -1, 248, -1, -1, -1, -1, 253, -1, 255, 256, + -1, 258, 259, -1, -1, -1, 263, -1, -1, -1, + 267, 268, -1, -1, 271, -1, -1, 274, 275, -1, + -1, -1, -1, -1, 281, 282, -1, 284, -1, 286, + -1, 288, 289, -1, -1, -1, -1, -1, -1, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, + -1, 318, 319, 320, 321, -1, 323, 324, 325, -1, + -1, -1, -1, 330, 331, 332, 333, 334, 335, -1, + -1, 338, 339, -1, 341, -1, 343, -1, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, -1, -1, + 357, -1, -1, 360, 361, 362, 363, -1, -1, -1, + -1, 368, -1, -1, -1, 372, -1, 374, 375, 376, + -1, 378, 379, 380, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 394, 395, -1, + -1, -1, -1, 400, -1, 402, 403, 404, 405, 406, + 407, 408, 409, 410, -1, -1, -1, -1, 415, 416, + -1, 418, -1, 420, 421, 422, 423, 424, -1, 426, + 427, 428, -1, -1, 431, -1, -1, -1, 435, 436, + 437, 438, 439, -1, -1, 442, 443, 444, 445, 446, + -1, 448, -1, -1, 451, -1, 453, -1, -1, 456, + -1, -1, -1, 460, -1, -1, 463, 464, -1, 466, + -1, 468, -1, -1, 471, -1, 473, 474, 475, 476, + 477, 478, 479, -1, 481, 482, -1, 484, -1, -1, + -1, -1, 489, 490, 491, -1, -1, -1, -1, 496, + -1, -1, -1, -1, -1, -1, 503, -1, -1, 506, + 507, -1, 509, -1, 511, -1, 513, 514, -1, -1, + -1, -1, -1, -1, 521, 522, -1, 524, -1, -1, + 527, -1, -1, -1, 531, -1, 533, -1, -1, -1, + 537, -1, -1, -1, 541, -1, 543, 544, 545, 546, + 547, 548, -1, -1, 551, 552, 553, 554, -1, 556, + 557, -1, -1, 560, 561, 562, 563, -1, -1, 566, + 567, -1, 569, 570, 571, 572, -1, -1, -1, -1, + -1, 578, 579, 580, -1, -1, -1, -1, 585, 586, + 587, -1, 589, 590, -1, 592, 593, -1, -1, -1, + -1, -1, 599, -1, -1, 602, -1, -1, -1, 606, + 607, -1, -1, -1, -1, -1, -1, 614, -1, -1, + 617, -1, -1, -1, 621, 622, 623, 624, 625, 626, + 627, -1, -1, -1, -1, -1, -1, 634, -1, -1, + 637, -1, 639, -1, -1, 642 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -18087,482 +18193,482 @@ static const yytype_uint16 yystos[] = 1577, 1579, 1586, 1589, 1623, 1625, 1631, 1632, 1633, 1634, 1687, 1695, 1696, 1697, 12, 115, 133, 204, 288, 419, 492, 557, 1066, 1656, 1657, 1658, 1659, 199, 284, 369, - 1158, 1451, 364, 365, 1217, 1624, 565, 1529, 241, 5, - 7, 8, 9, 10, 11, 12, 15, 19, 22, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 34, 38, - 42, 45, 46, 47, 49, 51, 52, 55, 58, 59, - 61, 62, 64, 65, 67, 68, 69, 70, 71, 72, - 74, 75, 76, 77, 78, 79, 80, 82, 83, 84, - 85, 86, 87, 88, 89, 91, 92, 94, 95, 96, - 97, 98, 100, 103, 106, 108, 111, 113, 117, 118, - 119, 122, 127, 128, 133, 135, 140, 142, 143, 144, - 145, 146, 151, 154, 155, 156, 160, 162, 163, 165, - 166, 167, 169, 170, 172, 173, 174, 175, 176, 177, - 178, 181, 182, 183, 184, 187, 188, 190, 191, 192, - 195, 199, 200, 202, 204, 206, 207, 208, 209, 210, - 211, 212, 214, 217, 218, 219, 221, 225, 226, 230, - 231, 232, 233, 234, 238, 239, 240, 243, 248, 249, - 253, 255, 256, 258, 259, 263, 266, 267, 268, 271, - 274, 275, 281, 282, 284, 286, 288, 289, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 313, 314, 315, 316, 318, 319, - 320, 321, 323, 324, 325, 330, 331, 332, 333, 334, - 335, 338, 339, 341, 343, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 357, 360, 361, 362, 363, - 367, 368, 372, 374, 375, 376, 378, 379, 380, 381, - 383, 384, 393, 394, 395, 398, 400, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 414, 415, 416, - 418, 420, 421, 422, 423, 424, 426, 427, 428, 431, - 435, 436, 437, 438, 439, 442, 443, 444, 445, 446, - 448, 449, 451, 452, 453, 456, 458, 460, 461, 463, - 464, 466, 468, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 484, 485, 489, 490, 491, - 492, 496, 500, 502, 503, 504, 505, 506, 507, 509, - 510, 511, 512, 513, 514, 521, 522, 524, 527, 531, - 532, 533, 537, 540, 541, 543, 544, 545, 546, 547, - 548, 551, 552, 553, 554, 556, 557, 560, 561, 562, - 563, 566, 567, 569, 570, 571, 572, 578, 579, 580, - 584, 585, 586, 587, 589, 590, 592, 593, 595, 596, - 599, 602, 604, 606, 607, 614, 617, 621, 622, 623, - 624, 625, 626, 627, 634, 635, 637, 638, 639, 642, - 722, 1528, 1532, 1538, 1539, 799, 313, 556, 559, 1573, - 1151, 634, 1627, 288, 389, 557, 1411, 1361, 115, 174, - 204, 241, 288, 419, 471, 492, 557, 562, 581, 606, - 622, 1373, 1532, 1158, 108, 765, 721, 665, 1525, 1527, - 1532, 683, 780, 1375, 408, 512, 1480, 118, 241, 639, - 1491, 1573, 833, 1158, 657, 893, 1532, 1476, 480, 606, - 1573, 1158, 835, 1378, 1468, 518, 753, 757, 758, 1532, - 721, 1627, 1532, 1189, 1191, 1192, 1193, 533, 1541, 1431, - 757, 13, 504, 578, 13, 504, 559, 1425, 408, 512, - 1578, 1403, 1532, 834, 34, 85, 162, 414, 436, 472, - 532, 1689, 657, 1185, 1186, 0, 164, 669, 414, 115, - 203, 471, 515, 598, 606, 703, 704, 1043, 1044, 1045, - 1373, 183, 199, 402, 1450, 1451, 1525, 1532, 645, 1078, - 1532, 645, 722, 215, 722, 276, 1529, 1532, 1534, 838, - 839, 842, 865, 1532, 1102, 1103, 1072, 1205, 1656, 645, - 1573, 1183, 1374, 1377, 1402, 1410, 1447, 25, 1627, 1165, - 729, 665, 628, 800, 801, 804, 808, 695, 696, 1529, - 1124, 622, 1148, 1573, 18, 1628, 215, 455, 840, 865, - 237, 295, 428, 1421, 1422, 8, 22, 31, 37, 39, - 40, 41, 43, 56, 57, 62, 63, 71, 74, 76, - 77, 78, 79, 80, 97, 101, 102, 107, 109, 110, - 114, 115, 120, 121, 122, 127, 129, 132, 179, 185, - 186, 193, 199, 208, 210, 216, 222, 223, 230, 235, - 247, 250, 268, 273, 281, 292, 317, 322, 334, 338, - 340, 344, 345, 346, 347, 348, 356, 364, 365, 366, - 370, 371, 376, 397, 404, 409, 410, 412, 426, 454, - 455, 468, 470, 477, 478, 484, 538, 539, 545, 549, - 550, 555, 565, 569, 570, 571, 572, 582, 583, 584, - 588, 591, 606, 610, 611, 612, 613, 618, 620, 626, - 627, 642, 650, 651, 656, 657, 660, 661, 664, 665, - 1211, 1212, 1213, 1214, 1218, 1226, 1227, 1228, 1229, 1230, - 1231, 1239, 1243, 1257, 1510, 1513, 1515, 1516, 1517, 1521, - 1523, 1528, 1532, 235, 1372, 1372, 1372, 235, 1371, 215, - 1372, 1372, 1372, 865, 1372, 1372, 1372, 1573, 678, 1454, - 142, 13, 14, 104, 110, 136, 152, 174, 178, 190, - 213, 241, 247, 287, 420, 424, 440, 448, 456, 486, - 499, 500, 551, 581, 603, 605, 1534, 1590, 1594, 1595, - 1597, 1599, 1600, 1532, 381, 70, 432, 665, 1534, 793, - 794, 134, 224, 295, 1380, 1532, 1529, 218, 511, 1481, - 251, 1487, 1572, 34, 70, 189, 260, 272, 381, 467, - 742, 777, 778, 781, 782, 783, 785, 786, 787, 788, - 790, 813, 815, 821, 828, 1528, 1533, 1539, 1573, 985, - 1205, 50, 894, 201, 37, 313, 1436, 1477, 1532, 721, - 1160, 1129, 742, 824, 134, 295, 1381, 1409, 313, 427, - 504, 1469, 1470, 614, 754, 494, 759, 7, 13, 424, - 1587, 1588, 1595, 1597, 576, 1628, 1190, 251, 387, 1324, - 1325, 1354, 1355, 13, 147, 224, 520, 521, 522, 523, - 524, 525, 542, 1198, 1199, 1200, 1652, 1542, 62, 63, - 132, 212, 284, 352, 404, 471, 491, 578, 664, 1008, - 1532, 1545, 1557, 1561, 1562, 13, 26, 38, 62, 74, - 100, 102, 104, 116, 166, 170, 173, 202, 204, 212, - 214, 240, 241, 262, 284, 313, 381, 407, 418, 419, - 422, 423, 443, 491, 504, 541, 559, 625, 1008, 1042, - 1432, 1436, 1437, 1439, 1448, 1528, 1558, 759, 505, 695, - 432, 631, 1114, 1115, 1116, 505, 695, 1424, 1532, 1529, - 1573, 1409, 822, 1211, 39, 222, 223, 565, 1511, 1512, - 1530, 1688, 1688, 1688, 1688, 1688, 1185, 658, 486, 663, - 1532, 235, 945, 945, 945, 1653, 1657, 1658, 1659, 492, - 705, 241, 241, 241, 559, 1446, 1445, 332, 563, 590, - 1068, 604, 109, 1534, 1535, 1536, 1594, 1070, 844, 866, - 1532, 1069, 1074, 6, 60, 152, 365, 431, 433, 867, - 559, 237, 380, 1104, 1105, 1106, 526, 1660, 1661, 174, - 1071, 1534, 1135, 818, 1166, 1167, 1168, 1169, 1525, 657, - 730, 1532, 809, 158, 811, 1211, 808, 576, 1366, 1367, - 1525, 1149, 1366, 59, 367, 367, 447, 1629, 843, 866, - 6, 201, 1412, 1418, 1419, 1532, 1421, 657, 657, 657, - 1226, 657, 657, 657, 1211, 1260, 657, 657, 657, 657, - 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, - 1210, 1210, 1210, 657, 1209, 657, 657, 657, 565, 657, + 1158, 1451, 364, 365, 1217, 1624, 565, 664, 1529, 241, + 5, 7, 8, 9, 10, 11, 12, 15, 19, 22, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, + 38, 42, 45, 46, 47, 49, 51, 52, 55, 58, + 59, 61, 62, 64, 65, 67, 68, 69, 70, 71, + 72, 74, 75, 76, 77, 78, 79, 80, 82, 83, + 84, 85, 86, 87, 88, 89, 91, 92, 94, 95, + 96, 97, 98, 100, 103, 106, 108, 111, 113, 117, + 118, 119, 122, 127, 128, 133, 135, 140, 142, 143, + 144, 145, 146, 151, 154, 155, 156, 160, 162, 163, + 165, 166, 167, 169, 170, 172, 173, 174, 175, 176, + 177, 178, 181, 182, 183, 184, 187, 188, 190, 191, + 192, 195, 199, 200, 202, 204, 206, 207, 208, 209, + 210, 211, 212, 214, 217, 218, 219, 221, 225, 226, + 230, 231, 232, 233, 234, 238, 239, 240, 243, 248, + 249, 253, 255, 256, 258, 259, 263, 266, 267, 268, + 271, 274, 275, 281, 282, 284, 286, 288, 289, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 313, 314, 315, 316, 318, + 319, 320, 321, 323, 324, 325, 330, 331, 332, 333, + 334, 335, 338, 339, 341, 343, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 357, 360, 361, 362, + 363, 367, 368, 372, 374, 375, 376, 378, 379, 380, + 381, 383, 384, 393, 394, 395, 398, 400, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 414, 415, + 416, 418, 420, 421, 422, 423, 424, 426, 427, 428, + 431, 435, 436, 437, 438, 439, 442, 443, 444, 445, + 446, 448, 449, 451, 452, 453, 456, 458, 460, 461, + 463, 464, 466, 468, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, 484, 485, 489, 490, + 491, 492, 496, 500, 502, 503, 504, 505, 506, 507, + 509, 510, 511, 512, 513, 514, 521, 522, 524, 527, + 531, 532, 533, 537, 540, 541, 543, 544, 545, 546, + 547, 548, 551, 552, 553, 554, 556, 557, 560, 561, + 562, 563, 566, 567, 569, 570, 571, 572, 578, 579, + 580, 584, 585, 586, 587, 589, 590, 592, 593, 595, + 596, 599, 602, 604, 606, 607, 614, 617, 621, 622, + 623, 624, 625, 626, 627, 634, 635, 637, 638, 639, + 642, 722, 1528, 1532, 1538, 1539, 799, 313, 556, 559, + 1573, 1151, 634, 1627, 288, 389, 557, 1411, 1361, 115, + 174, 204, 241, 288, 419, 471, 492, 557, 562, 581, + 606, 622, 1373, 1532, 1158, 108, 765, 721, 665, 1525, + 1527, 1532, 683, 780, 1375, 408, 512, 1480, 118, 241, + 639, 1491, 1573, 833, 1158, 657, 893, 1532, 1476, 480, + 606, 1573, 1158, 835, 1378, 1468, 518, 753, 757, 758, + 1532, 721, 1627, 1532, 1189, 1191, 1192, 1193, 533, 1541, + 1431, 757, 13, 504, 578, 13, 504, 559, 1425, 408, + 512, 1578, 1403, 1532, 834, 34, 85, 162, 414, 436, + 472, 532, 1689, 657, 1185, 1186, 0, 164, 669, 414, + 115, 203, 471, 515, 598, 606, 703, 704, 1043, 1044, + 1045, 1373, 183, 199, 402, 1450, 1451, 1525, 1532, 645, + 1078, 1532, 645, 722, 215, 722, 276, 1529, 1532, 1534, + 838, 839, 842, 865, 1532, 1102, 1103, 1072, 1205, 1656, + 645, 1573, 1183, 1374, 1377, 1402, 1410, 1447, 25, 1627, + 1534, 1165, 729, 665, 628, 800, 801, 804, 808, 695, + 696, 1529, 1124, 622, 1148, 1573, 18, 1628, 215, 455, + 840, 865, 237, 295, 428, 1421, 1422, 8, 22, 31, + 37, 39, 40, 41, 43, 56, 57, 62, 63, 71, + 74, 76, 77, 78, 79, 80, 97, 101, 102, 107, + 109, 110, 114, 115, 120, 121, 122, 127, 129, 132, + 179, 185, 186, 193, 199, 208, 210, 216, 222, 223, + 230, 235, 247, 250, 268, 273, 281, 292, 317, 322, + 334, 338, 340, 344, 345, 346, 347, 348, 356, 364, + 365, 366, 370, 371, 376, 397, 404, 409, 410, 412, + 426, 454, 455, 468, 470, 477, 478, 484, 538, 539, + 545, 549, 550, 555, 565, 569, 570, 571, 572, 582, + 583, 584, 588, 591, 606, 610, 611, 612, 613, 618, + 620, 626, 627, 642, 650, 651, 656, 657, 660, 661, + 664, 665, 1211, 1212, 1213, 1214, 1218, 1226, 1227, 1228, + 1229, 1230, 1231, 1239, 1243, 1257, 1510, 1513, 1515, 1516, + 1517, 1521, 1523, 1528, 1532, 235, 1372, 1372, 1372, 235, + 1371, 215, 1372, 1372, 1372, 865, 1372, 1372, 1372, 1573, + 678, 1454, 142, 13, 14, 104, 110, 136, 152, 174, + 178, 190, 213, 241, 247, 287, 420, 424, 440, 448, + 456, 486, 499, 500, 551, 581, 603, 605, 1534, 1590, + 1594, 1595, 1597, 1599, 1600, 1532, 381, 70, 432, 665, + 1534, 793, 794, 134, 224, 295, 1380, 1532, 1529, 218, + 511, 1481, 251, 1487, 1572, 34, 70, 189, 260, 272, + 381, 467, 742, 777, 778, 781, 782, 783, 785, 786, + 787, 788, 790, 813, 815, 821, 828, 1528, 1533, 1539, + 1573, 985, 1205, 50, 894, 201, 37, 313, 1436, 1477, + 1532, 721, 1160, 1129, 742, 824, 134, 295, 1381, 1409, + 313, 427, 504, 1469, 1470, 614, 754, 494, 759, 7, + 13, 424, 1587, 1588, 1595, 1597, 576, 1628, 1190, 251, + 387, 1324, 1325, 1354, 1355, 13, 147, 224, 520, 521, + 522, 523, 524, 525, 542, 1198, 1199, 1200, 1652, 1542, + 62, 63, 132, 212, 284, 352, 404, 471, 491, 578, + 664, 1008, 1532, 1545, 1557, 1561, 1562, 13, 26, 38, + 62, 74, 100, 102, 104, 116, 166, 170, 173, 202, + 204, 212, 214, 240, 241, 262, 284, 313, 381, 407, + 418, 419, 422, 423, 443, 491, 504, 541, 559, 625, + 1008, 1042, 1432, 1436, 1437, 1439, 1448, 1528, 1558, 759, + 505, 695, 432, 631, 1114, 1115, 1116, 505, 695, 1424, + 1532, 1529, 1573, 1409, 822, 1211, 39, 222, 223, 565, + 1511, 1512, 1530, 1688, 1688, 1688, 1688, 1688, 1185, 658, + 486, 663, 1532, 235, 945, 945, 945, 1653, 1657, 1658, + 1659, 492, 705, 241, 241, 241, 559, 1446, 1445, 332, + 563, 590, 1068, 604, 109, 1534, 1535, 1536, 1594, 1070, + 844, 866, 1532, 1069, 1074, 6, 60, 152, 365, 431, + 433, 867, 559, 237, 380, 1104, 1105, 1106, 526, 1660, + 1661, 174, 1071, 1534, 1135, 818, 659, 1166, 1167, 1168, + 1169, 1525, 657, 730, 1532, 809, 158, 811, 1211, 808, + 576, 1366, 1367, 1525, 1149, 1366, 59, 367, 367, 447, + 1629, 843, 866, 6, 201, 1412, 1418, 1419, 1532, 1421, + 657, 657, 657, 1226, 657, 657, 657, 1211, 1260, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, - 657, 657, 1211, 657, 657, 657, 657, 1258, 1259, 1521, - 1532, 657, 657, 657, 657, 657, 657, 657, 657, 657, - 1211, 1209, 657, 657, 657, 657, 657, 657, 657, 657, + 657, 657, 657, 1210, 1210, 1210, 657, 1209, 657, 657, + 657, 565, 657, 657, 657, 657, 657, 657, 657, 657, + 657, 657, 657, 657, 657, 1211, 657, 657, 657, 657, + 1258, 1259, 1521, 1532, 657, 657, 657, 657, 657, 657, + 657, 657, 657, 1211, 1209, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, - 1209, 565, 657, 657, 657, 565, 657, 657, 657, 565, - 1512, 657, 1210, 1209, 1209, 657, 657, 657, 657, 657, - 657, 1226, 1226, 1226, 1211, 1647, 1648, 1532, 1244, 1532, - 17, 18, 386, 389, 640, 1215, 1216, 168, 205, 257, - 269, 358, 645, 646, 647, 1219, 35, 148, 254, 277, - 344, 441, 497, 498, 513, 648, 649, 650, 651, 652, - 653, 654, 655, 1217, 1226, 73, 388, 659, 1530, 657, - 665, 179, 1532, 722, 1532, 179, 1532, 866, 722, 721, - 1534, 876, 1437, 722, 721, 1365, 1372, 609, 679, 37, - 140, 166, 169, 206, 226, 289, 313, 418, 427, 442, - 460, 504, 507, 537, 1455, 1460, 1461, 1528, 1573, 90, - 664, 766, 767, 768, 769, 1532, 418, 1598, 474, 474, - 557, 562, 606, 622, 1210, 384, 1602, 556, 377, 1604, - 69, 504, 1601, 116, 622, 1603, 576, 377, 659, 20, - 645, 1310, 1311, 1580, 1532, 162, 1211, 237, 1101, 512, - 91, 427, 1482, 52, 89, 295, 1493, 1525, 1574, 1575, - 816, 1532, 201, 361, 791, 1533, 1533, 1532, 784, 162, - 777, 663, 672, 827, 666, 1157, 658, 1211, 279, 282, - 429, 895, 897, 664, 676, 1529, 289, 1161, 1535, 1537, - 1162, 1163, 1525, 622, 1126, 1573, 602, 827, 251, 1368, - 1382, 1383, 1525, 1472, 52, 1471, 659, 1530, 58, 68, - 82, 94, 95, 96, 113, 333, 351, 482, 544, 561, - 760, 762, 384, 1598, 377, 201, 377, 480, 1630, 1629, - 597, 1635, 1636, 1356, 50, 278, 1329, 1330, 1331, 201, - 1195, 198, 287, 1201, 652, 1202, 1203, 1205, 1200, 132, - 1544, 1560, 1562, 494, 471, 665, 37, 132, 495, 645, - 1009, 1010, 1393, 1534, 198, 1393, 1568, 1534, 1547, 664, - 1534, 37, 132, 1012, 1013, 1534, 665, 1548, 1546, 1393, - 505, 173, 277, 629, 1443, 657, 115, 174, 204, 419, - 559, 581, 622, 1443, 13, 955, 1534, 1329, 201, 254, - 1438, 1440, 72, 537, 198, 537, 556, 512, 72, 537, - 13, 45, 98, 103, 256, 331, 395, 514, 553, 1426, - 1427, 1428, 695, 226, 537, 696, 537, 1329, 1443, 1440, - 289, 165, 75, 421, 556, 580, 198, 1204, 537, 617, - 1117, 1118, 1117, 379, 636, 92, 659, 1117, 1117, 1367, - 1101, 827, 151, 659, 378, 1691, 552, 1692, 261, 463, - 1690, 658, 1636, 1638, 1639, 1640, 1641, 1191, 164, 670, - 1217, 1532, 721, 721, 11, 204, 419, 581, 709, 1205, - 1655, 1661, 1669, 1674, 1675, 1676, 1682, 204, 709, 1654, - 1661, 1669, 1676, 1682, 1656, 945, 945, 945, 945, 945, - 1447, 1452, 1511, 1532, 132, 942, 943, 952, 953, 1017, - 118, 1210, 664, 723, 6, 845, 723, 383, 117, 862, - 862, 862, 4, 1525, 1106, 485, 622, 722, 1661, 1136, - 1137, 1367, 819, 820, 254, 659, 401, 1177, 1179, 1180, - 731, 732, 1211, 1211, 742, 162, 802, 685, 183, 428, - 659, 1125, 1366, 61, 183, 187, 198, 330, 428, 1152, - 1153, 1154, 59, 447, 845, 862, 1369, 1370, 1525, 1526, - 1532, 659, 1415, 665, 1420, 1211, 1211, 13, 147, 1251, - 1312, 1251, 1251, 1251, 628, 1262, 1211, 1211, 1257, 1257, - 1211, 1211, 1211, 1211, 1224, 1225, 1211, 1211, 1211, 1211, - 147, 1251, 1312, 658, 129, 193, 222, 292, 371, 588, - 658, 1338, 1341, 1342, 658, 1211, 1211, 1211, 1211, 1521, - 1647, 123, 124, 125, 126, 127, 227, 228, 229, 230, - 334, 336, 337, 338, 345, 426, 483, 484, 626, 641, - 642, 1307, 1308, 1211, 1257, 119, 122, 569, 572, 1309, - 147, 1246, 1211, 1211, 1211, 1211, 1307, 1257, 1211, 1257, - 1259, 10, 659, 665, 147, 1251, 1211, 1211, 147, 1251, - 1211, 1211, 1257, 1257, 1257, 1211, 1211, 1211, 1257, 1214, - 1211, 1211, 1211, 1211, 1211, 1211, 658, 1211, 1251, 1251, - 1211, 1211, 147, 1251, 1211, 1308, 1308, 1211, 48, 270, - 577, 1211, 1211, 658, 1522, 1523, 1532, 1251, 1251, 1211, - 1211, 1211, 658, 659, 658, 486, 657, 1644, 1645, 1211, - 664, 1245, 1534, 665, 1211, 1211, 1211, 1213, 186, 370, - 583, 599, 1217, 13, 19, 1213, 1220, 1214, 1214, 657, - 1226, 1214, 1214, 1214, 1214, 277, 1214, 1214, 250, 1214, - 250, 1214, 1214, 1214, 1214, 1214, 35, 254, 277, 441, - 1534, 1226, 1211, 1232, 1532, 665, 377, 876, 1593, 1595, - 368, 624, 877, 878, 166, 1537, 1609, 1366, 1363, 664, - 680, 681, 289, 289, 289, 289, 52, 289, 695, 289, - 659, 1204, 1456, 122, 569, 572, 761, 771, 1243, 1515, - 1521, 1534, 659, 645, 556, 657, 1615, 1537, 1615, 1615, - 1615, 1535, 1536, 1537, 1610, 1614, 204, 419, 559, 1596, - 174, 178, 190, 420, 448, 456, 500, 551, 1600, 1532, - 191, 361, 1532, 1581, 1582, 235, 568, 1382, 1529, 231, - 606, 1211, 1483, 1172, 284, 1492, 1311, 659, 819, 201, - 1532, 1211, 294, 663, 34, 294, 454, 630, 1366, 1206, - 75, 657, 902, 903, 902, 903, 402, 905, 219, 264, - 1534, 33, 576, 1478, 659, 576, 659, 576, 1127, 1366, - 825, 1383, 1379, 401, 1276, 1277, 576, 1474, 695, 1470, - 659, 645, 198, 659, 1537, 1536, 1611, 204, 419, 1596, - 1532, 13, 147, 1643, 154, 391, 1349, 1350, 1357, 1326, - 1201, 292, 371, 475, 588, 1332, 1333, 1513, 1532, 153, - 486, 657, 661, 1197, 1263, 1264, 1265, 1266, 1267, 1278, - 1279, 1291, 629, 1313, 603, 254, 659, 1211, 1519, 1532, - 659, 1543, 1393, 1595, 1532, 73, 1015, 1211, 1537, 376, - 404, 565, 1569, 258, 432, 1563, 1564, 1565, 1566, 212, - 284, 491, 1559, 1393, 1532, 578, 1549, 1560, 659, 1551, - 13, 37, 132, 377, 1211, 1570, 537, 254, 1441, 1204, - 1204, 652, 945, 722, 722, 722, 1525, 722, 1525, 289, - 349, 537, 1435, 1435, 1443, 1532, 722, 1443, 1536, 1438, - 1443, 1529, 722, 1443, 255, 554, 188, 198, 1429, 659, - 173, 537, 1438, 1525, 1440, 1438, 1438, 1211, 1443, 1443, - 1443, 1112, 446, 527, 1119, 1120, 1111, 509, 1116, 1264, - 823, 1511, 406, 1693, 1325, 1331, 1642, 179, 702, 1593, - 1610, 204, 1675, 945, 945, 1205, 174, 945, 1661, 1534, - 1532, 1532, 1532, 1525, 943, 73, 1008, 143, 1534, 83, - 97, 266, 342, 367, 430, 526, 725, 727, 437, 592, - 863, 864, 243, 859, 860, 861, 868, 876, 878, 657, - 1529, 27, 321, 853, 854, 855, 868, 869, 870, 876, - 878, 846, 847, 853, 1067, 133, 253, 945, 1073, 659, - 405, 1138, 743, 132, 1170, 1532, 1168, 1525, 891, 1179, - 241, 264, 1040, 1181, 658, 659, 810, 56, 628, 803, - 805, 150, 236, 238, 296, 298, 299, 300, 301, 302, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 314, - 315, 316, 444, 445, 686, 687, 694, 1367, 198, 1155, - 604, 1153, 83, 362, 438, 593, 856, 857, 858, 868, - 872, 873, 874, 875, 876, 878, 608, 841, 659, 1416, - 1276, 665, 1420, 1419, 201, 652, 1532, 659, 658, 1251, - 658, 1252, 658, 658, 658, 1211, 158, 628, 1261, 20, - 658, 609, 658, 658, 658, 659, 658, 659, 658, 659, - 659, 659, 659, 609, 659, 1240, 658, 652, 658, 659, - 659, 658, 658, 658, 658, 201, 659, 658, 659, 1242, - 658, 659, 659, 659, 651, 658, 659, 658, 658, 657, - 1521, 1532, 1251, 658, 658, 658, 1251, 658, 659, 658, - 658, 658, 658, 658, 658, 659, 658, 254, 658, 659, - 659, 658, 659, 659, 658, 658, 658, 659, 201, 659, - 1251, 658, 658, 659, 659, 659, 658, 201, 1211, 201, - 1211, 201, 1211, 201, 658, 659, 658, 658, 658, 658, - 659, 20, 275, 659, 1031, 658, 1257, 1282, 1283, 1284, - 657, 1187, 1188, 597, 1649, 662, 1559, 495, 1532, 186, - 370, 583, 599, 657, 18, 1211, 1647, 172, 1317, 1214, - 1211, 1211, 1214, 657, 1226, 1214, 1205, 1236, 1237, 1238, - 657, 665, 1532, 1525, 877, 659, 1393, 1394, 659, 54, - 462, 1107, 1366, 1534, 659, 137, 1463, 695, 1461, 1366, - 1462, 769, 772, 773, 768, 372, 478, 770, 1532, 1616, - 1617, 576, 233, 631, 659, 1592, 652, 1525, 1532, 1608, - 1608, 1608, 191, 205, 267, 269, 361, 416, 645, 646, - 647, 1583, 1585, 1313, 795, 1376, 1537, 1173, 1174, 1175, - 1176, 1525, 242, 295, 432, 636, 1576, 1575, 251, 814, - 829, 831, 830, 657, 1205, 1338, 548, 906, 896, 12, - 898, 1211, 1529, 1537, 1537, 1163, 1525, 1366, 183, 428, - 607, 1130, 1131, 1132, 1211, 486, 494, 613, 614, 657, - 937, 1384, 1387, 657, 129, 193, 222, 292, 371, 588, - 1337, 13, 1473, 762, 761, 1595, 213, 201, 659, 1608, - 1608, 1608, 1637, 565, 1531, 1531, 664, 1351, 1352, 1353, - 1534, 1211, 1327, 1520, 177, 475, 375, 659, 1290, 1532, - 105, 244, 261, 273, 355, 470, 542, 1274, 1275, 659, - 1525, 1290, 1314, 215, 1318, 496, 1203, 1206, 1206, 665, - 1560, 198, 1570, 198, 132, 1014, 1016, 1534, 1393, 657, - 657, 275, 379, 636, 659, 659, 665, 665, 665, 1562, - 1211, 1563, 1550, 1552, 1553, 1529, 201, 1442, 1529, 1211, - 658, 1532, 721, 1443, 427, 1329, 1428, 1441, 1443, 1438, - 1525, 1443, 1443, 659, 602, 1121, 494, 742, 659, 198, - 1694, 1329, 941, 942, 631, 1591, 945, 722, 1532, 722, - 945, 945, 706, 586, 609, 1053, 377, 377, 698, 1394, - 1394, 353, 1529, 526, 526, 526, 526, 526, 485, 1529, - 1529, 1394, 659, 861, 115, 225, 393, 404, 411, 510, - 606, 707, 708, 1394, 1394, 659, 855, 848, 849, 868, - 869, 870, 6, 12, 14, 16, 28, 30, 60, 65, - 66, 71, 83, 91, 101, 118, 135, 144, 145, 152, - 160, 166, 176, 196, 239, 241, 248, 263, 287, 320, - 339, 343, 382, 387, 394, 396, 401, 404, 435, 449, - 450, 451, 452, 476, 534, 535, 536, 541, 557, 560, - 579, 584, 597, 889, 948, 950, 952, 953, 1079, 1083, - 1085, 1088, 1094, 1095, 1096, 1098, 1099, 1321, 1528, 1525, - 377, 717, 1075, 1137, 198, 131, 741, 744, 1178, 657, - 1211, 568, 806, 805, 645, 645, 645, 645, 645, 645, + 657, 657, 657, 1209, 565, 657, 657, 657, 565, 657, + 657, 657, 565, 1512, 657, 1210, 1209, 1209, 657, 657, + 657, 657, 657, 657, 1226, 1226, 1226, 1211, 1647, 1648, + 1532, 1244, 1532, 17, 18, 386, 389, 640, 1215, 1216, + 168, 205, 257, 269, 358, 645, 646, 647, 1219, 35, + 148, 254, 277, 344, 441, 497, 498, 513, 648, 649, + 650, 651, 652, 653, 654, 655, 1217, 1226, 73, 388, + 659, 1530, 657, 665, 179, 1532, 722, 1532, 179, 1532, + 866, 722, 721, 1534, 876, 1437, 722, 721, 1365, 1372, + 609, 679, 37, 140, 166, 169, 206, 226, 289, 313, + 418, 427, 442, 460, 504, 507, 537, 1455, 1460, 1461, + 1528, 1573, 90, 664, 766, 767, 768, 769, 1532, 418, + 1598, 474, 474, 557, 562, 606, 622, 1210, 384, 1602, + 556, 377, 1604, 69, 504, 1601, 116, 622, 1603, 576, + 377, 659, 20, 645, 1310, 1311, 1580, 1532, 162, 1211, + 237, 1101, 512, 91, 427, 1482, 52, 89, 295, 1493, + 1525, 1574, 1575, 816, 1532, 201, 361, 791, 1533, 1533, + 1532, 784, 162, 777, 663, 672, 827, 666, 1157, 658, + 1211, 279, 282, 429, 895, 897, 664, 676, 1529, 289, + 1161, 1535, 1537, 1162, 1163, 1525, 622, 1126, 1573, 602, + 827, 251, 1368, 1382, 1383, 1525, 1472, 52, 1471, 659, + 1530, 58, 68, 82, 94, 95, 96, 113, 333, 351, + 482, 544, 561, 760, 762, 384, 1598, 377, 201, 377, + 480, 1630, 1629, 597, 1635, 1636, 1356, 50, 278, 1329, + 1330, 1331, 201, 1195, 198, 287, 1201, 652, 1202, 1203, + 1205, 1200, 132, 1544, 1560, 1562, 494, 471, 665, 37, + 132, 495, 645, 1009, 1010, 1393, 1534, 198, 1393, 1568, + 1534, 1547, 664, 1534, 37, 132, 1012, 1013, 1534, 665, + 1548, 1546, 1393, 505, 173, 277, 629, 1443, 657, 115, + 174, 204, 419, 559, 581, 622, 1443, 13, 955, 1534, + 1329, 201, 254, 1438, 1440, 72, 537, 198, 537, 556, + 512, 72, 537, 13, 45, 98, 103, 256, 331, 395, + 514, 553, 1426, 1427, 1428, 695, 226, 537, 696, 537, + 1329, 1443, 1440, 289, 165, 75, 421, 556, 580, 198, + 1204, 537, 617, 1117, 1118, 1117, 379, 636, 92, 659, + 1117, 1117, 1367, 1101, 827, 151, 659, 378, 1691, 552, + 1692, 261, 463, 1690, 658, 1636, 1638, 1639, 1640, 1641, + 1191, 164, 670, 1217, 1532, 721, 721, 11, 204, 419, + 581, 709, 1205, 1655, 1661, 1669, 1674, 1675, 1676, 1682, + 204, 709, 1654, 1661, 1669, 1676, 1682, 1656, 945, 945, + 945, 945, 945, 1447, 1452, 1511, 1532, 132, 942, 943, + 952, 953, 1017, 118, 1210, 664, 723, 6, 845, 723, + 383, 117, 862, 862, 862, 4, 1525, 1106, 485, 622, + 722, 1661, 1136, 1137, 1367, 819, 820, 664, 254, 659, + 401, 1177, 1179, 1180, 731, 732, 1211, 1211, 742, 162, + 802, 685, 183, 428, 659, 1125, 1366, 61, 183, 187, + 198, 330, 428, 1152, 1153, 1154, 59, 447, 845, 862, + 1369, 1370, 1525, 1526, 1532, 659, 1415, 665, 1420, 1211, + 1211, 13, 147, 1251, 1312, 1251, 1251, 1251, 628, 1262, + 1211, 1211, 1257, 1257, 1211, 1211, 1211, 1211, 1224, 1225, + 1211, 1211, 1211, 1211, 147, 1251, 1312, 658, 129, 193, + 222, 292, 371, 588, 658, 1338, 1341, 1342, 658, 1211, + 1211, 1211, 1211, 1521, 1647, 123, 124, 125, 126, 127, + 227, 228, 229, 230, 334, 336, 337, 338, 345, 426, + 483, 484, 626, 641, 642, 1307, 1308, 1211, 1257, 119, + 122, 569, 572, 1309, 147, 1246, 1211, 1211, 1211, 1211, + 1307, 1257, 1211, 1257, 1259, 10, 659, 665, 147, 1251, + 1211, 1211, 147, 1251, 1211, 1211, 1257, 1257, 1257, 1211, + 1211, 1211, 1257, 1214, 1211, 1211, 1211, 1211, 1211, 1211, + 658, 1211, 1251, 1251, 1211, 1211, 147, 1251, 1211, 1308, + 1308, 1211, 48, 270, 577, 1211, 1211, 658, 1522, 1523, + 1532, 1251, 1251, 1211, 1211, 1211, 658, 659, 658, 486, + 657, 1644, 1645, 1211, 664, 1245, 1534, 665, 1211, 1211, + 1211, 1213, 186, 370, 583, 599, 1217, 13, 19, 1213, + 1220, 1214, 1214, 657, 1226, 1214, 1214, 1214, 1214, 277, + 1214, 1214, 250, 1214, 250, 1214, 1214, 1214, 1214, 1214, + 35, 254, 277, 441, 1534, 1226, 1211, 1232, 1532, 665, + 377, 876, 1593, 1595, 368, 624, 877, 878, 166, 1537, + 1609, 1366, 1363, 664, 680, 681, 289, 289, 289, 289, + 52, 289, 695, 289, 659, 1204, 1456, 122, 569, 572, + 761, 771, 1243, 1515, 1521, 1534, 659, 645, 556, 657, + 1615, 1537, 1615, 1615, 1615, 1535, 1536, 1537, 1610, 1614, + 204, 419, 559, 1596, 174, 178, 190, 420, 448, 456, + 500, 551, 1600, 1532, 191, 361, 1532, 1581, 1582, 235, + 568, 1382, 1529, 231, 606, 1211, 1483, 1172, 284, 1492, + 1311, 659, 819, 201, 1532, 1211, 294, 663, 34, 294, + 454, 630, 1366, 1206, 75, 657, 902, 903, 902, 903, + 402, 905, 219, 264, 1534, 33, 576, 1478, 659, 576, + 659, 576, 1127, 1366, 825, 1383, 1379, 401, 1276, 1277, + 576, 1474, 695, 1470, 659, 645, 198, 659, 1537, 1536, + 1611, 204, 419, 1596, 1532, 13, 147, 1643, 154, 391, + 1349, 1350, 1357, 1326, 1201, 292, 371, 475, 588, 1332, + 1333, 1513, 1532, 153, 486, 657, 661, 1197, 1263, 1264, + 1265, 1266, 1267, 1278, 1279, 1291, 629, 1313, 603, 254, + 659, 1211, 1519, 1532, 659, 1543, 1393, 1595, 1532, 73, + 1015, 1211, 1537, 376, 404, 565, 1569, 258, 432, 1563, + 1564, 1565, 1566, 212, 284, 491, 1559, 1393, 1532, 578, + 1549, 1560, 659, 1551, 13, 37, 132, 377, 1211, 1570, + 537, 254, 1441, 1204, 1204, 652, 945, 722, 722, 722, + 1525, 722, 1525, 289, 349, 537, 1435, 1435, 1443, 1532, + 722, 1443, 1536, 1438, 1443, 1529, 722, 1443, 255, 554, + 188, 198, 1429, 659, 173, 537, 1438, 1525, 1440, 1438, + 1438, 1211, 1443, 1443, 1443, 1112, 446, 527, 1119, 1120, + 1111, 509, 1116, 1264, 823, 1511, 406, 1693, 1325, 1331, + 1642, 179, 702, 1593, 1610, 204, 1675, 945, 945, 1205, + 174, 945, 1661, 1534, 1532, 1532, 1532, 1525, 943, 73, + 1008, 143, 1534, 83, 97, 266, 342, 367, 430, 526, + 725, 727, 437, 592, 863, 864, 243, 859, 860, 861, + 868, 876, 878, 657, 1529, 27, 321, 853, 854, 855, + 868, 869, 870, 876, 878, 846, 847, 853, 1067, 133, + 253, 945, 1073, 659, 405, 1138, 743, 1534, 132, 1170, + 1532, 1168, 1525, 891, 1179, 241, 264, 1040, 1181, 658, + 659, 810, 56, 628, 803, 805, 150, 236, 238, 296, + 298, 299, 300, 301, 302, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 314, 315, 316, 444, 445, 686, + 687, 694, 1367, 198, 1155, 604, 1153, 83, 362, 438, + 593, 856, 857, 858, 868, 872, 873, 874, 875, 876, + 878, 608, 841, 659, 1416, 1276, 665, 1420, 1419, 201, + 652, 1532, 659, 658, 1251, 658, 1252, 658, 658, 658, + 1211, 158, 628, 1261, 20, 658, 609, 658, 658, 658, + 659, 658, 659, 658, 659, 659, 659, 659, 609, 659, + 1240, 658, 652, 658, 659, 659, 658, 658, 658, 658, + 201, 659, 658, 659, 1242, 658, 659, 659, 659, 651, + 658, 659, 658, 658, 657, 1521, 1532, 1251, 658, 658, + 658, 1251, 658, 659, 658, 658, 658, 658, 658, 658, + 659, 658, 254, 658, 659, 659, 658, 659, 659, 658, + 658, 658, 659, 201, 659, 1251, 658, 658, 659, 659, + 659, 658, 201, 1211, 201, 1211, 201, 1211, 201, 658, + 659, 658, 658, 658, 658, 659, 20, 275, 659, 1031, + 658, 1257, 1282, 1283, 1284, 657, 1187, 1188, 597, 1649, + 662, 1559, 495, 1532, 186, 370, 583, 599, 657, 18, + 1211, 1647, 172, 1317, 1214, 1211, 1211, 1214, 657, 1226, + 1214, 1205, 1236, 1237, 1238, 657, 665, 1532, 1525, 877, + 659, 1393, 1394, 659, 54, 462, 1107, 1366, 1534, 659, + 137, 1463, 695, 1461, 1366, 1462, 769, 772, 773, 768, + 372, 478, 770, 1532, 1616, 1617, 576, 233, 631, 659, + 1592, 652, 1525, 1532, 1608, 1608, 1608, 191, 205, 267, + 269, 361, 416, 645, 646, 647, 1583, 1585, 1313, 795, + 1376, 1537, 1173, 1174, 1175, 1176, 1525, 242, 295, 432, + 636, 1576, 1575, 251, 814, 829, 831, 830, 657, 1205, + 1338, 548, 906, 896, 12, 898, 1211, 1529, 1537, 1537, + 1163, 1525, 1366, 183, 428, 607, 1130, 1131, 1132, 1211, + 486, 494, 613, 614, 657, 937, 1384, 1387, 657, 129, + 193, 222, 292, 371, 588, 1337, 13, 1473, 762, 761, + 1595, 213, 201, 659, 1608, 1608, 1608, 1637, 565, 1531, + 1531, 664, 1351, 1352, 1353, 1534, 1211, 1327, 1520, 177, + 475, 375, 659, 1290, 1532, 105, 244, 261, 273, 355, + 470, 542, 1274, 1275, 659, 1525, 1290, 1314, 215, 1318, + 496, 1203, 1206, 1206, 665, 1560, 198, 1570, 198, 132, + 1014, 1016, 1534, 1393, 657, 657, 275, 379, 636, 659, + 659, 665, 665, 665, 1562, 1211, 1563, 1550, 1552, 1553, + 1529, 201, 1442, 1529, 1211, 658, 1532, 721, 1443, 427, + 1329, 1428, 1441, 1443, 1438, 1525, 1443, 1443, 659, 602, + 1121, 494, 742, 659, 198, 1694, 1329, 941, 942, 631, + 1591, 945, 722, 1532, 722, 945, 945, 706, 586, 609, + 1053, 377, 377, 698, 1394, 1394, 353, 1529, 526, 526, + 526, 526, 526, 485, 1529, 1529, 1394, 659, 861, 115, + 225, 393, 404, 411, 510, 606, 707, 708, 1394, 1394, + 659, 855, 848, 849, 868, 869, 870, 6, 12, 14, + 16, 28, 30, 60, 65, 66, 71, 83, 91, 101, + 118, 135, 144, 145, 152, 160, 166, 176, 196, 239, + 241, 248, 263, 287, 320, 339, 343, 382, 387, 394, + 396, 401, 404, 435, 449, 450, 451, 452, 476, 534, + 535, 536, 541, 557, 560, 579, 584, 597, 889, 948, + 950, 952, 953, 1079, 1083, 1085, 1088, 1094, 1095, 1096, + 1098, 1099, 1321, 1528, 1525, 377, 717, 1075, 1137, 198, + 131, 741, 744, 1178, 657, 1211, 568, 806, 805, 645, + 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, - 645, 645, 645, 645, 645, 645, 645, 659, 604, 1394, - 1394, 1394, 1394, 659, 858, 288, 184, 850, 851, 852, - 868, 869, 870, 871, 874, 875, 876, 878, 1370, 1532, - 609, 1413, 1532, 1264, 665, 1420, 250, 1211, 658, 1211, - 568, 1211, 1211, 162, 37, 63, 119, 122, 130, 149, - 252, 357, 502, 572, 601, 1253, 1009, 1225, 1211, 1224, - 1257, 1211, 1211, 1009, 1253, 1257, 658, 250, 250, 1211, - 1211, 1211, 1257, 1211, 1211, 1211, 1211, 1211, 1214, 658, - 658, 1211, 1211, 1211, 1211, 1211, 1211, 1257, 250, 1211, - 1211, 1211, 658, 1211, 1211, 1211, 1211, 201, 1211, 201, - 1211, 201, 1211, 1211, 1211, 37, 63, 1026, 1027, 1028, - 1029, 1030, 1338, 1337, 658, 658, 1194, 1195, 1196, 1650, - 1651, 1652, 1187, 658, 486, 1643, 1534, 1211, 1647, 1213, - 658, 659, 658, 1226, 1307, 1307, 18, 1211, 1647, 1317, - 1211, 658, 659, 1256, 1257, 1532, 1364, 1595, 954, 1534, - 1537, 1107, 681, 645, 198, 631, 1457, 1458, 645, 659, - 658, 659, 1610, 50, 621, 631, 1612, 7, 1614, 665, - 665, 576, 576, 576, 1584, 1329, 742, 1384, 659, 1177, - 1179, 1531, 636, 284, 89, 789, 819, 821, 824, 822, - 899, 900, 901, 1532, 911, 1214, 50, 657, 913, 903, - 645, 657, 576, 201, 1133, 1131, 162, 938, 1385, 657, - 1390, 1395, 1390, 658, 937, 1386, 1518, 1519, 1522, 1532, - 1388, 1306, 1532, 645, 384, 1609, 1536, 201, 201, 201, - 1184, 1358, 1534, 659, 659, 21, 138, 1328, 1333, 1334, - 177, 1333, 1333, 1280, 1285, 1290, 1263, 261, 261, 390, - 1292, 273, 470, 1274, 1292, 1263, 1265, 1276, 1287, 1288, - 1211, 50, 220, 1315, 341, 20, 1207, 1529, 1532, 652, - 1532, 671, 1537, 565, 565, 432, 453, 489, 1567, 1565, - 1564, 1393, 1551, 659, 1555, 1557, 1561, 129, 193, 292, - 371, 588, 1339, 1433, 170, 625, 371, 1442, 1313, 1438, - 1120, 297, 694, 1122, 1405, 1406, 1522, 162, 1337, 335, - 7, 1532, 657, 466, 1683, 1670, 722, 197, 49, 219, - 479, 1059, 1059, 377, 1525, 1525, 277, 657, 880, 883, - 947, 949, 950, 1016, 1010, 118, 118, 133, 253, 222, - 292, 371, 588, 879, 1340, 1341, 1528, 861, 1529, 1529, - 1529, 1529, 1337, 1529, 1529, 658, 659, 879, 879, 855, - 659, 849, 81, 93, 401, 963, 973, 974, 1040, 1044, - 1045, 1100, 1394, 1100, 401, 1394, 1394, 1100, 1394, 401, - 401, 1394, 1394, 576, 143, 1394, 262, 557, 197, 401, - 417, 1040, 1100, 262, 1394, 401, 557, 143, 1394, 1394, - 1394, 1394, 1394, 1100, 401, 50, 1394, 1394, 891, 1394, - 401, 403, 20, 576, 645, 1109, 401, 401, 1394, 1394, - 1394, 1394, 146, 331, 1532, 1394, 1394, 401, 1394, 948, - 659, 888, 889, 1083, 657, 665, 962, 975, 1524, 1532, - 1393, 1662, 87, 481, 450, 1076, 13, 75, 1139, 99, - 180, 749, 775, 1532, 162, 777, 663, 657, 417, 1303, - 1304, 1305, 1532, 742, 1211, 657, 657, 657, 1337, 1529, - 1529, 1339, 1529, 1337, 1529, 1529, 1529, 1529, 1529, 1529, - 1529, 1337, 1337, 1529, 111, 367, 506, 1516, 1529, 1337, - 687, 1529, 1338, 879, 879, 858, 215, 1394, 659, 852, - 665, 1264, 1313, 1420, 1313, 1211, 658, 1211, 568, 657, - 1000, 1001, 1001, 1001, 657, 995, 996, 1000, 1255, 1001, - 252, 1001, 252, 658, 658, 658, 20, 1221, 658, 20, - 658, 658, 658, 1241, 1211, 1211, 658, 658, 659, 658, - 387, 1248, 659, 659, 658, 659, 658, 254, 1233, 1234, - 658, 658, 658, 658, 659, 658, 658, 1211, 658, 198, - 658, 658, 659, 658, 659, 659, 658, 1211, 658, 1211, - 658, 1211, 658, 658, 658, 657, 1021, 1021, 21, 138, - 468, 650, 1023, 1024, 1025, 659, 659, 1313, 1202, 1652, - 658, 1639, 1283, 1646, 665, 1063, 658, 1257, 1213, 658, - 659, 658, 1206, 1238, 658, 657, 1459, 432, 58, 68, - 82, 94, 95, 96, 113, 333, 351, 464, 482, 544, - 561, 774, 773, 1617, 631, 1620, 404, 565, 1534, 384, - 652, 652, 1610, 1610, 1610, 657, 796, 377, 1400, 1175, - 1525, 1179, 237, 1182, 1488, 792, 1532, 812, 1533, 812, - 826, 826, 826, 658, 659, 1206, 897, 401, 914, 915, - 1338, 899, 1537, 350, 454, 1198, 1391, 1392, 1522, 1396, - 659, 657, 1387, 658, 658, 659, 665, 1635, 658, 659, - 761, 201, 1611, 1611, 1611, 1008, 1011, 1352, 1520, 1334, - 597, 658, 1639, 1286, 662, 261, 1292, 1292, 1278, 261, - 377, 609, 1311, 1198, 1319, 1520, 1316, 1324, 1529, 1532, - 665, 658, 658, 84, 589, 432, 1570, 1554, 1556, 1329, - 1434, 1443, 645, 659, 659, 1404, 1393, 630, 1536, 1677, - 130, 252, 434, 543, 958, 657, 722, 710, 118, 1525, - 700, 701, 1525, 277, 937, 959, 960, 961, 962, 963, - 887, 888, 659, 949, 708, 849, 1062, 1524, 945, 66, - 197, 417, 598, 972, 1039, 945, 1040, 1041, 1041, 235, - 944, 132, 1532, 1524, 1158, 1339, 1337, 1371, 1337, 13, - 1084, 1092, 1093, 1532, 1158, 1529, 1529, 1008, 1394, 1337, - 264, 1372, 264, 1371, 1371, 954, 1093, 1394, 191, 267, - 367, 957, 1337, 132, 1532, 1339, 1339, 1371, 1158, 1322, - 1323, 1522, 132, 1337, 132, 1337, 1343, 890, 1529, 1158, - 1525, 1158, 1158, 86, 88, 132, 156, 192, 395, 439, - 956, 132, 1337, 132, 1337, 132, 1337, 1337, 1343, 1084, - 951, 6, 152, 1096, 959, 1532, 9, 191, 1108, 440, - 971, 972, 1033, 976, 665, 132, 1340, 1529, 1532, 657, - 1663, 1217, 1626, 24, 175, 711, 576, 144, 160, 713, - 13, 657, 1140, 217, 659, 745, 90, 112, 663, 1084, - 658, 659, 807, 690, 691, 1337, 692, 693, 1337, 688, - 689, 1337, 1532, 879, 852, 1532, 1313, 1324, 1307, 1211, - 129, 292, 371, 588, 1254, 371, 657, 996, 1002, 63, - 119, 122, 130, 149, 194, 252, 354, 357, 434, 572, - 601, 988, 989, 1222, 1253, 658, 1307, 1307, 1211, 50, - 488, 1247, 1211, 1211, 1257, 46, 355, 658, 631, 1235, - 1211, 1307, 1211, 1211, 1211, 1211, 658, 658, 658, 1338, - 658, 1031, 1026, 1024, 1026, 1027, 1337, 1318, 1194, 1644, - 1532, 658, 1257, 1207, 1339, 1464, 1465, 182, 287, 213, - 565, 20, 609, 1613, 457, 1618, 1618, 1618, 132, 1211, - 1398, 1399, 158, 159, 797, 155, 1182, 271, 237, 455, - 1494, 659, 901, 658, 219, 264, 916, 658, 659, 658, - 1202, 659, 1393, 1397, 1398, 1395, 1389, 1387, 1518, 1532, - 891, 1532, 1611, 1010, 1359, 1328, 1643, 1311, 1266, 1263, - 1278, 261, 261, 1263, 1278, 1268, 1269, 1301, 1302, 1202, - 632, 633, 659, 1320, 1328, 1211, 1329, 652, 1555, 1560, - 1329, 1529, 694, 1406, 1313, 1399, 733, 734, 735, 1532, - 512, 1684, 9, 33, 836, 377, 635, 699, 657, 657, - 1525, 658, 658, 659, 884, 1494, 949, 1158, 657, 264, - 264, 1041, 945, 1062, 1532, 945, 945, 1217, 152, 494, - 1084, 1524, 1081, 659, 1338, 1010, 1529, 1371, 1092, 1524, - 1524, 631, 1529, 975, 1084, 659, 1328, 894, 1084, 1089, - 1084, 657, 658, 1532, 1525, 36, 37, 42, 44, 46, - 47, 119, 122, 130, 149, 167, 192, 194, 208, 209, - 252, 281, 290, 291, 293, 327, 328, 329, 346, 347, - 348, 354, 357, 373, 374, 409, 410, 434, 490, 494, - 508, 566, 569, 572, 573, 574, 575, 615, 616, 642, - 986, 987, 988, 989, 990, 991, 992, 993, 1532, 1532, - 1664, 20, 415, 1211, 1211, 377, 717, 722, 377, 83, - 718, 1141, 240, 198, 1532, 986, 1006, 198, 198, 658, - 1304, 568, 658, 659, 658, 659, 658, 659, 278, 1335, - 658, 658, 658, 658, 658, 22, 37, 51, 595, 1008, - 1018, 1019, 659, 371, 1001, 995, 63, 1001, 252, 1223, - 658, 658, 658, 658, 1249, 1511, 658, 658, 659, 658, - 341, 266, 427, 658, 658, 658, 658, 658, 658, 1022, - 658, 659, 1315, 658, 658, 659, 18, 1466, 384, 1529, - 67, 259, 363, 529, 546, 637, 1606, 1607, 631, 1619, - 1619, 1619, 658, 659, 742, 793, 1401, 251, 1532, 657, - 904, 898, 917, 1532, 915, 939, 1392, 1399, 658, 1638, - 75, 1495, 1281, 377, 1271, 1278, 1278, 377, 1273, 1211, - 657, 1299, 1300, 1289, 1520, 419, 1344, 1324, 658, 659, - 736, 1529, 245, 254, 392, 737, 738, 739, 740, 136, - 247, 603, 837, 481, 1534, 657, 1060, 1061, 1532, 1060, - 658, 882, 881, 961, 20, 940, 1086, 1211, 945, 1062, - 1532, 609, 1052, 586, 1062, 1062, 179, 132, 132, 975, - 1152, 1093, 1015, 1524, 1107, 559, 1108, 1080, 1323, 1090, - 1092, 1082, 1462, 657, 1034, 1000, 1000, 1001, 1001, 995, - 413, 657, 995, 995, 1019, 63, 615, 988, 990, 1019, - 1019, 63, 616, 616, 619, 995, 657, 1001, 1001, 1001, - 1019, 1000, 1001, 977, 995, 619, 1000, 1019, 37, 1000, - 1020, 1000, 1000, 1001, 1002, 665, 658, 659, 1665, 1666, - 1307, 504, 1529, 151, 1077, 1144, 1532, 13, 657, 1142, - 746, 1015, 132, 776, 752, 753, 1337, 747, 748, 742, - 691, 693, 689, 475, 1333, 1414, 1018, 1009, 1020, 371, - 1019, 1250, 1520, 1211, 341, 181, 658, 1337, 1324, 1465, - 144, 565, 565, 565, 18, 1605, 213, 318, 319, 323, - 324, 325, 1621, 1622, 1399, 264, 559, 1205, 907, 657, - 613, 918, 1194, 161, 171, 385, 564, 1496, 1497, 280, - 1498, 1644, 1270, 609, 1272, 609, 1306, 196, 237, 608, - 1294, 1295, 1298, 1194, 1328, 1532, 1354, 1355, 1335, 1678, - 735, 1006, 658, 659, 735, 377, 711, 383, 1060, 658, - 659, 1328, 657, 658, 1638, 947, 657, 937, 402, 657, - 1087, 658, 1062, 1052, 586, 1059, 964, 1059, 966, 967, - 122, 569, 572, 650, 651, 1514, 1515, 1108, 1525, 1158, - 1091, 1130, 658, 1035, 1532, 317, 1036, 502, 601, 643, - 997, 998, 999, 1064, 1511, 997, 997, 1019, 619, 997, - 1064, 1019, 997, 28, 73, 83, 132, 207, 370, 377, - 417, 490, 598, 978, 979, 1003, 1004, 1005, 1032, 1217, - 1528, 528, 994, 1019, 1020, 1019, 1020, 997, 997, 1532, - 1532, 486, 657, 1667, 712, 719, 720, 658, 659, 1143, - 517, 519, 750, 751, 752, 755, 1217, 1532, 1211, 1183, - 177, 475, 465, 1417, 658, 659, 1328, 658, 658, 1329, - 64, 1606, 384, 1337, 1337, 1337, 1516, 371, 650, 1336, - 1622, 603, 1525, 911, 547, 912, 909, 910, 1532, 254, - 274, 83, 91, 118, 241, 320, 339, 362, 557, 934, - 935, 936, 1437, 50, 50, 161, 50, 1497, 530, 564, - 1499, 1500, 1211, 657, 1211, 657, 658, 1040, 1040, 1295, - 1345, 1201, 466, 1685, 739, 1205, 716, 717, 657, 658, - 83, 263, 631, 1047, 1051, 1055, 1058, 1528, 1061, 371, - 1048, 1050, 1055, 1057, 887, 937, 885, 1338, 914, 970, - 968, 1059, 657, 965, 657, 657, 1516, 1516, 891, 251, - 658, 659, 202, 400, 503, 377, 1037, 999, 658, 659, - 658, 1014, 1529, 366, 1007, 1514, 15, 603, 132, 264, - 20, 1005, 264, 370, 1393, 645, 1189, 1185, 631, 1668, - 531, 714, 777, 1532, 417, 1145, 1146, 1532, 659, 777, - 200, 177, 1202, 1520, 1344, 292, 371, 1407, 1408, 1522, - 1276, 1206, 1338, 658, 659, 920, 567, 1394, 1394, 143, - 143, 1394, 1394, 1394, 1394, 657, 929, 936, 166, 1511, - 1511, 50, 1511, 50, 50, 1500, 1306, 1306, 198, 1293, - 1293, 657, 1679, 724, 1671, 713, 707, 586, 609, 1046, - 1049, 1054, 1055, 1056, 1529, 1394, 398, 1097, 1098, 1099, - 1058, 1393, 1328, 658, 1097, 1057, 884, 658, 1635, 658, - 657, 657, 969, 1060, 657, 1060, 1060, 657, 1532, 136, - 603, 1019, 1511, 1019, 657, 1208, 366, 614, 657, 132, - 1340, 1529, 1532, 371, 658, 55, 66, 284, 1211, 163, - 715, 658, 659, 751, 1328, 1201, 659, 1393, 1489, 658, - 908, 910, 657, 922, 924, 919, 1529, 1529, 1394, 1394, - 1340, 1340, 1338, 1534, 548, 930, 931, 1394, 1511, 1511, - 1511, 658, 658, 215, 261, 387, 1297, 1296, 1205, 1346, - 1347, 1348, 1006, 725, 726, 1626, 1686, 1525, 718, 658, - 1059, 1059, 1097, 1056, 1337, 1528, 1099, 1098, 132, 1340, - 1529, 1532, 886, 1060, 1060, 657, 658, 1060, 658, 658, - 914, 54, 367, 462, 494, 1038, 1038, 658, 1338, 1208, - 985, 1638, 66, 384, 66, 1211, 1146, 1408, 1399, 1011, - 912, 657, 923, 924, 925, 326, 921, 924, 1529, 1529, - 932, 658, 659, 954, 50, 50, 657, 657, 1211, 658, - 659, 1680, 141, 777, 198, 151, 1638, 658, 658, 1060, - 1046, 658, 1047, 1048, 658, 5, 132, 370, 377, 377, - 658, 658, 384, 384, 1490, 658, 659, 326, 927, 928, - 1214, 933, 1534, 931, 1303, 1305, 1206, 1348, 724, 1205, - 719, 1033, 1046, 658, 1046, 603, 136, 405, 623, 980, - 475, 1501, 924, 659, 926, 934, 658, 658, 1681, 1672, - 1046, 1038, 1038, 83, 598, 981, 982, 983, 233, 1495, - 928, 658, 777, 157, 1529, 264, 983, 50, 1498, 477, - 1511, 237, 1502, 1673, 371, 657, 1504, 777, 280, 475, - 1503, 658, 664, 1505, 1506, 1522, 494, 1507, 1534, 658, - 659, 1508, 1509, 1522, 1506, 659, 1393, 1509, 1205, 1399, - 1206 + 645, 645, 659, 604, 1394, 1394, 1394, 1394, 659, 858, + 288, 184, 850, 851, 852, 868, 869, 870, 871, 874, + 875, 876, 878, 1370, 1532, 609, 1413, 1532, 1264, 665, + 1420, 250, 1211, 658, 1211, 568, 1211, 1211, 162, 37, + 63, 119, 122, 130, 149, 252, 357, 502, 572, 601, + 1253, 1009, 1225, 1211, 1224, 1257, 1211, 1211, 1009, 1253, + 1257, 658, 250, 250, 1211, 1211, 1211, 1257, 1211, 1211, + 1211, 1211, 1211, 1214, 658, 658, 1211, 1211, 1211, 1211, + 1211, 1211, 1257, 250, 1211, 1211, 1211, 658, 1211, 1211, + 1211, 1211, 201, 1211, 201, 1211, 201, 1211, 1211, 1211, + 37, 63, 1026, 1027, 1028, 1029, 1030, 1338, 1337, 658, + 658, 1194, 1195, 1196, 1650, 1651, 1652, 1187, 658, 486, + 1643, 1534, 1211, 1647, 1213, 658, 659, 658, 1226, 1307, + 1307, 18, 1211, 1647, 1317, 1211, 658, 659, 1256, 1257, + 1532, 1364, 1595, 954, 1534, 1537, 1107, 681, 645, 198, + 631, 1457, 1458, 645, 659, 658, 659, 1610, 50, 621, + 631, 1612, 7, 1614, 665, 665, 576, 576, 576, 1584, + 1329, 742, 1384, 659, 1177, 1179, 1531, 636, 284, 89, + 789, 819, 821, 824, 822, 899, 900, 901, 1532, 911, + 1214, 50, 657, 913, 903, 645, 657, 576, 201, 1133, + 1131, 162, 938, 1385, 657, 1390, 1395, 1390, 658, 937, + 1386, 1518, 1519, 1522, 1532, 1388, 1306, 1532, 645, 384, + 1609, 1536, 201, 201, 201, 1184, 1358, 1534, 659, 659, + 21, 138, 1328, 1333, 1334, 177, 1333, 1333, 1280, 1285, + 1290, 1263, 261, 261, 390, 1292, 273, 470, 1274, 1292, + 1263, 1265, 1276, 1287, 1288, 1211, 50, 220, 1315, 341, + 20, 1207, 1529, 1532, 652, 1532, 671, 1537, 565, 565, + 432, 453, 489, 1567, 1565, 1564, 1393, 1551, 659, 1555, + 1557, 1561, 129, 193, 292, 371, 588, 1339, 1433, 170, + 625, 371, 1442, 1313, 1438, 1120, 297, 694, 1122, 1405, + 1406, 1522, 162, 1337, 335, 7, 1532, 657, 466, 1683, + 1670, 722, 197, 49, 219, 479, 1059, 1059, 377, 1525, + 1525, 277, 657, 880, 883, 947, 949, 950, 1016, 1010, + 118, 118, 133, 253, 222, 292, 371, 588, 879, 1340, + 1341, 1528, 861, 1529, 1529, 1529, 1529, 1337, 1529, 1529, + 658, 659, 879, 879, 855, 659, 849, 81, 93, 401, + 963, 973, 974, 1040, 1044, 1045, 1100, 1394, 1100, 401, + 1394, 1394, 1100, 1394, 401, 401, 1394, 1394, 576, 143, + 1394, 262, 557, 197, 401, 417, 1040, 1100, 262, 1394, + 401, 557, 143, 1394, 1394, 1394, 1394, 1394, 1100, 401, + 50, 1394, 1394, 891, 1394, 401, 403, 20, 576, 645, + 1109, 401, 401, 1394, 1394, 1394, 1394, 146, 331, 1532, + 1394, 1394, 401, 1394, 948, 659, 888, 889, 1083, 657, + 665, 962, 975, 1524, 1532, 1393, 1662, 87, 481, 450, + 1076, 13, 75, 1139, 99, 180, 749, 775, 1532, 162, + 777, 663, 657, 417, 1303, 1304, 1305, 1532, 742, 1211, + 657, 657, 657, 1337, 1529, 1529, 1339, 1529, 1337, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1337, 1337, 1529, 111, + 367, 506, 1516, 1529, 1337, 687, 1529, 1338, 879, 879, + 858, 215, 1394, 659, 852, 665, 1264, 1313, 1420, 1313, + 1211, 658, 1211, 568, 657, 1000, 1001, 1001, 1001, 657, + 995, 996, 1000, 1255, 1001, 252, 1001, 252, 658, 658, + 658, 20, 1221, 658, 20, 658, 658, 658, 1241, 1211, + 1211, 658, 658, 659, 658, 387, 1248, 659, 659, 658, + 659, 658, 254, 1233, 1234, 658, 658, 658, 658, 659, + 658, 658, 1211, 658, 198, 658, 658, 659, 658, 659, + 659, 658, 1211, 658, 1211, 658, 1211, 658, 658, 658, + 657, 1021, 1021, 21, 138, 468, 650, 1023, 1024, 1025, + 659, 659, 1313, 1202, 1652, 658, 1639, 1283, 1646, 665, + 1063, 658, 1257, 1213, 658, 659, 658, 1206, 1238, 658, + 657, 1459, 432, 58, 68, 82, 94, 95, 96, 113, + 333, 351, 464, 482, 544, 561, 774, 773, 1617, 631, + 1620, 404, 565, 1534, 384, 652, 652, 1610, 1610, 1610, + 657, 796, 377, 1400, 1175, 1525, 1179, 237, 1182, 1488, + 792, 1532, 812, 1533, 812, 826, 826, 826, 658, 659, + 1206, 897, 401, 914, 915, 1338, 899, 1537, 350, 454, + 1198, 1391, 1392, 1522, 1396, 659, 657, 1387, 658, 658, + 659, 665, 1635, 658, 659, 761, 201, 1611, 1611, 1611, + 1008, 1011, 1352, 1520, 1334, 597, 658, 1639, 1286, 662, + 261, 1292, 1292, 1278, 261, 377, 609, 1311, 1198, 1319, + 1520, 1316, 1324, 1529, 1532, 665, 658, 658, 84, 589, + 432, 1570, 1554, 1556, 1329, 1434, 1443, 645, 659, 659, + 1404, 1393, 630, 1536, 1677, 130, 252, 434, 543, 958, + 657, 722, 710, 118, 1525, 700, 701, 1525, 277, 937, + 959, 960, 961, 962, 963, 887, 888, 659, 949, 708, + 849, 1062, 1524, 945, 66, 197, 417, 598, 972, 1039, + 945, 1040, 1041, 1041, 235, 944, 132, 1532, 1524, 1158, + 1339, 1337, 1371, 1337, 13, 1084, 1092, 1093, 1532, 1158, + 1529, 1529, 1008, 1394, 1337, 264, 1372, 264, 1371, 1371, + 954, 1093, 1394, 191, 267, 367, 957, 1337, 132, 1532, + 1339, 1339, 1371, 1158, 1322, 1323, 1522, 132, 1337, 132, + 1337, 1343, 890, 1529, 1158, 1525, 1158, 1158, 86, 88, + 132, 156, 192, 395, 439, 956, 132, 1337, 132, 1337, + 132, 1337, 1337, 1343, 1084, 951, 6, 152, 1096, 959, + 1532, 9, 191, 1108, 440, 971, 972, 1033, 976, 665, + 132, 1340, 1529, 1532, 657, 1663, 1217, 1626, 24, 175, + 711, 576, 144, 160, 713, 13, 657, 1140, 217, 659, + 745, 90, 112, 663, 1084, 658, 659, 807, 690, 691, + 1337, 692, 693, 1337, 688, 689, 1337, 1532, 879, 852, + 1532, 1313, 1324, 1307, 1211, 129, 292, 371, 588, 1254, + 371, 657, 996, 1002, 63, 119, 122, 130, 149, 194, + 252, 354, 357, 434, 572, 601, 988, 989, 1222, 1253, + 658, 1307, 1307, 1211, 50, 488, 1247, 1211, 1211, 1257, + 46, 355, 658, 631, 1235, 1211, 1307, 1211, 1211, 1211, + 1211, 658, 658, 658, 1338, 658, 1031, 1026, 1024, 1026, + 1027, 1337, 1318, 1194, 1644, 1532, 658, 1257, 1207, 1339, + 1464, 1465, 182, 287, 213, 565, 20, 609, 1613, 457, + 1618, 1618, 1618, 132, 1211, 1398, 1399, 158, 159, 797, + 155, 1182, 271, 237, 455, 1494, 659, 901, 658, 219, + 264, 916, 658, 659, 658, 1202, 659, 1393, 1397, 1398, + 1395, 1389, 1387, 1518, 1532, 891, 1532, 1611, 1010, 1359, + 1328, 1643, 1311, 1266, 1263, 1278, 261, 261, 1263, 1278, + 1268, 1269, 1301, 1302, 1202, 632, 633, 659, 1320, 1328, + 1211, 1329, 652, 1555, 1560, 1329, 1529, 694, 1406, 1313, + 1399, 733, 734, 735, 1532, 512, 1684, 9, 33, 836, + 377, 635, 699, 657, 657, 1525, 658, 658, 659, 884, + 1494, 949, 1158, 657, 264, 264, 1041, 945, 1062, 1532, + 945, 945, 1217, 152, 494, 1084, 1524, 1081, 659, 1338, + 1010, 1529, 1371, 1092, 1524, 1524, 631, 1529, 975, 1084, + 659, 1328, 894, 1084, 1089, 1084, 657, 658, 1532, 1525, + 36, 37, 42, 44, 46, 47, 119, 122, 130, 149, + 167, 192, 194, 208, 209, 252, 281, 290, 291, 293, + 327, 328, 329, 346, 347, 348, 354, 357, 373, 374, + 409, 410, 434, 490, 494, 508, 566, 569, 572, 573, + 574, 575, 615, 616, 642, 986, 987, 988, 989, 990, + 991, 992, 993, 1532, 1532, 1664, 20, 415, 1211, 1211, + 377, 717, 722, 377, 83, 718, 1141, 240, 198, 1532, + 986, 1006, 198, 198, 658, 1304, 568, 658, 659, 658, + 659, 658, 659, 278, 1335, 658, 658, 658, 658, 658, + 22, 37, 51, 595, 1008, 1018, 1019, 659, 371, 1001, + 995, 63, 1001, 252, 1223, 658, 658, 658, 658, 1249, + 1511, 658, 658, 659, 658, 341, 266, 427, 658, 658, + 658, 658, 658, 658, 1022, 658, 659, 1315, 658, 658, + 659, 18, 1466, 384, 1529, 67, 259, 363, 529, 546, + 637, 1606, 1607, 631, 1619, 1619, 1619, 658, 659, 742, + 793, 1401, 251, 1532, 657, 904, 898, 917, 1532, 915, + 939, 1392, 1399, 658, 1638, 75, 1495, 1281, 377, 1271, + 1278, 1278, 377, 1273, 1211, 657, 1299, 1300, 1289, 1520, + 419, 1344, 1324, 658, 659, 736, 1529, 245, 254, 392, + 737, 738, 739, 740, 136, 247, 603, 837, 481, 1534, + 657, 1060, 1061, 1532, 1060, 658, 882, 881, 961, 20, + 940, 1086, 1211, 945, 1062, 1532, 609, 1052, 586, 1062, + 1062, 179, 132, 132, 975, 1152, 1093, 1015, 1524, 1107, + 559, 1108, 1080, 1323, 1090, 1092, 1082, 1462, 657, 1034, + 1000, 1000, 1001, 1001, 995, 413, 657, 995, 995, 1019, + 63, 615, 988, 990, 1019, 1019, 63, 616, 616, 619, + 995, 657, 1001, 1001, 1001, 1019, 1000, 1001, 977, 995, + 619, 1000, 1019, 37, 1000, 1020, 1000, 1000, 1001, 1002, + 665, 658, 659, 1665, 1666, 1307, 504, 1529, 151, 1077, + 1144, 1532, 13, 657, 1142, 746, 1015, 132, 776, 752, + 753, 1337, 747, 748, 742, 691, 693, 689, 475, 1333, + 1414, 1018, 1009, 1020, 371, 1019, 1250, 1520, 1211, 341, + 181, 658, 1337, 1324, 1465, 144, 565, 565, 565, 18, + 1605, 213, 318, 319, 323, 324, 325, 1621, 1622, 1399, + 264, 559, 1205, 907, 657, 613, 918, 1194, 161, 171, + 385, 564, 1496, 1497, 280, 1498, 1644, 1270, 609, 1272, + 609, 1306, 196, 237, 608, 1294, 1295, 1298, 1194, 1328, + 1532, 1354, 1355, 1335, 1678, 735, 1006, 658, 659, 735, + 377, 711, 383, 1060, 658, 659, 1328, 657, 658, 1638, + 947, 657, 937, 402, 657, 1087, 658, 1062, 1052, 586, + 1059, 964, 1059, 966, 967, 122, 569, 572, 650, 651, + 1514, 1515, 1108, 1525, 1158, 1091, 1130, 658, 1035, 1532, + 317, 1036, 502, 601, 643, 997, 998, 999, 1064, 1511, + 997, 997, 1019, 619, 997, 1064, 1019, 997, 28, 73, + 83, 132, 207, 370, 377, 417, 490, 598, 978, 979, + 1003, 1004, 1005, 1032, 1217, 1528, 528, 994, 1019, 1020, + 1019, 1020, 997, 997, 1532, 1532, 486, 657, 1667, 712, + 719, 720, 658, 659, 1143, 517, 519, 750, 751, 752, + 755, 1217, 1532, 1211, 1183, 177, 475, 465, 1417, 658, + 659, 1328, 658, 658, 1329, 64, 1606, 384, 1337, 1337, + 1337, 1516, 371, 650, 1336, 1622, 603, 1525, 911, 547, + 912, 909, 910, 1532, 254, 274, 83, 91, 118, 241, + 320, 339, 362, 557, 934, 935, 936, 1437, 50, 50, + 161, 50, 1497, 530, 564, 1499, 1500, 1211, 657, 1211, + 657, 658, 1040, 1040, 1295, 1345, 1201, 466, 1685, 739, + 1205, 716, 717, 657, 658, 83, 263, 631, 1047, 1051, + 1055, 1058, 1528, 1061, 371, 1048, 1050, 1055, 1057, 887, + 937, 885, 1338, 914, 970, 968, 1059, 657, 965, 657, + 657, 1516, 1516, 891, 251, 658, 659, 202, 400, 503, + 377, 1037, 999, 658, 659, 658, 1014, 1529, 366, 1007, + 1514, 15, 603, 132, 264, 20, 1005, 264, 370, 1393, + 645, 1189, 1185, 631, 1668, 531, 714, 777, 1532, 417, + 1145, 1146, 1532, 659, 777, 200, 177, 1202, 1520, 1344, + 292, 371, 1407, 1408, 1522, 1276, 1206, 1338, 658, 659, + 920, 567, 1394, 1394, 143, 143, 1394, 1394, 1394, 1394, + 657, 929, 936, 166, 1511, 1511, 50, 1511, 50, 50, + 1500, 1306, 1306, 198, 1293, 1293, 657, 1679, 724, 1671, + 713, 707, 586, 609, 1046, 1049, 1054, 1055, 1056, 1529, + 1394, 398, 1097, 1098, 1099, 1058, 1393, 1328, 658, 1097, + 1057, 884, 658, 1635, 658, 657, 657, 969, 1060, 657, + 1060, 1060, 657, 1532, 136, 603, 1019, 1511, 1019, 657, + 1208, 366, 614, 657, 132, 1340, 1529, 1532, 371, 658, + 55, 66, 284, 1211, 163, 715, 658, 659, 751, 1328, + 1201, 659, 1393, 1489, 658, 908, 910, 657, 922, 924, + 919, 1529, 1529, 1394, 1394, 1340, 1340, 1338, 1534, 548, + 930, 931, 1394, 1511, 1511, 1511, 658, 658, 215, 261, + 387, 1297, 1296, 1205, 1346, 1347, 1348, 1006, 725, 726, + 1626, 1686, 1525, 718, 658, 1059, 1059, 1097, 1056, 1337, + 1528, 1099, 1098, 132, 1340, 1529, 1532, 886, 1060, 1060, + 657, 658, 1060, 658, 658, 914, 54, 367, 462, 494, + 1038, 1038, 658, 1338, 1208, 985, 1638, 66, 384, 66, + 1211, 1146, 1408, 1399, 1011, 912, 657, 923, 924, 925, + 326, 921, 924, 1529, 1529, 932, 658, 659, 954, 50, + 50, 657, 657, 1211, 658, 659, 1680, 141, 777, 198, + 151, 1638, 658, 658, 1060, 1046, 658, 1047, 1048, 658, + 5, 132, 370, 377, 377, 658, 658, 384, 384, 1490, + 658, 659, 326, 927, 928, 1214, 933, 1534, 931, 1303, + 1305, 1206, 1348, 724, 1205, 719, 1033, 1046, 658, 1046, + 603, 136, 405, 623, 980, 475, 1501, 924, 659, 926, + 934, 658, 658, 1681, 1672, 1046, 1038, 1038, 83, 598, + 981, 982, 983, 233, 1495, 928, 658, 777, 157, 1529, + 264, 983, 50, 1498, 477, 1511, 237, 1502, 1673, 371, + 657, 1504, 777, 280, 475, 1503, 658, 664, 1505, 1506, + 1522, 494, 1507, 1534, 658, 659, 1508, 1509, 1522, 1506, + 659, 1393, 1509, 1205, 1399, 1206 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -18680,114 +18786,114 @@ static const yytype_uint16 yyr1[] = 1129, 1128, 1130, 1130, 1131, 1131, 1132, 1132, 1132, 1133, 1133, 1135, 1134, 1136, 1136, 1137, 1138, 1138, 1139, 1139, 1140, 1141, 1140, 1142, 1143, 1142, 1144, 1144, 1144, 1145, - 1145, 1145, 1146, 1146, 1147, 1148, 1149, 1148, 1151, 1150, - 1152, 1152, 1153, 1153, 1154, 1154, 1154, 1154, 1154, 1154, - 1155, 1155, 1157, 1156, 1158, 1158, 1158, 1160, 1159, 1159, - 1161, 1161, 1162, 1162, 1163, 1165, 1164, 1166, 1166, 1167, - 1167, 1168, 1169, 1170, 1170, 1172, 1171, 1173, 1173, 1174, - 1174, 1175, 1176, 1178, 1177, 1180, 1179, 1181, 1181, 1182, - 1182, 1183, 1184, 1184, 1186, 1185, 1185, 1188, 1187, 1187, - 1190, 1189, 1191, 1191, 1191, 1193, 1192, 1194, 1195, 1196, - 1196, 1197, 1197, 1198, 1198, 1199, 1199, 1200, 1200, 1200, - 1201, 1201, 1201, 1202, 1202, 1202, 1203, 1203, 1204, 1205, - 1206, 1207, 1207, 1207, 1207, 1207, 1208, 1208, 1208, 1209, - 1209, 1209, 1210, 1210, 1211, 1211, 1211, 1211, 1211, 1211, - 1211, 1211, 1211, 1211, 1211, 1212, 1212, 1212, 1212, 1212, - 1212, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, - 1213, 1213, 1213, 1213, 1213, 1214, 1214, 1214, 1214, 1214, + 1145, 1145, 1146, 1146, 1147, 1147, 1148, 1149, 1148, 1151, + 1150, 1152, 1152, 1153, 1153, 1154, 1154, 1154, 1154, 1154, + 1154, 1155, 1155, 1157, 1156, 1158, 1158, 1158, 1160, 1159, + 1159, 1161, 1161, 1162, 1162, 1163, 1165, 1164, 1166, 1166, + 1167, 1167, 1168, 1169, 1170, 1170, 1172, 1171, 1173, 1173, + 1174, 1174, 1175, 1176, 1178, 1177, 1180, 1179, 1181, 1181, + 1182, 1182, 1183, 1184, 1184, 1186, 1185, 1185, 1188, 1187, + 1187, 1190, 1189, 1191, 1191, 1191, 1193, 1192, 1194, 1195, + 1196, 1196, 1197, 1197, 1198, 1198, 1199, 1199, 1200, 1200, + 1200, 1201, 1201, 1201, 1202, 1202, 1202, 1203, 1203, 1204, + 1205, 1206, 1207, 1207, 1207, 1207, 1207, 1208, 1208, 1208, + 1209, 1209, 1209, 1210, 1210, 1211, 1211, 1211, 1211, 1211, + 1211, 1211, 1211, 1211, 1211, 1211, 1212, 1212, 1212, 1212, + 1212, 1212, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, + 1213, 1213, 1213, 1213, 1213, 1213, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, - 1215, 1215, 1216, 1216, 1217, 1217, 1218, 1218, 1219, 1219, - 1219, 1219, 1219, 1219, 1220, 1220, 1221, 1221, 1222, 1222, - 1222, 1222, 1222, 1222, 1223, 1222, 1222, 1222, 1222, 1222, - 1224, 1225, 1225, 1226, 1226, 1226, 1226, 1226, 1226, 1226, + 1214, 1215, 1215, 1216, 1216, 1217, 1217, 1218, 1218, 1219, + 1219, 1219, 1219, 1219, 1219, 1220, 1220, 1221, 1221, 1222, + 1222, 1222, 1222, 1222, 1222, 1223, 1222, 1222, 1222, 1222, + 1222, 1224, 1225, 1225, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, - 1226, 1226, 1226, 1227, 1227, 1227, 1227, 1227, 1227, 1227, + 1226, 1226, 1226, 1226, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, - 1227, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1227, 1227, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, - 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1229, 1229, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, - 1229, 1229, 1229, 1229, 1230, 1230, 1230, 1230, 1230, 1230, - 1230, 1230, 1232, 1231, 1231, 1233, 1233, 1234, 1234, 1235, - 1235, 1236, 1236, 1237, 1237, 1238, 1239, 1239, 1239, 1239, - 1239, 1239, 1239, 1240, 1241, 1239, 1239, 1239, 1239, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1242, 1239, 1244, 1243, - 1245, 1245, 1245, 1246, 1246, 1247, 1247, 1248, 1249, 1248, - 1250, 1250, 1252, 1251, 1253, 1254, 1253, 1253, 1253, 1253, - 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1255, 1253, 1256, - 1256, 1257, 1257, 1258, 1258, 1259, 1259, 1260, 1260, 1261, - 1261, 1262, 1262, 1263, 1263, 1264, 1265, 1265, 1266, 1266, - 1267, 1268, 1267, 1269, 1267, 1267, 1270, 1267, 1271, 1267, - 1267, 1272, 1267, 1273, 1267, 1267, 1274, 1274, 1274, 1275, - 1275, 1276, 1276, 1277, 1279, 1278, 1278, 1278, 1280, 1281, - 1280, 1282, 1284, 1283, 1286, 1285, 1288, 1289, 1287, 1290, - 1291, 1292, 1292, 1293, 1293, 1293, 1293, 1294, 1294, 1296, - 1295, 1297, 1295, 1298, 1298, 1299, 1300, 1299, 1302, 1301, - 1303, 1303, 1304, 1304, 1305, 1305, 1306, 1306, 1307, 1307, + 1229, 1229, 1229, 1229, 1229, 1230, 1230, 1230, 1230, 1230, + 1230, 1230, 1230, 1232, 1231, 1231, 1233, 1233, 1234, 1234, + 1235, 1235, 1236, 1236, 1237, 1237, 1238, 1239, 1239, 1239, + 1239, 1239, 1239, 1239, 1240, 1241, 1239, 1239, 1239, 1239, + 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1242, 1239, 1244, + 1243, 1245, 1245, 1245, 1246, 1246, 1247, 1247, 1248, 1249, + 1248, 1250, 1250, 1252, 1251, 1253, 1254, 1253, 1253, 1253, + 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1255, 1253, + 1256, 1256, 1257, 1257, 1258, 1258, 1259, 1259, 1260, 1260, + 1261, 1261, 1262, 1262, 1263, 1263, 1264, 1265, 1265, 1266, + 1266, 1267, 1268, 1267, 1269, 1267, 1267, 1270, 1267, 1271, + 1267, 1267, 1272, 1267, 1273, 1267, 1267, 1274, 1274, 1274, + 1275, 1275, 1276, 1276, 1277, 1279, 1278, 1278, 1278, 1280, + 1281, 1280, 1282, 1284, 1283, 1286, 1285, 1288, 1289, 1287, + 1290, 1291, 1292, 1292, 1293, 1293, 1293, 1293, 1294, 1294, + 1296, 1295, 1297, 1295, 1298, 1298, 1299, 1300, 1299, 1302, + 1301, 1303, 1303, 1304, 1304, 1305, 1305, 1306, 1306, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, - 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1309, - 1309, 1309, 1309, 1310, 1310, 1310, 1311, 1311, 1312, 1312, - 1313, 1314, 1313, 1315, 1316, 1315, 1317, 1317, 1318, 1318, - 1319, 1319, 1320, 1320, 1320, 1321, 1322, 1322, 1323, 1324, - 1324, 1326, 1325, 1327, 1327, 1328, 1328, 1328, 1329, 1329, - 1330, 1331, 1331, 1331, 1332, 1332, 1332, 1333, 1333, 1333, - 1333, 1333, 1334, 1335, 1335, 1335, 1335, 1336, 1336, 1336, - 1337, 1337, 1337, 1337, 1337, 1337, 1338, 1338, 1338, 1338, - 1338, 1339, 1339, 1339, 1339, 1339, 1340, 1340, 1340, 1340, - 1340, 1341, 1342, 1342, 1343, 1343, 1344, 1345, 1344, 1346, - 1346, 1347, 1347, 1348, 1350, 1349, 1351, 1351, 1352, 1353, - 1353, 1354, 1354, 1356, 1355, 1358, 1359, 1357, 1357, 1357, - 1361, 1360, 1363, 1362, 1364, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1365, 1362, 1362, 1362, 1362, 1362, 1362, 1366, - 1366, 1367, 1368, 1369, 1369, 1370, 1371, 1371, 1372, 1372, - 1373, 1373, 1375, 1376, 1374, 1378, 1379, 1377, 1380, 1380, - 1380, 1380, 1381, 1381, 1382, 1382, 1383, 1384, 1384, 1384, - 1385, 1384, 1386, 1386, 1387, 1387, 1388, 1387, 1389, 1387, - 1390, 1390, 1391, 1391, 1392, 1393, 1393, 1394, 1394, 1396, - 1395, 1397, 1397, 1398, 1398, 1399, 1399, 1400, 1401, 1400, - 1403, 1404, 1402, 1405, 1405, 1406, 1407, 1407, 1408, 1409, - 1409, 1411, 1410, 1413, 1414, 1412, 1415, 1412, 1416, 1412, - 1417, 1417, 1418, 1418, 1419, 1419, 1420, 1420, 1421, 1421, - 1422, 1422, 1422, 1424, 1423, 1425, 1425, 1426, 1426, 1427, - 1427, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, - 1429, 1429, 1431, 1430, 1432, 1432, 1432, 1432, 1432, 1432, - 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1433, 1432, - 1434, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, + 1307, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, + 1309, 1309, 1309, 1309, 1310, 1310, 1310, 1311, 1311, 1312, + 1312, 1313, 1314, 1313, 1315, 1316, 1315, 1317, 1317, 1318, + 1318, 1319, 1319, 1320, 1320, 1320, 1321, 1322, 1322, 1323, + 1324, 1324, 1326, 1325, 1327, 1327, 1328, 1328, 1328, 1329, + 1329, 1330, 1331, 1331, 1331, 1332, 1332, 1332, 1333, 1333, + 1333, 1333, 1333, 1334, 1335, 1335, 1335, 1335, 1336, 1336, + 1336, 1337, 1337, 1337, 1337, 1337, 1337, 1338, 1338, 1338, + 1338, 1338, 1339, 1339, 1339, 1339, 1339, 1340, 1340, 1340, + 1340, 1340, 1341, 1342, 1342, 1343, 1343, 1344, 1345, 1344, + 1346, 1346, 1347, 1347, 1348, 1350, 1349, 1351, 1351, 1352, + 1353, 1353, 1354, 1354, 1356, 1355, 1358, 1359, 1357, 1357, + 1357, 1361, 1360, 1363, 1362, 1364, 1362, 1362, 1362, 1362, + 1362, 1362, 1362, 1365, 1362, 1362, 1362, 1362, 1362, 1362, + 1366, 1366, 1367, 1368, 1369, 1369, 1370, 1371, 1371, 1372, + 1372, 1373, 1373, 1375, 1376, 1374, 1378, 1379, 1377, 1380, + 1380, 1380, 1380, 1381, 1381, 1382, 1382, 1383, 1384, 1384, + 1384, 1385, 1384, 1386, 1386, 1387, 1387, 1388, 1387, 1389, + 1387, 1390, 1390, 1391, 1391, 1392, 1393, 1393, 1394, 1394, + 1396, 1395, 1397, 1397, 1398, 1398, 1399, 1399, 1400, 1401, + 1400, 1403, 1404, 1402, 1405, 1405, 1406, 1407, 1407, 1408, + 1409, 1409, 1411, 1410, 1413, 1414, 1412, 1415, 1412, 1416, + 1412, 1417, 1417, 1418, 1418, 1419, 1419, 1420, 1420, 1421, + 1421, 1422, 1422, 1422, 1424, 1423, 1425, 1425, 1426, 1426, + 1427, 1427, 1428, 1428, 1428, 1428, 1428, 1428, 1428, 1428, + 1428, 1429, 1429, 1431, 1430, 1432, 1432, 1432, 1432, 1432, + 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1433, + 1432, 1434, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, - 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1435, 1435, 1435, - 1436, 1436, 1437, 1437, 1438, 1438, 1439, 1439, 1440, 1440, - 1441, 1441, 1442, 1442, 1443, 1443, 1443, 1445, 1444, 1446, - 1444, 1447, 1447, 1447, 1447, 1447, 1448, 1448, 1449, 1450, - 1450, 1450, 1451, 1451, 1452, 1452, 1452, 1454, 1453, 1456, - 1455, 1455, 1457, 1457, 1458, 1459, 1458, 1460, 1460, 1461, + 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1435, 1435, + 1435, 1436, 1436, 1437, 1437, 1438, 1438, 1439, 1439, 1440, + 1440, 1441, 1441, 1442, 1442, 1443, 1443, 1443, 1445, 1444, + 1446, 1444, 1447, 1447, 1447, 1447, 1447, 1448, 1448, 1449, + 1450, 1450, 1450, 1451, 1451, 1452, 1452, 1452, 1454, 1453, + 1456, 1455, 1455, 1457, 1457, 1458, 1459, 1458, 1460, 1460, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, - 1461, 1461, 1461, 1461, 1461, 1462, 1462, 1463, 1463, 1464, - 1464, 1464, 1465, 1466, 1466, 1468, 1467, 1469, 1469, 1471, - 1470, 1472, 1470, 1470, 1473, 1473, 1474, 1474, 1476, 1475, - 1477, 1478, 1478, 1480, 1479, 1481, 1481, 1481, 1482, 1482, - 1482, 1482, 1483, 1483, 1484, 1485, 1487, 1488, 1489, 1490, - 1486, 1491, 1491, 1492, 1492, 1493, 1493, 1493, 1494, 1494, - 1494, 1495, 1495, 1496, 1496, 1497, 1497, 1497, 1497, 1498, - 1498, 1499, 1499, 1500, 1500, 1501, 1501, 1502, 1502, 1503, - 1503, 1504, 1504, 1504, 1505, 1505, 1506, 1506, 1507, 1507, - 1508, 1508, 1509, 1510, 1510, 1510, 1510, 1511, 1511, 1512, - 1512, 1512, 1513, 1514, 1514, 1514, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 1515, 1515, 1515, 1516, 1516, 1516, 1516, - 1516, 1517, 1517, 1517, 1518, 1518, 1519, 1519, 1520, 1521, - 1521, 1522, 1522, 1523, 1523, 1523, 1524, 1524, 1524, 1524, - 1525, 1525, 1525, 1526, 1526, 1527, 1528, 1528, 1529, 1530, - 1531, 1532, 1532, 1533, 1533, 1534, 1534, 1534, 1535, 1535, - 1535, 1536, 1536, 1537, 1538, 1538, 1538, 1538, 1538, 1538, + 1461, 1461, 1461, 1461, 1461, 1461, 1462, 1462, 1463, 1463, + 1464, 1464, 1464, 1465, 1466, 1466, 1468, 1467, 1469, 1469, + 1471, 1470, 1472, 1470, 1470, 1473, 1473, 1474, 1474, 1476, + 1475, 1477, 1478, 1478, 1480, 1479, 1481, 1481, 1481, 1482, + 1482, 1482, 1482, 1483, 1483, 1484, 1485, 1487, 1488, 1489, + 1490, 1486, 1491, 1491, 1492, 1492, 1493, 1493, 1493, 1494, + 1494, 1494, 1495, 1495, 1496, 1496, 1497, 1497, 1497, 1497, + 1498, 1498, 1499, 1499, 1500, 1500, 1501, 1501, 1502, 1502, + 1503, 1503, 1504, 1504, 1504, 1505, 1505, 1506, 1506, 1507, + 1507, 1508, 1508, 1509, 1510, 1510, 1510, 1510, 1511, 1511, + 1512, 1512, 1512, 1513, 1514, 1514, 1514, 1515, 1515, 1515, + 1515, 1515, 1515, 1515, 1515, 1515, 1515, 1516, 1516, 1516, + 1516, 1516, 1517, 1517, 1517, 1518, 1518, 1519, 1519, 1520, + 1521, 1521, 1522, 1522, 1523, 1523, 1523, 1524, 1524, 1524, + 1524, 1525, 1525, 1525, 1526, 1526, 1527, 1528, 1528, 1529, + 1530, 1531, 1532, 1532, 1533, 1533, 1534, 1534, 1534, 1535, + 1535, 1535, 1536, 1536, 1537, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, - 1538, 1538, 1538, 1538, 1538, 1539, 1539, 1539, 1539, 1539, + 1538, 1538, 1538, 1538, 1538, 1538, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, @@ -18818,43 +18924,43 @@ static const yytype_uint16 yyr1[] = 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539, - 1539, 1539, 1539, 1539, 1541, 1540, 1542, 1543, 1540, 1544, - 1544, 1546, 1545, 1547, 1545, 1548, 1545, 1550, 1549, 1549, - 1551, 1551, 1553, 1552, 1554, 1552, 1556, 1555, 1555, 1557, - 1557, 1557, 1558, 1558, 1558, 1558, 1559, 1559, 1559, 1559, - 1560, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, - 1561, 1562, 1562, 1562, 1563, 1563, 1563, 1563, 1564, 1565, - 1566, 1566, 1567, 1567, 1567, 1567, 1568, 1568, 1569, 1569, - 1569, 1570, 1570, 1570, 1570, 1570, 1572, 1571, 1573, 1573, - 1574, 1574, 1575, 1576, 1576, 1576, 1576, 1576, 1578, 1577, - 1579, 1579, 1580, 1579, 1581, 1581, 1582, 1582, 1583, 1583, - 1583, 1583, 1584, 1583, 1585, 1585, 1585, 1585, 1585, 1586, - 1587, 1587, 1587, 1587, 1587, 1587, 1588, 1588, 1589, 1590, - 1590, 1590, 1590, 1590, 1591, 1591, 1592, 1592, 1593, 1593, - 1594, 1595, 1595, 1596, 1596, 1597, 1597, 1598, 1598, 1599, - 1599, 1601, 1600, 1602, 1600, 1603, 1600, 1604, 1600, 1600, + 1539, 1539, 1539, 1539, 1539, 1541, 1540, 1542, 1543, 1540, + 1544, 1544, 1546, 1545, 1547, 1545, 1548, 1545, 1550, 1549, + 1549, 1551, 1551, 1553, 1552, 1554, 1552, 1556, 1555, 1555, + 1557, 1557, 1557, 1558, 1558, 1558, 1558, 1559, 1559, 1559, + 1559, 1560, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, + 1561, 1561, 1562, 1562, 1562, 1563, 1563, 1563, 1563, 1564, + 1565, 1566, 1566, 1567, 1567, 1567, 1567, 1568, 1568, 1569, + 1569, 1569, 1570, 1570, 1570, 1570, 1570, 1572, 1571, 1573, + 1573, 1574, 1574, 1575, 1576, 1576, 1576, 1576, 1576, 1578, + 1577, 1579, 1579, 1580, 1579, 1581, 1581, 1582, 1582, 1583, + 1583, 1583, 1583, 1584, 1583, 1585, 1585, 1585, 1585, 1585, + 1586, 1587, 1587, 1587, 1587, 1587, 1587, 1588, 1588, 1589, + 1590, 1590, 1590, 1590, 1590, 1591, 1591, 1592, 1592, 1593, + 1593, 1594, 1595, 1595, 1596, 1596, 1597, 1597, 1598, 1598, + 1599, 1599, 1601, 1600, 1602, 1600, 1603, 1600, 1604, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, - 1600, 1600, 1600, 1600, 1600, 1605, 1605, 1606, 1606, 1607, - 1607, 1607, 1608, 1608, 1608, 1608, 1609, 1609, 1610, 1610, - 1611, 1611, 1612, 1612, 1613, 1613, 1614, 1614, 1614, 1614, - 1614, 1615, 1615, 1616, 1616, 1617, 1618, 1618, 1618, 1618, - 1618, 1619, 1619, 1620, 1620, 1621, 1621, 1622, 1622, 1622, - 1622, 1622, 1622, 1624, 1623, 1625, 1626, 1626, 1627, 1627, - 1628, 1628, 1628, 1629, 1629, 1629, 1630, 1630, 1631, 1632, - 1632, 1633, 1634, 1635, 1635, 1637, 1636, 1638, 1638, 1639, - 1639, 1641, 1640, 1642, 1642, 1643, 1643, 1643, 1644, 1644, - 1645, 1646, 1645, 1647, 1648, 1649, 1650, 1650, 1651, 1651, - 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1653, 1653, - 1653, 1654, 1654, 1654, 1654, 1654, 1655, 1655, 1655, 1655, - 1655, 1655, 1656, 1656, 1657, 1658, 1659, 1659, 1659, 1660, - 1660, 1660, 1662, 1661, 1663, 1663, 1664, 1664, 1666, 1665, - 1667, 1667, 1668, 1668, 1668, 1668, 1670, 1671, 1672, 1673, - 1669, 1674, 1674, 1675, 1677, 1678, 1679, 1680, 1681, 1676, - 1683, 1684, 1685, 1686, 1682, 1687, 1687, 1687, 1687, 1687, - 1687, 1688, 1688, 1688, 1689, 1689, 1690, 1690, 1690, 1691, - 1691, 1692, 1693, 1692, 1694, 1694, 1695, 1695, 1696, 1696, - 1697 + 1600, 1600, 1600, 1600, 1600, 1600, 1605, 1605, 1606, 1606, + 1607, 1607, 1607, 1608, 1608, 1608, 1608, 1609, 1609, 1610, + 1610, 1611, 1611, 1612, 1612, 1613, 1613, 1614, 1614, 1614, + 1614, 1614, 1615, 1615, 1616, 1616, 1617, 1618, 1618, 1618, + 1618, 1618, 1619, 1619, 1620, 1620, 1621, 1621, 1622, 1622, + 1622, 1622, 1622, 1622, 1624, 1623, 1625, 1626, 1626, 1627, + 1627, 1628, 1628, 1628, 1629, 1629, 1629, 1630, 1630, 1631, + 1632, 1632, 1633, 1634, 1635, 1635, 1637, 1636, 1638, 1638, + 1639, 1639, 1641, 1640, 1642, 1642, 1643, 1643, 1643, 1644, + 1644, 1645, 1646, 1645, 1647, 1648, 1649, 1650, 1650, 1651, + 1651, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1653, + 1653, 1653, 1654, 1654, 1654, 1654, 1654, 1655, 1655, 1655, + 1655, 1655, 1655, 1656, 1656, 1657, 1658, 1659, 1659, 1659, + 1660, 1660, 1660, 1662, 1661, 1663, 1663, 1664, 1664, 1666, + 1665, 1667, 1667, 1668, 1668, 1668, 1668, 1670, 1671, 1672, + 1673, 1669, 1674, 1674, 1675, 1677, 1678, 1679, 1680, 1681, + 1676, 1683, 1684, 1685, 1686, 1682, 1687, 1687, 1687, 1687, + 1687, 1687, 1688, 1688, 1688, 1689, 1689, 1690, 1690, 1690, + 1691, 1691, 1692, 1693, 1692, 1694, 1694, 1695, 1695, 1696, + 1696, 1697 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -18972,108 +19078,108 @@ static const yytype_uint8 yyr2[] = 0, 4, 0, 1, 1, 2, 1, 1, 1, 0, 2, 0, 5, 1, 3, 2, 0, 3, 1, 4, 1, 0, 4, 1, 0, 4, 0, 1, 3, 0, - 1, 3, 1, 1, 2, 3, 0, 4, 0, 3, - 0, 1, 1, 2, 1, 1, 1, 1, 1, 2, - 0, 2, 0, 5, 0, 1, 1, 0, 4, 4, - 3, 5, 1, 3, 3, 0, 6, 1, 1, 1, - 3, 2, 3, 1, 1, 0, 6, 1, 1, 1, - 3, 3, 4, 0, 6, 0, 2, 0, 4, 0, - 2, 1, 2, 4, 0, 3, 3, 0, 4, 3, - 0, 3, 4, 3, 11, 0, 3, 8, 2, 0, - 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, - 0, 2, 4, 3, 1, 1, 3, 4, 0, 0, - 0, 0, 2, 2, 1, 1, 0, 2, 3, 0, - 2, 3, 0, 2, 3, 3, 3, 2, 3, 4, - 3, 4, 3, 4, 1, 3, 4, 3, 3, 6, - 1, 5, 6, 5, 7, 6, 8, 5, 6, 4, - 4, 5, 3, 4, 1, 3, 3, 3, 3, 3, - 3, 5, 5, 3, 3, 3, 3, 3, 3, 1, + 1, 3, 1, 1, 2, 6, 3, 0, 4, 0, + 3, 0, 1, 1, 2, 1, 1, 1, 1, 1, + 2, 0, 2, 0, 5, 0, 1, 1, 0, 4, + 4, 3, 5, 1, 3, 3, 0, 6, 1, 1, + 1, 3, 2, 3, 1, 1, 0, 6, 1, 1, + 1, 3, 3, 4, 0, 6, 0, 2, 0, 4, + 0, 2, 1, 2, 4, 0, 3, 3, 0, 4, + 3, 0, 3, 4, 3, 11, 0, 3, 8, 2, + 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, + 1, 0, 2, 4, 3, 1, 1, 3, 4, 0, + 0, 0, 0, 2, 2, 1, 1, 0, 2, 3, + 0, 2, 3, 0, 2, 3, 3, 3, 2, 3, + 4, 3, 4, 3, 4, 1, 3, 4, 3, 3, + 6, 1, 5, 6, 5, 7, 6, 8, 5, 6, + 4, 4, 5, 3, 4, 1, 3, 3, 3, 3, + 3, 3, 5, 5, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 2, 1, 2, - 1, 1, 1, 2, 0, 3, 1, 1, 2, 2, - 4, 1, 3, 1, 1, 1, 1, 1, 3, 1, - 1, 1, 1, 3, 2, 2, 2, 2, 3, 3, - 5, 6, 4, 4, 7, 2, 6, 5, 6, 6, - 4, 4, 5, 4, 6, 2, 2, 4, 4, 4, - 10, 6, 8, 6, 4, 4, 6, 4, 4, 4, - 6, 4, 7, 7, 7, 6, 6, 6, 6, 3, - 4, 6, 8, 2, 2, 8, 8, 6, 6, 2, - 6, 6, 8, 8, 6, 8, 6, 2, 8, 8, - 2, 2, 2, 6, 6, 4, 4, 8, 4, 4, - 4, 4, 3, 8, 6, 8, 4, 4, 6, 4, - 4, 4, 6, 8, 4, 3, 6, 4, 6, 5, - 8, 7, 10, 1, 6, 4, 4, 4, 4, 4, - 6, 4, 0, 5, 6, 2, 3, 0, 4, 0, - 3, 0, 1, 1, 3, 4, 4, 5, 4, 4, - 4, 5, 4, 0, 0, 7, 4, 5, 4, 5, - 4, 4, 4, 4, 4, 5, 0, 8, 0, 3, - 3, 1, 4, 0, 1, 0, 2, 0, 0, 4, - 4, 2, 0, 3, 2, 0, 4, 2, 1, 1, - 2, 1, 2, 1, 2, 2, 2, 0, 3, 0, - 1, 1, 3, 1, 3, 1, 3, 0, 1, 0, - 2, 4, 5, 1, 1, 1, 1, 4, 1, 3, - 3, 0, 6, 0, 8, 4, 0, 8, 0, 10, - 6, 0, 8, 0, 10, 6, 1, 2, 1, 1, - 2, 0, 1, 5, 0, 5, 3, 5, 2, 0, - 5, 1, 0, 3, 0, 3, 0, 0, 5, 0, - 1, 0, 1, 0, 2, 3, 3, 1, 1, 0, - 7, 0, 7, 1, 2, 0, 0, 2, 0, 2, - 0, 1, 1, 1, 1, 3, 1, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 2, 1, + 2, 1, 1, 1, 2, 0, 3, 1, 1, 2, + 2, 4, 1, 3, 1, 1, 1, 1, 1, 3, + 1, 1, 1, 1, 3, 2, 2, 2, 2, 3, + 3, 5, 6, 4, 4, 7, 2, 6, 5, 6, + 6, 4, 4, 5, 4, 6, 2, 2, 4, 4, + 4, 10, 6, 8, 6, 4, 4, 6, 4, 4, + 4, 6, 4, 7, 7, 7, 6, 6, 6, 6, + 3, 4, 6, 8, 2, 2, 8, 8, 6, 6, + 2, 6, 6, 8, 8, 6, 8, 6, 2, 8, + 8, 2, 2, 2, 6, 6, 4, 4, 8, 4, + 4, 4, 4, 3, 8, 6, 8, 4, 4, 6, + 4, 4, 4, 6, 8, 4, 3, 6, 4, 6, + 5, 8, 7, 10, 1, 6, 4, 4, 4, 4, + 4, 6, 4, 0, 5, 6, 2, 3, 0, 4, + 0, 3, 0, 1, 1, 3, 4, 4, 5, 4, + 4, 4, 5, 4, 0, 0, 7, 4, 5, 4, + 5, 4, 4, 4, 4, 4, 5, 0, 8, 0, + 3, 3, 1, 4, 0, 1, 0, 2, 0, 0, + 4, 4, 2, 0, 3, 2, 0, 4, 2, 1, + 1, 2, 1, 2, 1, 2, 2, 2, 0, 3, + 0, 1, 1, 3, 1, 3, 1, 3, 0, 1, + 0, 2, 4, 5, 1, 1, 1, 1, 4, 1, + 3, 3, 0, 6, 0, 8, 4, 0, 8, 0, + 10, 6, 0, 8, 0, 10, 6, 1, 2, 1, + 1, 2, 0, 1, 5, 0, 5, 3, 5, 2, + 0, 5, 1, 0, 3, 0, 3, 0, 0, 5, + 0, 1, 0, 1, 0, 2, 3, 3, 1, 1, + 0, 7, 0, 7, 1, 2, 0, 0, 2, 0, + 2, 0, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 1, 1, 0, 2, 0, 1, - 0, 0, 3, 0, 0, 3, 2, 0, 0, 4, - 4, 2, 0, 1, 1, 3, 3, 1, 2, 0, - 1, 0, 4, 4, 2, 0, 1, 1, 0, 1, - 1, 2, 5, 4, 1, 3, 3, 1, 1, 1, - 1, 1, 1, 0, 2, 3, 4, 1, 2, 2, + 1, 1, 1, 1, 0, 1, 1, 0, 2, 0, + 1, 0, 0, 3, 0, 0, 3, 2, 0, 0, + 4, 4, 2, 0, 1, 1, 3, 3, 1, 2, + 0, 1, 0, 4, 4, 2, 0, 1, 1, 0, + 1, 1, 2, 5, 4, 1, 3, 3, 1, 1, + 1, 1, 1, 1, 0, 2, 3, 4, 1, 2, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 0, 6, + 0, 1, 3, 1, 3, 0, 2, 3, 1, 1, + 2, 1, 0, 1, 0, 3, 0, 0, 7, 2, + 1, 0, 3, 0, 7, 0, 7, 4, 6, 4, + 4, 5, 5, 0, 6, 4, 4, 5, 6, 4, + 1, 3, 1, 2, 1, 3, 1, 0, 2, 0, + 2, 0, 1, 0, 0, 8, 0, 0, 6, 0, + 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, + 4, 0, 3, 3, 1, 2, 2, 0, 3, 0, + 5, 3, 1, 3, 1, 3, 1, 1, 0, 1, + 0, 4, 0, 1, 3, 1, 1, 1, 0, 0, + 6, 0, 0, 11, 3, 1, 3, 3, 1, 3, + 0, 1, 0, 4, 0, 0, 9, 0, 5, 0, + 6, 0, 2, 1, 3, 2, 4, 0, 2, 0, + 2, 1, 1, 1, 0, 4, 0, 1, 0, 1, + 1, 3, 1, 1, 2, 2, 2, 1, 1, 1, + 1, 0, 3, 0, 3, 2, 4, 4, 3, 4, + 4, 1, 3, 3, 3, 3, 6, 2, 2, 0, + 6, 0, 7, 5, 2, 1, 1, 1, 5, 5, + 2, 2, 1, 4, 3, 2, 3, 2, 2, 1, + 4, 4, 3, 3, 2, 3, 2, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, + 1, 1, 1, 0, 1, 0, 2, 0, 1, 1, + 1, 0, 2, 0, 2, 0, 3, 3, 0, 4, + 0, 4, 1, 1, 1, 1, 1, 1, 1, 3, + 1, 1, 1, 0, 3, 0, 1, 1, 0, 4, + 0, 4, 1, 0, 1, 4, 0, 3, 3, 1, + 2, 2, 2, 2, 3, 3, 2, 1, 1, 1, + 1, 2, 1, 1, 1, 2, 0, 1, 0, 5, + 0, 1, 3, 1, 0, 3, 0, 3, 3, 1, + 0, 4, 0, 3, 2, 0, 1, 0, 2, 0, + 3, 3, 2, 2, 0, 5, 0, 1, 1, 0, + 1, 1, 2, 1, 2, 1, 2, 0, 0, 0, + 0, 22, 1, 1, 0, 1, 0, 1, 1, 0, + 1, 1, 0, 2, 2, 1, 3, 4, 3, 3, + 0, 2, 2, 1, 3, 3, 0, 4, 0, 3, + 1, 1, 0, 3, 2, 3, 1, 1, 2, 0, + 2, 3, 1, 5, 1, 1, 2, 2, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, + 1, 1, 2, 2, 2, 1, 1, 3, 5, 1, + 1, 1, 1, 1, 3, 4, 5, 1, 5, 3, + 2, 1, 3, 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 0, 6, 0, - 1, 3, 1, 3, 0, 2, 3, 1, 1, 2, - 1, 0, 1, 0, 3, 0, 0, 7, 2, 1, - 0, 3, 0, 7, 0, 7, 4, 6, 4, 4, - 5, 5, 0, 6, 4, 4, 5, 6, 4, 1, - 3, 1, 2, 1, 3, 1, 0, 2, 0, 2, - 0, 1, 0, 0, 8, 0, 0, 6, 0, 1, - 1, 1, 1, 1, 2, 1, 1, 1, 3, 4, - 0, 3, 3, 1, 2, 2, 0, 3, 0, 5, - 3, 1, 3, 1, 3, 1, 1, 0, 1, 0, - 4, 0, 1, 3, 1, 1, 1, 0, 0, 6, - 0, 0, 11, 3, 1, 3, 3, 1, 3, 0, - 1, 0, 4, 0, 0, 9, 0, 5, 0, 6, - 0, 2, 1, 3, 2, 4, 0, 2, 0, 2, - 1, 1, 1, 0, 4, 0, 1, 0, 1, 1, - 3, 1, 1, 2, 2, 2, 1, 1, 1, 1, - 0, 3, 0, 3, 2, 4, 4, 3, 4, 4, - 1, 3, 3, 3, 3, 6, 2, 2, 0, 6, - 0, 7, 5, 2, 1, 1, 1, 5, 5, 2, - 2, 1, 4, 3, 2, 3, 2, 2, 1, 4, - 4, 3, 3, 2, 3, 2, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, - 1, 1, 0, 1, 0, 2, 0, 1, 1, 1, - 0, 2, 0, 2, 0, 3, 3, 0, 4, 0, - 4, 1, 1, 1, 1, 1, 1, 1, 3, 1, - 1, 1, 0, 3, 0, 1, 1, 0, 4, 0, - 4, 1, 0, 1, 4, 0, 3, 3, 1, 2, - 2, 2, 2, 3, 3, 2, 1, 1, 1, 1, - 2, 1, 1, 1, 2, 0, 1, 0, 5, 0, - 1, 3, 1, 0, 3, 0, 3, 3, 1, 0, - 4, 0, 3, 2, 0, 1, 0, 2, 0, 3, - 3, 2, 2, 0, 5, 0, 1, 1, 0, 1, - 1, 2, 1, 2, 1, 2, 0, 0, 0, 0, - 22, 1, 1, 0, 1, 0, 1, 1, 0, 1, - 1, 0, 2, 2, 1, 3, 4, 3, 3, 0, - 2, 2, 1, 3, 3, 0, 4, 0, 3, 1, - 1, 0, 3, 2, 3, 1, 1, 2, 0, 2, - 3, 1, 5, 1, 1, 2, 2, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, - 1, 2, 2, 2, 1, 1, 3, 5, 1, 1, - 1, 1, 1, 3, 4, 5, 1, 5, 3, 2, - 1, 3, 2, 2, 4, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -19110,43 +19216,43 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 3, 0, 0, 7, 1, - 3, 0, 3, 0, 3, 0, 3, 0, 3, 2, - 0, 2, 0, 2, 0, 4, 0, 3, 1, 1, - 1, 1, 0, 1, 1, 1, 0, 2, 2, 2, - 3, 3, 4, 6, 2, 3, 3, 3, 5, 2, - 3, 1, 3, 3, 1, 1, 3, 3, 1, 3, - 2, 2, 2, 2, 2, 1, 1, 3, 1, 4, - 4, 1, 1, 1, 1, 1, 0, 4, 1, 1, - 1, 3, 3, 1, 1, 2, 2, 2, 0, 3, - 4, 3, 0, 7, 1, 2, 1, 1, 1, 1, - 1, 1, 0, 5, 1, 1, 1, 1, 1, 3, - 6, 6, 6, 7, 5, 3, 4, 1, 3, 8, - 8, 8, 6, 4, 0, 3, 0, 3, 1, 3, - 2, 1, 1, 0, 1, 1, 2, 0, 1, 1, - 3, 0, 3, 0, 3, 0, 3, 0, 3, 1, + 1, 1, 1, 1, 1, 0, 3, 0, 0, 7, + 1, 3, 0, 3, 0, 3, 0, 3, 0, 3, + 2, 0, 2, 0, 2, 0, 4, 0, 3, 1, + 1, 1, 1, 0, 1, 1, 1, 0, 2, 2, + 2, 3, 3, 4, 6, 2, 3, 3, 3, 5, + 2, 3, 1, 3, 3, 1, 1, 3, 3, 1, + 3, 2, 2, 2, 2, 2, 1, 1, 3, 1, + 4, 4, 1, 1, 1, 1, 1, 0, 4, 1, + 1, 1, 3, 3, 1, 1, 2, 2, 2, 0, + 3, 4, 3, 0, 7, 1, 2, 1, 1, 1, + 1, 1, 1, 0, 5, 1, 1, 1, 1, 1, + 3, 6, 6, 6, 7, 5, 3, 4, 1, 3, + 8, 8, 8, 6, 4, 0, 3, 0, 3, 1, + 3, 2, 1, 1, 0, 1, 1, 2, 0, 1, + 1, 3, 0, 3, 0, 3, 0, 3, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 1, 3, 2, 2, 2, 2, 2, 2, - 2, 2, 1, 1, 2, 0, 1, 3, 1, 2, - 2, 2, 1, 3, 3, 1, 1, 3, 1, 3, - 1, 3, 1, 1, 1, 1, 4, 5, 4, 6, - 1, 0, 3, 3, 1, 1, 0, 2, 2, 2, - 2, 0, 2, 0, 3, 2, 1, 2, 2, 2, - 2, 2, 2, 0, 3, 1, 0, 1, 0, 1, - 0, 3, 2, 0, 1, 2, 0, 1, 4, 4, - 5, 2, 3, 0, 1, 0, 4, 1, 1, 0, - 1, 0, 2, 2, 1, 0, 1, 1, 3, 4, - 1, 0, 5, 3, 0, 0, 0, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 3, 3, 3, 3, 0, - 3, 3, 0, 8, 0, 3, 1, 3, 0, 3, - 2, 4, 0, 3, 4, 4, 0, 0, 0, 0, - 18, 2, 1, 7, 0, 0, 0, 0, 0, 15, - 0, 0, 0, 0, 12, 4, 4, 3, 4, 3, - 2, 1, 3, 5, 1, 1, 0, 1, 1, 0, - 2, 0, 0, 3, 0, 2, 5, 3, 3, 3, - 1 + 1, 2, 2, 1, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 1, 1, 2, 0, 1, 3, 1, + 2, 2, 2, 1, 3, 3, 1, 1, 3, 1, + 3, 1, 3, 1, 1, 1, 1, 4, 5, 4, + 6, 1, 0, 3, 3, 1, 1, 0, 2, 2, + 2, 2, 0, 2, 0, 3, 2, 1, 2, 2, + 2, 2, 2, 2, 0, 3, 1, 0, 1, 0, + 1, 0, 3, 2, 0, 1, 2, 0, 1, 4, + 4, 5, 2, 3, 0, 1, 0, 4, 1, 1, + 0, 1, 0, 2, 2, 1, 0, 1, 1, 3, + 4, 1, 0, 5, 3, 0, 0, 0, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 3, 3, 3, 3, + 0, 3, 3, 0, 8, 0, 3, 1, 3, 0, + 3, 2, 4, 0, 3, 4, 4, 0, 0, 0, + 0, 18, 2, 1, 7, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 12, 4, 4, 3, 4, + 3, 2, 1, 3, 5, 1, 1, 0, 1, 1, + 0, 2, 0, 0, 3, 0, 2, 5, 3, 3, + 3, 1 }; @@ -19838,7 +19944,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); thd->lex->sql_command= SQLCOM_EMPTY_QUERY; YYLIP->found_semicolon= NULL; } -#line 19842 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 19948 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 3: @@ -19865,7 +19971,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lip->found_semicolon= NULL; } } -#line 19869 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 19975 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 5: @@ -19874,7 +19980,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* Single query, not terminated. */ YYLIP->found_semicolon= NULL; } -#line 19878 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 19984 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 67: @@ -19884,7 +19990,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sql_command= SQLCOM_DEALLOCATE_PREPARE; lex->prepared_stmt_name= (yyvsp[0].lex_str); } -#line 19888 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 19994 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 70: @@ -19894,7 +20000,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sql_command= SQLCOM_PREPARE; lex->prepared_stmt_name= (yyvsp[-2].lex_str); } -#line 19898 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20004 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 71: @@ -19904,7 +20010,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->prepared_stmt_code= (yyvsp[0].lex_str); lex->prepared_stmt_code_is_varref= FALSE; } -#line 19908 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20014 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 72: @@ -19914,7 +20020,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->prepared_stmt_code= (yyvsp[0].lex_str); lex->prepared_stmt_code_is_varref= TRUE; } -#line 19918 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20024 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 73: @@ -19924,13 +20030,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sql_command= SQLCOM_EXECUTE; lex->prepared_stmt_name= (yyvsp[0].lex_str); } -#line 19928 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20034 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 74: #line 2183 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 19934 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20040 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 79: @@ -19942,7 +20048,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); thd->mem_root)) MYSQL_YYABORT; } -#line 19946 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20052 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 80: @@ -19951,7 +20057,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->sphead) my_yyabort_error((ER_SP_BADSTATEMENT, MYF(0), "HELP")); } -#line 19955 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20061 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 81: @@ -19961,7 +20067,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sql_command= SQLCOM_HELP; lex->help_arg= (yyvsp[0].lex_str).str; } -#line 19965 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20071 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 82: @@ -19969,13 +20075,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->sql_command = SQLCOM_CHANGE_MASTER; } -#line 19973 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20079 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 83: #line 2231 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 19979 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20085 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 86: @@ -19983,7 +20089,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->mi.host = (yyvsp[0].lex_str).str; } -#line 19987 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20093 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 87: @@ -19991,7 +20097,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->mi.user = (yyvsp[0].lex_str).str; } -#line 19995 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20101 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 88: @@ -19999,7 +20105,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->mi.password = (yyvsp[0].lex_str).str; } -#line 20003 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20109 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 89: @@ -20007,7 +20113,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->mi.port = (yyvsp[0].ulong_num); } -#line 20011 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20117 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 90: @@ -20015,7 +20121,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->mi.connect_retry = (yyvsp[0].ulong_num); } -#line 20019 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20125 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 91: @@ -20024,7 +20130,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->mi.ssl= (yyvsp[0].ulong_num) ? LEX_MASTER_INFO::LEX_MI_ENABLE : LEX_MASTER_INFO::LEX_MI_DISABLE; } -#line 20028 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20134 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 92: @@ -20032,7 +20138,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->mi.ssl_ca= (yyvsp[0].lex_str).str; } -#line 20036 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20142 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 93: @@ -20040,7 +20146,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->mi.ssl_capath= (yyvsp[0].lex_str).str; } -#line 20044 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20150 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 94: @@ -20048,7 +20154,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->mi.ssl_cert= (yyvsp[0].lex_str).str; } -#line 20052 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20158 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 95: @@ -20056,7 +20162,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->mi.ssl_cipher= (yyvsp[0].lex_str).str; } -#line 20060 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20166 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 96: @@ -20064,7 +20170,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->mi.ssl_key= (yyvsp[0].lex_str).str; } -#line 20068 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20174 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 97: @@ -20073,7 +20179,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->mi.ssl_verify_server_cert= (yyvsp[0].ulong_num) ? LEX_MASTER_INFO::LEX_MI_ENABLE : LEX_MASTER_INFO::LEX_MI_DISABLE; } -#line 20077 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20183 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 98: @@ -20081,7 +20187,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->mi.ssl_crl= (yyvsp[0].lex_str).str; } -#line 20085 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20191 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 99: @@ -20089,7 +20195,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->mi.ssl_crlpath= (yyvsp[0].lex_str).str; } -#line 20093 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20199 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 100: @@ -20120,7 +20226,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } Lex->mi.heartbeat_opt= LEX_MASTER_INFO::LEX_MI_ENABLE; } -#line 20124 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20230 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 101: @@ -20128,7 +20234,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->mi.repl_ignore_server_ids_opt= LEX_MASTER_INFO::LEX_MI_ENABLE; } -#line 20132 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20238 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 102: @@ -20136,7 +20242,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->mi.repl_do_domain_ids_opt= LEX_MASTER_INFO::LEX_MI_ENABLE; } -#line 20140 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20246 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 103: @@ -20144,7 +20250,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->mi.repl_ignore_domain_ids_opt= LEX_MASTER_INFO::LEX_MI_ENABLE; } -#line 20148 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20254 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 108: @@ -20152,7 +20258,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { insert_dynamic(&Lex->mi.repl_ignore_server_ids, (uchar*) &((yyvsp[0].ulong_num))); } -#line 20156 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20262 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 112: @@ -20160,7 +20266,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { insert_dynamic(&Lex->mi.repl_do_domain_ids, (uchar*) &((yyvsp[0].ulong_num))); } -#line 20164 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20270 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 116: @@ -20168,7 +20274,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { insert_dynamic(&Lex->mi.repl_ignore_domain_ids, (uchar*) &((yyvsp[0].ulong_num))); } -#line 20172 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20278 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 117: @@ -20176,7 +20282,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->mi.log_file_name = (yyvsp[0].lex_str).str; } -#line 20180 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20286 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 118: @@ -20195,7 +20301,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); */ Lex->mi.pos= MY_MAX(BIN_LOG_HEADER_SIZE, (yyvsp[0].ulonglong_number)); } -#line 20199 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20305 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 119: @@ -20203,7 +20309,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->mi.relay_log_name = (yyvsp[0].lex_str).str; } -#line 20207 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20313 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 120: @@ -20213,7 +20319,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* Adjust if < BIN_LOG_HEADER_SIZE (same comment as Lex->mi.pos) */ Lex->mi.relay_log_pos= MY_MAX(BIN_LOG_HEADER_SIZE, Lex->mi.relay_log_pos); } -#line 20217 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20323 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 121: @@ -20223,7 +20329,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "MASTER_use_gtid")); Lex->mi.use_gtid_opt= LEX_MASTER_INFO::LEX_GTID_CURRENT_POS; } -#line 20227 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20333 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 122: @@ -20233,7 +20339,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "MASTER_use_gtid")); Lex->mi.use_gtid_opt= LEX_MASTER_INFO::LEX_GTID_SLAVE_POS; } -#line 20237 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20343 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 123: @@ -20243,7 +20349,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "MASTER_use_gtid")); Lex->mi.use_gtid_opt= LEX_MASTER_INFO::LEX_GTID_NO; } -#line 20247 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20353 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 124: @@ -20252,7 +20358,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= thd->lex; lex->mi.connection_name= null_lex_str; } -#line 20256 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20362 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 126: @@ -20264,7 +20370,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_WRONG_ARGUMENTS, MYF(0), "MASTER_CONNECTION_NAME")); #endif } -#line 20268 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20374 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 127: @@ -20288,7 +20394,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->name= null_lex_str; lex->create_last_non_select_table= lex->last_table(); } -#line 20292 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20398 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 128: @@ -20308,7 +20414,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } create_table_set_open_action_and_adjust_tables(lex); } -#line 20312 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20418 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 129: @@ -20319,13 +20425,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->add_create_index((yyvsp[-6].key_type), (yyvsp[-3].lex_str), (yyvsp[-2].key_alg), (yyvsp[-7].object_ddl_options) | (yyvsp[-4].object_ddl_options))) MYSQL_YYABORT; } -#line 20323 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20429 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 130: #line 2500 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 20329 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20435 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 131: @@ -20336,13 +20442,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->add_create_index((yyvsp[-5].key_type), (yyvsp[-2].lex_str), HA_KEY_ALG_UNDEF, (yyvsp[-6].object_ddl_options) | (yyvsp[-3].object_ddl_options))) MYSQL_YYABORT; } -#line 20340 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20446 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 132: #line 2510 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 20346 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20452 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 133: @@ -20353,13 +20459,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->add_create_index((yyvsp[-5].key_type), (yyvsp[-2].lex_str), HA_KEY_ALG_UNDEF, (yyvsp[-6].object_ddl_options) | (yyvsp[-3].object_ddl_options))) MYSQL_YYABORT; } -#line 20357 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20463 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 134: #line 2520 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 20363 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20469 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 135: @@ -20368,7 +20474,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.default_table_charset= NULL; Lex->create_info.used_fields= 0; } -#line 20372 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20478 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 136: @@ -20379,7 +20485,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; lex->name= (yyvsp[-2].lex_str); } -#line 20383 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20489 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 137: @@ -20391,13 +20497,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_view_algorithm= DTYPE_ALGORITHM_UNDEFINED; Lex->create_view_suid= TRUE; } -#line 20395 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20501 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 138: #line 2541 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 20401 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20507 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 139: @@ -20406,7 +20512,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->set_command_with_check(SQLCOM_CREATE_USER, (yyvsp[-4].object_ddl_options) | (yyvsp[-2].object_ddl_options))) MYSQL_YYABORT; } -#line 20410 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20516 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 140: @@ -20415,7 +20521,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->set_command_with_check(SQLCOM_CREATE_ROLE, (yyvsp[-5].object_ddl_options) | (yyvsp[-3].object_ddl_options))) MYSQL_YYABORT; } -#line 20419 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20525 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 141: @@ -20423,7 +20529,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->alter_tablespace_info->ts_cmd_type= CREATE_LOGFILE_GROUP; } -#line 20427 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20533 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 142: @@ -20431,19 +20537,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->alter_tablespace_info->ts_cmd_type= CREATE_TABLESPACE; } -#line 20435 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20541 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 143: #line 2561 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->set_command(SQLCOM_CREATE_SERVER, (yyvsp[0].object_ddl_options)); } -#line 20441 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20547 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 144: #line 2563 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 20447 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20553 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 145: @@ -20453,13 +20559,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; Lex->server_options.reset((yyvsp[0].lex_str)); } -#line 20457 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20563 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 146: #line 2575 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->server_options.scheme= (yyvsp[-4].lex_str); } -#line 20463 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20569 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 149: @@ -20468,7 +20574,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT_UNLESS(Lex->server_options.username.str == 0); Lex->server_options.username= (yyvsp[0].lex_str); } -#line 20472 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20578 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 150: @@ -20477,7 +20583,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT_UNLESS(Lex->server_options.host.str == 0); Lex->server_options.host= (yyvsp[0].lex_str); } -#line 20481 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20587 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 151: @@ -20486,7 +20592,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT_UNLESS(Lex->server_options.db.str == 0); Lex->server_options.db= (yyvsp[0].lex_str); } -#line 20490 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20596 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 152: @@ -20495,7 +20601,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT_UNLESS(Lex->server_options.owner.str == 0); Lex->server_options.owner= (yyvsp[0].lex_str); } -#line 20499 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20605 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 153: @@ -20504,7 +20610,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT_UNLESS(Lex->server_options.password.str == 0); Lex->server_options.password= (yyvsp[0].lex_str); } -#line 20508 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20614 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 154: @@ -20513,7 +20619,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT_UNLESS(Lex->server_options.socket.str == 0); Lex->server_options.socket= (yyvsp[0].lex_str); } -#line 20517 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20623 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 155: @@ -20521,7 +20627,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->server_options.port= (yyvsp[0].ulong_num); } -#line 20525 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20631 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 156: @@ -20541,7 +20647,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sql_command= SQLCOM_CREATE_EVENT; /* We need that for disallowing subqueries */ } -#line 20545 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20651 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 157: @@ -20553,7 +20659,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); */ Lex->sql_command= SQLCOM_CREATE_EVENT; } -#line 20557 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20663 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 158: @@ -20562,7 +20668,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->event_parse_data->item_expression= (yyvsp[-1].item); Lex->event_parse_data->interval= (yyvsp[0].interval); } -#line 20566 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20672 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 160: @@ -20570,13 +20676,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->event_parse_data->item_execute_at= (yyvsp[0].item); } -#line 20574 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20680 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 161: #line 2666 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 0; } -#line 20580 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20686 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 162: @@ -20586,7 +20692,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->event_parse_data->status_changed= true; (yyval.num)= 1; } -#line 20590 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20696 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 163: @@ -20596,7 +20702,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->event_parse_data->status_changed= true; (yyval.num)= 1; } -#line 20600 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20706 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 164: @@ -20606,7 +20712,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->event_parse_data->status_changed= true; (yyval.num)= 1; } -#line 20610 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20716 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 165: @@ -20617,7 +20723,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; Lex->event_parse_data->item_starts= item; } -#line 20621 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20727 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 166: @@ -20625,7 +20731,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->event_parse_data->item_starts= (yyvsp[0].item); } -#line 20629 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20735 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 168: @@ -20633,13 +20739,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->event_parse_data->item_ends= (yyvsp[0].item); } -#line 20637 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20743 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 169: #line 2710 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 0; } -#line 20643 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20749 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 171: @@ -20650,13 +20756,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); : Event_parse_data::ON_COMPLETION_PRESERVE; (yyval.num)= 1; } -#line 20654 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20760 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 172: #line 2725 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 0; } -#line 20660 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20766 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 173: @@ -20665,7 +20771,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->comment= Lex->event_parse_data->comment= (yyvsp[0].lex_str); (yyval.num)= 1; } -#line 20669 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20775 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 174: @@ -20700,7 +20806,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sp_chistics.suid= SP_IS_SUID; //always the definer! lex->sphead->set_body_start(thd, lip->get_cpp_ptr()); } -#line 20704 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20810 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 175: @@ -20714,7 +20820,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->event_parse_data->body_changed= TRUE; } -#line 20718 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20824 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 176: @@ -20730,7 +20836,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->ssl_cipher= lex->x509_subject= lex->x509_issuer= 0; bzero((char *)&(lex->mqh),sizeof(lex->mqh)); } -#line 20734 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20840 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 177: @@ -20745,7 +20851,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; (yyval.spname)->init_qname(thd); } -#line 20749 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20855 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 178: @@ -20764,85 +20870,85 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; (yyval.spname)->init_qname(thd); } -#line 20768 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20874 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 179: #line 2821 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 20774 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20880 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 180: #line 2822 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 20780 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20886 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 181: #line 2826 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 20786 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20892 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 182: #line 2827 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 20792 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20898 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 183: #line 2833 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sp_chistics.comment= (yyvsp[0].lex_str); } -#line 20798 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20904 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 184: #line 2835 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* Just parse it, we only have one language for now. */ } -#line 20804 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20910 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 185: #line 2837 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sp_chistics.daccess= SP_NO_SQL; } -#line 20810 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20916 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 186: #line 2839 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sp_chistics.daccess= SP_CONTAINS_SQL; } -#line 20816 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20922 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 187: #line 2841 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sp_chistics.daccess= SP_READS_SQL_DATA; } -#line 20822 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20928 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 188: #line 2843 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sp_chistics.daccess= SP_MODIFIES_SQL_DATA; } -#line 20828 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20934 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 189: #line 2845 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 20834 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20940 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 190: #line 2850 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 20840 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20946 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 191: #line 2851 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sp_chistics.detistic= ! (yyvsp[-1].num); } -#line 20846 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20952 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 192: @@ -20850,7 +20956,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->sp_chistics.suid= SP_IS_SUID; } -#line 20854 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20960 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 193: @@ -20858,7 +20964,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->sp_chistics.suid= SP_IS_NOT_SUID; } -#line 20862 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20968 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 194: @@ -20871,13 +20977,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->value_list.empty(); sp_add_used_routine(lex, thd, (yyvsp[0].spname), TYPE_ENUM_PROCEDURE); } -#line 20875 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20981 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 195: #line 2875 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 20881 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20987 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 200: @@ -20885,7 +20991,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->value_list.push_back((yyvsp[0].item), thd->mem_root); } -#line 20889 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 20995 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 201: @@ -20893,7 +20999,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->value_list.push_back((yyvsp[0].item), thd->mem_root); } -#line 20897 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21003 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 206: @@ -20911,7 +21017,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); thd->variables.collation_database); (yyval.spvar)= spvar; } -#line 20915 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21021 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 207: @@ -20931,49 +21037,49 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.spvar)= spvar; } -#line 20935 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21041 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 212: #line 2956 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyvsp[0].spvar)->mode=(yyvsp[-1].spvar_mode); } -#line 20941 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21047 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 213: #line 2960 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.spvar_mode)= sp_variable::MODE_IN; } -#line 20947 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21053 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 214: #line 2961 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.spvar_mode)= sp_variable::MODE_IN; } -#line 20953 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21059 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 215: #line 2962 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.spvar_mode)= sp_variable::MODE_OUT; } -#line 20959 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21065 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 216: #line 2963 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.spvar_mode)= sp_variable::MODE_INOUT; } -#line 20965 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21071 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 217: #line 2967 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 20971 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21077 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 219: #line 2972 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 20977 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21083 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 221: @@ -20981,7 +21087,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.spblock).vars= (yyval.spblock).conds= (yyval.spblock).hndlrs= (yyval.spblock).curs= 0; } -#line 20985 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21091 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 222: @@ -21000,7 +21106,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.spblock).hndlrs= (yyvsp[-2].spblock).hndlrs + (yyvsp[-1].spblock).hndlrs; (yyval.spblock).curs= (yyvsp[-2].spblock).curs + (yyvsp[-1].spblock).curs; } -#line 21004 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21110 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 223: @@ -21019,7 +21125,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); thd->lex->init_last_field(&spvar->field_def, spvar->name.str, thd->variables.collation_database); } -#line 21023 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21129 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 224: @@ -21079,7 +21185,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.spblock).vars= (yyvsp[-3].num); (yyval.spblock).conds= (yyval.spblock).hndlrs= (yyval.spblock).curs= 0; } -#line 21083 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21189 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 225: @@ -21095,7 +21201,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.spblock).vars= (yyval.spblock).hndlrs= (yyval.spblock).curs= 0; (yyval.spblock).conds= 1; } -#line 21099 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21205 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 226: @@ -21126,7 +21232,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (sp->push_backpatch(i, ctx->push_label(thd, empty_lex_str, 0))) MYSQL_YYABORT; } -#line 21130 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21236 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 227: @@ -21162,7 +21268,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.spblock).vars= (yyval.spblock).conds= (yyval.spblock).curs= 0; (yyval.spblock).hndlrs= 1; } -#line 21166 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21272 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 228: @@ -21185,7 +21291,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.spblock).vars= (yyval.spblock).conds= (yyval.spblock).hndlrs= 0; (yyval.spblock).curs= 1; } -#line 21189 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21295 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 229: @@ -21193,7 +21299,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->sphead->reset_lex(thd); } -#line 21197 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21303 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 230: @@ -21210,31 +21316,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->sphead->restore_lex(thd)) MYSQL_YYABORT; } -#line 21214 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21320 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 231: #line 3183 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= sp_handler::EXIT; } -#line 21220 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21326 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 232: #line 3184 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= sp_handler::CONTINUE; } -#line 21226 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21332 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 233: #line 3190 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 1; } -#line 21232 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21338 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 234: #line 3192 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)+= 1; } -#line 21238 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21344 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 235: @@ -21250,7 +21356,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); sp_instr_hpush_jump *i= (sp_instr_hpush_jump *)sp->last_instruction(); i->add_condition((yyvsp[0].spcondvalue)); } -#line 21254 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21360 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 236: @@ -21262,7 +21368,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.spcondvalue) == NULL) MYSQL_YYABORT; } -#line 21266 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21372 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 238: @@ -21282,19 +21388,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.spcondvalue) == NULL) MYSQL_YYABORT; } -#line 21286 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21392 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 239: #line 3242 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 21292 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21398 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 240: #line 3243 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 21298 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21404 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 241: @@ -21302,7 +21408,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.spcondvalue)= (yyvsp[0].spcondvalue); } -#line 21306 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21412 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 242: @@ -21312,7 +21418,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.spcondvalue) == NULL) my_yyabort_error((ER_SP_COND_MISMATCH, MYF(0), (yyvsp[0].lex_str).str)); } -#line 21316 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21422 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 243: @@ -21322,7 +21428,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.spcondvalue) == NULL) MYSQL_YYABORT; } -#line 21326 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21432 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 244: @@ -21332,7 +21438,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.spcondvalue) == NULL) MYSQL_YYABORT; } -#line 21336 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21442 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 245: @@ -21342,7 +21448,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.spcondvalue) == NULL) MYSQL_YYABORT; } -#line 21346 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21452 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 246: @@ -21357,7 +21463,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->m_sql_cmd == NULL) MYSQL_YYABORT; } -#line 21361 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21467 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 247: @@ -21376,25 +21482,25 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_SIGNAL_BAD_CONDITION_TYPE, MYF(0))); (yyval.spcondvalue)= cond; } -#line 21380 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21486 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 248: #line 3308 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.spcondvalue)= (yyvsp[0].spcondvalue); } -#line 21386 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21492 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 249: #line 3313 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.spcondvalue)= NULL; } -#line 21392 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21498 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 250: #line 3315 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.spcondvalue)= (yyvsp[0].spcondvalue); } -#line 21398 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21504 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 251: @@ -21402,7 +21508,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { thd->m_parser_state->m_yacc.m_set_signal_info.clear(); } -#line 21406 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21512 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 253: @@ -21414,7 +21520,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); info->clear(); info->m_item[index]= (yyvsp[0].item); } -#line 21418 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21524 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 254: @@ -21428,13 +21534,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Diag_condition_item_names[index].str)); info->m_item[index]= (yyvsp[0].item); } -#line 21432 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21538 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 255: #line 3353 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= (yyvsp[0].item); } -#line 21438 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21544 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 256: @@ -21456,85 +21562,85 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } (yyval.item)= (yyvsp[0].item); } -#line 21460 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21566 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 257: #line 3373 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= (yyvsp[0].item); } -#line 21466 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21572 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 258: #line 3379 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.diag_condition_item_name)= DIAG_CLASS_ORIGIN; } -#line 21472 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21578 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 259: #line 3381 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.diag_condition_item_name)= DIAG_SUBCLASS_ORIGIN; } -#line 21478 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21584 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 260: #line 3383 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.diag_condition_item_name)= DIAG_CONSTRAINT_CATALOG; } -#line 21484 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21590 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 261: #line 3385 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.diag_condition_item_name)= DIAG_CONSTRAINT_SCHEMA; } -#line 21490 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21596 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 262: #line 3387 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.diag_condition_item_name)= DIAG_CONSTRAINT_NAME; } -#line 21496 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21602 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 263: #line 3389 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.diag_condition_item_name)= DIAG_CATALOG_NAME; } -#line 21502 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21608 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 264: #line 3391 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.diag_condition_item_name)= DIAG_SCHEMA_NAME; } -#line 21508 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21614 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 265: #line 3393 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.diag_condition_item_name)= DIAG_TABLE_NAME; } -#line 21514 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21620 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 266: #line 3395 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.diag_condition_item_name)= DIAG_COLUMN_NAME; } -#line 21520 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21626 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 267: #line 3397 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.diag_condition_item_name)= DIAG_CURSOR_NAME; } -#line 21526 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21632 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 268: #line 3399 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.diag_condition_item_name)= DIAG_MESSAGE_TEXT; } -#line 21532 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21638 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 269: #line 3401 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.diag_condition_item_name)= DIAG_MYSQL_ERRNO; } -#line 21538 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21644 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 270: @@ -21550,7 +21656,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->m_sql_cmd == NULL) MYSQL_YYABORT; } -#line 21554 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21660 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 271: @@ -21566,19 +21672,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->m_sql_cmd == NULL) MYSQL_YYABORT; } -#line 21570 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21676 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 272: #line 3436 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.diag_area)= Diagnostics_information::CURRENT_AREA; } -#line 21576 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21682 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 273: #line 3438 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.diag_area)= Diagnostics_information::CURRENT_AREA; } -#line 21582 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21688 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 274: @@ -21588,7 +21694,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.diag_info) == NULL) MYSQL_YYABORT; } -#line 21592 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21698 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 275: @@ -21598,7 +21704,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.diag_info) == NULL) MYSQL_YYABORT; } -#line 21602 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21708 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 276: @@ -21608,7 +21714,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.stmt_info_list) == NULL || (yyval.stmt_info_list)->push_back((yyvsp[0].stmt_info_item), thd->mem_root)) MYSQL_YYABORT; } -#line 21612 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21718 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 277: @@ -21618,7 +21724,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; (yyval.stmt_info_list)= (yyvsp[-2].stmt_info_list); } -#line 21622 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21728 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 278: @@ -21628,7 +21734,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.stmt_info_item) == NULL) MYSQL_YYABORT; } -#line 21632 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21738 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 279: @@ -21641,7 +21747,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 21645 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21751 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 280: @@ -21651,25 +21757,25 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 21655 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21761 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 281: #line 3499 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.stmt_info_item_name)= Statement_information_item::NUMBER; } -#line 21661 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21767 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 282: #line 3501 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.stmt_info_item_name)= Statement_information_item::ROW_COUNT; } -#line 21667 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21773 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 283: #line 3510 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= (yyvsp[0].item); } -#line 21673 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21779 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 284: @@ -21679,7 +21785,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.cond_info_list) == NULL || (yyval.cond_info_list)->push_back((yyvsp[0].cond_info_item), thd->mem_root)) MYSQL_YYABORT; } -#line 21683 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21789 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 285: @@ -21689,7 +21795,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; (yyval.cond_info_list)= (yyvsp[-2].cond_info_list); } -#line 21693 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21799 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 286: @@ -21699,85 +21805,85 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.cond_info_item) == NULL) MYSQL_YYABORT; } -#line 21703 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21809 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 287: #line 3538 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cond_info_item_name)= Condition_information_item::CLASS_ORIGIN; } -#line 21709 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21815 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 288: #line 3540 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cond_info_item_name)= Condition_information_item::SUBCLASS_ORIGIN; } -#line 21715 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21821 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 289: #line 3542 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cond_info_item_name)= Condition_information_item::CONSTRAINT_CATALOG; } -#line 21721 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21827 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 290: #line 3544 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cond_info_item_name)= Condition_information_item::CONSTRAINT_SCHEMA; } -#line 21727 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21833 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 291: #line 3546 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cond_info_item_name)= Condition_information_item::CONSTRAINT_NAME; } -#line 21733 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21839 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 292: #line 3548 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cond_info_item_name)= Condition_information_item::CATALOG_NAME; } -#line 21739 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21845 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 293: #line 3550 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cond_info_item_name)= Condition_information_item::SCHEMA_NAME; } -#line 21745 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21851 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 294: #line 3552 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cond_info_item_name)= Condition_information_item::TABLE_NAME; } -#line 21751 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21857 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 295: #line 3554 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cond_info_item_name)= Condition_information_item::COLUMN_NAME; } -#line 21757 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21863 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 296: #line 3556 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cond_info_item_name)= Condition_information_item::CURSOR_NAME; } -#line 21763 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21869 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 297: #line 3558 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cond_info_item_name)= Condition_information_item::MESSAGE_TEXT; } -#line 21769 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21875 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 298: #line 3560 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cond_info_item_name)= Condition_information_item::MYSQL_ERRNO; } -#line 21775 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21881 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 299: #line 3562 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cond_info_item_name)= Condition_information_item::RETURNED_SQLSTATE; } -#line 21781 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21887 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 300: @@ -21793,7 +21899,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); spc->add_variable(thd, (yyvsp[0].lex_str)); (yyval.num)= 1; } -#line 21797 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21903 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 301: @@ -21809,19 +21915,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); spc->add_variable(thd, (yyvsp[0].lex_str)); (yyval.num)= (yyvsp[-2].num) + 1; } -#line 21813 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21919 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 302: #line 3593 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item) = NULL; } -#line 21819 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21925 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 303: #line 3594 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item) = (yyvsp[0].item); } -#line 21825 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21931 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 319: @@ -21831,13 +21937,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; Lex->sphead->new_cont_backpatch(NULL); } -#line 21835 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21941 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 320: #line 3626 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sphead->do_cont_backpatch(); } -#line 21841 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21947 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 321: @@ -21849,7 +21955,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sphead->reset_lex(thd); lex->sphead->m_tmp_query= lip->get_tok_start(); } -#line 21853 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 21959 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 322: @@ -21895,13 +22001,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (sp->restore_lex(thd)) MYSQL_YYABORT; } -#line 21899 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22005 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 323: #line 3683 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sphead->reset_lex(thd); } -#line 21905 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22011 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 324: @@ -21925,7 +22031,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (sp->restore_lex(thd)) MYSQL_YYABORT; } -#line 21929 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22035 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 325: @@ -21976,7 +22082,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); sp->push_backpatch(i, lab); /* Jumping forward */ sp->add_instr(i); } -#line 21980 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22086 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 326: @@ -22018,7 +22124,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); sp->add_instr(i)) MYSQL_YYABORT; } -#line 22022 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22128 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 327: @@ -22037,7 +22143,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); sp->add_instr(i)) MYSQL_YYABORT; } -#line 22041 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22147 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 328: @@ -22056,13 +22162,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); sp->add_instr(i)) MYSQL_YYABORT; } -#line 22060 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22166 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 329: #line 3832 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 22066 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22172 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 330: @@ -22081,7 +22187,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); sp->add_instr(i)) MYSQL_YYABORT; } -#line 22085 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22191 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 334: @@ -22099,7 +22205,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); sp_instr_cfetch *i= (sp_instr_cfetch *)sp->last_instruction(); i->add_to_varlist(spv); } -#line 22103 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22209 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 335: @@ -22117,13 +22223,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); sp_instr_cfetch *i= (sp_instr_cfetch *)sp->last_instruction(); i->add_to_varlist(spv); } -#line 22121 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22227 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 336: #line 3891 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sphead->reset_lex(thd); } -#line 22127 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22233 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 337: @@ -22143,7 +22249,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (sp->restore_lex(thd)) MYSQL_YYABORT; } -#line 22147 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22253 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 338: @@ -22159,7 +22265,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); sp->backpatch(ctx->pop_label()); sp->push_backpatch(i, ctx->push_label(thd, empty_lex_str, 0)); } -#line 22163 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22269 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 339: @@ -22169,7 +22275,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sphead->backpatch(lex->spcont->pop_label()); } -#line 22173 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22279 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 343: @@ -22223,7 +22329,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); */ Lex->spcont->push_label(thd, empty_lex_str, Lex->sphead->instructions()); } -#line 22227 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22333 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 344: @@ -22241,13 +22347,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->sphead->do_cont_backpatch(); } -#line 22245 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22351 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 345: #line 4005 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sphead->reset_lex(thd); /* For expr $2 */ } -#line 22251 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22357 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 346: @@ -22259,19 +22365,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->sphead->restore_lex(thd)) MYSQL_YYABORT; } -#line 22263 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22369 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 347: #line 4015 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 1; } -#line 22269 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22375 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 348: #line 4017 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 0; } -#line 22275 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22381 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 353: @@ -22279,7 +22385,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->sphead->reset_lex(thd); /* For expr $3 */ } -#line 22283 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22389 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 354: @@ -22294,7 +22400,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->sphead->restore_lex(thd)) MYSQL_YYABORT; } -#line 22298 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22404 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 355: @@ -22304,7 +22410,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (case_stmt_action_then(lex)) MYSQL_YYABORT; } -#line 22308 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22414 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 356: @@ -22312,7 +22418,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->sphead->reset_lex(thd); /* For expr $3 */ } -#line 22316 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22422 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 357: @@ -22325,7 +22431,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->sphead->restore_lex(thd)) MYSQL_YYABORT; } -#line 22329 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22435 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 358: @@ -22335,7 +22441,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (case_stmt_action_then(lex)) MYSQL_YYABORT; } -#line 22339 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22445 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 359: @@ -22350,19 +22456,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); sp->add_instr(i)) MYSQL_YYABORT; } -#line 22354 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22460 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 361: #line 4094 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)= null_lex_str; } -#line 22360 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22466 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 362: #line 4095 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)= (yyvsp[0].lex_str); } -#line 22366 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22472 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 363: @@ -22376,7 +22482,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_SP_LABEL_REDEFINE, MYF(0), (yyvsp[-2].lex_str).str)); lex->name= (yyvsp[-2].lex_str); } -#line 22380 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22486 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 364: @@ -22388,7 +22494,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_SP_LABEL_MISMATCH, MYF(0), (yyvsp[0].lex_str).str)); } } -#line 22392 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22498 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 365: @@ -22396,13 +22502,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->name= empty_lex_str; // Unlabeled blocks get an empty label } -#line 22400 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22506 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 366: #line 4125 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 22406 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22512 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 367: @@ -22412,13 +22518,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; Lex->name= empty_lex_str; // Unlabeled blocks get an empty label } -#line 22416 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22522 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 368: #line 4136 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 22422 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22528 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 369: @@ -22431,7 +22537,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->spcont= lex->spcont->push_context(thd, sp_pcontext::REGULAR_SCOPE); } -#line 22435 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22541 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 370: @@ -22462,7 +22568,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->spcont= ctx->pop_context(); (yyval.splabel) = lex->spcont->pop_label(); } -#line 22466 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22572 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 371: @@ -22477,7 +22583,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sphead->add_instr(i)) MYSQL_YYABORT; } -#line 22481 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22587 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 372: @@ -22497,7 +22603,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (sp->restore_lex(thd)) MYSQL_YYABORT; } -#line 22501 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22607 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 373: @@ -22513,13 +22619,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; lex->sphead->do_cont_backpatch(); } -#line 22517 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22623 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 374: #line 4226 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sphead->reset_lex(thd); } -#line 22523 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22629 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 375: @@ -22538,7 +22644,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* We can shortcut the cont_backpatch here */ i->m_cont_dest= ip+1; } -#line 22542 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22648 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 376: @@ -22553,7 +22659,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_SP_LABEL_MISMATCH, MYF(0), (yyvsp[0].lex_str).str)); } } -#line 22557 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22663 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 377: @@ -22563,7 +22669,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->sphead->backpatch(lab= Lex->spcont->pop_label()); DBUG_ASSERT(lab->name.length == 0); } -#line 22567 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22673 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 378: @@ -22572,13 +22678,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (push_sp_label(thd, (yyvsp[-2].lex_str))) MYSQL_YYABORT; } -#line 22576 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22682 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 379: #line 4273 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 22582 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22688 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 380: @@ -22588,13 +22694,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; Lex->sphead->reset_lex(thd); } -#line 22592 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22698 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 381: #line 4281 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 22598 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22704 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 382: @@ -22603,13 +22709,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (push_sp_label(thd, (yyvsp[-2].lex_str))) MYSQL_YYABORT; } -#line 22607 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22713 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 383: #line 4288 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 22613 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22719 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 384: @@ -22618,13 +22724,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (push_sp_empty_label(thd)) MYSQL_YYABORT; } -#line 22622 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22728 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 385: #line 4299 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 22628 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22734 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 386: @@ -22634,13 +22740,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; Lex->sphead->reset_lex(thd); } -#line 22638 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22744 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 387: #line 4308 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 22644 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22750 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 388: @@ -22649,49 +22755,49 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (push_sp_empty_label(thd)) MYSQL_YYABORT; } -#line 22653 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22759 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 389: #line 4316 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 22659 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22765 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 390: #line 4321 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->trg_chistics.action_time= TRG_ACTION_BEFORE; } -#line 22665 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22771 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 391: #line 4323 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->trg_chistics.action_time= TRG_ACTION_AFTER; } -#line 22671 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22777 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 392: #line 4328 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->trg_chistics.event= TRG_EVENT_INSERT; } -#line 22677 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22783 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 393: #line 4330 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->trg_chistics.event= TRG_EVENT_UPDATE; } -#line 22683 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22789 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 394: #line 4332 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->trg_chistics.event= TRG_EVENT_DELETE; } -#line 22689 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22795 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 398: #line 4366 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 22695 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22801 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 399: @@ -22700,7 +22806,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->alter_tablespace_info->logfile_group_name= (yyvsp[0].lex_str).str; } -#line 22704 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22810 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 400: @@ -22708,7 +22814,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->alter_tablespace_info->ts_alter_tablespace_type= ALTER_TABLESPACE_ADD_FILE; } -#line 22712 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22818 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 401: @@ -22716,13 +22822,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->alter_tablespace_info->ts_alter_tablespace_type= ALTER_TABLESPACE_DROP_FILE; } -#line 22720 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22826 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 406: #line 4407 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 22726 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22832 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 453: @@ -22731,7 +22837,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->alter_tablespace_info->data_file_name= (yyvsp[0].lex_str).str; } -#line 22735 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22841 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 454: @@ -22740,7 +22846,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->alter_tablespace_info->undo_file_name= (yyvsp[0].lex_str).str; } -#line 22744 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22850 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 455: @@ -22749,7 +22855,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->alter_tablespace_info->redo_file_name= (yyvsp[0].lex_str).str; } -#line 22753 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22859 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 456: @@ -22763,7 +22869,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->alter_tablespace_info->tablespace_name= (yyvsp[0].lex_str).str; lex->sql_command= SQLCOM_ALTER_TABLESPACE; } -#line 22767 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22873 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 457: @@ -22777,7 +22883,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->alter_tablespace_info->logfile_group_name= (yyvsp[0].lex_str).str; lex->sql_command= SQLCOM_ALTER_TABLESPACE; } -#line 22781 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22887 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 458: @@ -22786,7 +22892,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->alter_tablespace_info->ts_access_mode= TS_READ_ONLY; } -#line 22790 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22896 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 459: @@ -22795,7 +22901,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->alter_tablespace_info->ts_access_mode= TS_READ_WRITE; } -#line 22799 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22905 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 460: @@ -22804,7 +22910,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->alter_tablespace_info->ts_access_mode= TS_NOT_ACCESSIBLE; } -#line 22808 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22914 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 461: @@ -22813,7 +22919,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->alter_tablespace_info->initial_size= (yyvsp[0].ulonglong_number); } -#line 22817 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22923 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 462: @@ -22822,7 +22928,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->alter_tablespace_info->autoextend_size= (yyvsp[0].ulonglong_number); } -#line 22826 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22932 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 463: @@ -22831,7 +22937,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->alter_tablespace_info->max_size= (yyvsp[0].ulonglong_number); } -#line 22835 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22941 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 464: @@ -22840,7 +22946,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->alter_tablespace_info->extent_size= (yyvsp[0].ulonglong_number); } -#line 22844 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22950 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 465: @@ -22849,7 +22955,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->alter_tablespace_info->undo_buffer_size= (yyvsp[0].ulonglong_number); } -#line 22853 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22959 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 466: @@ -22858,7 +22964,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->alter_tablespace_info->redo_buffer_size= (yyvsp[0].ulonglong_number); } -#line 22862 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22968 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 467: @@ -22869,7 +22975,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_FILEGROUP_OPTION_ONLY_ONCE,MYF(0),"NODEGROUP")); lex->alter_tablespace_info->nodegroup_id= (yyvsp[0].ulong_num); } -#line 22873 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22979 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 468: @@ -22880,7 +22986,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_FILEGROUP_OPTION_ONLY_ONCE,MYF(0),"COMMENT")); lex->alter_tablespace_info->ts_comment= (yyvsp[0].lex_str).str; } -#line 22884 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 22990 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 469: @@ -22892,7 +22998,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); "STORAGE ENGINE")); lex->alter_tablespace_info->storage_engine= (yyvsp[0].db_type); } -#line 22896 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23002 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 472: @@ -22901,7 +23007,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->alter_tablespace_info->wait_until_completed= TRUE; } -#line 22905 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23011 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 473: @@ -22912,13 +23018,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_FILEGROUP_OPTION_ONLY_ONCE,MYF(0),"NO_WAIT")); lex->alter_tablespace_info->wait_until_completed= FALSE; } -#line 22916 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23022 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 474: #line 4667 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ulonglong_number)= (yyvsp[0].ulonglong_number);} -#line 22922 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23028 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 475: @@ -22953,37 +23059,37 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_WRONG_SIZE_NUMBER, MYF(0))); (yyval.ulonglong_number)= number; } -#line 22957 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23063 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 476: #line 4707 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->create_info.option_list= NULL; } -#line 22963 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23069 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 477: #line 4708 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 22969 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23075 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 478: #line 4709 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 22975 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23081 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 479: #line 4715 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->set_braces(1);} -#line 22981 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23087 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 480: #line 4715 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 22987 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23093 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 481: @@ -22998,49 +23104,49 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* CREATE TABLE ... LIKE is not allowed for views. */ src_table->required_type= FRMTYPE_TABLE; } -#line 23002 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23108 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 482: #line 4730 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.table)= (yyvsp[0].table); } -#line 23008 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23114 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 483: #line 4731 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.table)= (yyvsp[-1].table); } -#line 23014 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23120 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 484: #line 4735 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23020 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23126 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 485: #line 4737 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->set_braces(0);} -#line 23026 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23132 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 486: #line 4738 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23032 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23138 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 487: #line 4740 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->set_braces(1);} -#line 23038 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23144 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 488: #line 4741 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23044 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23150 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 489: @@ -23054,13 +23160,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); last_non_sel_table->next_global= 0; Lex->query_tables_last= &last_non_sel_table->next_global; } -#line 23058 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23164 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 490: #line 4782 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23064 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23170 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 492: @@ -23078,7 +23184,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->alter_info.flags|= Alter_info::ALTER_PARTITION; } } -#line 23082 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23188 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 494: @@ -23094,7 +23200,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); "--with-plugin-partition")); #endif } -#line 23098 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23204 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 495: @@ -23111,13 +23217,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); partition info string into part_info data structure. */ } -#line 23115 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23221 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 496: #line 4833 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23121 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23227 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 498: @@ -23128,61 +23234,61 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); part_info->column_list= FALSE; part_info->part_type= HASH_PARTITION; } -#line 23132 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23238 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 499: #line 4849 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->part_info->part_type= HASH_PARTITION; } -#line 23138 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23244 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 500: #line 4850 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23144 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23250 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 501: #line 4852 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->part_info->part_type= RANGE_PARTITION; } -#line 23150 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23256 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 502: #line 4854 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->part_info->part_type= RANGE_PARTITION; } -#line 23156 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23262 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 503: #line 4856 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->part_info->part_type= LIST_PARTITION; } -#line 23162 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23268 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 504: #line 4858 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->part_info->part_type= LIST_PARTITION; } -#line 23168 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23274 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 505: #line 4862 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23174 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23280 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 506: #line 4864 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->part_info->linear_hash_ind= TRUE;} -#line 23180 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23286 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 507: #line 4869 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->part_info->key_algorithm= partition_info::KEY_ALGORITHM_NONE;} -#line 23186 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23292 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 508: @@ -23200,31 +23306,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 23204 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23310 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 509: #line 4887 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23210 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23316 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 510: #line 4888 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23216 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23322 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 511: #line 4892 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23222 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23328 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 512: #line 4893 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23228 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23334 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 513: @@ -23241,7 +23347,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR, MYF(0), "list of partition fields")); } -#line 23245 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23351 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 514: @@ -23251,7 +23357,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); part_info->column_list= TRUE; part_info->list_of_part_fields= TRUE; } -#line 23255 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23361 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 515: @@ -23263,7 +23369,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); part_info->num_columns= 1; part_info->column_list= FALSE; } -#line 23267 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23373 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 516: @@ -23272,13 +23378,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->part_info->set_part_expr((yyvsp[-3].simple_string)+1, (yyvsp[-2].item), (yyvsp[-1].simple_string), TRUE)) { MYSQL_YYABORT; } } -#line 23276 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23382 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 517: #line 4943 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23282 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23388 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 518: @@ -23292,25 +23398,25 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); part_info->num_parts= num_parts; part_info->use_default_num_partitions= FALSE; } -#line 23296 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23402 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 519: #line 4957 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23302 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23408 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 520: #line 4959 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->part_info->subpart_type= HASH_PARTITION; } -#line 23308 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23414 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 521: #line 4960 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23314 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23420 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 522: @@ -23320,25 +23426,25 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); part_info->subpart_type= HASH_PARTITION; part_info->list_of_subpart_fields= TRUE; } -#line 23324 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23430 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 523: #line 4968 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23330 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23436 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 524: #line 4972 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23336 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23442 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 525: #line 4973 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23342 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23448 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 526: @@ -23354,7 +23460,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR, MYF(0), "list of subpartition fields")); } -#line 23358 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23464 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 527: @@ -23371,13 +23477,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } (yyval.item)=(yyvsp[0].item); } -#line 23375 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23481 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 528: #line 5008 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23381 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23487 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 529: @@ -23390,7 +23496,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->part_info->num_subparts= num_parts; lex->part_info->use_default_num_subpartitions= FALSE; } -#line 23394 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23500 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 530: @@ -23404,7 +23510,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_PARTITIONS_MUST_BE_DEFINED_ERROR, MYF(0), "LIST")); } -#line 23408 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23514 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 531: @@ -23427,19 +23533,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } part_info->count_curr_subparts= 0; } -#line 23431 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23537 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 532: #line 5053 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23437 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23543 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 533: #line 5054 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23443 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23549 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 534: @@ -23460,13 +23566,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); part_info->use_default_partitions= FALSE; part_info->use_default_num_partitions= FALSE; } -#line 23464 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23570 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 535: #line 5079 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23470 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23576 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 536: @@ -23478,7 +23584,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; p_elem->partition_name= (yyvsp[0].lex_str).str; } -#line 23482 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23588 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 537: @@ -23494,7 +23600,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else part_info->part_type= HASH_PARTITION; } -#line 23498 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23604 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 538: @@ -23511,13 +23617,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else part_info->part_type= RANGE_PARTITION; } -#line 23515 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23621 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 539: #line 5119 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23521 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23627 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 540: @@ -23534,13 +23640,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else part_info->part_type= LIST_PARTITION; } -#line 23538 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23644 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 541: #line 5133 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23544 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23650 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 542: @@ -23566,13 +23672,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 23570 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23676 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 543: #line 5159 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23576 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23682 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 544: @@ -23605,7 +23711,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } } } -#line 23609 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23715 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 545: @@ -23618,19 +23724,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 23622 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23728 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 546: #line 5204 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23628 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23734 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 547: #line 5205 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23634 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23740 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 548: @@ -23646,13 +23752,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 23650 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23756 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 549: #line 5221 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23656 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23762 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 550: @@ -23677,19 +23783,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } part_info->curr_list_object= 0; } -#line 23681 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23787 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 551: #line 5246 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23687 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23793 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 552: #line 5247 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23693 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23799 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 553: @@ -23706,7 +23812,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 23710 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23816 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 554: @@ -23726,7 +23832,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 23730 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23836 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 555: @@ -23744,7 +23850,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 23748 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23854 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 556: @@ -23771,19 +23877,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } part_info->count_curr_subparts= 0; } -#line 23775 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23881 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 557: #line 5324 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23781 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23887 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 558: #line 5325 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23787 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23893 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 559: @@ -23821,13 +23927,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); part_info->use_default_num_subpartitions= FALSE; part_info->count_curr_subparts++; } -#line 23825 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23931 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 560: #line 5363 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23831 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23937 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 561: @@ -23837,37 +23943,37 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; Lex->part_info->curr_part_elem->partition_name= (yyvsp[0].lex_str).str; } -#line 23841 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23947 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 562: #line 5376 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23847 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23953 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 563: #line 5377 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23853 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23959 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 564: #line 5381 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23859 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23965 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 565: #line 5382 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23865 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23971 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 566: #line 5387 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->part_info->curr_part_elem->tablespace_name= (yyvsp[0].lex_str).str; } -#line 23871 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23977 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 567: @@ -23877,7 +23983,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); part_info->curr_part_elem->engine_type= (yyvsp[0].db_type); part_info->default_engine_type= (yyvsp[0].db_type); } -#line 23881 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23987 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 568: @@ -23887,43 +23993,43 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->part_info->curr_part_elem->connect_string.str= (yyvsp[0].lex_str).str; lex->part_info->curr_part_elem->connect_string.length= (yyvsp[0].lex_str).length; } -#line 23891 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 23997 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 569: #line 5401 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->part_info->curr_part_elem->nodegroup_id= (uint16) (yyvsp[0].ulong_num); } -#line 23897 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24003 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 570: #line 5403 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->part_info->curr_part_elem->part_max_rows= (ha_rows) (yyvsp[0].ulonglong_number); } -#line 23903 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24009 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 571: #line 5405 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->part_info->curr_part_elem->part_min_rows= (ha_rows) (yyvsp[0].ulonglong_number); } -#line 23909 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24015 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 572: #line 5407 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->part_info->curr_part_elem->data_file_name= (yyvsp[0].lex_str).str; } -#line 23915 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24021 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 573: #line 5409 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->part_info->curr_part_elem->index_file_name= (yyvsp[0].lex_str).str; } -#line 23921 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24027 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 574: #line 5411 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->part_info->curr_part_elem->part_comment= (yyvsp[0].lex_str).str; } -#line 23927 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24033 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 575: @@ -23942,7 +24048,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); mysql_init_select(lex); lex->current_select->parsing_place= SELECT_LIST; } -#line 23946 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24052 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 576: @@ -23950,7 +24056,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Select->parsing_place= NO_MATTER; } -#line 23954 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24060 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 577: @@ -23962,55 +24068,55 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); */ Lex->current_select->table_list.push_front(&Lex->save_list); } -#line 23966 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24072 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 578: #line 5449 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23972 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24078 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 579: #line 5450 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23978 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24084 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 580: #line 5454 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23984 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24090 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 581: #line 5455 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23990 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24096 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 582: #line 5459 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 23996 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24102 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 583: #line 5460 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 24002 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24108 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 584: #line 5464 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 24008 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24114 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 585: #line 5465 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 24014 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24120 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 586: @@ -24018,7 +24124,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->check_exists= FALSE; } -#line 24022 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24128 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 587: @@ -24026,7 +24132,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->check_exists= TRUE; } -#line 24030 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24136 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 588: @@ -24034,7 +24140,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.object_ddl_options).init(); } -#line 24038 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24144 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 589: @@ -24042,7 +24148,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.object_ddl_options).set(DDL_options_st::OPT_IF_NOT_EXISTS); } -#line 24046 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24152 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 590: @@ -24050,7 +24156,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.object_ddl_options).init(); } -#line 24054 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24160 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 591: @@ -24058,7 +24164,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.object_ddl_options).set(DDL_options_st::OPT_OR_REPLACE); } -#line 24062 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24168 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 599: @@ -24067,7 +24173,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.db_type= (yyvsp[0].db_type); Lex->create_info.used_fields|= HA_CREATE_USED_ENGINE; } -#line 24071 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24177 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 600: @@ -24076,7 +24182,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.max_rows= (yyvsp[0].ulonglong_number); Lex->create_info.used_fields|= HA_CREATE_USED_MAX_ROWS; } -#line 24080 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24186 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 601: @@ -24085,7 +24191,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.min_rows= (yyvsp[0].ulonglong_number); Lex->create_info.used_fields|= HA_CREATE_USED_MIN_ROWS; } -#line 24089 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24195 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 602: @@ -24094,7 +24200,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.avg_row_length=(yyvsp[0].ulong_num); Lex->create_info.used_fields|= HA_CREATE_USED_AVG_ROW_LENGTH; } -#line 24098 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24204 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 603: @@ -24103,7 +24209,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.password=(yyvsp[0].lex_str).str; Lex->create_info.used_fields|= HA_CREATE_USED_PASSWORD; } -#line 24107 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24213 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 604: @@ -24112,7 +24218,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.comment=(yyvsp[0].lex_str); Lex->create_info.used_fields|= HA_CREATE_USED_COMMENT; } -#line 24116 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24222 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 605: @@ -24121,7 +24227,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.auto_increment_value=(yyvsp[0].ulonglong_number); Lex->create_info.used_fields|= HA_CREATE_USED_AUTO; } -#line 24125 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24231 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 606: @@ -24140,7 +24246,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } Lex->create_info.used_fields|= HA_CREATE_USED_PACK_KEYS; } -#line 24144 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24250 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 607: @@ -24150,7 +24256,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ~(HA_OPTION_PACK_KEYS | HA_OPTION_NO_PACK_KEYS); Lex->create_info.used_fields|= HA_CREATE_USED_PACK_KEYS; } -#line 24154 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24260 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 608: @@ -24169,7 +24275,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } Lex->create_info.used_fields|= HA_CREATE_USED_STATS_AUTO_RECALC; } -#line 24173 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24279 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 609: @@ -24178,7 +24284,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.stats_auto_recalc= HA_STATS_AUTO_RECALC_DEFAULT; Lex->create_info.used_fields|= HA_CREATE_USED_STATS_AUTO_RECALC; } -#line 24182 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24288 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 610: @@ -24197,7 +24303,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } Lex->create_info.used_fields|= HA_CREATE_USED_STATS_PERSISTENT; } -#line 24201 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24307 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 611: @@ -24207,7 +24313,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ~(HA_OPTION_STATS_PERSISTENT | HA_OPTION_NO_STATS_PERSISTENT); Lex->create_info.used_fields|= HA_CREATE_USED_STATS_PERSISTENT; } -#line 24211 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24317 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 612: @@ -24229,7 +24335,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.stats_sample_pages=(yyvsp[0].ulong_num); Lex->create_info.used_fields|= HA_CREATE_USED_STATS_SAMPLE_PAGES; } -#line 24233 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24339 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 613: @@ -24238,7 +24344,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.stats_sample_pages=0; Lex->create_info.used_fields|= HA_CREATE_USED_STATS_SAMPLE_PAGES; } -#line 24242 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24348 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 614: @@ -24247,7 +24353,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.table_options|= (yyvsp[0].ulong_num) ? HA_OPTION_CHECKSUM : HA_OPTION_NO_CHECKSUM; Lex->create_info.used_fields|= HA_CREATE_USED_CHECKSUM; } -#line 24251 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24357 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 615: @@ -24256,7 +24362,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.table_options|= (yyvsp[0].ulong_num) ? HA_OPTION_CHECKSUM : HA_OPTION_NO_CHECKSUM; Lex->create_info.used_fields|= HA_CREATE_USED_CHECKSUM; } -#line 24260 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24366 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 616: @@ -24265,7 +24371,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.used_fields|= HA_CREATE_USED_PAGE_CHECKSUM; Lex->create_info.page_checksum= (yyvsp[0].choice); } -#line 24269 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24375 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 617: @@ -24274,7 +24380,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.table_options|= (yyvsp[0].ulong_num) ? HA_OPTION_DELAY_KEY_WRITE : HA_OPTION_NO_DELAY_KEY_WRITE; Lex->create_info.used_fields|= HA_CREATE_USED_DELAY_KEY_WRITE; } -#line 24278 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24384 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 618: @@ -24283,7 +24389,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.row_type= (yyvsp[0].row_type); Lex->create_info.used_fields|= HA_CREATE_USED_ROW_FORMAT; } -#line 24287 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24393 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 619: @@ -24291,7 +24397,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->select_lex.table_list.save_and_clear(&Lex->save_list); } -#line 24295 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24401 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 620: @@ -24317,7 +24423,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->create_info.used_fields|= HA_CREATE_USED_UNION; } -#line 24321 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24427 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 623: @@ -24326,7 +24432,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.merge_insert_method= (yyvsp[0].ulong_num); Lex->create_info.used_fields|= HA_CREATE_USED_INSERT_METHOD; } -#line 24330 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24436 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 624: @@ -24335,7 +24441,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.data_file_name= (yyvsp[0].lex_str).str; Lex->create_info.used_fields|= HA_CREATE_USED_DATADIR; } -#line 24339 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24445 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 625: @@ -24344,25 +24450,25 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.index_file_name= (yyvsp[0].lex_str).str; Lex->create_info.used_fields|= HA_CREATE_USED_INDEXDIR; } -#line 24348 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24454 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 626: #line 5707 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {Lex->create_info.tablespace= (yyvsp[0].lex_str).str;} -#line 24354 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24460 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 627: #line 5709 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {Lex->create_info.storage_media= HA_SM_DISK;} -#line 24360 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24466 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 628: #line 5711 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {Lex->create_info.storage_media= HA_SM_MEMORY;} -#line 24366 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24472 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 629: @@ -24372,7 +24478,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.connect_string.length= (yyvsp[0].lex_str).length; Lex->create_info.used_fields|= HA_CREATE_USED_CONNECTION; } -#line 24376 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24482 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 630: @@ -24381,7 +24487,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.used_fields|= HA_CREATE_USED_KEY_BLOCK_SIZE; Lex->create_info.key_block_size= (yyvsp[0].ulong_num); } -#line 24385 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24491 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 631: @@ -24390,7 +24496,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.used_fields|= HA_CREATE_USED_TRANSACTIONAL; Lex->create_info.transactional= (yyvsp[0].choice); } -#line 24394 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24500 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 632: @@ -24402,7 +24508,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); engine_option_value((yyvsp[-2].lex_str), (yyvsp[0].lex_str), true, &Lex->create_info.option_list, &Lex->option_list_last); } -#line 24406 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24512 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 633: @@ -24414,7 +24520,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); engine_option_value((yyvsp[-2].lex_str), (yyvsp[0].lex_str), false, &Lex->create_info.option_list, &Lex->option_list_last); } -#line 24418 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24524 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 634: @@ -24424,7 +24530,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); engine_option_value((yyvsp[-2].lex_str), (yyvsp[0].ulonglong_number), &Lex->create_info.option_list, &Lex->option_list_last, thd->mem_root); } -#line 24428 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24534 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 635: @@ -24434,7 +24540,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); engine_option_value((yyvsp[-2].lex_str), &Lex->create_info.option_list, &Lex->option_list_last); } -#line 24438 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24544 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 636: @@ -24443,7 +24549,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->create_info.add_table_option_default_charset((yyvsp[0].charset))) MYSQL_YYABORT; } -#line 24447 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24553 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 637: @@ -24461,7 +24567,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.default_table_charset= (yyvsp[0].charset); Lex->create_info.used_fields|= HA_CREATE_USED_DEFAULT_CHARSET; } -#line 24465 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24571 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 638: @@ -24483,7 +24589,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[0].lex_str).str); } } -#line 24487 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24593 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 639: @@ -24495,91 +24601,91 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else my_yyabort_error((ER_UNKNOWN_STORAGE_ENGINE, MYF(0), (yyvsp[0].lex_str).str)); } -#line 24499 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24605 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 640: #line 5816 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.row_type)= ROW_TYPE_DEFAULT; } -#line 24505 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24611 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 641: #line 5817 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.row_type)= ROW_TYPE_FIXED; } -#line 24511 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24617 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 642: #line 5818 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.row_type)= ROW_TYPE_DYNAMIC; } -#line 24517 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24623 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 643: #line 5819 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.row_type)= ROW_TYPE_COMPRESSED; } -#line 24523 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24629 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 644: #line 5820 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.row_type)= ROW_TYPE_REDUNDANT; } -#line 24529 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24635 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 645: #line 5821 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.row_type)= ROW_TYPE_COMPACT; } -#line 24535 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24641 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 646: #line 5822 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.row_type)= ROW_TYPE_PAGE; } -#line 24541 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24647 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 647: #line 5826 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ulong_num)= MERGE_INSERT_DISABLED; } -#line 24547 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24653 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 648: #line 5827 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ulong_num)= MERGE_INSERT_TO_FIRST; } -#line 24553 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24659 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 649: #line 5828 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ulong_num)= MERGE_INSERT_TO_LAST; } -#line 24559 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24665 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 650: #line 5832 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {(yyval.num) = (int) STRING_RESULT; } -#line 24565 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24671 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 651: #line 5833 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {(yyval.num) = (int) REAL_RESULT; } -#line 24571 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24677 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 652: #line 5834 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {(yyval.num) = (int) DECIMAL_RESULT; } -#line 24577 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24683 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 653: #line 5835 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {(yyval.num) = (int) INT_RESULT; } -#line 24583 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24689 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 654: @@ -24587,7 +24693,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->create_last_non_select_table= Lex->last_table(); } -#line 24591 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24697 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 661: @@ -24597,13 +24703,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->add_key(Key::MULTIPLE, (yyvsp[-1].lex_str), (yyvsp[0].key_alg), (yyvsp[-2].object_ddl_options))) MYSQL_YYABORT; } -#line 24601 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24707 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 662: #line 5868 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 24607 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24713 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 663: @@ -24613,13 +24719,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->add_key(Key::MULTIPLE, (yyvsp[-2].lex_str), (yyvsp[0].key_alg), (yyvsp[-3].object_ddl_options))) MYSQL_YYABORT; } -#line 24617 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24723 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 664: #line 5875 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 24623 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24729 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 665: @@ -24629,13 +24735,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->add_key((yyvsp[-3].key_type), (yyvsp[0].lex_str), HA_KEY_ALG_UNDEF, (yyvsp[-1].object_ddl_options))) MYSQL_YYABORT; } -#line 24633 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24739 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 666: #line 5882 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 24639 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24745 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 667: @@ -24645,13 +24751,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->add_key((yyvsp[-3].key_type), (yyvsp[0].lex_str), HA_KEY_ALG_UNDEF, (yyvsp[-1].object_ddl_options))) MYSQL_YYABORT; } -#line 24649 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24755 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 668: #line 5889 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 24655 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24761 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 669: @@ -24661,13 +24767,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->add_key((yyvsp[-3].key_type), (yyvsp[-1].lex_str).str ? (yyvsp[-1].lex_str) : (yyvsp[-4].lex_str), (yyvsp[0].key_alg), (yyvsp[-2].object_ddl_options))) MYSQL_YYABORT; } -#line 24665 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24771 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 670: #line 5898 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 24671 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24777 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 671: @@ -24677,13 +24783,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->add_key((yyvsp[-4].key_type), (yyvsp[-2].lex_str).str ? (yyvsp[-2].lex_str) : (yyvsp[-5].lex_str), (yyvsp[0].key_alg), (yyvsp[-3].object_ddl_options))) MYSQL_YYABORT; } -#line 24681 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24787 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 672: #line 5906 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 24687 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24793 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 673: @@ -24696,7 +24802,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; Lex->option_list= NULL; } -#line 24700 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24806 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 674: @@ -24726,31 +24832,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* Only used for ALTER TABLE. Ignored otherwise. */ lex->alter_info.flags|= Alter_info::ADD_FOREIGN_KEY; } -#line 24730 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24836 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 675: #line 5942 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 24736 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24842 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 679: #line 5955 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)= null_lex_str; } -#line 24742 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24848 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 680: #line 5956 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)= (yyvsp[0].lex_str); } -#line 24748 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24854 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 681: #line 5960 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)=(yyvsp[0].lex_str); } -#line 24754 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24860 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 682: @@ -24768,13 +24874,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->init_last_field(f, (yyvsp[0].lex_str).str, NULL); } -#line 24772 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24878 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 683: #line 5978 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->set_last_field_type((yyvsp[0].field_type)); } -#line 24778 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24884 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 684: @@ -24793,19 +24899,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else if (f->flags & (UNIQUE_FLAG | UNIQUE_KEY_FLAG)) add_key_to_list(lex, &(yyvsp[-4].lex_str), Key::UNIQUE, Lex->check_exists); } -#line 24797 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24903 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 687: #line 6004 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 24803 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24909 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 688: #line 6005 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 24809 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24915 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 689: @@ -24813,7 +24919,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->last_field->vcol_info->set_stored_in_db_flag(FALSE); } -#line 24817 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24923 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 690: @@ -24821,7 +24927,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->last_field->vcol_info->set_stored_in_db_flag(FALSE); } -#line 24825 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24931 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 691: @@ -24829,25 +24935,25 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->last_field->vcol_info->set_stored_in_db_flag(TRUE); } -#line 24833 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24939 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 692: #line 6024 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 24839 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24945 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 693: #line 6025 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 24845 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24951 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 694: #line 6029 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 24851 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24957 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 696: @@ -24857,7 +24963,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->last_field->flags|= UNIQUE_FLAG; lex->alter_info.flags|= Alter_info::ALTER_ADD_INDEX; } -#line 24861 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24967 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 697: @@ -24867,13 +24973,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->last_field->flags|= UNIQUE_FLAG; lex->alter_info.flags|= Alter_info::ALTER_ADD_INDEX; } -#line 24871 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24977 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 698: #line 6046 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->last_field->comment= (yyvsp[0].lex_str); } -#line 24877 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24983 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 699: @@ -24887,7 +24993,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (!Lex->parse_vcol_expr) my_yyabort_error((ER_SYNTAX_ERROR, MYF(0))); } -#line 24891 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 24997 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 700: @@ -24905,19 +25011,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); v->expr_item= (yyvsp[-1].item); Lex->last_field->vcol_info= v; } -#line 24909 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25015 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 701: #line 6080 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=(yyvsp[-2].field_type); } -#line 24915 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25021 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 702: #line 6081 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=(yyvsp[-2].field_type); } -#line 24921 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25027 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 703: @@ -24936,7 +25042,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->length= 0; } } -#line 24940 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25046 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 704: @@ -24945,7 +25051,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->length= (char*) "1"; (yyval.field_type)=MYSQL_TYPE_BIT; } -#line 24949 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25055 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 705: @@ -24953,7 +25059,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.field_type)=MYSQL_TYPE_BIT; } -#line 24957 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25063 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 706: @@ -24962,7 +25068,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->length= (char*) "1"; (yyval.field_type)=MYSQL_TYPE_TINY; } -#line 24966 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25072 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 707: @@ -24971,7 +25077,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->length= (char*) "1"; (yyval.field_type)=MYSQL_TYPE_TINY; } -#line 24975 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25081 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 708: @@ -24979,7 +25085,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.field_type)=MYSQL_TYPE_STRING; } -#line 24983 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25089 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 709: @@ -24988,7 +25094,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->length= (char*) "1"; (yyval.field_type)=MYSQL_TYPE_STRING; } -#line 24992 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25098 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 710: @@ -24997,7 +25103,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.field_type)=MYSQL_TYPE_STRING; bincmp_collation(national_charset_info, (yyvsp[0].num)); } -#line 25001 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25107 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 711: @@ -25007,7 +25113,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.field_type)=MYSQL_TYPE_STRING; bincmp_collation(national_charset_info, (yyvsp[0].num)); } -#line 25011 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25117 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 712: @@ -25016,7 +25122,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->charset=&my_charset_bin; (yyval.field_type)=MYSQL_TYPE_STRING; } -#line 25020 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25126 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 713: @@ -25026,7 +25132,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->charset=&my_charset_bin; (yyval.field_type)=MYSQL_TYPE_STRING; } -#line 25030 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25136 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 714: @@ -25034,7 +25140,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.field_type)= MYSQL_TYPE_VARCHAR; } -#line 25038 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25144 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 715: @@ -25043,7 +25149,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.field_type)= MYSQL_TYPE_VARCHAR; bincmp_collation(national_charset_info, (yyvsp[0].num)); } -#line 25047 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25153 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 716: @@ -25052,7 +25158,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->charset=&my_charset_bin; (yyval.field_type)= MYSQL_TYPE_VARCHAR; } -#line 25056 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25162 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 717: @@ -25074,20 +25180,20 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } (yyval.field_type)=MYSQL_TYPE_YEAR; } -#line 25078 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25184 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 718: #line 6180 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=MYSQL_TYPE_DATE; } -#line 25084 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25190 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 719: #line 6182 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)= opt_mysql56_temporal_format ? MYSQL_TYPE_TIME2 : MYSQL_TYPE_TIME; } -#line 25091 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25197 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 720: @@ -25108,14 +25214,14 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); : MYSQL_TYPE_TIMESTAMP; } } -#line 25112 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25218 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 721: #line 6202 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)= opt_mysql56_temporal_format ? MYSQL_TYPE_DATETIME2 : MYSQL_TYPE_DATETIME; } -#line 25119 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25225 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 722: @@ -25124,7 +25230,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->charset=&my_charset_bin; (yyval.field_type)=MYSQL_TYPE_TINY_BLOB; } -#line 25128 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25234 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 723: @@ -25133,7 +25239,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->charset=&my_charset_bin; (yyval.field_type)=MYSQL_TYPE_BLOB; } -#line 25137 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25243 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 724: @@ -25148,7 +25254,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); sym_group_geom.needed_define)); #endif } -#line 25152 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25258 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 725: @@ -25157,7 +25263,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->charset=&my_charset_bin; (yyval.field_type)=MYSQL_TYPE_MEDIUM_BLOB; } -#line 25161 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25267 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 726: @@ -25166,7 +25272,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->charset=&my_charset_bin; (yyval.field_type)=MYSQL_TYPE_LONG_BLOB; } -#line 25170 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25276 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 727: @@ -25175,73 +25281,73 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->charset=&my_charset_bin; (yyval.field_type)=MYSQL_TYPE_MEDIUM_BLOB; } -#line 25179 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25285 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 728: #line 6241 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=MYSQL_TYPE_MEDIUM_BLOB; } -#line 25185 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25291 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 729: #line 6243 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=MYSQL_TYPE_TINY_BLOB; } -#line 25191 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25297 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 730: #line 6245 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=MYSQL_TYPE_BLOB; } -#line 25197 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25303 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 731: #line 6247 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=MYSQL_TYPE_MEDIUM_BLOB; } -#line 25203 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25309 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 732: #line 6249 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=MYSQL_TYPE_LONG_BLOB; } -#line 25209 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25315 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 733: #line 6251 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=MYSQL_TYPE_NEWDECIMAL;} -#line 25215 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25321 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 734: #line 6253 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=MYSQL_TYPE_NEWDECIMAL;} -#line 25221 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25327 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 735: #line 6255 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=MYSQL_TYPE_NEWDECIMAL;} -#line 25227 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25333 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 736: #line 6257 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=MYSQL_TYPE_ENUM; } -#line 25233 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25339 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 737: #line 6259 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=MYSQL_TYPE_SET; } -#line 25239 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25345 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 738: #line 6261 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=MYSQL_TYPE_MEDIUM_BLOB; } -#line 25245 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25351 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 739: @@ -25251,19 +25357,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->last_field->flags|= (AUTO_INCREMENT_FLAG | NOT_NULL_FLAG | UNSIGNED_FLAG | UNIQUE_FLAG); } -#line 25255 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25361 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 740: #line 6271 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.geom_type)= Field::GEOM_GEOMETRY; } -#line 25261 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25367 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 741: #line 6272 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.geom_type)= Field::GEOM_GEOMETRYCOLLECTION; } -#line 25267 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25373 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 742: @@ -25273,127 +25379,127 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (MAX_LEN_GEOM_POINT_FIELD)); (yyval.geom_type)= Field::GEOM_POINT; } -#line 25277 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25383 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 743: #line 6279 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.geom_type)= Field::GEOM_MULTIPOINT; } -#line 25283 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25389 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 744: #line 6280 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.geom_type)= Field::GEOM_LINESTRING; } -#line 25289 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25395 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 745: #line 6281 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.geom_type)= Field::GEOM_MULTILINESTRING; } -#line 25295 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25401 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 746: #line 6282 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.geom_type)= Field::GEOM_POLYGON; } -#line 25301 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25407 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 747: #line 6283 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.geom_type)= Field::GEOM_MULTIPOLYGON; } -#line 25307 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25413 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 748: #line 6287 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25313 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25419 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 749: #line 6291 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25319 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25425 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 750: #line 6292 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25325 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25431 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 751: #line 6296 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25331 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25437 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 752: #line 6297 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25337 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25443 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 753: #line 6301 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25343 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25449 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 754: #line 6302 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25349 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25455 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 755: #line 6303 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25355 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25461 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 756: #line 6304 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25361 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25467 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 757: #line 6305 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25367 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25473 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 758: #line 6309 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=MYSQL_TYPE_LONG; } -#line 25373 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25479 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 759: #line 6310 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=MYSQL_TYPE_TINY; } -#line 25379 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25485 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 760: #line 6311 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=MYSQL_TYPE_SHORT; } -#line 25385 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25491 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 761: #line 6312 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=MYSQL_TYPE_INT24; } -#line 25391 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25497 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 762: #line 6313 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=MYSQL_TYPE_LONGLONG; } -#line 25397 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25503 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 763: @@ -25402,25 +25508,25 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.field_type)= thd->variables.sql_mode & MODE_REAL_AS_FLOAT ? MYSQL_TYPE_FLOAT : MYSQL_TYPE_DOUBLE; } -#line 25406 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25512 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 764: #line 6323 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=MYSQL_TYPE_DOUBLE; } -#line 25412 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25518 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 765: #line 6325 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.field_type)=MYSQL_TYPE_DOUBLE; } -#line 25418 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25524 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 766: #line 6330 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->last_field->srid= 0; } -#line 25424 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25530 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 767: @@ -25428,25 +25534,25 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->last_field->srid=atoi((yyvsp[0].lex_str).str); } -#line 25432 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25538 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 768: #line 6340 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->dec=Lex->length= (char*)0; } -#line 25438 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25544 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 769: #line 6342 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->dec= (char*)0; } -#line 25444 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25550 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 770: #line 6344 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25450 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25556 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 771: @@ -25456,133 +25562,133 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->length=(yyvsp[-3].lex_str).str; lex->dec=(yyvsp[-1].lex_str).str; } -#line 25460 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25566 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 772: #line 6357 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25466 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25572 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 773: #line 6358 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25472 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25578 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 774: #line 6362 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25478 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25584 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 775: #line 6363 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25484 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25590 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 776: #line 6367 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25490 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25596 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 777: #line 6368 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->last_field->flags|= UNSIGNED_FLAG;} -#line 25496 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25602 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 778: #line 6369 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->last_field->flags|= UNSIGNED_FLAG | ZEROFILL_FLAG; } -#line 25502 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25608 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 779: #line 6373 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->length= (yyvsp[-1].lex_str).str; } -#line 25508 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25614 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 780: #line 6374 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->length= (yyvsp[-1].lex_str).str; } -#line 25514 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25620 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 781: #line 6375 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->length= (yyvsp[-1].lex_str).str; } -#line 25520 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25626 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 782: #line 6376 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->length= (yyvsp[-1].lex_str).str; } -#line 25526 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25632 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 783: #line 6379 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->length=(char*) 0; /* use default length */ } -#line 25532 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25638 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 784: #line 6380 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 25538 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25644 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 785: #line 6384 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25544 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25650 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 786: #line 6385 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25550 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25656 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 787: #line 6389 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25556 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25662 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 788: #line 6390 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25562 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25668 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 789: #line 6394 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25568 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25674 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 791: #line 6399 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->last_field->flags&= ~ NOT_NULL_FLAG; } -#line 25574 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25680 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 792: #line 6400 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->last_field->flags|= NOT_NULL_FLAG; } -#line 25580 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25686 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 793: #line 6401 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->last_field->def= (yyvsp[0].item); } -#line 25586 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25692 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 794: @@ -25593,13 +25699,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; Lex->last_field->on_update= item; } -#line 25597 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25703 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 795: #line 6409 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->last_field->flags|= AUTO_INCREMENT_FLAG | NOT_NULL_FLAG; } -#line 25603 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25709 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 796: @@ -25609,7 +25715,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->last_field->flags|= AUTO_INCREMENT_FLAG | NOT_NULL_FLAG | UNIQUE_FLAG; lex->alter_info.flags|= Alter_info::ALTER_ADD_INDEX; } -#line 25613 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25719 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 797: @@ -25619,7 +25725,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->last_field->flags|= PRI_KEY_FLAG | NOT_NULL_FLAG; lex->alter_info.flags|= Alter_info::ALTER_ADD_INDEX; } -#line 25623 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25729 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 798: @@ -25629,7 +25735,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->last_field->flags|= UNIQUE_FLAG; lex->alter_info.flags|= Alter_info::ALTER_ADD_INDEX; } -#line 25633 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25739 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 799: @@ -25639,13 +25745,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->last_field->flags|= UNIQUE_KEY_FLAG; lex->alter_info.flags|= Alter_info::ALTER_ADD_INDEX; } -#line 25643 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25749 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 800: #line 6434 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->last_field->comment= (yyvsp[0].lex_str); } -#line 25649 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25755 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 801: @@ -25656,7 +25762,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[0].charset)->name,Lex->charset->csname)); Lex->last_field->charset= (yyvsp[0].charset); } -#line 25660 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25766 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 802: @@ -25668,7 +25774,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); engine_option_value((yyvsp[-2].lex_str), (yyvsp[0].lex_str), true, &Lex->last_field->option_list, &Lex->option_list_last); } -#line 25672 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25778 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 803: @@ -25680,7 +25786,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); engine_option_value((yyvsp[-2].lex_str), (yyvsp[0].lex_str), false, &Lex->last_field->option_list, &Lex->option_list_last); } -#line 25684 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25790 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 804: @@ -25690,7 +25796,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); engine_option_value((yyvsp[-2].lex_str), (yyvsp[0].ulonglong_number), &Lex->last_field->option_list, &Lex->option_list_last, thd->mem_root); } -#line 25694 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25800 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 805: @@ -25699,7 +25805,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); new (thd->mem_root) engine_option_value((yyvsp[-2].lex_str), &Lex->last_field->option_list, &Lex->option_list_last); } -#line 25703 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25809 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 806: @@ -25714,7 +25820,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } Lex->set_last_field_type((yyvsp[-1].field_type)); } -#line 25718 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25824 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 807: @@ -25724,25 +25830,25 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 25728 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25834 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 808: #line 6495 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)=(yyvsp[0].item); } -#line 25734 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25840 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 809: #line 6499 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25740 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25846 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 810: #line 6500 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25746 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25852 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 811: @@ -25751,37 +25857,37 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (!((yyval.charset)=get_charset_by_csname((yyvsp[0].lex_str).str,MY_CS_PRIMARY,MYF(0)))) my_yyabort_error((ER_UNKNOWN_CHARACTER_SET, MYF(0), (yyvsp[0].lex_str).str)); } -#line 25755 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25861 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 812: #line 6509 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.charset)= &my_charset_bin; } -#line 25761 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25867 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 813: #line 6513 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.charset)=(yyvsp[0].charset); } -#line 25767 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25873 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 814: #line 6514 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.charset)=NULL; } -#line 25773 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25879 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 815: #line 6518 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.charset)= NULL; } -#line 25779 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25885 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 816: #line 6519 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.charset)= (yyvsp[0].charset); } -#line 25785 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25891 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 817: @@ -25791,25 +25897,25 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); !((yyval.charset)=get_old_charset_by_name((yyvsp[0].lex_str).str))) my_yyabort_error((ER_UNKNOWN_CHARACTER_SET, MYF(0), (yyvsp[0].lex_str).str)); } -#line 25795 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25901 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 818: #line 6529 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.charset)= &my_charset_bin; } -#line 25801 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25907 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 819: #line 6533 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.charset)=(yyvsp[0].charset); } -#line 25807 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25913 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 820: #line 6534 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.charset)=NULL; } -#line 25813 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25919 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 821: @@ -25818,55 +25924,55 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (!((yyval.charset)= mysqld_collation_get_by_name((yyvsp[0].lex_str).str))) MYSQL_YYABORT; } -#line 25822 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25928 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 822: #line 6546 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.charset)=NULL; } -#line 25828 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25934 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 823: #line 6547 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.charset)=(yyvsp[0].charset); } -#line 25834 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25940 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 824: #line 6551 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.charset)=(yyvsp[0].charset); } -#line 25840 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25946 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 825: #line 6552 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.charset)=NULL; } -#line 25846 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25952 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 826: #line 6556 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25852 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25958 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 827: #line 6557 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 25858 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25964 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 828: #line 6561 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.charset)= (yyvsp[0].charset); } -#line 25864 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25970 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 829: #line 6562 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.charset)= &my_charset_latin1; } -#line 25870 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25976 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 830: @@ -25875,49 +25981,49 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (!((yyval.charset)= get_charset_by_csname("ucs2", MY_CS_PRIMARY,MYF(0)))) my_yyabort_error((ER_UNKNOWN_CHARACTER_SET, MYF(0), "ucs2")); } -#line 25879 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25985 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 831: #line 6571 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { bincmp_collation(NULL, false); } -#line 25885 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25991 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 832: #line 6572 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { bincmp_collation(&my_charset_bin, false); } -#line 25891 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 25997 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 833: #line 6573 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { bincmp_collation((yyvsp[-1].charset), (yyvsp[0].num)); } -#line 25897 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26003 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 834: #line 6574 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { bincmp_collation(NULL, true); } -#line 25903 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26009 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 835: #line 6575 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { bincmp_collation((yyvsp[0].charset), true); } -#line 25909 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26015 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 836: #line 6579 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= false; } -#line 25915 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26021 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 837: #line 6580 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= true; } -#line 25921 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26027 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 838: @@ -25929,55 +26035,55 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 25933 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26039 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 839: #line 6593 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ulong_num)= (yyvsp[-2].ulong_num); } -#line 25939 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26045 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 840: #line 6597 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ulong_num)= 0; } -#line 25945 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26051 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 841: #line 6598 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ulong_num)= 1 << MY_STRXFRM_DESC_SHIFT; } -#line 25951 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26057 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 842: #line 6602 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ulong_num)= 1 << MY_STRXFRM_REVERSE_SHIFT; } -#line 25957 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26063 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 843: #line 6605 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ulong_num)= 0; } -#line 25963 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26069 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 844: #line 6606 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ulong_num)= (yyvsp[0].ulong_num); } -#line 25969 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26075 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 845: #line 6607 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ulong_num)= (yyvsp[-1].ulong_num) | (yyvsp[0].ulong_num); } -#line 25975 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26081 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 846: #line 6608 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ulong_num)= (yyvsp[0].ulong_num) ; } -#line 25981 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26087 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 847: @@ -25986,7 +26092,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.ulong_num)= (yyvsp[0].ulong_num) < 1 ? 1 : ((yyvsp[0].ulong_num) > MY_STRXFRM_NLEVELS ? MY_STRXFRM_NLEVELS : (yyvsp[0].ulong_num)); (yyval.ulong_num)--; } -#line 25990 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26096 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 848: @@ -25994,19 +26100,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.ulong_num)= (1 | (yyvsp[0].ulong_num)) << (yyvsp[-1].ulong_num); } -#line 25998 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26104 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 849: #line 6627 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ulong_num)= (yyvsp[0].ulong_num); } -#line 26004 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26110 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 850: #line 6628 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ulong_num)|= (yyvsp[0].ulong_num); } -#line 26010 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26116 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 851: @@ -26017,31 +26123,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); for ((yyval.ulong_num)= 0; start <= end; start++) (yyval.ulong_num)|= (1 << start); } -#line 26021 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26127 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 852: #line 6642 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ulong_num)= (yyvsp[0].ulong_num); } -#line 26027 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26133 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 853: #line 6643 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ulong_num)= (yyvsp[0].ulong_num); } -#line 26033 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26139 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 854: #line 6647 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ulong_num)= 0; } -#line 26039 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26145 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 855: #line 6648 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ulong_num)= (yyvsp[0].ulong_num); } -#line 26045 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26151 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 858: @@ -26049,13 +26155,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.table)=(yyvsp[-3].table); } -#line 26053 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26159 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 859: #line 6669 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->ref_list.empty(); } -#line 26059 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26165 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 861: @@ -26066,7 +26172,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; Lex->ref_list.push_back(key, thd->mem_root); } -#line 26070 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26176 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 862: @@ -26079,31 +26185,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->ref_list.empty(); lex->ref_list.push_back(key, thd->mem_root); } -#line 26083 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26189 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 863: #line 6694 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->fk_match_option= Foreign_key::FK_MATCH_UNDEF; } -#line 26089 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26195 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 864: #line 6696 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->fk_match_option= Foreign_key::FK_MATCH_FULL; } -#line 26095 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26201 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 865: #line 6698 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->fk_match_option= Foreign_key::FK_MATCH_PARTIAL; } -#line 26101 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26207 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 866: #line 6700 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->fk_match_option= Foreign_key::FK_MATCH_SIMPLE; } -#line 26107 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26213 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 867: @@ -26113,7 +26219,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->fk_update_opt= FK_OPTION_UNDEF; lex->fk_delete_opt= FK_OPTION_UNDEF; } -#line 26117 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26223 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 868: @@ -26123,7 +26229,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->fk_update_opt= (yyvsp[0].m_fk_option); lex->fk_delete_opt= FK_OPTION_UNDEF; } -#line 26127 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26233 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 869: @@ -26133,7 +26239,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->fk_update_opt= FK_OPTION_UNDEF; lex->fk_delete_opt= (yyvsp[0].m_fk_option); } -#line 26137 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26243 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 870: @@ -26143,7 +26249,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->fk_update_opt= (yyvsp[-3].m_fk_option); lex->fk_delete_opt= (yyvsp[0].m_fk_option); } -#line 26147 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26253 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 871: @@ -26153,103 +26259,103 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->fk_update_opt= (yyvsp[0].m_fk_option); lex->fk_delete_opt= (yyvsp[-3].m_fk_option); } -#line 26157 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26263 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 872: #line 6739 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.m_fk_option)= FK_OPTION_RESTRICT; } -#line 26163 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26269 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 873: #line 6740 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.m_fk_option)= FK_OPTION_CASCADE; } -#line 26169 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26275 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 874: #line 6741 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.m_fk_option)= FK_OPTION_SET_NULL; } -#line 26175 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26281 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 875: #line 6742 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.m_fk_option)= FK_OPTION_NO_ACTION; } -#line 26181 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26287 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 876: #line 6743 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.m_fk_option)= FK_OPTION_SET_DEFAULT; } -#line 26187 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26293 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 877: #line 6747 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.key_type)= Key::PRIMARY; } -#line 26193 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26299 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 878: #line 6748 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.key_type)= Key::UNIQUE; } -#line 26199 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26305 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 879: #line 6752 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 26205 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26311 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 880: #line 6753 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 26211 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26317 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 881: #line 6757 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 26217 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26323 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 883: #line 6762 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 26223 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26329 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 884: #line 6763 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 26229 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26335 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 885: #line 6764 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 26235 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26341 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 886: #line 6768 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.key_type)= Key::MULTIPLE; } -#line 26241 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26347 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 887: #line 6769 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.key_type)= Key::UNIQUE; } -#line 26247 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26353 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 888: #line 6773 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.key_type)= Key::FULLTEXT;} -#line 26253 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26359 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 889: @@ -26262,97 +26368,97 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); sym_group_geom.needed_define)); #endif } -#line 26266 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26372 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 890: #line 6789 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 26272 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26378 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 891: #line 6790 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->last_key->option_list= Lex->option_list; } -#line 26278 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26384 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 892: #line 6794 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 26284 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26390 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 893: #line 6795 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->last_key->option_list= Lex->option_list; } -#line 26290 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26396 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 894: #line 6799 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 26296 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26402 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 895: #line 6800 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->last_key->option_list= Lex->option_list; } -#line 26302 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26408 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 902: #line 6819 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.key_alg)= HA_KEY_ALG_UNDEF; } -#line 26308 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26414 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 903: #line 6820 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.key_alg)= (yyvsp[0].key_alg); } -#line 26314 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26420 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 904: #line 6824 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.key_alg)= HA_KEY_ALG_UNDEF; } -#line 26320 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26426 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 905: #line 6825 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.key_alg)= (yyvsp[0].key_alg); } -#line 26326 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26432 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 906: #line 6826 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.key_alg)= (yyvsp[0].key_alg); } -#line 26332 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26438 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 907: #line 6830 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->last_key->key_create_info.algorithm= (yyvsp[0].key_alg); } -#line 26338 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26444 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 908: #line 6832 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->last_key->key_create_info.algorithm= (yyvsp[0].key_alg); } -#line 26344 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26450 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 909: #line 6837 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->last_key->key_create_info.block_size= (yyvsp[0].ulong_num); } -#line 26350 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26456 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 910: #line 6839 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->last_key->key_create_info.comment= (yyvsp[0].lex_str); } -#line 26356 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26462 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 911: @@ -26364,7 +26470,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); engine_option_value((yyvsp[-2].lex_str), (yyvsp[0].lex_str), true, &Lex->option_list, &Lex->option_list_last); } -#line 26368 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26474 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 912: @@ -26376,7 +26482,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); engine_option_value((yyvsp[-2].lex_str), (yyvsp[0].lex_str), false, &Lex->option_list, &Lex->option_list_last); } -#line 26380 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26486 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 913: @@ -26386,7 +26492,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); engine_option_value((yyvsp[-2].lex_str), (yyvsp[0].ulonglong_number), &Lex->option_list, &Lex->option_list_last, thd->mem_root); } -#line 26390 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26496 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 914: @@ -26395,7 +26501,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); new (thd->mem_root) engine_option_value((yyvsp[-2].lex_str), &Lex->option_list, &Lex->option_list_last); } -#line 26399 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26505 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 919: @@ -26406,25 +26512,25 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else my_yyabort_error((ER_FUNCTION_NOT_DEFINED, MYF(0), (yyvsp[0].lex_str).str)); } -#line 26410 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26516 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 920: #line 6890 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.key_alg)= HA_KEY_ALG_BTREE; } -#line 26416 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26522 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 921: #line 6891 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.key_alg)= HA_KEY_ALG_RTREE; } -#line 26422 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26528 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 922: #line 6892 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.key_alg)= HA_KEY_ALG_HASH; } -#line 26428 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26534 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 923: @@ -26432,7 +26538,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->last_key->columns.push_back((yyvsp[-1].key_part), thd->mem_root); } -#line 26436 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26542 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 924: @@ -26440,7 +26546,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->last_key->columns.push_back((yyvsp[-1].key_part), thd->mem_root); } -#line 26444 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26550 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 925: @@ -26450,7 +26556,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.key_part) == NULL) MYSQL_YYABORT; } -#line 26454 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26560 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 926: @@ -26463,43 +26569,43 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.key_part) == NULL) MYSQL_YYABORT; } -#line 26467 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26573 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 927: #line 6925 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)= null_lex_str; } -#line 26473 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26579 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 928: #line 6926 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)= (yyvsp[0].lex_str); } -#line 26479 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26585 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 929: #line 6930 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)= null_lex_str; } -#line 26485 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26591 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 930: #line 6931 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)= (yyvsp[0].lex_str); } -#line 26491 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26597 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 931: #line 6936 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->last_field->interval_list.push_back((yyvsp[0].string), thd->mem_root); } -#line 26497 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26603 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 932: #line 6938 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->last_field->interval_list.push_back((yyvsp[0].string), thd->mem_root); } -#line 26503 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26609 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 933: @@ -26517,7 +26623,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.storage_media= HA_SM_DEFAULT; DBUG_ASSERT(!Lex->m_sql_cmd); } -#line 26521 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26627 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 934: @@ -26531,7 +26637,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->select_lex.db= (Lex->select_lex.table_list.first)->db; Lex->create_last_non_select_table= Lex->last_table(); } -#line 26535 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26641 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 935: @@ -26545,7 +26651,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 26549 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26655 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 936: @@ -26554,7 +26660,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_info.default_table_charset= NULL; Lex->create_info.used_fields= 0; } -#line 26558 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26664 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 937: @@ -26567,7 +26673,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->copy_db_to(&lex->name.str, &lex->name.length)) MYSQL_YYABORT; } -#line 26571 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26677 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 938: @@ -26579,7 +26685,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sql_command= SQLCOM_ALTER_DB_UPGRADE; lex->name= (yyvsp[-4].lex_str); } -#line 26583 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26689 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 939: @@ -26591,7 +26697,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_SP_NO_DROP_SP, MYF(0), "PROCEDURE")); bzero((char *)&lex->sp_chistics, sizeof(st_sp_chistics)); } -#line 26595 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26701 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 940: @@ -26602,7 +26708,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sql_command= SQLCOM_ALTER_PROCEDURE; lex->spname= (yyvsp[-2].spname); } -#line 26606 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26712 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 941: @@ -26614,7 +26720,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_SP_NO_DROP_SP, MYF(0), "FUNCTION")); bzero((char *)&lex->sp_chistics, sizeof(st_sp_chistics)); } -#line 26618 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26724 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 942: @@ -26625,7 +26731,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sql_command= SQLCOM_ALTER_FUNCTION; lex->spname= (yyvsp[-2].spname); } -#line 26629 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26735 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 943: @@ -26637,13 +26743,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_SP_BADSTATEMENT, MYF(0), "ALTER VIEW")); lex->create_view_mode= VIEW_ALTER; } -#line 26641 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26747 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 944: #line 7040 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 26647 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26753 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 945: @@ -26656,13 +26762,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->create_view_algorithm= VIEW_ALGORITHM_INHERIT; lex->create_view_mode= VIEW_ALTER; } -#line 26660 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26766 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 946: #line 7056 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 26666 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26772 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 947: @@ -26683,7 +26789,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->sql_command= SQLCOM_ALTER_EVENT; Lex->stmt_definition_begin= (yyvsp[-2].simple_string); } -#line 26687 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26793 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 948: @@ -26701,7 +26807,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->sql_command= SQLCOM_ALTER_EVENT; Lex->stmt_definition_end= (char*)YYLIP->get_cpp_ptr(); } -#line 26705 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26811 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 949: @@ -26710,7 +26816,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->alter_tablespace_info->ts_cmd_type= ALTER_TABLESPACE; } -#line 26714 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26820 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 950: @@ -26719,7 +26825,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->alter_tablespace_info->ts_cmd_type= ALTER_LOGFILE_GROUP; } -#line 26723 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26829 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 951: @@ -26728,7 +26834,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->alter_tablespace_info->ts_cmd_type= CHANGE_FILE_TABLESPACE; } -#line 26732 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26838 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 952: @@ -26737,7 +26843,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->alter_tablespace_info->ts_cmd_type= ALTER_ACCESS_MODE_TABLESPACE; } -#line 26741 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26847 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 953: @@ -26747,43 +26853,43 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sql_command= SQLCOM_ALTER_SERVER; lex->server_options.reset((yyvsp[0].lex_str)); } -#line 26751 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26857 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 954: #line 7117 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 26757 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26863 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 955: #line 7121 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 0;} -#line 26763 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26869 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 956: #line 7122 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 1; } -#line 26769 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26875 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 957: #line 7123 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 1; } -#line 26775 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26881 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 958: #line 7124 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 1; } -#line 26781 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26887 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 959: #line 7128 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 0;} -#line 26787 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26893 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 960: @@ -26796,31 +26902,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->spname= (yyvsp[0].spname); (yyval.num)= 1; } -#line 26800 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26906 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 961: #line 7141 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 0;} -#line 26806 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26912 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 962: #line 7142 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 1; } -#line 26812 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26918 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 963: #line 7146 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)= null_lex_str; } -#line 26818 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26924 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 964: #line 7147 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)= (yyvsp[0].lex_str); } -#line 26824 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26930 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 966: @@ -26832,7 +26938,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->m_sql_cmd == NULL) MYSQL_YYABORT; } -#line 26836 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26942 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 967: @@ -26844,7 +26950,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->m_sql_cmd == NULL) MYSQL_YYABORT; } -#line 26848 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26954 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 973: @@ -26854,7 +26960,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); DBUG_ASSERT(!Lex->if_exists()); Lex->create_info.add((yyvsp[-1].object_ddl_options)); } -#line 26858 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26964 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 974: @@ -26864,7 +26970,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->alter_info.flags|= Alter_info::ALTER_REBUILD_PARTITION; lex->no_write_to_binlog= (yyvsp[-1].num); } -#line 26868 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26974 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 975: @@ -26879,7 +26985,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->m_sql_cmd == NULL) MYSQL_YYABORT; } -#line 26883 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 26989 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 977: @@ -26894,7 +27000,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->m_sql_cmd == NULL) MYSQL_YYABORT; } -#line 26898 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27004 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 978: @@ -26908,7 +27014,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->m_sql_cmd == NULL) MYSQL_YYABORT; } -#line 26912 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27018 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 980: @@ -26923,7 +27029,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->m_sql_cmd == NULL) MYSQL_YYABORT; } -#line 26927 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27033 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 982: @@ -26934,7 +27040,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->no_write_to_binlog= (yyvsp[-1].num); lex->alter_info.num_parts= (yyvsp[0].ulong_num); } -#line 26938 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27044 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 983: @@ -26948,7 +27054,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->m_sql_cmd == NULL) MYSQL_YYABORT; } -#line 26952 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27058 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 985: @@ -26975,7 +27081,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->m_sql_cmd == NULL) MYSQL_YYABORT; } -#line 26979 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27085 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 986: @@ -26983,7 +27089,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->alter_info.flags|= Alter_info::ALTER_REMOVE_PARTITIONING; } -#line 26987 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27093 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 987: @@ -26991,7 +27097,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->alter_info.flags|= Alter_info::ALTER_ALL_PARTITION; } -#line 26995 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27101 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 989: @@ -27009,13 +27115,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->create_info.set((yyvsp[-1].object_ddl_options)); lex->no_write_to_binlog= (yyvsp[0].num); } -#line 27013 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27119 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 990: #line 7320 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27019 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27125 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 992: @@ -27024,7 +27130,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->part_info->num_parts= lex->part_info->partitions.elements; } -#line 27028 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27134 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 993: @@ -27032,7 +27138,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->part_info->num_parts= (yyvsp[0].ulong_num); } -#line 27036 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27142 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 994: @@ -27047,7 +27153,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } lex->no_write_to_binlog= (yyvsp[0].num); } -#line 27051 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27157 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 996: @@ -27055,7 +27161,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->alter_info.flags|= Alter_info::ALTER_TABLE_REORG; } -#line 27059 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27165 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 997: @@ -27063,7 +27169,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->alter_info.flags|= Alter_info::ALTER_REORGANIZE_PARTITION; } -#line 27067 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27173 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 998: @@ -27072,19 +27178,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); partition_info *part_info= Lex->part_info; part_info->num_parts= part_info->partitions.elements; } -#line 27076 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27182 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 999: #line 7368 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27082 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27188 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1000: #line 7369 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27088 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27194 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1001: @@ -27097,7 +27203,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 27101 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27207 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1004: @@ -27106,7 +27212,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex=Lex; lex->alter_info.flags|= Alter_info::ALTER_ADD_COLUMN; } -#line 27110 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27216 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1005: @@ -27114,7 +27220,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->create_last_non_select_table= Lex->last_table(); } -#line 27118 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27224 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1006: @@ -27123,7 +27229,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_last_non_select_table= Lex->last_table(); Lex->alter_info.flags|= Alter_info::ALTER_ADD_INDEX; } -#line 27127 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27233 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1007: @@ -27132,7 +27238,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->alter_info.flags|= Alter_info::ALTER_ADD_COLUMN | Alter_info::ALTER_ADD_INDEX; } -#line 27136 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27242 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1008: @@ -27142,7 +27248,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_last_non_select_table= Lex->last_table(); Lex->last_field->change= (yyvsp[-2].lex_str).str; } -#line 27146 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27252 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1009: @@ -27152,7 +27258,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->create_last_non_select_table= Lex->last_table(); Lex->last_field->change= Lex->last_field->field_name; } -#line 27156 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27262 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1010: @@ -27166,7 +27272,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->alter_info.drop_list.push_back(ad, thd->mem_root); lex->alter_info.flags|= Alter_info::ALTER_DROP_COLUMN; } -#line 27170 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27276 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1011: @@ -27180,7 +27286,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->alter_info.drop_list.push_back(ad, thd->mem_root); lex->alter_info.flags|= Alter_info::DROP_FOREIGN_KEY; } -#line 27184 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27290 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1012: @@ -27195,7 +27301,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->alter_info.drop_list.push_back(ad, thd->mem_root); lex->alter_info.flags|= Alter_info::ALTER_DROP_INDEX; } -#line 27199 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27305 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1013: @@ -27209,7 +27315,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->alter_info.drop_list.push_back(ad, thd->mem_root); lex->alter_info.flags|= Alter_info::ALTER_DROP_INDEX; } -#line 27213 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27319 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1014: @@ -27219,7 +27325,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->alter_info.keys_onoff= Alter_info::DISABLE; lex->alter_info.flags|= Alter_info::ALTER_KEYS_ONOFF; } -#line 27223 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27329 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1015: @@ -27229,7 +27335,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->alter_info.keys_onoff= Alter_info::ENABLE; lex->alter_info.flags|= Alter_info::ALTER_KEYS_ONOFF; } -#line 27233 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27339 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1016: @@ -27242,7 +27348,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->alter_info.alter_list.push_back(ac, thd->mem_root); lex->alter_info.flags|= Alter_info::ALTER_CHANGE_COLUMN_DEFAULT; } -#line 27246 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27352 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1017: @@ -27256,7 +27362,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->alter_info.alter_list.push_back(ac, thd->mem_root); lex->alter_info.flags|= Alter_info::ALTER_CHANGE_COLUMN_DEFAULT; } -#line 27260 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27366 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1018: @@ -27276,7 +27382,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->name= (yyvsp[0].table)->table; lex->alter_info.flags|= Alter_info::ALTER_RENAME; } -#line 27280 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27386 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1019: @@ -27294,7 +27400,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; Lex->alter_info.flags|= Alter_info::ALTER_OPTIONS; } -#line 27298 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27404 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1020: @@ -27308,7 +27414,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->create_info.used_fields&= ~HA_CREATE_USED_ENGINE; } } -#line 27312 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27418 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1021: @@ -27316,7 +27422,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->alter_info.flags|= Alter_info::ALTER_RECREATE; } -#line 27320 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27426 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1022: @@ -27325,7 +27431,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex=Lex; lex->alter_info.flags|= Alter_info::ALTER_ORDER; } -#line 27329 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27435 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1030: @@ -27334,7 +27440,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->alter_info.requested_algorithm= Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT; } -#line 27338 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27444 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1031: @@ -27343,7 +27449,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->alter_info.set_requested_algorithm(&(yyvsp[0].lex_str))) my_yyabort_error((ER_UNKNOWN_ALTER_ALGORITHM, MYF(0), (yyvsp[0].lex_str).str)); } -#line 27347 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27453 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1032: @@ -27352,7 +27458,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->alter_info.requested_lock= Alter_info::ALTER_TABLE_LOCK_DEFAULT; } -#line 27356 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27462 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1033: @@ -27361,43 +27467,43 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->alter_info.set_requested_lock(&(yyvsp[0].lex_str))) my_yyabort_error((ER_UNKNOWN_ALTER_LOCK, MYF(0), (yyvsp[0].lex_str).str)); } -#line 27365 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27471 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1034: #line 7589 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27371 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27477 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1035: #line 7590 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27377 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27483 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1036: #line 7594 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->ignore= 0;} -#line 27383 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27489 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1037: #line 7595 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->ignore= 1;} -#line 27389 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27495 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1038: #line 7599 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->ignore= 0;} -#line 27395 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27501 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1044: #line 7613 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->ignore= 1;} -#line 27401 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27507 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1045: @@ -27406,31 +27512,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->alter_info.requested_lock= Alter_info::ALTER_TABLE_LOCK_NONE; } -#line 27410 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27516 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1046: #line 7622 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->drop_mode= DROP_DEFAULT; } -#line 27416 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27522 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1047: #line 7623 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->drop_mode= DROP_RESTRICT; } -#line 27422 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27528 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1048: #line 7624 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->drop_mode= DROP_CASCADE; } -#line 27428 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27534 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1049: #line 7628 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27434 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27540 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1050: @@ -27439,7 +27545,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); store_position_for_column((yyvsp[0].lex_str).str); Lex->alter_info.flags |= Alter_info::ALTER_COLUMN_ORDER; } -#line 27443 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27549 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1051: @@ -27448,31 +27554,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); store_position_for_column(first_keyword); Lex->alter_info.flags |= Alter_info::ALTER_COLUMN_ORDER; } -#line 27452 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27558 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1052: #line 7642 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27458 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27564 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1053: #line 7643 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27464 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27570 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1054: #line 7644 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27470 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27576 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1055: #line 7645 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27476 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27582 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1056: @@ -27483,13 +27589,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->type = 0; /* If you change this code don't forget to update SLAVE START too */ } -#line 27487 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27593 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1057: #line 7657 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27493 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27599 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1058: @@ -27499,13 +27605,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sql_command = SQLCOM_SLAVE_ALL_START; lex->type = 0; } -#line 27503 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27609 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1059: #line 7664 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27509 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27615 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1060: @@ -27516,7 +27622,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->type = 0; /* If you change this code don't forget to update SLAVE STOP too */ } -#line 27520 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27626 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1061: @@ -27527,7 +27633,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->type = 0; /* If you change this code don't forget to update SLAVE STOP too */ } -#line 27531 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27637 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1062: @@ -27544,7 +27650,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } lex->start_transaction_opt= (yyvsp[0].num); } -#line 27548 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27654 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1063: @@ -27552,7 +27658,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.num)= 0; } -#line 27556 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27662 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1064: @@ -27560,7 +27666,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.num)= (yyvsp[0].num); } -#line 27564 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27670 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1065: @@ -27568,7 +27674,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.num)= (yyvsp[0].num); } -#line 27572 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27678 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1066: @@ -27576,7 +27682,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.num)= (yyvsp[-2].num) | (yyvsp[0].num); } -#line 27580 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27686 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1067: @@ -27584,7 +27690,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.num)= MYSQL_START_TRANS_OPT_WITH_CONS_SNAPSHOT; } -#line 27588 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27694 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1068: @@ -27592,7 +27698,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.num)= MYSQL_START_TRANS_OPT_READ_ONLY; } -#line 27596 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27702 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1069: @@ -27600,43 +27706,43 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.num)= MYSQL_START_TRANS_OPT_READ_WRITE; } -#line 27604 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27710 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1070: #line 7735 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->slave_thd_opt= 0; } -#line 27610 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27716 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1071: #line 7737 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27616 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27722 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1074: #line 7746 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27622 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27728 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1075: #line 7747 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->slave_thd_opt|=SLAVE_SQL; } -#line 27628 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27734 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1076: #line 7748 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->slave_thd_opt|=SLAVE_IO; } -#line 27634 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27740 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1077: #line 7752 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27640 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27746 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1078: @@ -27649,7 +27755,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (lex->mi.relay_log_name && lex->mi.relay_log_pos))) my_yyabort_error((ER_BAD_SLAVE_UNTIL_COND, MYF(0))); } -#line 27653 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27759 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1079: @@ -27657,7 +27763,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->mi.gtid_pos_str = (yyvsp[0].lex_str); } -#line 27661 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27767 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1082: @@ -27668,37 +27774,37 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* Will be overriden during execution. */ YYPS->m_lock_type= TL_UNLOCK; } -#line 27672 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27778 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1083: #line 7782 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27678 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27784 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1084: #line 7786 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->check_opt.flags= 0; } -#line 27684 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27790 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1085: #line 7787 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->check_opt.flags= T_QUICK; } -#line 27690 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27796 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1086: #line 7788 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->check_opt.flags= T_EXTEND; } -#line 27696 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27802 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1088: #line 7793 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->only_view= TRUE; } -#line 27702 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27808 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1090: @@ -27712,7 +27818,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* Will be overriden during execution. */ YYPS->m_lock_type= TL_UNLOCK; } -#line 27716 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27822 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1091: @@ -27724,61 +27830,61 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->m_sql_cmd == NULL) MYSQL_YYABORT; } -#line 27728 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27834 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1092: #line 7818 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->check_opt.flags = T_MEDIUM; } -#line 27734 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27840 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1093: #line 7819 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27740 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27846 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1094: #line 7823 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27746 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27852 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1095: #line 7824 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27752 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27858 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1096: #line 7828 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->check_opt.flags|= T_QUICK; } -#line 27758 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27864 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1097: #line 7829 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->check_opt.flags|= T_EXTEND; } -#line 27764 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27870 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1098: #line 7830 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->check_opt.sql_flags|= TT_USEFRM; } -#line 27770 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27876 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1099: #line 7834 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 27776 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27882 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1100: #line 7835 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->check_opt.sql_flags|= TT_FROM_MYSQL; } -#line 27782 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27888 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1101: @@ -27792,7 +27898,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* Will be overriden during execution. */ YYPS->m_lock_type= TL_UNLOCK; } -#line 27796 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27902 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1102: @@ -27804,13 +27910,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->m_sql_cmd == NULL) MYSQL_YYABORT; } -#line 27808 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27914 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1106: #line 7870 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27814 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27920 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1107: @@ -27818,25 +27924,25 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { thd->lex->with_persistent_for_clause= TRUE; } -#line 27822 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27928 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1108: #line 7879 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27828 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27934 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1109: #line 7881 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27834 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27940 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1110: #line 7884 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27840 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27946 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1111: @@ -27847,13 +27953,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->column_list == NULL) MYSQL_YYABORT; } -#line 27851 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27957 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1113: #line 7897 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27857 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27963 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1114: @@ -27864,13 +27970,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->index_list == NULL) MYSQL_YYABORT; } -#line 27868 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27974 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1116: #line 7911 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27874 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27980 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1117: @@ -27879,7 +27985,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->column_list->push_back((LEX_STRING*) thd->memdup(&(yyvsp[0].lex_str), sizeof(LEX_STRING)), thd->mem_root); } -#line 27883 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27989 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1118: @@ -27888,13 +27994,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->column_list->push_back((LEX_STRING*) thd->memdup(&(yyvsp[0].lex_str), sizeof(LEX_STRING)), thd->mem_root); } -#line 27892 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 27998 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1119: #line 7926 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27898 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28004 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1122: @@ -27904,7 +28010,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); thd->memdup(&(yyvsp[0].lex_str), sizeof(LEX_STRING)), thd->mem_root); } -#line 27908 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28014 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1123: @@ -27915,7 +28021,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); thd->memdup(&str, sizeof(LEX_STRING)), thd->mem_root); } -#line 27919 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28025 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1124: @@ -27923,18 +28029,30 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { Lex->sql_command = SQLCOM_BINLOG_BASE64_EVENT; Lex->comment= (yyvsp[0].lex_str); + Lex->ident.str= NULL; + Lex->ident.length= 0; } -#line 27928 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28036 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1126: + case 1125: #line 7958 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { + Lex->sql_command = SQLCOM_BINLOG_BASE64_EVENT; + Lex->comment= (yyvsp[-3].lex_str); + Lex->ident= (yyvsp[0].lex_str); + } +#line 28046 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ + break; + + case 1127: +#line 7967 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->only_view= TRUE; } -#line 27934 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28052 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1128: -#line 7962 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1129: +#line 7971 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; @@ -27944,11 +28062,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* Will be overriden during execution. */ YYPS->m_lock_type= TL_UNLOCK; } -#line 27948 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28066 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1129: -#line 7972 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1130: +#line 7981 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX* lex= thd->lex; if (lex->sphead) @@ -27958,83 +28076,83 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->m_sql_cmd == NULL) MYSQL_YYABORT; } -#line 27962 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ - break; - - case 1130: -#line 7984 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { Lex->check_opt.flags = T_MEDIUM; } -#line 27968 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28080 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1131: -#line 7985 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - {} -#line 27974 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 7993 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { Lex->check_opt.flags = T_MEDIUM; } +#line 28086 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1132: -#line 7989 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 7994 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27980 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28092 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1133: -#line 7990 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 7998 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 27986 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28098 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1134: -#line 7994 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { Lex->check_opt.flags|= T_QUICK; } -#line 27992 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 7999 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + {} +#line 28104 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1135: -#line 7995 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { Lex->check_opt.flags|= T_FAST; } -#line 27998 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 8003 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { Lex->check_opt.flags|= T_QUICK; } +#line 28110 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1136: -#line 7996 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { Lex->check_opt.flags|= T_MEDIUM; } -#line 28004 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 8004 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { Lex->check_opt.flags|= T_FAST; } +#line 28116 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1137: -#line 7997 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { Lex->check_opt.flags|= T_EXTEND; } -#line 28010 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 8005 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { Lex->check_opt.flags|= T_MEDIUM; } +#line 28122 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1138: -#line 7998 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { Lex->check_opt.flags|= T_CHECK_ONLY_CHANGED; } -#line 28016 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 8006 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { Lex->check_opt.flags|= T_EXTEND; } +#line 28128 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1139: -#line 7999 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { Lex->check_opt.sql_flags|= TT_FOR_UPGRADE; } -#line 28022 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 8007 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { Lex->check_opt.flags|= T_CHECK_ONLY_CHANGED; } +#line 28134 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1140: -#line 8003 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { } -#line 28028 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 8008 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { Lex->check_opt.sql_flags|= TT_FOR_UPGRADE; } +#line 28140 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1141: -#line 8004 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { Lex->check_opt.sql_flags|= TT_FOR_UPGRADE; } -#line 28034 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 8012 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { } +#line 28146 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1142: -#line 8009 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 8013 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { Lex->check_opt.sql_flags|= TT_FOR_UPGRADE; } +#line 28152 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ + break; + + case 1143: +#line 8018 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command = SQLCOM_OPTIMIZE; @@ -28044,11 +28162,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* Will be overriden during execution. */ YYPS->m_lock_type= TL_UNLOCK; } -#line 28048 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28166 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1143: -#line 8019 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1144: +#line 8028 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX* lex= thd->lex; DBUG_ASSERT(!lex->m_sql_cmd); @@ -28056,71 +28174,71 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->m_sql_cmd == NULL) MYSQL_YYABORT; } -#line 28060 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28178 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1144: -#line 8029 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1145: +#line 8038 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 0; } -#line 28066 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28184 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1145: -#line 8030 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1146: +#line 8039 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 1; } -#line 28072 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28190 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1146: -#line 8031 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1147: +#line 8040 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 1; } -#line 28078 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28196 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1147: -#line 8036 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1148: +#line 8045 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command= SQLCOM_RENAME_TABLE; } -#line 28086 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28204 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1148: -#line 8040 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1149: +#line 8049 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 28092 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28210 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1149: -#line 8042 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1150: +#line 8051 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command = SQLCOM_RENAME_USER; } -#line 28100 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28218 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1150: -#line 8049 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1151: +#line 8058 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (Lex->users_list.push_back((yyvsp[-2].lex_user), thd->mem_root) || Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)) MYSQL_YYABORT; } -#line 28110 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28228 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1151: -#line 8055 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1152: +#line 8064 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (Lex->users_list.push_back((yyvsp[-2].lex_user), thd->mem_root) || Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)) MYSQL_YYABORT; } -#line 28120 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28238 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1154: -#line 8069 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1155: +#line 8078 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; SELECT_LEX *sl= lex->current_select; @@ -28130,146 +28248,146 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); TL_IGNORE, MDL_EXCLUSIVE)) MYSQL_YYABORT; } -#line 28134 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28252 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1155: -#line 8082 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1156: +#line 8091 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->alter_info.reset(); } -#line 28142 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28260 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1156: -#line 8086 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1157: +#line 8095 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command= SQLCOM_ASSIGN_TO_KEYCACHE; lex->ident= (yyvsp[0].lex_str); } -#line 28152 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28270 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1161: -#line 8105 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1162: +#line 8114 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (!Select->add_table_to_list(thd, (yyvsp[-1].table), NULL, 0, TL_READ, MDL_SHARED_READ, Select->pop_index_hints())) MYSQL_YYABORT; } -#line 28163 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28281 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1162: -#line 8115 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1163: +#line 8124 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (!Select->add_table_to_list(thd, (yyvsp[-2].table), NULL, 0, TL_READ, MDL_SHARED_READ, Select->pop_index_hints())) MYSQL_YYABORT; } -#line 28174 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28292 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1163: -#line 8124 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1164: +#line 8133 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)= (yyvsp[0].lex_str); } -#line 28180 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28298 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1164: -#line 8125 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1165: +#line 8134 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str) = default_key_cache_base; } -#line 28186 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28304 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1165: -#line 8130 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1166: +#line 8139 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command=SQLCOM_PRELOAD_KEYS; lex->alter_info.reset(); } -#line 28196 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28314 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1166: -#line 8136 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1167: +#line 8145 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 28202 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28320 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1171: -#line 8151 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1172: +#line 8160 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (!Select->add_table_to_list(thd, (yyvsp[-2].table), NULL, (yyvsp[0].num), TL_READ, MDL_SHARED_READ, Select->pop_index_hints())) MYSQL_YYABORT; } -#line 28213 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28331 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1172: -#line 8161 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1173: +#line 8170 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (!Select->add_table_to_list(thd, (yyvsp[-3].table), NULL, (yyvsp[0].num), TL_READ, MDL_SHARED_READ, Select->pop_index_hints())) MYSQL_YYABORT; } -#line 28224 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28342 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1173: -#line 8171 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1174: +#line 8180 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->alter_info.flags|= Alter_info::ALTER_ADMIN_PARTITION; } -#line 28232 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28350 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1175: -#line 8178 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1176: +#line 8187 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->select_lex.alloc_index_hints(thd); Select->set_index_hint_type(INDEX_HINT_USE, INDEX_HINT_MASK_ALL); } -#line 28242 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28360 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1177: -#line 8187 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1178: +#line 8196 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 28248 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28366 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1179: -#line 8193 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1180: +#line 8202 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 0; } -#line 28254 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28372 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1180: -#line 8194 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1181: +#line 8203 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= TL_OPTION_IGNORE_LEAVES; } -#line 28260 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28378 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1181: -#line 8204 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1182: +#line 8213 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SELECT; } -#line 28269 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28387 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1184: -#line 8217 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1185: +#line 8226 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* In order to correctly parse UNION's global ORDER BY we need to @@ -28277,47 +28395,47 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); */ Lex->current_select->set_braces(true); } -#line 28281 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28399 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1185: -#line 8225 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1186: +#line 8234 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (setup_select_in_parentheses(Lex)) MYSQL_YYABORT; } -#line 28290 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28408 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1187: -#line 8234 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1188: +#line 8243 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->current_select->set_braces(true); } -#line 28298 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28416 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1188: -#line 8239 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1189: +#line 8248 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (setup_select_in_parentheses(Lex)) MYSQL_YYABORT; } -#line 28307 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28425 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1190: -#line 8248 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1191: +#line 8257 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; /* Parentheses carry no meaning here */ lex->current_select->set_braces(false); } -#line 28317 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28435 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1194: -#line 8278 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1195: +#line 8287 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if ((yyvsp[-9].num) && (yyvsp[-1].num)) /* double "INTO" clause */ my_yyabort_error((ER_WRONG_USAGE, MYF(0), "INTO", "INTO")); @@ -28325,11 +28443,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyvsp[-2].num) && ((yyvsp[-9].num) || (yyvsp[-1].num))) /* "INTO" with "PROCEDURE ANALYSE" */ my_yyabort_error((ER_WRONG_USAGE, MYF(0), "PROCEDURE", "INTO")); } -#line 28329 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28447 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1195: -#line 8288 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1196: +#line 8297 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; SELECT_LEX *sel= lex->current_select; @@ -28337,38 +28455,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); mysql_init_select(lex); lex->current_select->parsing_place= SELECT_LIST; } -#line 28341 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28459 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1196: -#line 8296 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1197: +#line 8305 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->parsing_place= NO_MATTER; } -#line 28349 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28467 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1201: -#line 8323 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1202: +#line 8332 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->context.table_list= Select->context.first_name_resolution_table= Select->table_list.first; } -#line 28359 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28477 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1204: -#line 8338 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1205: +#line 8347 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (Select->options & SELECT_DISTINCT && Select->options & SELECT_ALL) my_yyabort_error((ER_WRONG_USAGE, MYF(0), "ALL", "DISTINCT")); } -#line 28368 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28486 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1208: -#line 8352 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1209: +#line 8361 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* Allow this flag only on the first top-level SELECT statement, if @@ -28385,11 +28503,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->select_lex.options&= ~OPTION_TO_QUERY_CACHE; Lex->select_lex.sql_cache= SELECT_LEX::SQL_NO_CACHE; } -#line 28389 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28507 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1209: -#line 8369 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1210: +#line 8378 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* Allow this flag only on the first top-level SELECT statement, if @@ -28406,22 +28524,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->select_lex.options|= OPTION_TO_QUERY_CACHE; Lex->select_lex.sql_cache= SELECT_LEX::SQL_CACHE; } -#line 28410 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28528 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1211: -#line 8390 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1212: +#line 8399 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->current_select->lock_type= TL_WRITE; lex->current_select->set_lock_for_tables(TL_WRITE); lex->safe_to_cache_query=0; } -#line 28421 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28539 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1212: -#line 8397 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1213: +#line 8406 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->current_select->lock_type= TL_READ_WITH_SHARED_LOCKS; @@ -28429,11 +28547,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); set_lock_for_tables(TL_READ_WITH_SHARED_LOCKS); lex->safe_to_cache_query=0; } -#line 28433 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28551 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1215: -#line 8410 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1216: +#line 8419 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item *item= new (thd->mem_root) Item_field(thd, &thd->lex->current_select->context, @@ -28444,20 +28562,20 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; (thd->lex->current_select->with_wild)++; } -#line 28448 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28566 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1216: -#line 8424 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1217: +#line 8433 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (add_item_to_list(thd, (yyvsp[-1].item))) MYSQL_YYABORT; } -#line 28457 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28575 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1217: -#line 8429 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1218: +#line 8438 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { DBUG_ASSERT((yyvsp[-3].simple_string) < (yyvsp[-1].simple_string)); @@ -28476,113 +28594,113 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-2].item)->set_name((yyvsp[-3].simple_string), (uint) ((yyvsp[-1].simple_string) - (yyvsp[-3].simple_string)), thd->charset()); } } -#line 28480 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28598 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1218: -#line 8450 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1219: +#line 8459 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.simple_string)= (char*) YYLIP->get_tok_start(); } -#line 28488 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28606 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1219: -#line 8456 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1220: +#line 8465 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.simple_string)= (char*) YYLIP->get_cpp_tok_start(); } -#line 28496 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28614 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1220: -#line 8462 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1221: +#line 8471 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.simple_string)= (char*) YYLIP->get_cpp_tok_end(); } -#line 28504 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ - break; - - case 1221: -#line 8468 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.lex_str)=null_lex_str;} -#line 28510 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28622 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1222: -#line 8469 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.lex_str)=(yyvsp[0].lex_str); } -#line 28516 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 8477 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.lex_str)=null_lex_str;} +#line 28628 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1223: -#line 8470 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 8478 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)=(yyvsp[0].lex_str); } -#line 28522 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28634 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1224: -#line 8471 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 8479 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)=(yyvsp[0].lex_str); } -#line 28528 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28640 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1225: -#line 8472 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 8480 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)=(yyvsp[0].lex_str); } -#line 28534 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28646 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1226: -#line 8476 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.num)= NOT_FIXED_DEC; } -#line 28540 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 8481 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.lex_str)=(yyvsp[0].lex_str); } +#line 28652 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1227: -#line 8477 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 8485 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= NOT_FIXED_DEC; } -#line 28546 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28658 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1228: -#line 8478 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.num)= (yyvsp[-1].ulong_num); } -#line 28552 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 8486 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.num)= NOT_FIXED_DEC; } +#line 28664 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1229: -#line 8482 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.num)= 0; } -#line 28558 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 8487 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.num)= (yyvsp[-1].ulong_num); } +#line 28670 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1230: -#line 8483 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 8491 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 0; } -#line 28564 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28676 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1231: -#line 8484 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.num)= (yyvsp[-1].ulong_num); } -#line 28570 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 8492 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.num)= 0; } +#line 28682 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1232: -#line 8488 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - {} -#line 28576 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 8493 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.num)= (yyvsp[-1].ulong_num); } +#line 28688 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1233: -#line 8489 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 8497 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 28582 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28694 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1234: -#line 8495 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 8498 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + {} +#line 28700 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ + break; + + case 1235: +#line 8504 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* Design notes: @@ -28633,22 +28751,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 28637 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28755 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1235: -#line 8546 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1236: +#line 8555 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* XOR is a proprietary extension */ (yyval.item)= new (thd->mem_root) Item_func_xor(thd, (yyvsp[-2].item), (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28648 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28766 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1236: -#line 8553 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1237: +#line 8562 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* See comments in rule expr: expr or expr */ Item_cond_and *item1; @@ -28691,141 +28809,141 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 28695 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28813 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1237: -#line 8596 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1238: +#line 8605 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= negate_expression(thd, (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28705 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28823 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1238: -#line 8602 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1239: +#line 8611 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_istrue(thd, (yyvsp[-2].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28715 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28833 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1239: -#line 8608 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1240: +#line 8617 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_isnottrue(thd, (yyvsp[-3].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28725 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28843 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1240: -#line 8614 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1241: +#line 8623 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_isfalse(thd, (yyvsp[-2].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28735 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28853 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1241: -#line 8620 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1242: +#line 8629 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_isnotfalse(thd, (yyvsp[-3].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28745 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28863 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1242: -#line 8626 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1243: +#line 8635 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_isnull(thd, (yyvsp[-2].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28755 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28873 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1243: -#line 8632 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1244: +#line 8641 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_isnotnull(thd, (yyvsp[-3].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28765 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28883 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1245: -#line 8642 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1246: +#line 8651 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_isnull(thd, (yyvsp[-2].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28775 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28893 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1246: -#line 8648 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1247: +#line 8657 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_isnotnull(thd, (yyvsp[-3].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28785 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28903 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1247: -#line 8654 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1248: +#line 8663 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_equal(thd, (yyvsp[-2].item), (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28795 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28913 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1248: -#line 8660 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1249: +#line 8669 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= (*(yyvsp[-1].boolfunc2creator))(0)->create(thd, (yyvsp[-2].item), (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28805 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28923 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1249: -#line 8666 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1250: +#line 8675 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= all_any_subquery_creator(thd, (yyvsp[-5].item), (yyvsp[-4].boolfunc2creator), (yyvsp[-3].num), (yyvsp[-1].select_lex)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28815 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28933 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1251: -#line 8676 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1252: +#line 8685 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_in_subselect(thd, (yyvsp[-4].item), (yyvsp[-1].select_lex)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28825 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28943 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1252: -#line 8682 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1253: +#line 8691 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item *item= new (thd->mem_root) Item_in_subselect(thd, (yyvsp[-5].item), (yyvsp[-1].select_lex)); if (item == NULL) @@ -28834,21 +28952,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28838 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28956 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1253: -#line 8691 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1254: +#line 8700 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= handle_sql2003_note184_exception(thd, (yyvsp[-4].item), true, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28848 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28966 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1254: -#line 8697 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1255: +#line 8706 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyvsp[-1].item_list)->push_front((yyvsp[-3].item), thd->mem_root); (yyvsp[-1].item_list)->push_front((yyvsp[-6].item), thd->mem_root); @@ -28856,21 +28974,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28860 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28978 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1255: -#line 8705 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1256: +#line 8714 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= handle_sql2003_note184_exception(thd, (yyvsp[-5].item), false, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28870 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 28988 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1256: -#line 8711 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1257: +#line 8720 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyvsp[-1].item_list)->push_front((yyvsp[-3].item), thd->mem_root); (yyvsp[-1].item_list)->push_front((yyvsp[-7].item), thd->mem_root); @@ -28880,21 +28998,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); item->negate(); (yyval.item)= item; } -#line 28884 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29002 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1257: -#line 8721 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1258: +#line 8730 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_between(thd, (yyvsp[-4].item), (yyvsp[-2].item), (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28894 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29012 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1258: -#line 8727 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1259: +#line 8736 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item_func_between *item; item= new (thd->mem_root) Item_func_between(thd, (yyvsp[-5].item), (yyvsp[-2].item), (yyvsp[0].item)); @@ -28903,11 +29021,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); item->negate(); (yyval.item)= item; } -#line 28907 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29025 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1259: -#line 8736 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1260: +#line 8745 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item *item1= new (thd->mem_root) Item_func_soundex(thd, (yyvsp[-3].item)); Item *item4= new (thd->mem_root) Item_func_soundex(thd, (yyvsp[0].item)); @@ -28917,22 +29035,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28921 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29039 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1260: -#line 8746 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1261: +#line 8755 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_like(thd, (yyvsp[-3].item), (yyvsp[-1].item), (yyvsp[0].item), Lex->escape_used); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28932 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29050 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1261: -#line 8753 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1262: +#line 8762 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item *item= new (thd->mem_root) Item_func_like(thd, (yyvsp[-4].item), (yyvsp[-1].item), (yyvsp[0].item), Lex->escape_used); @@ -28942,21 +29060,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28946 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29064 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1262: -#line 8763 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1263: +#line 8772 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_regex(thd, (yyvsp[-2].item), (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28956 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29074 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1263: -#line 8769 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1264: +#line 8778 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item *item= new (thd->mem_root) Item_func_regex(thd, (yyvsp[-3].item), (yyvsp[0].item)); if (item == NULL) @@ -28965,318 +29083,318 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28969 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29087 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1265: -#line 8782 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1266: +#line 8791 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_bit_or(thd, (yyvsp[-2].item), (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28979 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29097 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1266: -#line 8788 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1267: +#line 8797 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_bit_and(thd, (yyvsp[-2].item), (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28989 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29107 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1267: -#line 8794 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1268: +#line 8803 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_shift_left(thd, (yyvsp[-2].item), (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 28999 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29117 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1268: -#line 8800 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1269: +#line 8809 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_shift_right(thd, (yyvsp[-2].item), (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29009 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29127 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1269: -#line 8806 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1270: +#line 8815 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_plus(thd, (yyvsp[-2].item), (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29019 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29137 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1270: -#line 8812 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1271: +#line 8821 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_minus(thd, (yyvsp[-2].item), (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29029 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29147 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1271: -#line 8818 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1272: +#line 8827 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-4].item), (yyvsp[-1].item), (yyvsp[0].interval), 0); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29039 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29157 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1272: -#line 8824 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1273: +#line 8833 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-4].item), (yyvsp[-1].item), (yyvsp[0].interval), 1); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29049 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29167 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1273: -#line 8830 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1274: +#line 8839 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_mul(thd, (yyvsp[-2].item), (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29059 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29177 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1274: -#line 8836 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1275: +#line 8845 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_div(thd, (yyvsp[-2].item), (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29069 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29187 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1275: -#line 8842 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1276: +#line 8851 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_mod(thd, (yyvsp[-2].item), (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29079 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29197 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1276: -#line 8848 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1277: +#line 8857 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_int_div(thd, (yyvsp[-2].item), (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29089 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29207 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1277: -#line 8854 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1278: +#line 8863 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_mod(thd, (yyvsp[-2].item), (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29099 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29217 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1278: -#line 8860 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1279: +#line 8869 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_bit_xor(thd, (yyvsp[-2].item), (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29109 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29227 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1288: -#line 8889 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1289: +#line 8898 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.boolfunc2creator) = &comp_eq_creator; } -#line 29115 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29233 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1289: -#line 8890 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1290: +#line 8899 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.boolfunc2creator) = &comp_ge_creator; } -#line 29121 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29239 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1290: -#line 8891 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1291: +#line 8900 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.boolfunc2creator) = &comp_gt_creator; } -#line 29127 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29245 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1291: -#line 8892 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1292: +#line 8901 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.boolfunc2creator) = &comp_le_creator; } -#line 29133 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29251 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1292: -#line 8893 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1293: +#line 8902 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.boolfunc2creator) = &comp_lt_creator; } -#line 29139 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29257 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1293: -#line 8894 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1294: +#line 8903 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.boolfunc2creator) = &comp_ne_creator; } -#line 29145 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29263 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1294: -#line 8898 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1295: +#line 8907 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num) = 1; } -#line 29151 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29269 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1295: -#line 8899 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1296: +#line 8908 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num) = 0; } -#line 29157 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29275 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1296: -#line 8904 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1297: +#line 8913 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; (yyval.num)= DYN_COL_NULL; /* automatic type */ lex->charset= NULL; lex->length= lex->dec= 0; } -#line 29168 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29286 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1297: -#line 8910 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1298: +#line 8919 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= (yyvsp[0].num); } -#line 29174 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29292 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1298: -#line 8915 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1299: +#line 8924 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; (yyval.num)= DYN_COL_INT; lex->charset= NULL; lex->length= lex->dec= 0; } -#line 29185 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29303 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1299: -#line 8922 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1300: +#line 8931 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; (yyval.num)= DYN_COL_UINT; lex->charset= NULL; lex->length= lex->dec= 0; } -#line 29196 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29314 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1300: -#line 8929 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1301: +#line 8938 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; (yyval.num)= DYN_COL_DOUBLE; lex->charset= NULL; lex->length= lex->dec= 0; } -#line 29207 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29325 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1301: -#line 8936 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1302: +#line 8945 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; (yyval.num)= DYN_COL_DOUBLE; lex->charset= NULL; lex->length= lex->dec= 0; } -#line 29218 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29336 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1302: -#line 8943 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1303: +#line 8952 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; (yyval.num)= DYN_COL_DOUBLE; lex->charset= NULL; lex->length= lex->dec= 0; } -#line 29229 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29347 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1303: -#line 8950 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1304: +#line 8959 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= DYN_COL_DECIMAL; Lex->charset= NULL; } -#line 29238 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29356 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1304: -#line 8955 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1305: +#line 8964 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->charset= thd->variables.collation_connection; } -#line 29244 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29362 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1305: -#line 8957 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1306: +#line 8966 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; (yyval.num)= DYN_COL_STRING; lex->length= lex->dec= 0; } -#line 29254 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29372 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1306: -#line 8963 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1307: +#line 8972 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; (yyval.num)= DYN_COL_STRING; lex->charset= national_charset_info; lex->length= lex->dec= 0; } -#line 29265 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29383 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1307: -#line 8970 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1308: +#line 8979 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; (yyval.num)= DYN_COL_DATE; lex->charset= NULL; lex->length= lex->dec= 0; } -#line 29276 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29394 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1308: -#line 8977 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1309: +#line 8986 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; (yyval.num)= DYN_COL_TIME; @@ -29284,11 +29402,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->dec= lex->length; lex->length= 0; } -#line 29288 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29406 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1309: -#line 8985 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1310: +#line 8994 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; (yyval.num)= DYN_COL_DATETIME; @@ -29296,11 +29414,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->dec= lex->length; lex->length= 0; } -#line 29300 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29418 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1310: -#line 8996 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1311: +#line 9005 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; (yyval.dyncol_def)= (DYNCALL_CREATE_DEF *) @@ -29320,31 +29438,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.dyncol_def)->len= 0; } -#line 29324 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29442 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1311: -#line 9018 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1312: +#line 9027 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.dyncol_def_list)= new (thd->mem_root) List; if ((yyval.dyncol_def_list) == NULL) MYSQL_YYABORT; (yyval.dyncol_def_list)->push_back((yyvsp[0].dyncol_def), thd->mem_root); } -#line 29335 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29453 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1312: -#line 9025 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1313: +#line 9034 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyvsp[-2].dyncol_def_list)->push_back((yyvsp[0].dyncol_def), thd->mem_root); (yyval.dyncol_def_list)= (yyvsp[-2].dyncol_def_list); } -#line 29344 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29462 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1318: -#line 9038 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1319: +#line 9047 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item *i1= new (thd->mem_root) Item_string(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length, @@ -29355,113 +29473,113 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29359 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29477 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1320: -#line 9049 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1321: +#line 9058 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= (yyvsp[0].item_param); } -#line 29365 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29483 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1323: -#line 9053 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1324: +#line 9062 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_concat(thd, (yyvsp[-2].item), (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29375 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29493 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1324: -#line 9059 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1325: +#line 9068 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= (yyvsp[0].item); } -#line 29383 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29501 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1325: -#line 9063 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1326: +#line 9072 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_neg(thd, (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29393 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29511 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1326: -#line 9069 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1327: +#line 9078 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_bit_neg(thd, (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29403 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29521 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1327: -#line 9075 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1328: +#line 9084 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= negate_expression(thd, (yyvsp[0].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29413 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29531 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1328: -#line 9081 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1329: +#line 9090 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_singlerow_subselect(thd, (yyvsp[-1].select_lex)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29423 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29541 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1329: -#line 9087 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1330: +#line 9096 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= (yyvsp[-1].item); } -#line 29429 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29547 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1330: -#line 9089 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1331: +#line 9098 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyvsp[-1].item_list)->push_front((yyvsp[-3].item), thd->mem_root); (yyval.item)= new (thd->mem_root) Item_row(thd, *(yyvsp[-1].item_list)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29440 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29558 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1331: -#line 9096 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1332: +#line 9105 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyvsp[-1].item_list)->push_front((yyvsp[-3].item), thd->mem_root); (yyval.item)= new (thd->mem_root) Item_row(thd, *(yyvsp[-1].item_list)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29451 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29569 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1332: -#line 9103 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1333: +#line 9112 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_exists_subselect(thd, (yyvsp[-1].select_lex)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29461 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29579 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1333: -#line 9109 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1334: +#line 9118 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= NULL; /* @@ -29485,11 +29603,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) (yyval.item)= (yyvsp[-1].item); } -#line 29489 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29607 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1334: -#line 9133 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1335: +#line 9142 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyvsp[-5].item_list)->push_front((yyvsp[-2].item), thd->mem_root); Item_func_match *i1= new (thd->mem_root) Item_func_match(thd, *(yyvsp[-5].item_list), @@ -29499,22 +29617,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Select->add_ftfunc_to_list(thd, i1); (yyval.item)= i1; } -#line 29503 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29621 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1335: -#line 9143 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1336: +#line 9152 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= create_func_cast(thd, (yyvsp[0].item), ITEM_CAST_CHAR, NULL, NULL, &my_charset_bin); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29514 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29632 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1336: -#line 9150 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1337: +#line 9159 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; (yyval.item)= create_func_cast(thd, (yyvsp[-3].item), (yyvsp[-1].cast_type), lex->length, lex->dec, @@ -29522,42 +29640,42 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29526 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29644 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1337: -#line 9158 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1338: +#line 9167 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_case(thd, *(yyvsp[-2].item_list), (yyvsp[-3].item), (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29536 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29654 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1338: -#line 9164 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1339: +#line 9173 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= create_func_cast(thd, (yyvsp[-3].item), (yyvsp[-1].cast_type), Lex->length, Lex->dec, Lex->charset); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29547 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29665 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1339: -#line 9171 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1340: +#line 9180 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_conv_charset(thd, (yyvsp[-3].item), (yyvsp[-1].charset)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29557 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29675 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1340: -#line 9177 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1341: +#line 9186 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item_splocal *il= (yyvsp[-1].item)->get_item_splocal(); if (il) @@ -29567,52 +29685,52 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29571 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29689 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1341: -#line 9187 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1342: +#line 9196 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_insert_value(thd, Lex->current_context(), (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29582 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29700 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1342: -#line 9195 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1343: +#line 9204 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[0].item), (yyvsp[-3].item), (yyvsp[-2].interval), 0); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29592 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29710 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1343: -#line 9210 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1344: +#line 9219 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_char(thd, *(yyvsp[-1].item_list)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29602 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29720 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1344: -#line 9216 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1345: +#line 9225 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_char(thd, *(yyvsp[-3].item_list), (yyvsp[-1].charset)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29612 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29730 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1345: -#line 9222 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1346: +#line 9231 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_current_user(thd, Lex->current_context()); @@ -29621,11 +29739,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION); Lex->safe_to_cache_query= 0; } -#line 29625 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29743 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1346: -#line 9231 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1347: +#line 9240 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_current_role(thd, Lex->current_context()); @@ -29634,51 +29752,51 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION); Lex->safe_to_cache_query= 0; } -#line 29638 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29756 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1347: -#line 9240 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1348: +#line 9249 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_date_typecast(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29648 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29766 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1348: -#line 9246 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1349: +#line 9255 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_dayofmonth(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29658 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29776 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1349: -#line 9252 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1350: +#line 9261 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_hour(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29668 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29786 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1350: -#line 9258 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1351: +#line 9267 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_insert(thd, (yyvsp[-7].item), (yyvsp[-5].item), (yyvsp[-3].item), (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29678 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29796 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1351: -#line 9264 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1352: +#line 9273 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { List *list= new (thd->mem_root) List; if (list == NULL) @@ -29692,11 +29810,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29696 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29814 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1352: -#line 9278 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1353: +#line 9287 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyvsp[-1].item_list)->push_front((yyvsp[-3].item), thd->mem_root); (yyvsp[-1].item_list)->push_front((yyvsp[-5].item), thd->mem_root); @@ -29707,173 +29825,173 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29711 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29829 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1353: -#line 9289 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1354: +#line 9298 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_left(thd, (yyvsp[-3].item), (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29721 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29839 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1354: -#line 9295 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1355: +#line 9304 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_minute(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29731 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29849 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1355: -#line 9301 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1356: +#line 9310 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_month(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29741 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29859 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1356: -#line 9307 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1357: +#line 9316 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_right(thd, (yyvsp[-3].item), (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29751 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29869 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1357: -#line 9313 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1358: +#line 9322 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_second(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29761 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29879 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1358: -#line 9319 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1359: +#line 9328 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_time_typecast(thd, (yyvsp[-1].item), AUTO_SEC_PART_DIGITS); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29772 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29890 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1359: -#line 9326 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1360: +#line 9335 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_datetime_typecast(thd, (yyvsp[-1].item), AUTO_SEC_PART_DIGITS); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29783 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29901 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1360: -#line 9333 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1361: +#line 9342 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_add_time(thd, (yyvsp[-3].item), (yyvsp[-1].item), 1, 0); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29793 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29911 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1361: -#line 9339 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1362: +#line 9348 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_trim(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29803 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29921 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1362: -#line 9345 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1363: +#line 9354 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_ltrim(thd, (yyvsp[-1].item), (yyvsp[-3].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29813 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29931 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1363: -#line 9351 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1364: +#line 9360 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_rtrim(thd, (yyvsp[-1].item), (yyvsp[-3].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29823 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29941 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1364: -#line 9357 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1365: +#line 9366 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_trim(thd, (yyvsp[-1].item), (yyvsp[-3].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29833 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29951 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1365: -#line 9363 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1366: +#line 9372 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_ltrim(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29843 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29961 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1366: -#line 9369 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1367: +#line 9378 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_rtrim(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29853 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29971 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1367: -#line 9375 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1368: +#line 9384 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_trim(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29863 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29981 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1368: -#line 9381 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1369: +#line 9390 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_trim(thd, (yyvsp[-1].item), (yyvsp[-3].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29873 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 29991 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1369: -#line 9387 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1370: +#line 9396 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_user(thd); if ((yyval.item) == NULL) @@ -29881,186 +29999,186 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION); Lex->safe_to_cache_query=0; } -#line 29885 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30003 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1370: -#line 9395 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1371: +#line 9404 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_year(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29895 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30013 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1371: -#line 9416 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1372: +#line 9425 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-3].item), (yyvsp[-1].item), INTERVAL_DAY, 0); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29906 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30024 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1372: -#line 9423 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1373: +#line 9432 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-5].item), (yyvsp[-2].item), (yyvsp[-1].interval), 0); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29916 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30034 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1373: -#line 9429 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1374: +#line 9438 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_curdate_local(thd); if ((yyval.item) == NULL) MYSQL_YYABORT; Lex->safe_to_cache_query=0; } -#line 29927 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30045 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1374: -#line 9436 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1375: +#line 9445 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_curtime_local(thd, (yyvsp[0].num)); if ((yyval.item) == NULL) MYSQL_YYABORT; Lex->safe_to_cache_query=0; } -#line 29938 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30056 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1375: -#line 9444 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1376: +#line 9453 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-5].item), (yyvsp[-2].item), (yyvsp[-1].interval), 0); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29948 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30066 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1376: -#line 9451 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1377: +#line 9460 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-5].item), (yyvsp[-2].item), (yyvsp[-1].interval), 1); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29958 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30076 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1377: -#line 9457 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1378: +#line 9466 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)=new (thd->mem_root) Item_extract(thd, (yyvsp[-3].interval), (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29968 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30086 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1378: -#line 9463 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1379: +#line 9472 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_get_format(thd, (yyvsp[-3].date_time_type), (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29978 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30096 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1379: -#line 9469 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1380: +#line 9478 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_now_local(thd, (yyvsp[0].num)); if ((yyval.item) == NULL) MYSQL_YYABORT; Lex->safe_to_cache_query=0; } -#line 29989 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30107 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1380: -#line 9476 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1381: +#line 9485 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_locate(thd, (yyvsp[-1].item), (yyvsp[-3].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 29999 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30117 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1381: -#line 9482 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1382: +#line 9491 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-3].item), (yyvsp[-1].item), INTERVAL_DAY, 1); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30010 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30128 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1382: -#line 9489 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1383: +#line 9498 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-5].item), (yyvsp[-2].item), (yyvsp[-1].interval), 1); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30020 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30138 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1383: -#line 9495 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1384: +#line 9504 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_substr(thd, (yyvsp[-5].item), (yyvsp[-3].item), (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30030 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30148 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1384: -#line 9501 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1385: +#line 9510 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_substr(thd, (yyvsp[-3].item), (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30040 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30158 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1385: -#line 9507 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1386: +#line 9516 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_substr(thd, (yyvsp[-5].item), (yyvsp[-3].item), (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30050 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30168 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1386: -#line 9513 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1387: +#line 9522 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_substr(thd, (yyvsp[-3].item), (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30060 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30178 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1387: -#line 9519 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1388: +#line 9528 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* Unlike other time-related functions, SYSDATE() is @@ -30078,104 +30196,104 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; Lex->safe_to_cache_query=0; } -#line 30082 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30200 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1388: -#line 9537 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1389: +#line 9546 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_date_add_interval(thd, (yyvsp[-1].item), (yyvsp[-3].item), (yyvsp[-5].interval_time_st), 0); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30092 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30210 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1389: -#line 9543 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1390: +#line 9552 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_timestamp_diff(thd, (yyvsp[-3].item), (yyvsp[-1].item), (yyvsp[-5].interval_time_st)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30102 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30220 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1390: -#line 9549 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1391: +#line 9558 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_curdate_utc(thd); if ((yyval.item) == NULL) MYSQL_YYABORT; Lex->safe_to_cache_query=0; } -#line 30113 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30231 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1391: -#line 9556 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1392: +#line 9565 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_curtime_utc(thd, (yyvsp[0].num)); if ((yyval.item) == NULL) MYSQL_YYABORT; Lex->safe_to_cache_query=0; } -#line 30124 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30242 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1392: -#line 9563 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1393: +#line 9572 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_now_utc(thd, (yyvsp[0].num)); if ((yyval.item) == NULL) MYSQL_YYABORT; Lex->safe_to_cache_query=0; } -#line 30135 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30253 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1393: -#line 9571 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1394: +#line 9580 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= create_func_dyncol_add(thd, (yyvsp[-3].item), *(yyvsp[-1].dyncol_def_list)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30145 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30263 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1394: -#line 9578 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1395: +#line 9587 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= create_func_dyncol_delete(thd, (yyvsp[-3].item), *(yyvsp[-1].item_list)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30155 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30273 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1395: -#line 9585 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1396: +#line 9594 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_dyncol_check(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30165 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30283 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1396: -#line 9592 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1397: +#line 9601 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= create_func_dyncol_create(thd, *(yyvsp[-1].dyncol_def_list)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30175 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30293 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1397: -#line 9599 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1398: +#line 9608 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; (yyval.item)= create_func_dyncol_get(thd, (yyvsp[-5].item), (yyvsp[-3].item), (yyvsp[-1].cast_type), @@ -30184,133 +30302,133 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30188 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30306 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1398: -#line 9616 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1399: +#line 9625 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_ascii(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30198 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30316 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1399: -#line 9622 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1400: +#line 9631 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_charset(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30208 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30326 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1400: -#line 9628 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1401: +#line 9637 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_coalesce(thd, *(yyvsp[-1].item_list)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30218 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30336 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1401: -#line 9634 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1402: +#line 9643 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_collation(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30228 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30346 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1402: -#line 9640 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1403: +#line 9649 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_database(thd); if ((yyval.item) == NULL) MYSQL_YYABORT; Lex->safe_to_cache_query=0; } -#line 30239 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30357 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1403: -#line 9647 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1404: +#line 9656 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_if(thd, (yyvsp[-5].item), (yyvsp[-3].item), (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30249 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30367 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1404: -#line 9653 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1405: +#line 9662 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_format(thd, (yyvsp[-3].item), (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30259 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30377 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1405: -#line 9659 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1406: +#line 9668 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_format(thd, (yyvsp[-5].item), (yyvsp[-3].item), (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30269 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30387 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1406: -#line 9665 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1407: +#line 9674 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_last_value(thd, *(yyvsp[-1].item_list)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30279 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30397 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1407: -#line 9671 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1408: +#line 9680 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_microsecond(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30289 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30407 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1408: -#line 9677 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1409: +#line 9686 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_mod(thd, (yyvsp[-3].item), (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30299 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30417 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1409: -#line 9683 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1410: +#line 9692 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_password(thd, (yyvsp[-1].item), Item_func_password::OLD); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30310 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30428 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1410: -#line 9690 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1411: +#line 9699 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item* i1; i1= new (thd->mem_root) Item_func_password(thd, (yyvsp[-1].item)); @@ -30318,51 +30436,51 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; (yyval.item)= i1; } -#line 30322 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30440 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1411: -#line 9698 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1412: +#line 9707 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_quarter(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30332 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30450 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1412: -#line 9704 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1413: +#line 9713 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_repeat(thd, (yyvsp[-3].item), (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30342 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30460 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1413: -#line 9710 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1414: +#line 9719 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_replace(thd, (yyvsp[-5].item), (yyvsp[-3].item), (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30352 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30470 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1414: -#line 9716 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1415: +#line 9725 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_reverse(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30362 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30480 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1415: -#line 9722 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1416: +#line 9731 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_row_count(thd); if ((yyval.item) == NULL) @@ -30370,21 +30488,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION); Lex->safe_to_cache_query= 0; } -#line 30374 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30492 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1416: -#line 9730 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1417: +#line 9739 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_round(thd, (yyvsp[-3].item), (yyvsp[-1].item), 1); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30384 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30502 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1417: -#line 9736 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1418: +#line 9745 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item *i1; LEX_STRING name= {C_STRING_WITH_LEN("default_week_format")}; @@ -30398,31 +30516,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30402 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30520 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1418: -#line 9750 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1419: +#line 9759 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_week(thd, (yyvsp[-3].item), (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30412 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30530 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1419: -#line 9756 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1420: +#line 9765 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_weight_string(thd, (yyvsp[-2].item), 0, 0, (yyvsp[-1].ulong_num)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30422 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30540 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1420: -#line 9762 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1421: +#line 9771 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_weight_string(thd, (yyvsp[-5].item), 0, (yyvsp[-2].ulong_num), @@ -30430,11 +30548,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30434 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30552 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1421: -#line 9770 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1422: +#line 9779 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item *item= new (thd->mem_root) Item_char_typecast(thd, (yyvsp[-4].item), (yyvsp[-1].ulong_num), &my_charset_bin); @@ -30446,22 +30564,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30450 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30568 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1422: -#line 9782 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1423: +#line 9791 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_weight_string(thd, (yyvsp[-7].item), (yyvsp[-5].ulong_num), (yyvsp[-3].ulong_num), (yyvsp[-1].ulong_num)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30461 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30579 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1423: -#line 9789 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1424: +#line 9798 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { #ifdef HAVE_SPATIAL (yyval.item)= (yyvsp[0].item); @@ -30473,95 +30591,95 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); sym_group_geom.needed_define)); #endif } -#line 30477 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30595 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1424: -#line 9804 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1425: +#line 9813 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= GEOM_NEW(thd, Item_func_spatial_precise_rel(thd, (yyvsp[-3].item), (yyvsp[-1].item), Item_func::SP_CONTAINS_FUNC)); } -#line 30487 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30605 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1425: -#line 9810 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1426: +#line 9819 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= GEOM_NEW(thd, Item_func_spatial_collection(thd, *(yyvsp[-1].item_list), Geometry::wkb_geometrycollection, Geometry::wkb_point)); } -#line 30498 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30616 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1426: -#line 9817 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1427: +#line 9826 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= GEOM_NEW(thd, Item_func_spatial_collection(thd, *(yyvsp[-1].item_list), Geometry::wkb_linestring, Geometry::wkb_point)); } -#line 30509 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30627 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1427: -#line 9824 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1428: +#line 9833 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= GEOM_NEW(thd, Item_func_spatial_collection(thd, *(yyvsp[-1].item_list), Geometry::wkb_multilinestring, Geometry::wkb_linestring)); } -#line 30520 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30638 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1428: -#line 9831 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1429: +#line 9840 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= GEOM_NEW(thd, Item_func_spatial_collection(thd, *(yyvsp[-1].item_list), Geometry::wkb_multipoint, Geometry::wkb_point)); } -#line 30531 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30649 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1429: -#line 9838 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1430: +#line 9847 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= GEOM_NEW(thd, Item_func_spatial_collection(thd, *(yyvsp[-1].item_list), Geometry::wkb_multipolygon, Geometry::wkb_polygon)); } -#line 30542 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30660 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1430: -#line 9845 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1431: +#line 9854 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= GEOM_NEW(thd, Item_func_point(thd, (yyvsp[-3].item), (yyvsp[-1].item))); } -#line 30550 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30668 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1431: -#line 9849 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1432: +#line 9858 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= GEOM_NEW(thd, Item_func_spatial_collection(thd, *(yyvsp[-1].item_list), Geometry::wkb_polygon, Geometry::wkb_linestring)); } -#line 30561 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30679 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1432: -#line 9868 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1433: +#line 9877 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { #ifdef HAVE_DLOPEN udf_func *udf= 0; @@ -30580,11 +30698,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.udf)= udf; #endif } -#line 30584 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30702 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1433: -#line 9887 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1434: +#line 9896 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Create_func *builder; Item *item= NULL; @@ -30637,11 +30755,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 30641 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30759 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1434: -#line 9940 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1435: +#line 9949 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Create_qfunc *builder; Item *item= NULL; @@ -30676,79 +30794,79 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 30680 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30798 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1435: -#line 9978 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1436: +#line 9987 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= (yyvsp[-1].num) | (yyvsp[0].num); } -#line 30686 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30804 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1436: -#line 9980 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1437: +#line 9989 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= FT_BOOL; } -#line 30692 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30810 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1437: -#line 9984 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1438: +#line 9993 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= FT_NL; } -#line 30698 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30816 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1438: -#line 9985 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1439: +#line 9994 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= FT_NL; } -#line 30704 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30822 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1439: -#line 9989 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1440: +#line 9998 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 0; } -#line 30710 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30828 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1440: -#line 9990 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1441: +#line 9999 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= FT_EXPAND; } -#line 30716 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30834 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1441: -#line 9994 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1442: +#line 10003 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item_list)= NULL; } -#line 30722 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30840 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1442: -#line 9995 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1443: +#line 10004 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item_list)= (yyvsp[0].item_list); } -#line 30728 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30846 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1443: -#line 10000 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1444: +#line 10009 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item_list)= new (thd->mem_root) List; if ((yyval.item_list) == NULL) MYSQL_YYABORT; (yyval.item_list)->push_back((yyvsp[0].item), thd->mem_root); } -#line 30739 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30857 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1444: -#line 10007 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1445: +#line 10016 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyvsp[-2].item_list)->push_back((yyvsp[0].item), thd->mem_root); (yyval.item_list)= (yyvsp[-2].item_list); } -#line 30748 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30866 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1445: -#line 10015 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1446: +#line 10024 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* Use Item::name as a storage for the attribute value of user @@ -30772,61 +30890,61 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-2].item)->set_name((yyvsp[-3].simple_string), (uint) ((yyvsp[-1].simple_string) - (yyvsp[-3].simple_string)), thd->charset()); (yyval.item)= (yyvsp[-2].item); } -#line 30776 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30894 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1446: -#line 10042 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1447: +#line 10051 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_sum_avg(thd, (yyvsp[-1].item), FALSE); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30786 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30904 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1447: -#line 10048 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1448: +#line 10057 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_sum_avg(thd, (yyvsp[-1].item), TRUE); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30796 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30914 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1448: -#line 10054 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1449: +#line 10063 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_sum_and(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30806 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30924 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1449: -#line 10060 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1450: +#line 10069 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_sum_or(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30816 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30934 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1450: -#line 10066 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1451: +#line 10075 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_sum_xor(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30826 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30944 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1451: -#line 10072 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1452: +#line 10081 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item *item= new (thd->mem_root) Item_int(thd, (int32) 0L, 1); if (item == NULL) @@ -30835,149 +30953,149 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30839 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30957 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1452: -#line 10081 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1453: +#line 10090 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_sum_count(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30849 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30967 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1453: -#line 10087 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1454: +#line 10096 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->in_sum_expr++; } -#line 30855 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30973 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1454: -#line 10089 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1455: +#line 10098 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->in_sum_expr--; } -#line 30861 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30979 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1455: -#line 10091 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1456: +#line 10100 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_sum_count(thd, *(yyvsp[-2].item_list)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30871 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30989 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1456: -#line 10097 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1457: +#line 10106 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_sum_min(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30881 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 30999 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1457: -#line 10108 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1458: +#line 10117 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_sum_min(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30891 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31009 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1458: -#line 10114 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1459: +#line 10123 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_sum_max(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30901 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31019 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1459: -#line 10120 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1460: +#line 10129 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_sum_max(thd, (yyvsp[-1].item)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30911 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31029 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1460: -#line 10126 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1461: +#line 10135 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_sum_std(thd, (yyvsp[-1].item), 0); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30921 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31039 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1461: -#line 10132 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1462: +#line 10141 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_sum_variance(thd, (yyvsp[-1].item), 0); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30931 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31049 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1462: -#line 10138 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1463: +#line 10147 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_sum_std(thd, (yyvsp[-1].item), 1); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30941 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31059 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1463: -#line 10144 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1464: +#line 10153 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_sum_variance(thd, (yyvsp[-1].item), 1); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30951 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31069 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1464: -#line 10150 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1465: +#line 10159 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_sum_sum(thd, (yyvsp[-1].item), FALSE); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30961 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31079 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1465: -#line 10156 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1466: +#line 10165 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_sum_sum(thd, (yyvsp[-1].item), TRUE); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 30971 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31089 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1466: -#line 10162 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1467: +#line 10171 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->in_sum_expr++; } -#line 30977 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31095 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1467: -#line 10166 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1468: +#line 10175 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { SELECT_LEX *sel= Select; sel->in_sum_expr--; @@ -30989,28 +31107,28 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-3].item_list)->empty(); sel->gorder_list.empty(); } -#line 30993 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31111 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1468: -#line 10181 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1469: +#line 10190 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (! Lex->parsing_options.allows_variable) my_yyabort_error((ER_VIEW_SELECT_VARIABLE, MYF(0))); } -#line 31002 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31120 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1469: -#line 10186 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1470: +#line 10195 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= (yyvsp[0].item); } -#line 31010 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31128 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1470: -#line 10193 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1471: +#line 10202 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item_func_set_user_var *item; (yyval.item)= item= new (thd->mem_root) Item_func_set_user_var(thd, (yyvsp[-2].lex_str), (yyvsp[0].item)); @@ -31020,11 +31138,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->uncacheable(UNCACHEABLE_SIDEEFFECT); lex->set_var_list.push_back(item, thd->mem_root); } -#line 31024 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31142 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1471: -#line 10203 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1472: +#line 10212 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_func_get_user_var(thd, (yyvsp[0].lex_str)); if ((yyval.item) == NULL) @@ -31032,11 +31150,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); LEX *lex= Lex; lex->uncacheable(UNCACHEABLE_SIDEEFFECT); } -#line 31036 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31154 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1472: -#line 10211 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1473: +#line 10220 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* disallow "SELECT @@global.global.variable" */ if ((yyvsp[-1].lex_str).str && (yyvsp[0].lex_str).str && check_reserved_words(&(yyvsp[-1].lex_str))) @@ -31049,39 +31167,39 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (!((Item_func_get_system_var*) (yyval.item))->is_written_to_binlog()) Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_VARIABLE); } -#line 31053 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31171 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1473: -#line 10226 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1474: +#line 10235 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num) = 0; } -#line 31059 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31177 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1474: -#line 10227 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1475: +#line 10236 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num) = 1; } -#line 31065 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31183 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1475: -#line 10232 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1476: +#line 10241 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.string)= new (thd->mem_root) String(",", 1, &my_charset_latin1); if ((yyval.string) == NULL) MYSQL_YYABORT; } -#line 31075 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31193 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1476: -#line 10237 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1477: +#line 10246 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.string) = (yyvsp[0].string); } -#line 31081 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31199 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1478: -#line 10243 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1479: +#line 10252 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; SELECT_LEX *sel= lex->current_select; @@ -31093,23 +31211,23 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); "CUBE/ROLLUP", "ORDER BY")); } } -#line 31097 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31215 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1480: -#line 10259 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1481: +#line 10268 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (add_gorder_to_list(thd, (yyvsp[-1].item),(bool) (yyvsp[0].num))) MYSQL_YYABORT; } -#line 31103 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31221 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1481: -#line 10261 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1482: +#line 10270 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (add_gorder_to_list(thd, (yyvsp[-1].item),(bool) (yyvsp[0].num))) MYSQL_YYABORT; } -#line 31109 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31227 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1482: -#line 10266 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1483: +#line 10275 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; if (lex->current_select->inc_in_sum_expr()) @@ -31118,206 +31236,206 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 31122 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31240 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1483: -#line 10275 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1484: +#line 10284 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->in_sum_expr--; (yyval.item)= (yyvsp[0].item); } -#line 31131 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ - break; - - case 1484: -#line 10283 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.cast_type)=ITEM_CAST_CHAR; Lex->charset= &my_charset_bin; Lex->dec= 0; } -#line 31137 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31249 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1485: -#line 10285 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { Lex->charset= thd->variables.collation_connection; } -#line 31143 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 10292 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.cast_type)=ITEM_CAST_CHAR; Lex->charset= &my_charset_bin; Lex->dec= 0; } +#line 31255 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1486: -#line 10287 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.cast_type)=ITEM_CAST_CHAR; Lex->dec= 0; } -#line 31149 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 10294 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { Lex->charset= thd->variables.collation_connection; } +#line 31261 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1487: -#line 10289 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.cast_type)=ITEM_CAST_CHAR; Lex->charset= national_charset_info; Lex->dec=0; } -#line 31155 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 10296 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.cast_type)=ITEM_CAST_CHAR; Lex->dec= 0; } +#line 31267 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1488: -#line 10291 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.cast_type)=ITEM_CAST_SIGNED_INT; Lex->charset= NULL; Lex->dec=Lex->length= (char*)0; } -#line 31161 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 10298 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.cast_type)=ITEM_CAST_CHAR; Lex->charset= national_charset_info; Lex->dec=0; } +#line 31273 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1489: -#line 10293 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 10300 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cast_type)=ITEM_CAST_SIGNED_INT; Lex->charset= NULL; Lex->dec=Lex->length= (char*)0; } -#line 31167 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31279 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1490: -#line 10295 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 10302 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cast_type)=ITEM_CAST_SIGNED_INT; Lex->charset= NULL; Lex->dec=Lex->length= (char*)0; } -#line 31173 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31285 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1491: -#line 10297 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.cast_type)=ITEM_CAST_UNSIGNED_INT; Lex->charset= NULL; Lex->dec=Lex->length= (char*)0; } -#line 31179 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 10304 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.cast_type)=ITEM_CAST_SIGNED_INT; Lex->charset= NULL; Lex->dec=Lex->length= (char*)0; } +#line 31291 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1492: -#line 10299 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 10306 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cast_type)=ITEM_CAST_UNSIGNED_INT; Lex->charset= NULL; Lex->dec=Lex->length= (char*)0; } -#line 31185 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31297 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1493: -#line 10301 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.cast_type)=ITEM_CAST_DATE; Lex->charset= NULL; Lex->dec=Lex->length= (char*)0; } -#line 31191 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 10308 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.cast_type)=ITEM_CAST_UNSIGNED_INT; Lex->charset= NULL; Lex->dec=Lex->length= (char*)0; } +#line 31303 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1494: -#line 10303 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 10310 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.cast_type)=ITEM_CAST_DATE; Lex->charset= NULL; Lex->dec=Lex->length= (char*)0; } +#line 31309 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ + break; + + case 1495: +#line 10312 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cast_type)=ITEM_CAST_TIME; LEX *lex= Lex; lex->charset= NULL; lex->dec= lex->length; lex->length= (char*)0; } -#line 31201 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31319 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1495: -#line 10309 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1496: +#line 10318 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cast_type)=ITEM_CAST_DATETIME; LEX *lex= Lex; lex->charset= NULL; lex->dec= lex->length; lex->length= (char*)0; } -#line 31211 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31329 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1496: -#line 10315 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1497: +#line 10324 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cast_type)=ITEM_CAST_DECIMAL; Lex->charset= NULL; } -#line 31217 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31335 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1497: -#line 10317 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1498: +#line 10326 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->charset= NULL; Lex->length= Lex->dec= 0;} -#line 31223 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31341 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1498: -#line 10319 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1499: +#line 10328 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.cast_type)=ITEM_CAST_DOUBLE; } -#line 31229 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31347 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1499: -#line 10322 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1500: +#line 10331 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item_list)= NULL; } -#line 31235 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31353 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1500: -#line 10323 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1501: +#line 10332 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item_list)= (yyvsp[0].item_list);} -#line 31241 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31359 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1501: -#line 10328 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1502: +#line 10337 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item_list)= new (thd->mem_root) List; if ((yyval.item_list) == NULL) MYSQL_YYABORT; (yyval.item_list)->push_back((yyvsp[0].item), thd->mem_root); } -#line 31252 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31370 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1502: -#line 10335 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1503: +#line 10344 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyvsp[-2].item_list)->push_back((yyvsp[0].item), thd->mem_root); (yyval.item_list)= (yyvsp[-2].item_list); } -#line 31261 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31379 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1503: -#line 10342 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1504: +#line 10351 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item_list)= (yyvsp[0].item_list); } -#line 31267 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31385 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1504: -#line 10343 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1505: +#line 10352 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item_list)= (yyvsp[-1].item_list); } -#line 31273 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31391 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1505: -#line 10348 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1506: +#line 10357 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item_list)= new (thd->mem_root) List; if ((yyval.item_list) == NULL) MYSQL_YYABORT; (yyval.item_list)->push_back((yyvsp[0].item), thd->mem_root); } -#line 31284 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31402 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1506: -#line 10355 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1507: +#line 10364 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyvsp[-2].item_list)->push_back((yyvsp[0].item), thd->mem_root); (yyval.item_list)= (yyvsp[-2].item_list); } -#line 31293 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31411 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1507: -#line 10362 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1508: +#line 10371 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= NULL; } -#line 31299 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31417 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1508: -#line 10363 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1509: +#line 10372 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= (yyvsp[0].item); } -#line 31305 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31423 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1509: -#line 10367 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1510: +#line 10376 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= NULL; } -#line 31311 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31429 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1510: -#line 10368 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1511: +#line 10377 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= (yyvsp[0].item); } -#line 31317 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31435 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1511: -#line 10373 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1512: +#line 10382 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item_list)= new (thd->mem_root) List; if ((yyval.item_list) == NULL) @@ -31325,27 +31443,27 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.item_list)->push_back((yyvsp[-2].item), thd->mem_root); (yyval.item_list)->push_back((yyvsp[0].item), thd->mem_root); } -#line 31329 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31447 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1512: -#line 10381 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1513: +#line 10390 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyvsp[-4].item_list)->push_back((yyvsp[-2].item), thd->mem_root); (yyvsp[-4].item_list)->push_back((yyvsp[0].item), thd->mem_root); (yyval.item_list)= (yyvsp[-4].item_list); } -#line 31339 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31457 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1513: -#line 10391 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1514: +#line 10400 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.table_list)=(yyvsp[0].table_list); } -#line 31345 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31463 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1514: -#line 10393 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1515: +#line 10402 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; if (!((yyval.table_list)= lex->current_select->nest_last_join(thd))) @@ -31354,49 +31472,49 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 31358 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31476 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1515: -#line 10404 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1516: +#line 10413 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { MYSQL_YYABORT_UNLESS((yyval.table_list)=(yyvsp[0].table_list)); } -#line 31364 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31482 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1516: -#line 10415 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1517: +#line 10424 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.table_list)=(yyvsp[0].table_list); } -#line 31370 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31488 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1517: -#line 10416 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1518: +#line 10425 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.table_list)=(yyvsp[-1].table_list); } -#line 31376 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31494 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1518: -#line 10422 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1519: +#line 10431 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.table_list)=(yyvsp[0].table_list); } -#line 31382 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31500 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1519: -#line 10424 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1520: +#line 10433 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { MYSQL_YYABORT_UNLESS((yyvsp[-2].table_list) && ((yyval.table_list)=(yyvsp[0].table_list))); } -#line 31390 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31508 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1520: -#line 10444 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1521: +#line 10453 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { MYSQL_YYABORT_UNLESS((yyvsp[-2].table_list) && ((yyval.table_list)=(yyvsp[0].table_list))); (yyvsp[0].table_list)->straight=(yyvsp[-1].num); } -#line 31396 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31514 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1521: -#line 10447 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1522: +#line 10456 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { MYSQL_YYABORT_UNLESS((yyvsp[-3].table_list) && (yyvsp[-1].table_list)); /* Change the current name resolution context to a local context. */ @@ -31404,50 +31522,50 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; Select->parsing_place= IN_ON; } -#line 31408 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31526 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1522: -#line 10455 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1523: +#line 10464 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyvsp[-3].table_list)->straight=(yyvsp[-4].num); add_join_on(thd, (yyvsp[-3].table_list), (yyvsp[0].item)); Lex->pop_context(); Select->parsing_place= NO_MATTER; } -#line 31419 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31537 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1523: -#line 10463 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1524: +#line 10472 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { MYSQL_YYABORT_UNLESS((yyvsp[-3].table_list) && (yyvsp[-1].table_list)); } -#line 31427 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31545 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1524: -#line 10467 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1525: +#line 10476 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyvsp[-5].table_list)->straight=(yyvsp[-6].num); add_join_natural((yyvsp[-7].table_list),(yyvsp[-5].table_list),(yyvsp[-1].string_list),Select); (yyval.table_list)=(yyvsp[-5].table_list); } -#line 31437 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31555 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1525: -#line 10473 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1526: +#line 10482 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { MYSQL_YYABORT_UNLESS((yyvsp[-3].table_list) && ((yyval.table_list)=(yyvsp[0].table_list))); (yyvsp[0].table_list)->straight=(yyvsp[-1].num); add_join_natural((yyvsp[-3].table_list),(yyvsp[0].table_list),NULL,Select); } -#line 31447 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31565 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1526: -#line 10482 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1527: +#line 10491 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { MYSQL_YYABORT_UNLESS((yyvsp[-5].table_list) && (yyvsp[-1].table_list)); /* Change the current name resolution context to a local context. */ @@ -31455,11 +31573,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; Select->parsing_place= IN_ON; } -#line 31459 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31577 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1527: -#line 10490 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1528: +#line 10499 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { add_join_on(thd, (yyvsp[-3].table_list), (yyvsp[0].item)); Lex->pop_context(); @@ -31467,40 +31585,40 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.table_list)=(yyvsp[-3].table_list); Select->parsing_place= NO_MATTER; } -#line 31471 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31589 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1528: -#line 10498 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1529: +#line 10507 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { MYSQL_YYABORT_UNLESS((yyvsp[-4].table_list) && (yyvsp[0].table_list)); } -#line 31479 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31597 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1529: -#line 10502 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1530: +#line 10511 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { add_join_natural((yyvsp[-9].table_list),(yyvsp[-5].table_list),(yyvsp[-1].string_list),Select); (yyvsp[-5].table_list)->outer_join|=JOIN_TYPE_LEFT; (yyval.table_list)=(yyvsp[-5].table_list); } -#line 31489 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31607 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1530: -#line 10508 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1531: +#line 10517 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { MYSQL_YYABORT_UNLESS((yyvsp[-5].table_list) && (yyvsp[0].table_list)); add_join_natural((yyvsp[-5].table_list),(yyvsp[0].table_list),NULL,Select); (yyvsp[0].table_list)->outer_join|=JOIN_TYPE_LEFT; (yyval.table_list)=(yyvsp[0].table_list); } -#line 31500 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31618 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1531: -#line 10518 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1532: +#line 10527 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { MYSQL_YYABORT_UNLESS((yyvsp[-5].table_list) && (yyvsp[-1].table_list)); /* Change the current name resolution context to a local context. */ @@ -31508,11 +31626,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; Select->parsing_place= IN_ON; } -#line 31512 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31630 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1532: -#line 10526 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1533: +#line 10535 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; if (!((yyval.table_list)= lex->current_select->convert_right_join())) @@ -31521,30 +31639,30 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->pop_context(); Select->parsing_place= NO_MATTER; } -#line 31525 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31643 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1533: -#line 10535 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1534: +#line 10544 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { MYSQL_YYABORT_UNLESS((yyvsp[-4].table_list) && (yyvsp[0].table_list)); } -#line 31533 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31651 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1534: -#line 10539 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1535: +#line 10548 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; if (!((yyval.table_list)= lex->current_select->convert_right_join())) MYSQL_YYABORT; add_join_natural((yyval.table_list),(yyvsp[-5].table_list),(yyvsp[-1].string_list),Select); } -#line 31544 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31662 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1535: -#line 10546 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1536: +#line 10555 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { MYSQL_YYABORT_UNLESS((yyvsp[-5].table_list) && (yyvsp[0].table_list)); add_join_natural((yyvsp[0].table_list),(yyvsp[-5].table_list),NULL,Select); @@ -31552,64 +31670,64 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (!((yyval.table_list)= lex->current_select->convert_right_join())) MYSQL_YYABORT; } -#line 31556 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31674 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1536: -#line 10557 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1537: +#line 10566 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num) = 0; } -#line 31562 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31680 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1537: -#line 10558 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1538: +#line 10567 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num) = 0; } -#line 31568 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31686 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1538: -#line 10559 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1539: +#line 10568 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num) = 1; } -#line 31574 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31692 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1539: -#line 10563 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1540: +#line 10572 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num) = (yyvsp[0].num); } -#line 31580 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31698 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1540: -#line 10564 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1541: +#line 10573 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num) = 0; } -#line 31586 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31704 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1541: -#line 10572 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1542: +#line 10581 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.string_list)= 0;} -#line 31592 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31710 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1543: -#line 10578 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1544: +#line 10587 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.string_list)= (yyvsp[-2].string_list); } -#line 31600 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31718 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1544: -#line 10592 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1545: +#line 10601 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { SELECT_LEX *sel= Select; sel->table_join_options= 0; } -#line 31609 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31727 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1545: -#line 10597 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1546: +#line 10606 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (!((yyval.table_list)= Select->add_table_to_list(thd, (yyvsp[-3].table), (yyvsp[-1].lex_str_ptr), Select->get_table_join_options(), @@ -31620,11 +31738,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; Select->add_joined_table((yyval.table_list)); } -#line 31624 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31742 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1546: -#line 10608 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1547: +#line 10617 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; SELECT_LEX *sel= lex->current_select; @@ -31642,11 +31760,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* incomplete derived tables return NULL, we must be nested in select_derived rule to be here. */ } -#line 31646 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31764 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1547: -#line 10644 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1548: +#line 10653 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* Use $2 instead of Lex->current_select as derived table will alter value of Lex->current_select. */ @@ -31709,11 +31827,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); !(yyval.table_list)->derived->first_select()->next_select()) (yyval.table_list)->select_lex->add_where_field((yyval.table_list)->derived->first_select()); } -#line 31713 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31831 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1548: -#line 10729 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1549: +#line 10738 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if ((yyvsp[-1].table_list) && (yyvsp[0].num)) { @@ -31721,20 +31839,20 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 31725 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31843 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1549: -#line 10739 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1550: +#line 10748 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (add_select_to_union_list(Lex, (bool)(yyvsp[0].num), FALSE)) MYSQL_YYABORT; } -#line 31734 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31852 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1550: -#line 10744 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1551: +#line 10753 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* Remove from the name resolution context stack the context of the @@ -31748,11 +31866,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 31752 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31870 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1551: -#line 10762 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1552: +#line 10771 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; if (lex->current_select->set_braces(0)) @@ -31761,11 +31879,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 31765 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31883 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1552: -#line 10774 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1553: +#line 10783 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; SELECT_LEX *sel= lex->current_select; @@ -31773,28 +31891,28 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); mysql_init_select(lex); lex->current_select->parsing_place= SELECT_LIST; } -#line 31777 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31895 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1553: -#line 10782 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1554: +#line 10791 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->parsing_place= NO_MATTER; } -#line 31785 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31903 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1554: -#line 10790 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1555: +#line 10799 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if ((yyvsp[0].select_lex)->init_nested_join(thd)) MYSQL_YYABORT; } -#line 31794 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31912 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1555: -#line 10795 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1556: +#line 10804 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* for normal joins, $3 != NULL and end_nested_join() != NULL, for derived tables, both must equal NULL */ @@ -31807,11 +31925,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 31811 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31929 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1556: -#line 10810 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1557: +#line 10819 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->derived_tables|= DERIVED_SUBQUERY; @@ -31828,25 +31946,25 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->current_select->linkage= DERIVED_TABLE_TYPE; lex->current_select->parsing_place= SELECT_LIST; } -#line 31832 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31950 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1557: -#line 10827 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1558: +#line 10836 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->parsing_place= NO_MATTER; } -#line 31840 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31958 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1559: -#line 10834 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1560: +#line 10843 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.select_lex)= Select; } -#line 31846 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31964 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1560: -#line 10839 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1561: +#line 10848 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; @@ -31866,113 +31984,113 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); !embedding->nested_join->join_list.elements; /* return true if we are deeply nested */ } -#line 31870 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31988 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1561: -#line 10861 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1562: +#line 10870 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 31876 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 31994 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1562: -#line 10862 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1563: +#line 10871 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 31882 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32000 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1563: -#line 10867 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1564: +#line 10876 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= thd->variables.old_mode ? INDEX_HINT_MASK_JOIN : INDEX_HINT_MASK_ALL; } -#line 31890 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32008 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1564: -#line 10870 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1565: +#line 10879 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= INDEX_HINT_MASK_JOIN; } -#line 31896 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32014 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1565: -#line 10871 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1566: +#line 10880 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= INDEX_HINT_MASK_ORDER; } -#line 31902 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32020 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1566: -#line 10872 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1567: +#line 10881 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= INDEX_HINT_MASK_GROUP; } -#line 31908 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32026 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1567: -#line 10876 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1568: +#line 10885 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.index_hint)= INDEX_HINT_FORCE; } -#line 31914 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32032 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1568: -#line 10877 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1569: +#line 10886 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.index_hint)= INDEX_HINT_IGNORE; } -#line 31920 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32038 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1569: -#line 10882 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1570: +#line 10891 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->set_index_hint_type((yyvsp[-2].index_hint), (yyvsp[0].num)); } -#line 31928 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32046 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1571: -#line 10887 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1572: +#line 10896 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->set_index_hint_type(INDEX_HINT_USE, (yyvsp[0].num)); } -#line 31936 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32054 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1576: -#line 10900 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1577: +#line 10909 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->alloc_index_hints(thd); } -#line 31942 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32060 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1578: -#line 10904 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1579: +#line 10913 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->clear_index_hints(); } -#line 31948 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32066 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1580: -#line 10909 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1581: +#line 10918 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->add_index_hint(thd, NULL, 0); } -#line 31954 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32072 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1581: -#line 10910 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1582: +#line 10919 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 31960 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32078 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1582: -#line 10915 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1583: +#line 10924 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->add_index_hint(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length); } -#line 31966 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32084 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1583: -#line 10917 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1584: +#line 10926 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->add_index_hint(thd, (char *)"PRIMARY", 7); } -#line 31972 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32090 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1586: -#line 10927 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1587: +#line 10936 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (!((yyval.string_list)= new (thd->mem_root) List)) MYSQL_YYABORT; @@ -31983,11 +32101,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; (yyval.string_list)->push_back(s, thd->mem_root); } -#line 31987 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32105 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1587: -#line 10938 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1588: +#line 10947 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { String *s= new (thd->mem_root) String((const char *) (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length, @@ -31997,191 +32115,191 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-2].string_list)->push_back(s, thd->mem_root); (yyval.string_list)= (yyvsp[-2].string_list); } -#line 32001 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32119 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1588: -#line 10950 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1589: +#line 10959 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 32007 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32125 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1589: -#line 10951 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1590: +#line 10960 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval)=INTERVAL_DAY_HOUR; } -#line 32013 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32131 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1590: -#line 10952 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1591: +#line 10961 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval)=INTERVAL_DAY_MICROSECOND; } -#line 32019 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32137 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1591: -#line 10953 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1592: +#line 10962 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval)=INTERVAL_DAY_MINUTE; } -#line 32025 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32143 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1592: -#line 10954 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1593: +#line 10963 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval)=INTERVAL_DAY_SECOND; } -#line 32031 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32149 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1593: -#line 10955 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1594: +#line 10964 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval)=INTERVAL_HOUR_MICROSECOND; } -#line 32037 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32155 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1594: -#line 10956 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1595: +#line 10965 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval)=INTERVAL_HOUR_MINUTE; } -#line 32043 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32161 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1595: -#line 10957 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1596: +#line 10966 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval)=INTERVAL_HOUR_SECOND; } -#line 32049 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32167 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1596: -#line 10958 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1597: +#line 10967 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval)=INTERVAL_MINUTE_MICROSECOND; } -#line 32055 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32173 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1597: -#line 10959 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1598: +#line 10968 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval)=INTERVAL_MINUTE_SECOND; } -#line 32061 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32179 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1598: -#line 10960 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1599: +#line 10969 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval)=INTERVAL_SECOND_MICROSECOND; } -#line 32067 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32185 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1599: -#line 10961 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1600: +#line 10970 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval)=INTERVAL_YEAR_MONTH; } -#line 32073 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32191 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1600: -#line 10965 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1601: +#line 10974 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval_time_st)=INTERVAL_DAY; } -#line 32079 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32197 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1601: -#line 10966 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1602: +#line 10975 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval_time_st)=INTERVAL_WEEK; } -#line 32085 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32203 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1602: -#line 10967 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1603: +#line 10976 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval_time_st)=INTERVAL_HOUR; } -#line 32091 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32209 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1603: -#line 10968 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1604: +#line 10977 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval_time_st)=INTERVAL_MINUTE; } -#line 32097 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32215 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1604: -#line 10969 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1605: +#line 10978 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval_time_st)=INTERVAL_MONTH; } -#line 32103 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32221 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1605: -#line 10970 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1606: +#line 10979 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval_time_st)=INTERVAL_QUARTER; } -#line 32109 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32227 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1606: -#line 10971 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1607: +#line 10980 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval_time_st)=INTERVAL_SECOND; } -#line 32115 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32233 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1607: -#line 10972 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1608: +#line 10981 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval_time_st)=INTERVAL_MICROSECOND; } -#line 32121 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32239 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1608: -#line 10973 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1609: +#line 10982 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.interval_time_st)=INTERVAL_YEAR; } -#line 32127 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32245 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1609: -#line 10977 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1610: +#line 10986 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {(yyval.date_time_type)=MYSQL_TIMESTAMP_DATE;} -#line 32133 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32251 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1610: -#line 10978 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1611: +#line 10987 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {(yyval.date_time_type)=MYSQL_TIMESTAMP_TIME;} -#line 32139 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32257 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1611: -#line 10979 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1612: +#line 10988 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {(yyval.date_time_type)=MYSQL_TIMESTAMP_DATETIME;} -#line 32145 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32263 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1612: -#line 10980 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1613: +#line 10989 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {(yyval.date_time_type)=MYSQL_TIMESTAMP_DATETIME;} -#line 32151 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32269 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1616: -#line 10990 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1617: +#line 10999 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str_ptr)=0; } -#line 32157 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32275 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1617: -#line 10992 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1618: +#line 11001 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str_ptr)= (LEX_STRING*) thd->memdup(&(yyvsp[0].lex_str),sizeof(LEX_STRING)); if ((yyval.lex_str_ptr) == NULL) MYSQL_YYABORT; } -#line 32167 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32285 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1620: -#line 11005 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1621: +#line 11014 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->where= 0; } -#line 32173 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32291 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1621: -#line 11007 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1622: +#line 11016 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->parsing_place= IN_WHERE; } -#line 32181 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32299 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1622: -#line 11011 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1623: +#line 11020 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { SELECT_LEX *select= Select; select->where= normalize_cond(thd, (yyvsp[0].item)); @@ -32189,19 +32307,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyvsp[0].item)) (yyvsp[0].item)->top_level_item(); } -#line 32193 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32311 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1624: -#line 11023 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1625: +#line 11032 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->parsing_place= IN_HAVING; } -#line 32201 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32319 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1625: -#line 11027 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1626: +#line 11036 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { SELECT_LEX *sel= Select; sel->having= normalize_cond(thd, (yyvsp[0].item)); @@ -32209,20 +32327,20 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyvsp[0].item)) (yyvsp[0].item)->top_level_item(); } -#line 32213 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32331 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1626: -#line 11038 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1627: +#line 11047 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->escape_used= TRUE; (yyval.item)= (yyvsp[0].item); } -#line 32222 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32340 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1627: -#line 11043 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1628: +#line 11052 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->escape_used= FALSE; (yyval.item)= ((thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) ? @@ -32231,29 +32349,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 32235 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32353 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1630: -#line 11064 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1631: +#line 11073 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (add_group_to_list(thd, (yyvsp[-1].item),(bool) (yyvsp[0].num))) MYSQL_YYABORT; } -#line 32241 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32359 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1631: -#line 11066 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1632: +#line 11075 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (add_group_to_list(thd, (yyvsp[-1].item),(bool) (yyvsp[0].num))) MYSQL_YYABORT; } -#line 32247 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32365 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1632: -#line 11070 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1633: +#line 11079 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 32253 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32371 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1633: -#line 11072 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1634: +#line 11081 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* 'WITH CUBE' is reserved in the MySQL syntax, but not implemented, @@ -32270,11 +32388,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_NOT_SUPPORTED_YET, MYF(0), "CUBE")); } -#line 32274 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32392 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1634: -#line 11089 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1635: +#line 11098 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* 'WITH ROLLUP' is needed for backward compatibility, @@ -32289,21 +32407,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); "global union parameters")); lex->current_select->olap= ROLLUP_TYPE; } -#line 32293 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32411 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1638: -#line 11120 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1639: +#line 11129 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { bool ascending= ((yyvsp[0].num) == 1) ? true : false; if (add_order_to_list(thd, (yyvsp[-1].item), ascending)) MYSQL_YYABORT; } -#line 32303 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32421 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1641: -#line 11138 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1642: +#line 11147 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; SELECT_LEX *sel= lex->current_select; @@ -32346,61 +32464,61 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->current_select= sel->master_unit()->fake_select_lex; } } -#line 32350 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32468 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1642: -#line 11181 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1643: +#line 11190 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 32358 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ - break; - - case 1643: -#line 11188 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { if (add_order_to_list(thd, (yyvsp[-1].item),(bool) (yyvsp[0].num))) MYSQL_YYABORT; } -#line 32364 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32476 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1644: -#line 11190 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11197 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (add_order_to_list(thd, (yyvsp[-1].item),(bool) (yyvsp[0].num))) MYSQL_YYABORT; } -#line 32370 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32482 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1645: -#line 11194 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.num) = 1; } -#line 32376 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11199 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { if (add_order_to_list(thd, (yyvsp[-1].item),(bool) (yyvsp[0].num))) MYSQL_YYABORT; } +#line 32488 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1646: -#line 11195 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.num) =1; } -#line 32382 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11203 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.num) = 1; } +#line 32494 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1647: -#line 11196 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.num) =0; } -#line 32388 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11204 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.num) =1; } +#line 32500 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1648: -#line 11200 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - {} -#line 32394 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11205 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.num) =0; } +#line 32506 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1649: -#line 11201 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11209 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 32400 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32512 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1650: -#line 11206 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11210 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + {} +#line 32518 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ + break; + + case 1651: +#line 11215 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { SELECT_LEX *sel= Select; if (sel->master_unit()->is_union() && !sel->braces) @@ -32410,71 +32528,71 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); DBUG_ASSERT(Select); } } -#line 32414 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32532 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1651: -#line 11219 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1652: +#line 11228 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { SELECT_LEX *sel= Select; if (!sel->select_limit->basic_const_item() || sel->select_limit->val_int() > 0) Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_LIMIT); } -#line 32425 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32543 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1652: -#line 11227 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1653: +#line 11236 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_LIMIT); } -#line 32433 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32551 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1653: -#line 11231 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1654: +#line 11240 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_LIMIT); } -#line 32441 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32559 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1654: -#line 11238 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1655: +#line 11247 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { SELECT_LEX *sel= Select; sel->select_limit= (yyvsp[0].item); sel->offset_limit= 0; sel->explicit_limit= 1; } -#line 32452 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32570 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1655: -#line 11245 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1656: +#line 11254 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { SELECT_LEX *sel= Select; sel->select_limit= (yyvsp[0].item); sel->offset_limit= (yyvsp[-2].item); sel->explicit_limit= 1; } -#line 32463 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32581 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1656: -#line 11252 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1657: +#line 11261 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { SELECT_LEX *sel= Select; sel->select_limit= (yyvsp[-2].item); sel->offset_limit= (yyvsp[0].item); sel->explicit_limit= 1; } -#line 32474 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32592 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1657: -#line 11262 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1658: +#line 11271 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item_splocal *splocal; LEX *lex= thd->lex; @@ -32501,258 +32619,258 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); splocal->limit_clause_param= TRUE; (yyval.item)= splocal; } -#line 32505 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32623 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1658: -#line 11289 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1659: +#line 11298 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyvsp[0].item_param)->limit_clause_param= TRUE; } -#line 32513 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32631 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1659: -#line 11293 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1660: +#line 11302 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_uint(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 32523 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32641 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1660: -#line 11299 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1661: +#line 11308 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_uint(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 32533 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32651 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1661: -#line 11305 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1662: +#line 11314 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_uint(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 32543 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32661 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1662: -#line 11314 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1663: +#line 11323 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->limit_rows_examined= (yyvsp[0].item); } -#line 32552 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32670 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1663: -#line 11321 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1664: +#line 11330 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->current_select->select_limit= 0; } -#line 32561 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32679 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1664: -#line 11326 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1665: +#line 11335 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { SELECT_LEX *sel= Select; sel->select_limit= (yyvsp[0].item); Lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_LIMIT); sel->explicit_limit= 1; } -#line 32572 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ - break; - - case 1665: -#line 11332 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { my_parse_error(thd, ER_SYNTAX_ERROR); MYSQL_YYABORT; } -#line 32578 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32690 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1666: -#line 11333 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11341 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { my_parse_error(thd, ER_SYNTAX_ERROR); MYSQL_YYABORT; } -#line 32584 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32696 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1667: -#line 11337 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { int error; (yyval.num)= (int) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } -#line 32590 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11342 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { my_parse_error(thd, ER_SYNTAX_ERROR); MYSQL_YYABORT; } +#line 32702 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1668: -#line 11338 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { int error; (yyval.num)= -(int) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } -#line 32596 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11346 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { int error; (yyval.num)= (int) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } +#line 32708 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1669: -#line 11339 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11347 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { int error; (yyval.num)= -(int) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } -#line 32602 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32714 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1670: -#line 11343 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } -#line 32608 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11348 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { int error; (yyval.num)= -(int) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } +#line 32720 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1671: -#line 11344 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.ulong_num)= (ulong) strtol((yyvsp[0].lex_str).str, (char**) 0, 16); } -#line 32614 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11352 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } +#line 32726 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1672: -#line 11345 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } -#line 32620 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11353 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.ulong_num)= (ulong) strtol((yyvsp[0].lex_str).str, (char**) 0, 16); } +#line 32732 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1673: -#line 11346 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11354 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } -#line 32626 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32738 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1674: -#line 11347 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11355 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } -#line 32632 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32744 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1675: -#line 11348 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11356 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } -#line 32638 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32750 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1676: -#line 11352 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11357 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } -#line 32644 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32756 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1677: -#line 11353 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.ulong_num)= (ulong) strtol((yyvsp[0].lex_str).str, (char**) 0, 16); } -#line 32650 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11361 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } +#line 32762 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1678: -#line 11354 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } -#line 32656 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11362 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.ulong_num)= (ulong) strtol((yyvsp[0].lex_str).str, (char**) 0, 16); } +#line 32768 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1679: -#line 11355 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11363 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } -#line 32662 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32774 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1680: -#line 11356 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { MYSQL_YYABORT; } -#line 32668 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11364 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { int error; (yyval.ulong_num)= (ulong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } +#line 32780 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1681: -#line 11360 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } -#line 32674 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11365 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { MYSQL_YYABORT; } +#line 32786 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1682: -#line 11361 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11369 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } -#line 32680 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32792 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1683: -#line 11362 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11370 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } -#line 32686 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32798 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1684: -#line 11363 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11371 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } -#line 32692 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32804 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1685: -#line 11364 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11372 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } -#line 32698 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32810 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1686: -#line 11368 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11373 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } -#line 32704 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32816 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1687: -#line 11369 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11377 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } -#line 32710 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32822 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1688: -#line 11370 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.ulonglong_number)= strtoull((yyvsp[0].lex_str).str, (char**) 0, 16); } -#line 32716 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11378 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } +#line 32828 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1689: -#line 11371 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } -#line 32722 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11379 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.ulonglong_number)= strtoull((yyvsp[0].lex_str).str, (char**) 0, 16); } +#line 32834 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1690: -#line 11372 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { MYSQL_YYABORT; } -#line 32728 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11380 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { int error; (yyval.ulonglong_number)= (ulonglong) my_strtoll10((yyvsp[0].lex_str).str, (char**) 0, &error); } +#line 32840 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1691: -#line 11377 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { my_parse_error(thd, ER_ONLY_INTEGERS_ALLOWED); } -#line 32734 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11381 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { MYSQL_YYABORT; } +#line 32846 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1694: + case 1692: #line 11386 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.choice)= (yyvsp[0].ulong_num) != 0 ? HA_CHOICE_YES : HA_CHOICE_NO; } -#line 32740 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ + { my_parse_error(thd, ER_ONLY_INTEGERS_ALLOWED); } +#line 32852 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1695: -#line 11387 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.choice)= HA_CHOICE_UNDEF; } -#line 32746 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11395 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.choice)= (yyvsp[0].ulong_num) != 0 ? HA_CHOICE_YES : HA_CHOICE_NO; } +#line 32858 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1696: -#line 11391 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.num)= false; } -#line 32752 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11396 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.choice)= HA_CHOICE_UNDEF; } +#line 32864 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1697: -#line 11393 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11400 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.num)= false; } +#line 32870 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ + break; + + case 1698: +#line 11402 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; @@ -32781,67 +32899,67 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); */ Lex->expr_allows_subselect= false; } -#line 32785 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32903 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1698: -#line 11422 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1699: +#line 11431 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* Subqueries are allowed from now.*/ Lex->expr_allows_subselect= true; (yyval.num)= true; } -#line 32795 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32913 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1699: -#line 11430 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1700: +#line 11439 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 32801 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32919 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1700: -#line 11431 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1701: +#line 11440 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 32807 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32925 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1703: -#line 11441 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1704: +#line 11450 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (add_proc_to_list(thd, (yyvsp[-1].item))) MYSQL_YYABORT; if (!(yyvsp[-1].item)->name) (yyvsp[-1].item)->set_name((yyvsp[-2].simple_string), (uint) ((yyvsp[0].simple_string) - (yyvsp[-2].simple_string)), thd->charset()); } -#line 32818 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32936 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1704: -#line 11450 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1705: +#line 11459 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; if (!lex->describe && (!(lex->result= new (thd->mem_root) select_dumpvar(thd)))) MYSQL_YYABORT; } -#line 32829 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32947 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1705: -#line 11457 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1706: +#line 11466 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 32835 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32953 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1707: -#line 11462 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1708: +#line 11471 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 32841 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32959 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1708: -#line 11466 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1709: +#line 11475 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (Lex->result) { @@ -32858,19 +32976,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); DBUG_ASSERT(Lex->describe); } } -#line 32862 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32980 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1709: -#line 11486 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1710: +#line 11495 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.myvar) = Lex->result ? new (thd->mem_root) my_var_user((yyvsp[0].lex_str)) : NULL; } -#line 32870 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 32988 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1710: -#line 11490 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1711: +#line 11499 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { sp_variable *t; @@ -32881,32 +32999,32 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Lex->sphead)) : NULL; } -#line 32885 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33003 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1711: -#line 11503 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1712: +#line 11512 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= false; } -#line 32891 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33009 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1712: -#line 11504 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1713: +#line 11513 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= true; } -#line 32897 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33015 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1713: -#line 11509 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1714: +#line 11518 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (! Lex->parsing_options.allows_select_into) my_yyabort_error((ER_VIEW_SELECT_CLAUSE, MYF(0), "INTO")); } -#line 32906 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33024 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1715: -#line 11518 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1716: +#line 11527 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->uncacheable(UNCACHEABLE_SIDEEFFECT); @@ -32916,17 +33034,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); new (thd->mem_root) select_export(thd, lex->exchange))) MYSQL_YYABORT; } -#line 32920 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33038 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1716: -#line 11528 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1717: +#line 11537 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->exchange->cs= (yyvsp[0].charset); } -#line 32926 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33044 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1718: -#line 11531 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1719: +#line 11540 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; if (!lex->describe) @@ -32939,60 +33057,60 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 32943 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33061 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1719: -#line 11544 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1720: +#line 11553 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->uncacheable(UNCACHEABLE_SIDEEFFECT); } -#line 32951 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33069 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1720: -#line 11555 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1721: +#line 11564 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command = SQLCOM_DO; mysql_init_select(lex); } -#line 32961 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33079 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1721: -#line 11561 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1722: +#line 11570 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->insert_list= (yyvsp[0].item_list); } -#line 32969 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33087 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1722: -#line 11572 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1723: +#line 11581 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->set_command(SQLCOM_DROP_TABLE, (yyvsp[-2].num), (yyvsp[0].object_ddl_options)); YYPS->m_lock_type= TL_UNLOCK; YYPS->m_mdl_type= MDL_EXCLUSIVE; } -#line 32980 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33098 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1723: -#line 11579 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1724: +#line 11588 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 32986 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33104 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1724: -#line 11580 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1725: +#line 11589 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 32992 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33110 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1725: -#line 11581 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1726: +#line 11590 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; Alter_drop *ad= (new (thd->mem_root) @@ -33009,21 +33127,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MDL_SHARED_UPGRADABLE)) MYSQL_YYABORT; } -#line 33013 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33131 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1726: -#line 11598 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1727: +#line 11607 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->set_command(SQLCOM_DROP_DB, (yyvsp[-1].object_ddl_options)); lex->name= (yyvsp[0].lex_str); } -#line 33023 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33141 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1727: -#line 11604 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1728: +#line 11613 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= thd->lex; sp_name *spname; @@ -33038,11 +33156,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); spname->init_qname(thd); lex->spname= spname; } -#line 33042 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33160 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1728: -#line 11619 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1729: +#line 11628 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= thd->lex; LEX_STRING db= {0, 0}; @@ -33058,11 +33176,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); spname->init_qname(thd); lex->spname= spname; } -#line 33062 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33180 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1729: -#line 11635 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1730: +#line 11644 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; if (lex->sphead) @@ -33070,90 +33188,90 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->set_command(SQLCOM_DROP_PROCEDURE, (yyvsp[-1].object_ddl_options)); lex->spname= (yyvsp[0].spname); } -#line 33074 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33192 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1730: -#line 11643 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1731: +#line 11652 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->set_command(SQLCOM_DROP_USER, (yyvsp[-2].object_ddl_options)); } -#line 33082 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33200 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1731: -#line 11647 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1732: +#line 11656 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->set_command(SQLCOM_DROP_ROLE, (yyvsp[-2].object_ddl_options)); } -#line 33090 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33208 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1732: -#line 11651 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1733: +#line 11660 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->set_command(SQLCOM_DROP_VIEW, (yyvsp[0].object_ddl_options)); YYPS->m_lock_type= TL_UNLOCK; YYPS->m_mdl_type= MDL_EXCLUSIVE; } -#line 33101 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33219 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1733: -#line 11658 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1734: +#line 11667 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 33107 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33225 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1734: -#line 11660 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1735: +#line 11669 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->spname= (yyvsp[0].spname); Lex->set_command(SQLCOM_DROP_EVENT, (yyvsp[-1].object_ddl_options)); } -#line 33116 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33234 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1735: -#line 11665 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1736: +#line 11674 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->set_command(SQLCOM_DROP_TRIGGER, (yyvsp[-1].object_ddl_options)); lex->spname= (yyvsp[0].spname); } -#line 33126 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33244 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1736: -#line 11671 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1737: +#line 11680 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->alter_tablespace_info->ts_cmd_type= DROP_TABLESPACE; } -#line 33135 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33253 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1737: -#line 11676 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1738: +#line 11685 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->alter_tablespace_info->ts_cmd_type= DROP_LOGFILE_GROUP; } -#line 33144 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33262 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1738: -#line 11681 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1739: +#line 11690 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->set_command(SQLCOM_DROP_SERVER, (yyvsp[-1].object_ddl_options)); Lex->server_options.reset((yyvsp[0].lex_str)); } -#line 33153 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33271 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1741: -#line 11694 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1742: +#line 11703 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (!Select->add_table_to_list(thd, (yyvsp[0].table), NULL, TL_OPTION_UPDATING, @@ -33161,11 +33279,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); YYPS->m_mdl_type)) MYSQL_YYABORT; } -#line 33165 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33283 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1742: -#line 11705 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1743: +#line 11714 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (!Select->add_table_to_list(thd, (yyvsp[-1].table), NULL, TL_OPTION_UPDATING, @@ -33175,11 +33293,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[0].string_list))) MYSQL_YYABORT; } -#line 33179 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33297 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1745: -#line 11723 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1746: +#line 11732 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (!Select->add_table_to_list(thd, (yyvsp[0].table), NULL, TL_OPTION_UPDATING | TL_OPTION_ALIAS, @@ -33187,109 +33305,109 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); YYPS->m_mdl_type)) MYSQL_YYABORT; } -#line 33191 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33309 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1746: -#line 11734 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1747: +#line 11743 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->check_exists= FALSE; (yyval.num)= 0; } -#line 33200 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33318 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1747: -#line 11739 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1748: +#line 11748 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->check_exists= TRUE; (yyval.num)= 1; } -#line 33209 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33327 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1748: -#line 11747 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1749: +#line 11756 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.object_ddl_options).set(DDL_options_st::OPT_NONE); } -#line 33217 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33335 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1749: -#line 11751 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1750: +#line 11760 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.object_ddl_options).set(DDL_options_st::OPT_IF_EXISTS); } -#line 33225 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33343 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1750: -#line 11757 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1751: +#line 11766 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 0; } -#line 33231 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33349 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1751: -#line 11758 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1752: +#line 11767 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= HA_LEX_CREATE_TMP_TABLE; } -#line 33237 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33355 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1752: -#line 11766 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1753: +#line 11775 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_INSERT; lex->duplicates= DUP_ERROR; mysql_init_select(lex); } -#line 33248 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33366 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1753: -#line 11774 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1754: +#line 11783 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->set_lock_for_tables((yyvsp[-2].lock_type)); Lex->current_select= &Lex->select_lex; } -#line 33257 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33375 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1754: -#line 11779 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1755: +#line 11788 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 33263 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33381 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1755: -#line 11784 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1756: +#line 11793 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command = SQLCOM_REPLACE; lex->duplicates= DUP_REPLACE; mysql_init_select(lex); } -#line 33274 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33392 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1756: -#line 11791 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1757: +#line 11800 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->set_lock_for_tables((yyvsp[-1].lock_type)); Lex->current_select= &Lex->select_lex; } -#line 33283 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33401 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1757: -#line 11796 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1758: +#line 11805 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 33289 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33407 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1758: -#line 11801 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1759: +#line 11810 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* If it is SP we do not allow insert optimisation when result of @@ -33298,17 +33416,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); */ (yyval.lock_type)= (Lex->sphead ? TL_WRITE_DEFAULT : TL_WRITE_CONCURRENT_INSERT); } -#line 33302 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33420 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1759: -#line 11809 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1760: +#line 11818 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lock_type)= TL_WRITE_LOW_PRIORITY; } -#line 33308 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33426 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1760: -#line 11811 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1761: +#line 11820 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->keyword_delayed_begin_offset= (uint)(YYLIP->get_tok_start() - thd->query()); @@ -33316,23 +33434,23 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); YYLIP->yyLength() + 1; (yyval.lock_type)= TL_WRITE_DELAYED; } -#line 33320 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33438 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1761: -#line 11818 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1762: +#line 11827 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lock_type)= TL_WRITE; } -#line 33326 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33444 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1762: -#line 11822 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1763: +#line 11831 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lock_type)= (yyvsp[0].lock_type); } -#line 33332 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33450 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1763: -#line 11824 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1764: +#line 11833 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->keyword_delayed_begin_offset= (uint)(YYLIP->get_tok_start() - thd->query()); @@ -33340,222 +33458,222 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); YYLIP->yyLength() + 1; (yyval.lock_type)= TL_WRITE_DELAYED; } -#line 33344 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33462 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1764: -#line 11834 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1765: +#line 11843 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 33350 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33468 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1765: -#line 11835 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1766: +#line 11844 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 33356 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33474 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1766: -#line 11840 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1767: +#line 11849 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->field_list.empty(); lex->many_values.empty(); lex->insert_list=0; } -#line 33367 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ - break; - - case 1767: -#line 11848 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - {} -#line 33373 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33485 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1768: -#line 11849 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11857 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 33379 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33491 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1769: -#line 11850 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11858 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 33385 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33497 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1770: -#line 11852 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11859 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + {} +#line 33503 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ + break; + + case 1771: +#line 11861 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; if (!(lex->insert_list= new (thd->mem_root) List_item) || lex->many_values.push_back(lex->insert_list, thd->mem_root)) MYSQL_YYABORT; } -#line 33396 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ - break; - - case 1772: -#line 11863 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { Lex->field_list.push_back((yyvsp[0].item), thd->mem_root); } -#line 33402 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33514 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1773: -#line 11864 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11872 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->field_list.push_back((yyvsp[0].item), thd->mem_root); } -#line 33408 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33520 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1774: -#line 11868 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - {} -#line 33414 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11873 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { Lex->field_list.push_back((yyvsp[0].item), thd->mem_root); } +#line 33526 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1775: -#line 11869 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11877 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 33420 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33532 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1776: -#line 11871 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { Select->set_braces(0);} -#line 33426 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11878 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + {} +#line 33538 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1777: -#line 11872 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - {} -#line 33432 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11880 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { Select->set_braces(0);} +#line 33544 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1778: -#line 11874 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { Select->set_braces(1);} -#line 33438 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 11881 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + {} +#line 33550 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1779: -#line 11875 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11883 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { Select->set_braces(1);} +#line 33556 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ + break; + + case 1780: +#line 11884 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 33444 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33562 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1784: -#line 11890 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1785: +#line 11899 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; if (lex->field_list.push_back((yyvsp[-2].item), thd->mem_root) || lex->insert_list->push_back((yyvsp[0].item), thd->mem_root)) MYSQL_YYABORT; } -#line 33455 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ - break; - - case 1785: -#line 11899 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - {} -#line 33461 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33573 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1786: -#line 11900 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11908 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 33467 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33579 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1787: -#line 11904 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11909 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 33473 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33585 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1788: -#line 11905 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11913 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 33479 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33591 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1789: -#line 11910 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 11914 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + {} +#line 33597 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ + break; + + case 1790: +#line 11919 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (!(Lex->insert_list= new (thd->mem_root) List_item)) MYSQL_YYABORT; } -#line 33488 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33606 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1790: -#line 11915 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1791: +#line 11924 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; if (lex->many_values.push_back(lex->insert_list, thd->mem_root)) MYSQL_YYABORT; } -#line 33498 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33616 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1791: -#line 11923 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1792: +#line 11932 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 33504 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33622 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1793: -#line 11929 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1794: +#line 11938 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (Lex->insert_list->push_back((yyvsp[0].item), thd->mem_root)) MYSQL_YYABORT; } -#line 33513 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33631 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1794: -#line 11934 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1795: +#line 11943 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (Lex->insert_list->push_back((yyvsp[0].item), thd->mem_root)) MYSQL_YYABORT; } -#line 33522 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33640 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1795: -#line 11941 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1796: +#line 11950 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= (yyvsp[0].item);} -#line 33528 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33646 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1796: -#line 11943 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1797: +#line 11952 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_default_value(thd, Lex->current_context()); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 33538 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33656 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1798: -#line 11952 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1799: +#line 11961 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->duplicates= DUP_UPDATE; } -#line 33544 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33662 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1800: -#line 11960 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1801: +#line 11969 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; mysql_init_select(lex); lex->sql_command= SQLCOM_UPDATE; lex->duplicates= DUP_ERROR; } -#line 33555 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33673 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1801: -#line 11968 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1802: +#line 11977 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; if (lex->select_lex.table_list.elements > 1) @@ -33574,49 +33692,49 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); */ Select->set_lock_for_tables((yyvsp[-4].lock_type)); } -#line 33578 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33696 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1802: -#line 11986 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1803: +#line 11995 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 33584 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33702 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1805: -#line 11996 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1806: +#line 12005 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (add_item_to_list(thd, (yyvsp[-2].item)) || add_value_to_list(thd, (yyvsp[0].item))) MYSQL_YYABORT; } -#line 33593 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33711 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1808: -#line 12009 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1809: +#line 12018 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; if (lex->update_list.push_back((yyvsp[-2].item), thd->mem_root) || lex->value_list.push_back((yyvsp[0].item), thd->mem_root)) MYSQL_YYABORT; } -#line 33604 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33722 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1809: -#line 12018 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1810: +#line 12027 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lock_type)= TL_WRITE_DEFAULT; } -#line 33610 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33728 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1810: -#line 12019 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1811: +#line 12028 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lock_type)= TL_WRITE_LOW_PRIORITY; } -#line 33616 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33734 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1811: -#line 12026 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1812: +#line 12035 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_DELETE; @@ -33627,11 +33745,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->ignore= 0; lex->select_lex.init_order(); } -#line 33631 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33749 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1813: -#line 12041 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1814: +#line 12050 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (!Select->add_table_to_list(thd, (yyvsp[-1].table), NULL, TL_OPTION_UPDATING, YYPS->m_lock_type, @@ -33642,61 +33760,61 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); YYPS->m_lock_type= TL_READ_DEFAULT; YYPS->m_mdl_type= MDL_SHARED_READ; } -#line 33646 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33764 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1814: -#line 12052 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1815: +#line 12061 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 33652 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33770 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1815: -#line 12053 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1816: +#line 12062 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 33658 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33776 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1816: -#line 12055 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1817: +#line 12064 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { mysql_init_multi_delete(Lex); YYPS->m_lock_type= TL_READ_DEFAULT; YYPS->m_mdl_type= MDL_SHARED_READ; } -#line 33668 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33786 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1817: -#line 12061 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1818: +#line 12070 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (multi_delete_set_locks_and_link_aux_tables(Lex)) MYSQL_YYABORT; } -#line 33677 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33795 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1818: -#line 12066 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1819: +#line 12075 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { mysql_init_multi_delete(Lex); YYPS->m_lock_type= TL_READ_DEFAULT; YYPS->m_mdl_type= MDL_SHARED_READ; } -#line 33687 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33805 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1819: -#line 12072 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1820: +#line 12081 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (multi_delete_set_locks_and_link_aux_tables(Lex)) MYSQL_YYABORT; } -#line 33696 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33814 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1824: -#line 12090 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1825: +#line 12099 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Table_ident *ti= new (thd->mem_root) Table_ident((yyvsp[-1].lex_str)); if (ti == NULL) @@ -33709,11 +33827,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); YYPS->m_mdl_type)) MYSQL_YYABORT; } -#line 33713 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33831 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1825: -#line 12103 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1826: +#line 12112 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Table_ident *ti= new (thd->mem_root) Table_ident(thd, (yyvsp[-3].lex_str), (yyvsp[-1].lex_str), 0); if (ti == NULL) @@ -33726,53 +33844,53 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); YYPS->m_mdl_type)) MYSQL_YYABORT; } -#line 33730 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ - break; - - case 1826: -#line 12118 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - {} -#line 33736 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33848 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1827: -#line 12119 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 12127 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 33742 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33854 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1828: -#line 12123 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 12128 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 33748 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33860 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1829: -#line 12124 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 12132 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 33754 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33866 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1830: -#line 12128 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { Select->options|= OPTION_QUICK; } -#line 33760 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 12133 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + {} +#line 33872 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1831: -#line 12129 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { YYPS->m_lock_type= TL_WRITE_LOW_PRIORITY; } -#line 33766 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 12137 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { Select->options|= OPTION_QUICK; } +#line 33878 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1832: -#line 12130 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { Lex->ignore= 1; } -#line 33772 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 12138 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { YYPS->m_lock_type= TL_WRITE_LOW_PRIORITY; } +#line 33884 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1833: -#line 12135 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 12139 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { Lex->ignore= 1; } +#line 33890 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ + break; + + case 1834: +#line 12144 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX* lex= Lex; lex->sql_command= SQLCOM_TRUNCATE; @@ -33783,11 +33901,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); YYPS->m_lock_type= TL_WRITE; YYPS->m_mdl_type= MDL_EXCLUSIVE; } -#line 33787 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33905 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1834: -#line 12146 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1835: +#line 12155 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX* lex= thd->lex; DBUG_ASSERT(!lex->m_sql_cmd); @@ -33795,99 +33913,99 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->m_sql_cmd == NULL) MYSQL_YYABORT; } -#line 33799 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33917 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1841: -#line 12170 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1842: +#line 12179 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->profile_options|= PROFILE_CPU; } -#line 33807 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33925 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1842: -#line 12174 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1843: +#line 12183 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->profile_options|= PROFILE_MEMORY; } -#line 33815 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33933 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1843: -#line 12178 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1844: +#line 12187 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->profile_options|= PROFILE_BLOCK_IO; } -#line 33823 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33941 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1844: -#line 12182 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1845: +#line 12191 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->profile_options|= PROFILE_CONTEXT; } -#line 33831 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33949 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1845: -#line 12186 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1846: +#line 12195 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->profile_options|= PROFILE_PAGE_FAULTS; } -#line 33839 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33957 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1846: -#line 12190 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1847: +#line 12199 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->profile_options|= PROFILE_IPC; } -#line 33847 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33965 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1847: -#line 12194 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1848: +#line 12203 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->profile_options|= PROFILE_SWAPS; } -#line 33855 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33973 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1848: -#line 12198 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1849: +#line 12207 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->profile_options|= PROFILE_SOURCE; } -#line 33863 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33981 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1849: -#line 12202 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1850: +#line 12211 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->profile_options|= PROFILE_ALL; } -#line 33871 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33989 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1850: -#line 12209 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1851: +#line 12218 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->profile_query_id= 0; } -#line 33879 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 33997 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1851: -#line 12213 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1852: +#line 12222 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->profile_query_id= atoi((yyvsp[0].lex_str).str); } -#line 33887 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34005 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1852: -#line 12222 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1853: +#line 12231 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->wild=0; @@ -33896,30 +34014,30 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->current_select->parsing_place= SELECT_LIST; lex->create_info.init(); } -#line 33900 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34018 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1853: -#line 12231 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1854: +#line 12240 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->parsing_place= NO_MATTER; } -#line 33908 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34026 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1854: -#line 12238 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1855: +#line 12247 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_DATABASES; if (prepare_schema_table(thd, lex, 0, SCH_SCHEMATA)) MYSQL_YYABORT; } -#line 33919 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34037 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1855: -#line 12245 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1856: +#line 12254 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_TABLES; @@ -33927,11 +34045,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (prepare_schema_table(thd, lex, 0, SCH_TABLE_NAMES)) MYSQL_YYABORT; } -#line 33931 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34049 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1856: -#line 12253 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1857: +#line 12262 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_TRIGGERS; @@ -33939,11 +34057,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (prepare_schema_table(thd, lex, 0, SCH_TRIGGERS)) MYSQL_YYABORT; } -#line 33943 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34061 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1857: -#line 12261 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1858: +#line 12270 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_EVENTS; @@ -33951,11 +34069,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (prepare_schema_table(thd, lex, 0, SCH_EVENTS)) MYSQL_YYABORT; } -#line 33955 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34073 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1858: -#line 12269 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1859: +#line 12278 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_TABLE_STATUS; @@ -33963,11 +34081,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (prepare_schema_table(thd, lex, 0, SCH_TABLES)) MYSQL_YYABORT; } -#line 33967 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34085 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1859: -#line 12277 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1860: +#line 12286 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_OPEN_TABLES; @@ -33975,55 +34093,55 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (prepare_schema_table(thd, lex, 0, SCH_OPEN_TABLES)) MYSQL_YYABORT; } -#line 33979 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34097 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1860: -#line 12285 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1861: +#line 12294 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_PLUGINS; if (prepare_schema_table(thd, lex, 0, SCH_PLUGINS)) MYSQL_YYABORT; } -#line 33990 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34108 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1861: -#line 12292 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1862: +#line 12301 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->ident= (yyvsp[0].lex_str); Lex->sql_command= SQLCOM_SHOW_PLUGINS; if (prepare_schema_table(thd, Lex, 0, SCH_ALL_PLUGINS)) MYSQL_YYABORT; } -#line 34001 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34119 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1862: -#line 12299 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1863: +#line 12308 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command= SQLCOM_SHOW_PLUGINS; if (prepare_schema_table(thd, Lex, 0, SCH_ALL_PLUGINS)) MYSQL_YYABORT; } -#line 34011 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34129 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1863: -#line 12305 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1864: +#line 12314 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->create_info.db_type= (yyvsp[-1].db_type); } -#line 34017 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34135 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1864: -#line 12307 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1865: +#line 12316 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->create_info.db_type= NULL; } -#line 34023 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34141 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1865: -#line 12309 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1866: +#line 12318 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_FIELDS; @@ -34032,45 +34150,45 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (prepare_schema_table(thd, lex, (yyvsp[-2].table), SCH_COLUMNS)) MYSQL_YYABORT; } -#line 34036 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34154 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1866: -#line 12318 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1867: +#line 12327 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command = SQLCOM_SHOW_BINLOGS; } -#line 34044 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34162 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1867: -#line 12322 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1868: +#line 12331 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command = SQLCOM_SHOW_SLAVE_HOSTS; } -#line 34052 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34170 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1868: -#line 12326 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1869: +#line 12335 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_BINLOG_EVENTS; } -#line 34061 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34179 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1870: -#line 12332 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1871: +#line 12341 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_RELAYLOG_EVENTS; } -#line 34070 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34188 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1872: -#line 12337 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1873: +#line 12346 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_KEYS; @@ -34079,90 +34197,90 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (prepare_schema_table(thd, lex, (yyvsp[-2].table), SCH_STATISTICS)) MYSQL_YYABORT; } -#line 34083 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34201 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1873: -#line 12346 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1874: +#line 12355 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES; if (prepare_schema_table(thd, lex, 0, SCH_ENGINES)) MYSQL_YYABORT; } -#line 34094 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34212 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1874: -#line 12353 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1875: +#line 12362 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command= SQLCOM_SHOW_AUTHORS; } -#line 34103 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34221 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1875: -#line 12358 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1876: +#line 12367 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command= SQLCOM_SHOW_CONTRIBUTORS; } -#line 34112 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34230 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1876: -#line 12363 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1877: +#line 12372 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command= SQLCOM_SHOW_PRIVILEGES; } -#line 34121 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34239 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1877: -#line 12368 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1878: +#line 12377 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (void) create_select_for_variable("warning_count"); } -#line 34127 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34245 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1878: -#line 12370 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1879: +#line 12379 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (void) create_select_for_variable("error_count"); } -#line 34133 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34251 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1879: -#line 12372 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1880: +#line 12381 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command = SQLCOM_SHOW_WARNS;} -#line 34139 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34257 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1880: -#line 12374 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1881: +#line 12383 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command = SQLCOM_SHOW_ERRORS;} -#line 34145 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34263 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1881: -#line 12376 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1882: +#line 12385 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command = SQLCOM_SHOW_PROFILES; } -#line 34151 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34269 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1882: -#line 12378 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1883: +#line 12387 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_PROFILE; if (prepare_schema_table(thd, lex, NULL, SCH_PROFILES) != 0) MYSQL_YYABORT; } -#line 34162 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34280 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1883: -#line 12385 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1884: +#line 12394 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_STATUS; @@ -34170,17 +34288,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (prepare_schema_table(thd, lex, 0, SCH_SESSION_STATUS)) MYSQL_YYABORT; } -#line 34174 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34292 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1884: -#line 12393 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1885: +#line 12402 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command= SQLCOM_SHOW_PROCESSLIST;} -#line 34180 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34298 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1885: -#line 12395 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1886: +#line 12404 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_VARIABLES; @@ -34188,63 +34306,63 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (prepare_schema_table(thd, lex, 0, SCH_SESSION_VARIABLES)) MYSQL_YYABORT; } -#line 34192 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34310 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1886: -#line 12403 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1887: +#line 12412 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_CHARSETS; if (prepare_schema_table(thd, lex, 0, SCH_CHARSETS)) MYSQL_YYABORT; } -#line 34203 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34321 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1887: -#line 12410 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1888: +#line 12419 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_COLLATIONS; if (prepare_schema_table(thd, lex, 0, SCH_COLLATIONS)) MYSQL_YYABORT; } -#line 34214 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34332 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1888: -#line 12417 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1889: +#line 12426 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command= SQLCOM_SHOW_GRANTS; if (!(Lex->grant_user= (LEX_USER*)thd->alloc(sizeof(LEX_USER)))) MYSQL_YYABORT; Lex->grant_user->user= current_user_and_current_role; } -#line 34225 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34343 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1889: -#line 12424 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1890: +#line 12433 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command= SQLCOM_SHOW_GRANTS; lex->grant_user=(yyvsp[-1].lex_user); } -#line 34235 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34353 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1890: -#line 12430 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1891: +#line 12439 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->set_command(SQLCOM_SHOW_CREATE_DB, (yyvsp[-1].object_ddl_options)); Lex->name= (yyvsp[0].lex_str); } -#line 34244 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34362 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1891: -#line 12435 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1892: +#line 12444 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command = SQLCOM_SHOW_CREATE; @@ -34252,11 +34370,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; lex->create_info.storage_media= HA_SM_DEFAULT; } -#line 34256 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34374 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1892: -#line 12443 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1893: +#line 12452 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command = SQLCOM_SHOW_CREATE; @@ -34264,140 +34382,140 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; lex->only_view= 1; } -#line 34268 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34386 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1893: -#line 12451 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1894: +#line 12460 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command = SQLCOM_SHOW_MASTER_STAT; } -#line 34276 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34394 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1894: -#line 12455 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1895: +#line 12464 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command = SQLCOM_SHOW_SLAVE_STAT; Lex->verbose= 1; } -#line 34285 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34403 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1895: -#line 12460 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1896: +#line 12469 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= thd->lex; lex->mi.connection_name= null_lex_str; lex->sql_command = SQLCOM_SHOW_SLAVE_STAT; lex->verbose= 0; } -#line 34296 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34414 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1896: -#line 12467 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1897: +#line 12476 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command = SQLCOM_SHOW_SLAVE_STAT; Lex->verbose= 0; } -#line 34305 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34423 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1897: -#line 12472 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1898: +#line 12481 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command = SQLCOM_SHOW_CREATE_PROC; lex->spname= (yyvsp[0].spname); } -#line 34316 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34434 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1898: -#line 12479 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1899: +#line 12488 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command = SQLCOM_SHOW_CREATE_FUNC; lex->spname= (yyvsp[0].spname); } -#line 34327 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34445 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1899: -#line 12486 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1900: +#line 12495 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_CREATE_TRIGGER; lex->spname= (yyvsp[0].spname); } -#line 34337 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34455 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1900: -#line 12492 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1901: +#line 12501 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_STATUS_PROC; if (prepare_schema_table(thd, lex, 0, SCH_PROCEDURES)) MYSQL_YYABORT; } -#line 34348 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34466 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1901: -#line 12499 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1902: +#line 12508 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_STATUS_FUNC; if (prepare_schema_table(thd, lex, 0, SCH_PROCEDURES)) MYSQL_YYABORT; } -#line 34359 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34477 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1902: -#line 12506 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1903: +#line 12515 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command= SQLCOM_SHOW_PROC_CODE; Lex->spname= (yyvsp[0].spname); } -#line 34368 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34486 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1903: -#line 12511 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1904: +#line 12520 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command= SQLCOM_SHOW_FUNC_CODE; Lex->spname= (yyvsp[0].spname); } -#line 34377 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34495 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1904: -#line 12516 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1905: +#line 12525 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->spname= (yyvsp[0].spname); Lex->sql_command = SQLCOM_SHOW_CREATE_EVENT; } -#line 34386 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34504 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1905: -#line 12521 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1906: +#line 12530 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command= SQLCOM_SHOW_EXPLAIN; if (prepare_schema_table(thd, Lex, 0, SCH_EXPLAIN)) MYSQL_YYABORT; add_value_to_list(thd, (yyvsp[0].item)); } -#line 34397 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34515 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1906: -#line 12528 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1907: +#line 12537 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; bool in_plugin; @@ -34416,83 +34534,83 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (make_schema_select(thd, Lex->current_select, table)) MYSQL_YYABORT; } -#line 34420 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34538 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1907: -#line 12550 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1908: +#line 12559 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command= SQLCOM_SHOW_ENGINE_STATUS; } -#line 34426 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34544 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1908: -#line 12552 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1909: +#line 12561 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command= SQLCOM_SHOW_ENGINE_MUTEX; } -#line 34432 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34550 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1909: -#line 12554 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1910: +#line 12563 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command= SQLCOM_SHOW_ENGINE_LOGS; } -#line 34438 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34556 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1914: -#line 12568 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1915: +#line 12577 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.simple_string)= 0; } -#line 34444 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34562 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1915: -#line 12569 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1916: +#line 12578 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.simple_string)= (yyvsp[0].lex_str).str; } -#line 34450 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34568 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1916: -#line 12573 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1917: +#line 12582 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->verbose=0; } -#line 34456 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34574 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1917: -#line 12574 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1918: +#line 12583 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->verbose=1; } -#line 34462 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34580 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1920: -#line 12583 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1921: +#line 12592 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->mi.log_file_name = 0; } -#line 34468 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34586 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1921: -#line 12584 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1922: +#line 12593 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->mi.log_file_name = (yyvsp[0].lex_str).str; } -#line 34474 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34592 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1922: -#line 12588 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1923: +#line 12597 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->mi.pos = 4; /* skip magic number */ } -#line 34480 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34598 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1923: -#line 12589 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1924: +#line 12598 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->mi.pos = (yyvsp[0].ulonglong_number); } -#line 34486 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34604 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1924: -#line 12593 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1925: +#line 12602 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.simple_string)= 0; } -#line 34492 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34610 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1925: -#line 12595 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1926: +#line 12604 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->wild= new (thd->mem_root) String((yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length, system_charset_info); @@ -34500,22 +34618,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; (yyval.simple_string)= (yyvsp[-1].simple_string); } -#line 34504 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34622 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1926: -#line 12603 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1927: +#line 12612 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->where= normalize_cond(thd, (yyvsp[0].item)); if ((yyvsp[0].item)) (yyvsp[0].item)->top_level_item(); (yyval.simple_string)= (yyvsp[-1].simple_string); } -#line 34515 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34633 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1927: -#line 12614 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1928: +#line 12623 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; mysql_init_select(lex); @@ -34526,66 +34644,66 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (prepare_schema_table(thd, lex, (yyvsp[0].table), SCH_COLUMNS)) MYSQL_YYABORT; } -#line 34530 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34648 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1928: -#line 12625 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1929: +#line 12634 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->parsing_place= NO_MATTER; } -#line 34538 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34656 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1929: -#line 12629 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1930: +#line 12638 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->describe|= DESCRIBE_NORMAL; } -#line 34544 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34662 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1930: -#line 12631 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1931: +#line 12640 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->select_lex.options|= SELECT_DESCRIBE; } -#line 34553 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34671 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1938: -#line 12652 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1939: +#line 12661 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->analyze_stmt= true; } -#line 34561 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34679 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1939: -#line 12658 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1940: +#line 12667 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->describe|= DESCRIBE_EXTENDED; } -#line 34567 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34685 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1940: -#line 12659 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1941: +#line 12668 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->describe|= DESCRIBE_PARTITIONS; } -#line 34573 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34691 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1941: -#line 12660 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1942: +#line 12669 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 34579 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34697 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1942: -#line 12664 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1943: +#line 12673 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 34585 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34703 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1943: -#line 12666 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1944: +#line 12675 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (!my_strcasecmp(system_charset_info, (yyvsp[0].lex_str).str, "JSON")) Lex->explain_json= true; @@ -34594,23 +34712,23 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else my_yyabort_error((ER_UNKNOWN_EXPLAIN_FORMAT, MYF(0), (yyvsp[0].lex_str).str)); } -#line 34598 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34716 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1944: -#line 12677 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1945: +#line 12686 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 34604 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34722 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1945: -#line 12678 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1946: +#line 12687 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->wild= (yyvsp[0].string); } -#line 34610 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34728 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1946: -#line 12680 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1947: +#line 12689 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->wild= new (thd->mem_root) String((const char*) (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length, @@ -34618,28 +34736,28 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->wild == NULL) MYSQL_YYABORT; } -#line 34622 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34740 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1947: -#line 12694 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1948: +#line 12703 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command= SQLCOM_FLUSH; lex->type= 0; lex->no_write_to_binlog= (yyvsp[0].num); } -#line 34633 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34751 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1948: -#line 12701 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1949: +#line 12710 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 34639 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34757 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1949: -#line 12706 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1950: +#line 12715 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->type|= REFRESH_TABLES; /* @@ -34649,23 +34767,23 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); YYPS->m_lock_type= TL_READ_NO_INSERT; YYPS->m_mdl_type= MDL_SHARED_HIGH_PRIO; } -#line 34653 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34771 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1950: -#line 12716 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1951: +#line 12725 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 34659 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34777 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1952: -#line 12721 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1953: +#line 12730 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 34665 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34783 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1953: -#line 12723 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1954: +#line 12732 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { TABLE_LIST *tables= Lex->query_tables; for (; tables; tables= tables->next_global) @@ -34675,17 +34793,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); tables->open_type= OT_BASE_ONLY; /* Ignore temporary tables. */ } } -#line 34679 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34797 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1954: -#line 12736 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1955: +#line 12745 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->type|= REFRESH_READ_LOCK | (yyvsp[0].num); } -#line 34685 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34803 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1955: -#line 12738 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1956: +#line 12747 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (Lex->query_tables == NULL) // Table list can't be empty { @@ -34694,53 +34812,53 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } Lex->type|= REFRESH_FOR_EXPORT; } -#line 34698 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34816 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1956: -#line 12745 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1957: +#line 12754 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 34704 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34822 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1958: -#line 12751 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1959: +#line 12760 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 34710 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34828 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1959: -#line 12756 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1960: +#line 12765 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->type|= REFRESH_ERROR_LOG; } -#line 34716 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34834 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1960: -#line 12758 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1961: +#line 12767 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->type|= REFRESH_ENGINE_LOG; } -#line 34722 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34840 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1961: -#line 12760 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1962: +#line 12769 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->type|= REFRESH_GENERAL_LOG; } -#line 34728 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34846 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1962: -#line 12762 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1963: +#line 12771 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->type|= REFRESH_SLOW_LOG; } -#line 34734 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34852 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1963: -#line 12764 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1964: +#line 12773 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->type|= REFRESH_BINARY_LOG; } -#line 34740 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34858 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1964: -#line 12766 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1965: +#line 12775 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; if (lex->type & REFRESH_RELAY_LOG) @@ -34748,44 +34866,44 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->type|= REFRESH_RELAY_LOG; lex->relay_log_connection_name= lex->mi.connection_name; } -#line 34752 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34870 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1965: -#line 12774 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1966: +#line 12783 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->type|= REFRESH_QUERY_CACHE_FREE; } -#line 34758 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34876 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1966: -#line 12776 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1967: +#line 12785 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->type|= REFRESH_HOSTS; } -#line 34764 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34882 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1967: -#line 12778 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1968: +#line 12787 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->type|= REFRESH_GRANT; } -#line 34770 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34888 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1968: -#line 12780 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1969: +#line 12789 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->type|= REFRESH_LOG; Lex->relay_log_connection_name= empty_lex_str; } -#line 34779 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34897 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1969: -#line 12785 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1970: +#line 12794 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->type|= REFRESH_STATUS; } -#line 34785 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34903 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1970: -#line 12787 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1971: +#line 12796 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; if (lex->type & REFRESH_SLAVE) @@ -34793,29 +34911,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->type|= REFRESH_SLAVE; lex->reset_slave_info.all= false; } -#line 34797 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34915 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1971: -#line 12795 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1972: +#line 12804 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->type|= REFRESH_MASTER; } -#line 34803 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34921 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1972: -#line 12797 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1973: +#line 12806 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->type|= REFRESH_DES_KEY_FILE; } -#line 34809 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34927 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1973: -#line 12799 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1974: +#line 12808 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->type|= REFRESH_USER_RESOURCES; } -#line 34815 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34933 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1974: -#line 12801 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1975: +#line 12810 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->type|= REFRESH_GENERIC; ST_SCHEMA_TABLE *table= find_schema_table(thd, (yyvsp[-1].lex_str).str); @@ -34828,35 +34946,35 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); thd->memdup(&(yyvsp[-1].lex_str), sizeof(LEX_STRING)), thd->mem_root); } -#line 34832 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ - break; - - case 1975: -#line 12816 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - {} -#line 34838 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34950 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1976: -#line 12817 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 12825 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 34844 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34956 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1977: -#line 12821 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 12826 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 34850 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34962 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 1978: -#line 12823 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 12830 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + {} +#line 34968 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ + break; + + case 1979: +#line 12832 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 34856 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34974 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1982: -#line 12833 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1983: +#line 12842 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { uint32 value= (uint32) (yyvsp[0].ulonglong_number); if ((yyvsp[0].ulonglong_number) > UINT_MAX32) @@ -34869,126 +34987,126 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } insert_dynamic(&Lex->delete_gtid_domain, (uchar*) &value); } -#line 34873 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34991 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1983: -#line 12848 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1984: +#line 12857 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {(yyval.num)= 0;} -#line 34879 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 34997 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1984: -#line 12849 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1985: +#line 12858 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {(yyval.num)= REFRESH_CHECKPOINT; } -#line 34885 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35003 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1985: -#line 12853 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1986: +#line 12862 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command= SQLCOM_RESET; lex->type=0; } -#line 34894 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35012 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1986: -#line 12858 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1987: +#line 12867 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 34900 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35018 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1989: -#line 12867 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1990: +#line 12876 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->type|= REFRESH_SLAVE; } -#line 34906 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35024 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1990: -#line 12869 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1991: +#line 12878 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 34912 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35030 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1991: -#line 12871 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1992: +#line 12880 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->type|= REFRESH_MASTER; Lex->next_binlog_file_number= 0; } -#line 34921 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35039 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1993: -#line 12876 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1994: +#line 12885 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->type|= REFRESH_QUERY_CACHE;} -#line 34927 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35045 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1994: -#line 12880 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1995: +#line 12889 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->reset_slave_info.all= false; } -#line 34933 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35051 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1995: -#line 12881 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1996: +#line 12890 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->reset_slave_info.all= true; } -#line 34939 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35057 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1996: -#line 12885 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1997: +#line 12894 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 34945 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35063 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1997: -#line 12887 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1998: +#line 12896 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->next_binlog_file_number = (yyvsp[0].ulong_num); } -#line 34953 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35071 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1998: -#line 12894 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 1999: +#line 12903 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->type=0; lex->sql_command = SQLCOM_PURGE; } -#line 34963 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35081 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 1999: -#line 12900 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2000: +#line 12909 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 34969 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35087 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2001: -#line 12909 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2002: +#line 12918 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->to_log = (yyvsp[0].lex_str).str; } -#line 34977 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35095 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2002: -#line 12913 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2003: +#line 12922 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->value_list.empty(); lex->value_list.push_front((yyvsp[0].item), thd->mem_root); lex->sql_command= SQLCOM_PURGE_BEFORE; } -#line 34988 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35106 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2003: -#line 12925 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2004: +#line 12934 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->value_list.empty(); @@ -34996,97 +35114,97 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sql_command= SQLCOM_KILL; lex->kill_type= KILL_TYPE_ID; } -#line 35000 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35118 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2004: -#line 12933 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2005: +#line 12942 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->kill_signal= (killed_state) ((yyvsp[-2].num) | (yyvsp[-1].num)); } -#line 35008 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ - break; - - case 2005: -#line 12939 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.num)= (int) KILL_HARD_BIT; } -#line 35014 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35126 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2006: -#line 12940 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 12948 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= (int) KILL_HARD_BIT; } -#line 35020 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35132 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2007: -#line 12941 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.num)= 0; } -#line 35026 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 12949 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.num)= (int) KILL_HARD_BIT; } +#line 35138 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2008: -#line 12944 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.num)= (int) KILL_CONNECTION; } -#line 35032 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 12950 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.num)= 0; } +#line 35144 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2009: -#line 12945 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 12953 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= (int) KILL_CONNECTION; } -#line 35038 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35150 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2010: -#line 12946 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.num)= (int) KILL_QUERY; } -#line 35044 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 12954 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.num)= (int) KILL_CONNECTION; } +#line 35156 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2011: -#line 12948 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 12955 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.num)= (int) KILL_QUERY; } +#line 35162 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ + break; + + case 2012: +#line 12957 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= (int) KILL_QUERY; Lex->kill_type= KILL_TYPE_QUERY; } -#line 35053 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35171 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2012: -#line 12956 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2013: +#line 12965 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->value_list.push_front((yyval.item), thd->mem_root); } -#line 35061 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35179 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2013: -#line 12960 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2014: +#line 12969 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root); Lex->kill_type= KILL_TYPE_USER; } -#line 35070 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35188 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2014: -#line 12968 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2015: +#line 12977 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command= SQLCOM_SHUTDOWN; } -#line 35076 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35194 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2015: -#line 12975 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2016: +#line 12984 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command=SQLCOM_CHANGE_DB; lex->select_lex.db= (yyvsp[0].lex_str).str; } -#line 35086 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35204 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2016: -#line 12986 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2017: +#line 12995 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= thd->lex; @@ -35097,11 +35215,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 35101 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35219 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2017: -#line 12997 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2018: +#line 13006 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command= SQLCOM_LOAD; @@ -35111,11 +35229,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (!(lex->exchange= new (thd->mem_root) sql_exchange((yyvsp[0].lex_str).str, 0, (yyvsp[-5].filetype)))) MYSQL_YYABORT; } -#line 35115 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35233 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2018: -#line 13007 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2019: +#line 13016 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; if (!Select->add_table_to_list(thd, (yyvsp[-1].table), NULL, TL_OPTION_UPDATING, @@ -35124,54 +35242,55 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->field_list.empty(); lex->update_list.empty(); lex->value_list.empty(); + lex->many_values.empty(); } -#line 35129 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35248 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2019: -#line 13017 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2020: +#line 13027 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->exchange->cs= (yyvsp[0].charset); } -#line 35135 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35254 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2020: -#line 13021 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2021: +#line 13031 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 35141 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35260 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2021: -#line 13025 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2022: +#line 13035 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.filetype)= FILETYPE_CSV; } -#line 35147 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35266 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2022: -#line 13026 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2023: +#line 13036 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.filetype)= FILETYPE_XML; } -#line 35153 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35272 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2023: -#line 13030 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2024: +#line 13040 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)=0;} -#line 35159 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35278 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2024: -#line 13031 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2025: +#line 13041 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)=1;} -#line 35165 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35284 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2025: -#line 13035 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2026: +#line 13045 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lock_type)= TL_WRITE_DEFAULT; } -#line 35171 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35290 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2026: -#line 13037 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2027: +#line 13047 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* Ignore this option in SP to avoid problem with query cache and @@ -35179,182 +35298,182 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); */ (yyval.lock_type)= (Lex->sphead ? TL_WRITE_DEFAULT : TL_WRITE_CONCURRENT_INSERT); } -#line 35183 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35302 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2027: -#line 13044 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2028: +#line 13054 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lock_type)= TL_WRITE_LOW_PRIORITY; } -#line 35189 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35308 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2028: -#line 13048 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2029: +#line 13058 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->duplicates=DUP_ERROR; } -#line 35195 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35314 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2029: -#line 13049 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2030: +#line 13059 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->duplicates=DUP_REPLACE; } -#line 35201 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35320 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2030: -#line 13050 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2031: +#line 13060 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->ignore= 1; } -#line 35207 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35326 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2035: -#line 13065 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2036: +#line 13075 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { DBUG_ASSERT(Lex->exchange != 0); Lex->exchange->field_term= (yyvsp[0].string); } -#line 35216 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35335 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2036: -#line 13070 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2037: +#line 13080 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; DBUG_ASSERT(lex->exchange != 0); lex->exchange->enclosed= (yyvsp[0].string); lex->exchange->opt_enclosed= 1; } -#line 35227 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35346 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2037: -#line 13077 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2038: +#line 13087 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { DBUG_ASSERT(Lex->exchange != 0); Lex->exchange->enclosed= (yyvsp[0].string); } -#line 35236 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35355 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2038: -#line 13082 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2039: +#line 13092 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { DBUG_ASSERT(Lex->exchange != 0); Lex->exchange->escaped= (yyvsp[0].string); } -#line 35245 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35364 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2043: -#line 13100 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2044: +#line 13110 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { DBUG_ASSERT(Lex->exchange != 0); Lex->exchange->line_term= (yyvsp[0].string); } -#line 35254 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35373 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2044: -#line 13105 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2045: +#line 13115 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { DBUG_ASSERT(Lex->exchange != 0); Lex->exchange->line_start= (yyvsp[0].string); } -#line 35263 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35382 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2045: -#line 13112 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2046: +#line 13122 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 35269 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35388 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2046: -#line 13114 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2047: +#line 13124 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->exchange->line_term = (yyvsp[0].string); } -#line 35275 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35394 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2048: -#line 13119 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2049: +#line 13129 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { DBUG_ASSERT(Lex->exchange != 0); Lex->exchange->skip_lines= atol((yyvsp[-1].lex_str).str); } -#line 35284 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ - break; - - case 2049: -#line 13126 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { } -#line 35290 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35403 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2050: -#line 13127 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13136 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 35296 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35409 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2051: -#line 13131 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - {} -#line 35302 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 13137 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { } +#line 35415 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2052: -#line 13132 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13141 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 35308 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35421 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2053: -#line 13133 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13142 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 35314 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35427 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2054: -#line 13138 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { Lex->field_list.push_back((yyvsp[0].item), thd->mem_root); } -#line 35320 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 13143 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + {} +#line 35433 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2055: -#line 13140 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13148 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->field_list.push_back((yyvsp[0].item), thd->mem_root); } -#line 35326 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35439 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2056: -#line 13144 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - {(yyval.item)= (yyvsp[0].item);} -#line 35332 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 13150 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { Lex->field_list.push_back((yyvsp[0].item), thd->mem_root); } +#line 35445 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2057: -#line 13146 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13154 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + {(yyval.item)= (yyvsp[0].item);} +#line 35451 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ + break; + + case 2058: +#line 13156 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_user_var_as_out_param(thd, (yyvsp[0].lex_str)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 35342 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35461 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2058: -#line 13154 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2059: +#line 13164 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 35348 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35467 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2059: -#line 13155 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2060: +#line 13165 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 35354 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35473 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2062: -#line 13165 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2063: +#line 13175 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; if (lex->update_list.push_back((yyvsp[-4].item), thd->mem_root) || @@ -35362,11 +35481,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; (yyvsp[-1].item)->set_name_no_truncate((yyvsp[-2].simple_string), (uint) ((yyvsp[0].simple_string) - (yyvsp[-2].simple_string)), thd->charset()); } -#line 35366 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35485 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2063: -#line 13178 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2064: +#line 13188 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX_STRING tmp; CHARSET_INFO *cs_con= thd->variables.collation_connection; @@ -35390,11 +35509,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 35394 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35513 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2064: -#line 13202 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2065: +#line 13212 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { uint repertoire= Lex->text_string_is_7bit ? MY_REPERTOIRE_ASCII : MY_REPERTOIRE_UNICODE30; @@ -35406,22 +35525,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 35410 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35529 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2065: -#line 13214 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2066: +#line 13224 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_string_with_introducer(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length, (yyvsp[-1].charset)); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 35421 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35540 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2066: -#line 13221 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2067: +#line 13231 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item_string* item= (Item_string*) (yyvsp[-1].item); item->append((yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length); @@ -35437,11 +35556,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[0].lex_str).length); } } -#line 35441 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35560 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2067: -#line 13240 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2068: +#line 13250 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.string)= new (thd->mem_root) String((yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length, @@ -35449,17 +35568,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.string) == NULL) MYSQL_YYABORT; } -#line 35453 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35572 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2068: -#line 13247 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2069: +#line 13257 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.string)= (yyvsp[0].string); } -#line 35459 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35578 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2069: -#line 13253 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2070: +#line 13263 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item *tmp= new (thd->mem_root) Item_hex_hybrid(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length); @@ -35472,11 +35591,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); tmp->quick_fix_field(); (yyval.string)= tmp->val_str((String*) 0); } -#line 35476 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35595 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2070: -#line 13266 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2071: +#line 13276 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item *tmp= new (thd->mem_root) Item_hex_string(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length); @@ -35485,11 +35604,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); tmp->quick_fix_field(); (yyval.string)= tmp->val_str((String*) 0); } -#line 35489 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35608 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2071: -#line 13275 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2072: +#line 13285 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item *tmp= new (thd->mem_root) Item_bin_string(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length); @@ -35502,11 +35621,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); tmp->quick_fix_field(); (yyval.string)= tmp->val_str((String*) 0); } -#line 35506 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35625 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2072: -#line 13291 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2073: +#line 13301 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= thd->lex; Lex_input_stream *lip= YYLIP; @@ -35520,50 +35639,50 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (!((yyval.item_param)= item) || lex->param_list.push_back(item, thd->mem_root)) my_yyabort_error((ER_OUT_OF_RESOURCES, MYF(0))); } -#line 35524 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35643 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2073: -#line 13307 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2074: +#line 13317 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item) = (yyvsp[0].item); } -#line 35530 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35649 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2074: -#line 13308 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2075: +#line 13318 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item) = (yyvsp[0].item_num); } -#line 35536 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35655 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2075: -#line 13310 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2076: +#line 13320 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyvsp[0].item_num)->max_length++; (yyval.item)= (yyvsp[0].item_num)->neg(thd); } -#line 35545 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35664 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2076: -#line 13317 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2077: +#line 13327 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item) = (yyvsp[0].item); } -#line 35551 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35670 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2077: -#line 13318 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2078: +#line 13328 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item) = (yyvsp[0].item_num); } -#line 35557 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35676 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2078: -#line 13319 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2079: +#line 13329 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= (yyvsp[0].item); } -#line 35563 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35682 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2079: -#line 13321 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2080: +#line 13331 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* For the digest computation, in this context only, @@ -35577,61 +35696,61 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; YYLIP->next_state= MY_LEX_OPERATOR_OR_IDENT; } -#line 35581 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35700 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2080: -#line 13335 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2081: +#line 13345 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_int(thd, (char*) "FALSE",0,1); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 35591 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35710 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2081: -#line 13341 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2082: +#line 13351 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_int(thd, (char*) "TRUE",1,1); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 35601 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35720 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2082: -#line 13347 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2083: +#line 13357 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_hex_hybrid(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 35611 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35730 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2083: -#line 13353 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2084: +#line 13363 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_hex_string(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 35621 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35740 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2084: -#line 13359 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2085: +#line 13369 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= new (thd->mem_root) Item_bin_string(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 35631 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35750 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2085: -#line 13365 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2086: +#line 13375 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item_string_with_introducer *item_str; /* @@ -35646,11 +35765,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.item)= item_str; } -#line 35650 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35769 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2086: -#line 13383 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2087: +#line 13393 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { int error; (yyval.item_num)= new (thd->mem_root) @@ -35660,11 +35779,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item_num) == NULL) MYSQL_YYABORT; } -#line 35664 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35783 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2087: -#line 13393 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2088: +#line 13403 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { int error; (yyval.item_num)= new (thd->mem_root) @@ -35674,21 +35793,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item_num) == NULL) MYSQL_YYABORT; } -#line 35678 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35797 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2088: -#line 13403 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2089: +#line 13413 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item_num)= new (thd->mem_root) Item_uint(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length); if ((yyval.item_num) == NULL) MYSQL_YYABORT; } -#line 35688 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35807 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2089: -#line 13409 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2090: +#line 13419 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item_num)= new (thd->mem_root) Item_decimal(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length, thd->charset()); @@ -35697,11 +35816,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 35701 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35820 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2090: -#line 13418 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2091: +#line 13428 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item_num)= new (thd->mem_root) Item_float(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length); if (((yyval.item_num) == NULL) || (thd->is_error())) @@ -35709,53 +35828,53 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 35713 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35832 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2091: -#line 13430 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2092: +#line 13440 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (!((yyval.item)= create_temporal_literal(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length, YYCSCL, MYSQL_TYPE_DATE, true))) MYSQL_YYABORT; } -#line 35723 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35842 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2092: -#line 13436 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2093: +#line 13446 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (!((yyval.item)= create_temporal_literal(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length, YYCSCL, MYSQL_TYPE_TIME, true))) MYSQL_YYABORT; } -#line 35733 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35852 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2093: -#line 13442 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2094: +#line 13452 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (!((yyval.item)= create_temporal_literal(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length, YYCSCL, MYSQL_TYPE_DATETIME, true))) MYSQL_YYABORT; } -#line 35743 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35862 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2094: -#line 13457 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2095: +#line 13467 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)=(yyvsp[0].item); } -#line 35749 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35868 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2095: -#line 13458 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2096: +#line 13468 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)=(yyvsp[0].item); } -#line 35755 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35874 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2096: -#line 13463 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2097: +#line 13473 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { SELECT_LEX *sel= Select; (yyval.item)= new (thd->mem_root) Item_field(thd, Lex->current_context(), @@ -35764,11 +35883,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; sel->with_wild++; } -#line 35768 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35887 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2097: -#line 13472 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2098: +#line 13482 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { SELECT_LEX *sel= Select; const char* schema= thd->client_capabilities & CLIENT_NO_SCHEMA ? @@ -35780,17 +35899,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; sel->with_wild++; } -#line 35784 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35903 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2098: -#line 13486 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2099: +#line 13496 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)=(yyvsp[0].item); } -#line 35790 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35909 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2099: -#line 13491 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2100: +#line 13501 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= thd->lex; Lex_input_stream *lip= YYLIP; @@ -35833,17 +35952,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 35837 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35956 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2100: -#line 13533 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2101: +#line 13543 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= (yyvsp[0].item); } -#line 35843 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35962 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2101: -#line 13538 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2102: +#line 13548 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { SELECT_LEX *sel=Select; if ((sel->parsing_place != IN_HAVING) || @@ -35860,17 +35979,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 35864 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35983 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2102: -#line 13554 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2103: +#line 13564 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)= (yyvsp[0].item); } -#line 35870 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 35989 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2103: -#line 13559 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2104: +#line 13569 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= thd->lex; @@ -35942,11 +36061,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 35946 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36065 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2104: -#line 13631 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2105: +#line 13641 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= thd->lex; SELECT_LEX *sel= lex->current_select; @@ -35970,11 +36089,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 35974 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36093 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2105: -#line 13655 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2106: +#line 13665 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= thd->lex; SELECT_LEX *sel= lex->current_select; @@ -36001,17 +36120,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 36005 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36124 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2106: -#line 13684 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2107: +#line 13694 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)=(yyvsp[0].lex_str);} -#line 36011 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36130 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2107: -#line 13686 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2108: +#line 13696 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { TABLE_LIST *table= Select->table_list.first; if (my_strcasecmp(table_alias_charset, (yyvsp[-4].lex_str).str, table->db)) @@ -36021,96 +36140,96 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_WRONG_TABLE_NAME, MYF(0), (yyvsp[-2].lex_str).str)); (yyval.lex_str)=(yyvsp[0].lex_str); } -#line 36025 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36144 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2108: -#line 13696 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2109: +#line 13706 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { TABLE_LIST *table= Select->table_list.first; if (my_strcasecmp(table_alias_charset, (yyvsp[-2].lex_str).str, table->alias)) my_yyabort_error((ER_WRONG_TABLE_NAME, MYF(0), (yyvsp[-2].lex_str).str)); (yyval.lex_str)=(yyvsp[0].lex_str); } -#line 36036 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36155 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2109: -#line 13702 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2110: +#line 13712 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)=(yyvsp[0].lex_str);} -#line 36042 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36161 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2110: -#line 13707 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2111: +#line 13717 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.table)= new (thd->mem_root) Table_ident((yyvsp[0].lex_str)); if ((yyval.table) == NULL) MYSQL_YYABORT; } -#line 36052 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36171 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2111: -#line 13713 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2112: +#line 13723 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.table)= new (thd->mem_root) Table_ident(thd, (yyvsp[-2].lex_str), (yyvsp[0].lex_str), 0); if ((yyval.table) == NULL) MYSQL_YYABORT; } -#line 36062 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36181 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2112: -#line 13719 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2113: +#line 13729 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* For Delphi */ (yyval.table)= new (thd->mem_root) Table_ident((yyvsp[0].lex_str)); if ((yyval.table) == NULL) MYSQL_YYABORT; } -#line 36073 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36192 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2113: -#line 13729 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2114: +#line 13739 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.table)= new (thd->mem_root) Table_ident((yyvsp[-1].lex_str)); if ((yyval.table) == NULL) MYSQL_YYABORT; } -#line 36083 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36202 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2114: -#line 13735 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2115: +#line 13745 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.table)= new (thd->mem_root) Table_ident(thd, (yyvsp[-3].lex_str), (yyvsp[-1].lex_str), 0); if ((yyval.table) == NULL) MYSQL_YYABORT; } -#line 36093 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36212 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2115: -#line 13744 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2116: +#line 13754 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX_STRING db={(char*) any_db,3}; (yyval.table)= new (thd->mem_root) Table_ident(thd, db, (yyvsp[0].lex_str), 0); if ((yyval.table) == NULL) MYSQL_YYABORT; } -#line 36104 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36223 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2116: -#line 13753 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2117: +#line 13763 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)= (yyvsp[0].lex_str); } -#line 36110 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36229 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2117: -#line 13755 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2118: +#line 13765 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (thd->charset_is_system_charset) { @@ -36135,11 +36254,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 36139 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36258 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2118: -#line 13783 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2119: +#line 13793 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (thd->charset_is_system_charset) (yyval.lex_str)= (yyvsp[0].lex_str); @@ -36150,11 +36269,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 36154 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36273 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2119: -#line 13797 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2120: +#line 13807 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (thd->charset_is_collation_connection) (yyval.lex_str)= (yyvsp[0].lex_str); @@ -36165,11 +36284,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 36169 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36288 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2120: -#line 13811 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2121: +#line 13821 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (thd->charset_is_character_set_filesystem) (yyval.lex_str)= (yyvsp[0].lex_str); @@ -36181,63 +36300,63 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 36185 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36304 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2121: -#line 13825 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2122: +#line 13835 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)=(yyvsp[0].lex_str); } -#line 36191 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36310 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2122: -#line 13827 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2123: +#line 13837 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str).str= thd->strmake((yyvsp[0].symbol).str, (yyvsp[0].symbol).length); if ((yyval.lex_str).str == NULL) MYSQL_YYABORT; (yyval.lex_str).length= (yyvsp[0].symbol).length; } -#line 36202 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36321 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2123: -#line 13836 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2124: +#line 13846 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)=(yyvsp[0].lex_str); } -#line 36208 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36327 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2124: -#line 13838 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2125: +#line 13848 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str).str= thd->strmake((yyvsp[0].symbol).str, (yyvsp[0].symbol).length); if ((yyval.lex_str).str == NULL) MYSQL_YYABORT; (yyval.lex_str).length= (yyvsp[0].symbol).length; } -#line 36219 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ - break; - - case 2125: -#line 13847 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.lex_str)=(yyvsp[0].lex_str);} -#line 36225 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36338 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2126: -#line 13848 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13857 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)=(yyvsp[0].lex_str);} -#line 36231 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36344 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2127: -#line 13849 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13858 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_str)=(yyvsp[0].lex_str);} -#line 36237 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36350 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2128: -#line 13854 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13859 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.lex_str)=(yyvsp[0].lex_str);} +#line 36356 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ + break; + + case 2129: +#line 13864 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (!((yyval.lex_user)=(LEX_USER*) thd->alloc(sizeof(st_lex_user)))) MYSQL_YYABORT; @@ -36250,11 +36369,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); system_charset_info, 0)) MYSQL_YYABORT; } -#line 36254 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36373 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2129: -#line 13867 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2130: +#line 13877 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (!((yyval.lex_user)=(LEX_USER*) thd->alloc(sizeof(st_lex_user)))) MYSQL_YYABORT; @@ -36284,11 +36403,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.lex_user)->host= host_not_specified; } } -#line 36288 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36407 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2130: -#line 13897 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2131: +#line 13907 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (!((yyval.lex_user)=(LEX_USER*)thd->calloc(sizeof(LEX_USER)))) MYSQL_YYABORT; @@ -36296,2241 +36415,2241 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.lex_user)->plugin= empty_lex_str; (yyval.lex_user)->auth= empty_lex_str; } -#line 36300 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36419 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2133: -#line 13909 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2134: +#line 13919 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if ((yyvsp[0].lex_user)->user.str != current_user.str && (yyvsp[0].lex_user)->host.str == 0) (yyvsp[0].lex_user)->host= host_not_specified; (yyval.lex_user)= (yyvsp[0].lex_user); } -#line 36310 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ - break; - - case 2134: -#line 13918 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - {} -#line 36316 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36429 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2135: -#line 13919 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13928 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36322 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36435 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2136: -#line 13920 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13929 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36328 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36441 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2137: -#line 13921 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13930 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36334 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36447 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2138: -#line 13922 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13931 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36340 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36453 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2139: -#line 13923 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13932 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36346 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36459 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2140: -#line 13924 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13933 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36352 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36465 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2141: -#line 13925 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13934 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36358 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36471 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2142: -#line 13926 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13935 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36364 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36477 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2143: -#line 13927 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13936 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36370 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36483 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2144: -#line 13928 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13937 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36376 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36489 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2145: -#line 13929 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13938 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36382 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36495 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2146: -#line 13930 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13939 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36388 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36501 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2147: -#line 13931 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13940 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36394 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36507 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2148: -#line 13932 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13941 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36400 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36513 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2149: -#line 13933 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13942 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36406 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36519 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2150: -#line 13934 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13943 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36412 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36525 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2151: -#line 13935 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13944 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36418 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36531 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2152: -#line 13936 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13945 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36424 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36537 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2153: -#line 13937 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13946 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36430 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36543 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2154: -#line 13938 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13947 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36436 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36549 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2155: -#line 13939 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13948 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36442 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36555 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2156: -#line 13940 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13949 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36448 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36561 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2157: -#line 13941 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13950 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36454 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36567 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2158: -#line 13942 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13951 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36460 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36573 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2159: -#line 13943 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13952 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36466 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36579 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2160: -#line 13944 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13953 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36472 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36585 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2161: -#line 13945 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13954 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36478 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36591 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2162: -#line 13946 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13955 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36484 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36597 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2163: -#line 13947 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13956 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36490 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36603 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2164: -#line 13948 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13957 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36496 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36609 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2165: -#line 13949 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13958 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36502 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36615 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2166: -#line 13950 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13959 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36508 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36621 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2167: -#line 13951 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13960 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36514 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36627 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2168: -#line 13952 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13961 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36520 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36633 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2169: -#line 13953 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13962 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36526 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36639 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2170: -#line 13954 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13963 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36532 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36645 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2171: -#line 13955 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13964 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36538 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36651 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2172: -#line 13956 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13965 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36544 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36657 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2173: -#line 13957 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13966 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36550 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36663 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2174: -#line 13958 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13967 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36556 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36669 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2175: -#line 13959 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13968 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36562 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36675 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2176: -#line 13960 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13969 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36568 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36681 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2177: -#line 13961 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13970 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36574 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36687 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2178: -#line 13962 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13971 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36580 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36693 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2179: -#line 13963 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13972 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36586 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36699 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2180: -#line 13964 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13973 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36592 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36705 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2181: -#line 13965 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13974 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36598 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36711 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2182: -#line 13966 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13975 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36604 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36717 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2183: -#line 13967 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13976 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36610 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36723 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2184: -#line 13968 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13977 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36616 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36729 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2185: -#line 13969 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13978 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36622 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36735 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2186: -#line 13970 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13979 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36628 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36741 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2187: -#line 13971 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13980 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36634 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36747 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2188: -#line 13972 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13981 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36640 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36753 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2189: -#line 13973 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13982 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36646 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36759 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2190: -#line 13974 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13983 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36652 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36765 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2191: -#line 13975 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13984 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36658 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36771 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2192: -#line 13976 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13985 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36664 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36777 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2193: -#line 13977 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13986 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36670 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36783 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2194: -#line 13978 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13987 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36676 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36789 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2195: #line 13988 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36682 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36795 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2196: -#line 13989 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13998 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36688 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36801 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2197: -#line 13990 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 13999 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36694 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36807 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2198: -#line 13991 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14000 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36700 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36813 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2199: -#line 13992 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14001 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36706 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36819 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2200: -#line 13993 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14002 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36712 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36825 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2201: -#line 13994 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14003 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36718 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36831 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2202: -#line 13995 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14004 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36724 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36837 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2203: -#line 13996 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14005 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36730 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36843 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2204: -#line 13997 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14006 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36736 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36849 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2205: -#line 13998 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14007 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36742 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36855 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2206: -#line 13999 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14008 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36748 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36861 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2207: -#line 14000 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14009 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36754 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36867 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2208: -#line 14001 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14010 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36760 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36873 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2209: -#line 14002 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14011 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36766 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36879 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2210: -#line 14003 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14012 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36772 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36885 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2211: -#line 14004 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14013 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36778 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36891 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2212: -#line 14005 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14014 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36784 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36897 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2213: -#line 14006 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14015 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36790 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36903 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2214: -#line 14007 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14016 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36796 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36909 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2215: -#line 14008 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14017 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36802 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36915 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2216: -#line 14009 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14018 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36808 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36921 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2217: -#line 14010 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14019 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36814 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36927 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2218: -#line 14011 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14020 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36820 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36933 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2219: -#line 14012 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14021 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36826 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36939 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2220: -#line 14013 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14022 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36832 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36945 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2221: -#line 14014 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14023 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36838 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36951 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2222: -#line 14015 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14024 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36844 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36957 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2223: -#line 14016 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14025 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36850 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36963 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2224: -#line 14017 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14026 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36856 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36969 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2225: -#line 14018 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14027 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36862 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36975 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2226: -#line 14019 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14028 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36868 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36981 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2227: -#line 14020 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14029 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36874 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36987 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2228: -#line 14021 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14030 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36880 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36993 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2229: -#line 14022 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14031 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36886 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 36999 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2230: -#line 14023 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14032 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36892 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37005 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2231: -#line 14024 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14033 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36898 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37011 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2232: -#line 14025 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14034 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36904 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37017 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2233: -#line 14026 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14035 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36910 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37023 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2234: -#line 14027 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14036 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36916 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37029 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2235: -#line 14028 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14037 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36922 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37035 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2236: -#line 14029 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14038 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36928 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37041 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2237: -#line 14030 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14039 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36934 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37047 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2238: -#line 14031 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14040 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36940 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37053 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2239: -#line 14032 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14041 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36946 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37059 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2240: -#line 14033 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14042 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36952 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37065 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2241: -#line 14034 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14043 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36958 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37071 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2242: -#line 14035 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14044 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36964 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37077 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2243: -#line 14036 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14045 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36970 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37083 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2244: -#line 14037 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14046 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36976 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37089 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2245: -#line 14042 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14047 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36982 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37095 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2246: -#line 14043 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14052 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36988 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37101 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2247: -#line 14044 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14053 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 36994 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37107 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2248: -#line 14045 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14054 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37000 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37113 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2249: -#line 14046 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14055 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37006 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37119 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2250: -#line 14047 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14056 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37012 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37125 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2251: -#line 14048 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14057 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37018 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37131 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2252: -#line 14049 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14058 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37024 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37137 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2253: -#line 14050 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14059 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37030 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37143 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2254: -#line 14051 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14060 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37036 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37149 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2255: -#line 14052 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14061 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37042 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37155 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2256: -#line 14053 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14062 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37048 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37161 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2257: -#line 14054 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14063 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37054 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37167 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2258: -#line 14055 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14064 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37060 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37173 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2259: -#line 14056 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14065 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37066 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37179 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2260: -#line 14057 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14066 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37072 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37185 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2261: -#line 14058 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14067 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37078 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37191 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2262: -#line 14059 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14068 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37084 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37197 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2263: -#line 14060 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14069 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37090 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37203 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2264: -#line 14061 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14070 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37096 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37209 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2265: -#line 14062 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14071 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37102 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37215 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2266: -#line 14063 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14072 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37108 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37221 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2267: -#line 14064 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14073 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37114 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37227 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2268: -#line 14065 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14074 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37120 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37233 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2269: -#line 14066 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14075 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37126 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37239 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2270: -#line 14067 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14076 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37132 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37245 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2271: -#line 14068 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14077 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37138 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37251 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2272: -#line 14069 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14078 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37144 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37257 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2273: -#line 14070 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14079 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37150 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37263 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2274: -#line 14071 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14080 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37156 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37269 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2275: -#line 14072 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14081 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37162 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37275 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2276: -#line 14073 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14082 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37168 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37281 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2277: -#line 14074 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14083 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37174 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37287 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2278: -#line 14075 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14084 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37180 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37293 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2279: -#line 14076 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14085 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37186 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37299 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2280: -#line 14077 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14086 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37192 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37305 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2281: -#line 14078 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14087 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37198 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37311 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2282: -#line 14079 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14088 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37204 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37317 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2283: -#line 14080 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14089 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37210 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37323 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2284: -#line 14081 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14090 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37216 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37329 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2285: -#line 14082 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14091 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37222 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37335 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2286: -#line 14083 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14092 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37228 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37341 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2287: -#line 14084 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14093 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37234 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37347 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2288: -#line 14085 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14094 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37240 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37353 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2289: -#line 14086 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14095 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37246 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37359 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2290: -#line 14087 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14096 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37252 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37365 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2291: -#line 14088 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14097 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37258 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37371 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2292: -#line 14089 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14098 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37264 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37377 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2293: -#line 14090 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14099 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37270 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37383 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2294: -#line 14091 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14100 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37276 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37389 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2295: -#line 14092 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14101 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37282 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37395 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2296: -#line 14093 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14102 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37288 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37401 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2297: -#line 14094 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14103 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37294 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37407 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2298: -#line 14095 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14104 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37300 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37413 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2299: -#line 14096 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14105 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37306 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37419 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2300: -#line 14097 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14106 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37312 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37425 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2301: -#line 14098 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14107 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37318 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37431 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2302: -#line 14099 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14108 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37324 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37437 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2303: -#line 14100 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14109 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37330 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37443 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2304: -#line 14101 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14110 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37336 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37449 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2305: -#line 14102 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14111 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37342 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37455 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2306: -#line 14103 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14112 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37348 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37461 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2307: -#line 14104 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14113 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37354 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37467 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2308: -#line 14105 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14114 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37360 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37473 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2309: -#line 14106 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14115 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37366 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37479 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2310: -#line 14107 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14116 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37372 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37485 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2311: -#line 14108 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14117 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37378 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37491 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2312: -#line 14109 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14118 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37384 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37497 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2313: -#line 14110 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14119 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37390 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37503 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2314: -#line 14111 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14120 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37396 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37509 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2315: -#line 14112 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14121 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37402 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37515 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2316: -#line 14113 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14122 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37408 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37521 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2317: -#line 14114 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14123 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37414 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37527 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2318: -#line 14115 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14124 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37420 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37533 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2319: -#line 14116 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14125 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37426 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37539 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2320: -#line 14117 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14126 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37432 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37545 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2321: -#line 14118 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14127 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37438 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37551 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2322: -#line 14119 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14128 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37444 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37557 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2323: -#line 14120 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14129 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37450 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37563 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2324: -#line 14121 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14130 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37456 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37569 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2325: -#line 14122 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14131 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37462 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37575 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2326: -#line 14123 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14132 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37468 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37581 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2327: -#line 14124 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14133 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37474 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37587 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2328: -#line 14125 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14134 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37480 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37593 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2329: -#line 14126 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14135 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37486 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37599 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2330: -#line 14127 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14136 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37492 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37605 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2331: -#line 14128 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14137 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37498 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37611 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2332: -#line 14129 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14138 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37504 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37617 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2333: -#line 14130 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14139 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37510 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37623 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2334: -#line 14131 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14140 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37516 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37629 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2335: -#line 14132 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14141 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37522 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37635 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2336: -#line 14133 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14142 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37528 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37641 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2337: -#line 14134 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14143 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37534 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37647 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2338: -#line 14135 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14144 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37540 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37653 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2339: -#line 14136 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14145 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37546 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37659 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2340: -#line 14137 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14146 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37552 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37665 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2341: -#line 14138 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14147 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37558 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37671 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2342: -#line 14139 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14148 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37564 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37677 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2343: -#line 14140 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14149 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37570 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37683 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2344: -#line 14141 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14150 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37576 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37689 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2345: -#line 14142 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14151 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37582 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37695 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2346: -#line 14143 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14152 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37588 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37701 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2347: -#line 14144 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14153 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37594 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37707 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2348: -#line 14145 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14154 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37600 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37713 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2349: -#line 14146 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14155 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37606 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37719 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2350: -#line 14147 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14156 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37612 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37725 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2351: -#line 14148 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14157 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37618 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37731 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2352: -#line 14149 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14158 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37624 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37737 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2353: -#line 14150 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14159 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37630 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37743 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2354: -#line 14151 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14160 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37636 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37749 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2355: -#line 14152 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14161 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37642 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37755 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2356: -#line 14153 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14162 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37648 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37761 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2357: -#line 14154 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14163 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37654 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37767 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2358: -#line 14155 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14164 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37660 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37773 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2359: -#line 14156 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14165 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37666 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37779 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2360: -#line 14157 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14166 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37672 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37785 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2361: -#line 14158 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14167 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37678 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37791 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2362: -#line 14159 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14168 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37684 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37797 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2363: -#line 14160 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14169 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37690 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37803 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2364: -#line 14161 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14170 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37696 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37809 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2365: -#line 14162 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14171 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37702 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37815 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2366: -#line 14163 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14172 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37708 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37821 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2367: -#line 14164 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14173 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37714 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37827 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2368: -#line 14165 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14174 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37720 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37833 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2369: -#line 14166 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14175 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37726 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37839 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2370: -#line 14167 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14176 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37732 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37845 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2371: -#line 14168 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14177 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37738 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37851 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2372: -#line 14169 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14178 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37744 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37857 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2373: -#line 14170 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14179 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37750 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37863 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2374: -#line 14171 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14180 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37756 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37869 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2375: -#line 14172 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14181 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37762 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37875 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2376: -#line 14173 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14182 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37768 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37881 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2377: -#line 14174 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14183 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37774 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37887 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2378: -#line 14175 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14184 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37780 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37893 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2379: -#line 14176 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14185 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37786 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37899 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2380: -#line 14177 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14186 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37792 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37905 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2381: -#line 14178 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14187 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37798 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37911 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2382: -#line 14179 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14188 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37804 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37917 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2383: -#line 14180 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14189 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37810 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37923 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2384: -#line 14181 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14190 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37816 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37929 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2385: -#line 14182 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14191 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37822 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37935 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2386: -#line 14183 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14192 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37828 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37941 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2387: -#line 14184 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14193 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37834 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37947 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2388: -#line 14185 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14194 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37840 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37953 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2389: -#line 14186 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14195 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37846 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37959 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2390: -#line 14187 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14196 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37852 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37965 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2391: -#line 14188 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14197 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37858 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37971 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2392: -#line 14189 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14198 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37864 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37977 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2393: -#line 14190 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14199 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37870 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37983 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2394: -#line 14191 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14200 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37876 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37989 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2395: -#line 14192 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14201 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37882 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 37995 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2396: -#line 14193 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14202 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37888 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38001 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2397: -#line 14194 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14203 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37894 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38007 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2398: -#line 14195 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14204 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37900 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38013 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2399: -#line 14196 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14205 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37906 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38019 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2400: -#line 14197 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14206 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37912 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38025 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2401: -#line 14198 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14207 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37918 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38031 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2402: -#line 14199 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14208 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37924 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38037 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2403: -#line 14200 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14209 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37930 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38043 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2404: -#line 14201 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14210 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37936 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38049 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2405: -#line 14202 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14211 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37942 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38055 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2406: -#line 14203 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14212 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37948 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38061 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2407: -#line 14204 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14213 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37954 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38067 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2408: -#line 14205 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14214 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37960 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38073 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2409: -#line 14206 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14215 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37966 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38079 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2410: -#line 14207 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14216 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37972 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38085 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2411: -#line 14208 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14217 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37978 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38091 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2412: -#line 14209 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14218 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37984 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38097 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2413: -#line 14210 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14219 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37990 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38103 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2414: -#line 14211 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14220 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 37996 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38109 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2415: -#line 14212 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14221 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38002 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38115 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2416: -#line 14213 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14222 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38008 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38121 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2417: -#line 14214 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14223 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38014 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38127 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2418: -#line 14215 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14224 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38020 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38133 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2419: -#line 14216 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14225 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38026 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38139 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2420: -#line 14217 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14226 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38032 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38145 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2421: -#line 14218 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14227 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38038 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38151 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2422: -#line 14219 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14228 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38044 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38157 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2423: -#line 14220 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14229 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38050 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38163 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2424: -#line 14221 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14230 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38056 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38169 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2425: -#line 14222 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14231 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38062 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38175 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2426: -#line 14223 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14232 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38068 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38181 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2427: -#line 14224 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14233 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38074 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38187 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2428: -#line 14225 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14234 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38080 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38193 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2429: -#line 14226 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14235 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38086 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38199 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2430: -#line 14227 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14236 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38092 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38205 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2431: -#line 14228 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14237 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38098 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38211 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2432: -#line 14229 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14238 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38104 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38217 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2433: -#line 14230 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14239 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38110 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38223 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2434: -#line 14231 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14240 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38116 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38229 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2435: -#line 14232 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14241 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38122 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38235 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2436: -#line 14233 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14242 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38128 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38241 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2437: -#line 14234 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14243 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38134 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38247 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2438: -#line 14235 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14244 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38140 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38253 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2439: -#line 14236 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14245 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38146 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38259 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2440: -#line 14237 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14246 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38152 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38265 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2441: -#line 14238 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14247 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38158 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38271 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2442: -#line 14239 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14248 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38164 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38277 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2443: -#line 14240 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14249 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38170 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38283 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2444: -#line 14241 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14250 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38176 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38289 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2445: -#line 14242 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14251 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38182 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38295 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2446: -#line 14243 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14252 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38188 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38301 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2447: -#line 14244 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14253 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38194 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38307 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2448: -#line 14245 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14254 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38200 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38313 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2449: -#line 14246 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14255 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38206 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38319 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2450: -#line 14247 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14256 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38212 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38325 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2451: -#line 14248 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14257 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38218 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38331 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2452: -#line 14249 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14258 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38224 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38337 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2453: -#line 14250 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14259 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38230 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38343 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2454: -#line 14251 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14260 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38236 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38349 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2455: -#line 14252 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14261 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38242 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38355 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2456: -#line 14253 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14262 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38248 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38361 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2457: -#line 14254 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14263 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38254 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38367 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2458: -#line 14255 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14264 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38260 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38373 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2459: -#line 14256 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14265 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38266 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38379 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2460: -#line 14257 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14266 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38272 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38385 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2461: -#line 14258 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14267 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38278 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38391 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2462: -#line 14259 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14268 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38284 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38397 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2463: -#line 14260 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14269 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38290 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38403 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2464: -#line 14261 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14270 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38296 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38409 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2465: -#line 14262 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14271 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38302 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38415 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2466: -#line 14263 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14272 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38308 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38421 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2467: -#line 14264 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14273 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38314 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38427 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2468: -#line 14265 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14274 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38320 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38433 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2469: -#line 14266 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14275 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38326 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38439 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2470: -#line 14267 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14276 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38332 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38445 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2471: -#line 14268 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14277 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38338 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38451 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2472: -#line 14269 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14278 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38344 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38457 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2473: -#line 14270 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14279 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38350 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38463 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2474: -#line 14271 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14280 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38356 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38469 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2475: -#line 14272 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14281 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38362 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38475 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2476: -#line 14273 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14282 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38368 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38481 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2477: -#line 14274 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14283 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38374 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38487 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2478: -#line 14275 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14284 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38380 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38493 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2479: -#line 14276 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14285 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38386 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38499 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2480: -#line 14277 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14286 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38392 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38505 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2481: -#line 14278 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14287 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38398 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38511 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2482: -#line 14279 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14288 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38404 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38517 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2483: -#line 14280 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14289 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38410 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38523 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2484: -#line 14281 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14290 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38416 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38529 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2485: -#line 14282 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14291 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38422 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38535 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2486: -#line 14283 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14292 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38428 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38541 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2487: -#line 14284 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14293 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38434 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38547 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2488: -#line 14285 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14294 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38440 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38553 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2489: -#line 14286 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14295 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38446 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38559 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2490: -#line 14287 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14296 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38452 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38565 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2491: -#line 14288 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14297 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38458 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38571 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2492: -#line 14289 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14298 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38464 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38577 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2493: -#line 14290 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14299 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38470 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38583 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2494: -#line 14291 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14300 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38476 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38589 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2495: -#line 14292 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14301 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38482 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38595 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2496: -#line 14293 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14302 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38488 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38601 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2497: -#line 14294 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14303 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38494 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38607 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2498: -#line 14295 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14304 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38500 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38613 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2499: -#line 14296 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14305 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38506 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38619 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2500: -#line 14297 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14306 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38512 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38625 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2501: -#line 14298 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14307 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38518 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38631 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2502: -#line 14299 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14308 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38524 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38637 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2503: -#line 14300 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14309 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38530 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38643 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2504: -#line 14312 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14310 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + {} +#line 38649 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ + break; + + case 2505: +#line 14322 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command= SQLCOM_SET_OPTION; @@ -38540,17 +38659,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->autocommit= 0; sp_create_assignment_lex(thd, yychar == YYEMPTY); } -#line 38544 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38663 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2505: -#line 14322 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2506: +#line 14332 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38550 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38669 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2506: -#line 14324 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2507: +#line 14334 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; mysql_init_select(lex); @@ -38558,11 +38677,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sql_command= SQLCOM_SET_OPTION; lex->autocommit= 0; } -#line 38562 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38681 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2507: -#line 14332 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2508: +#line 14342 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; if (lex->table_or_sp_used()) @@ -38570,177 +38689,177 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->stmt_var_list= lex->var_list; lex->var_list.empty(); } -#line 38574 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38693 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2508: -#line 14340 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2509: +#line 14350 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 38580 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38699 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2511: -#line 14355 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2512: +#line 14365 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (sp_create_assignment_instr(thd, yychar == YYEMPTY)) MYSQL_YYABORT; } -#line 38589 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38708 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2513: -#line 14361 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2514: +#line 14371 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->option_type= OPT_DEFAULT; } -#line 38597 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38716 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2514: -#line 14365 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2515: +#line 14375 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (sp_create_assignment_instr(thd, yychar == YYEMPTY)) MYSQL_YYABORT; } -#line 38606 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38725 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2515: -#line 14370 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2516: +#line 14380 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->option_type= (yyvsp[0].var_type); } -#line 38614 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38733 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2517: -#line 14380 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2518: +#line 14390 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (sp_create_assignment_instr(thd, yychar == YYEMPTY)) MYSQL_YYABORT; } -#line 38623 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38742 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2519: -#line 14386 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2520: +#line 14396 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (sp_create_assignment_instr(thd, yychar == YYEMPTY)) MYSQL_YYABORT; } -#line 38632 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38751 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2522: -#line 14400 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2523: +#line 14410 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { sp_create_assignment_lex(thd, yychar == YYEMPTY); } -#line 38640 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38759 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2523: -#line 14404 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2524: +#line 14414 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (sp_create_assignment_instr(thd, yychar == YYEMPTY)) MYSQL_YYABORT; } -#line 38649 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38768 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2524: -#line 14409 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2525: +#line 14419 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { sp_create_assignment_lex(thd, yychar == YYEMPTY); } -#line 38657 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38776 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2525: -#line 14413 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2526: +#line 14423 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (sp_create_assignment_instr(thd, yychar == YYEMPTY)) MYSQL_YYABORT; } -#line 38666 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38785 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2526: -#line 14422 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2527: +#line 14432 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->option_type= (yyvsp[0].var_type); } -#line 38674 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ - break; - - case 2529: -#line 14430 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.var_type)=OPT_GLOBAL; } -#line 38680 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38793 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2530: -#line 14431 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.var_type)=OPT_SESSION; } -#line 38686 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 14440 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.var_type)=OPT_GLOBAL; } +#line 38799 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2531: -#line 14432 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14441 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.var_type)=OPT_SESSION; } -#line 38692 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38805 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2532: -#line 14436 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14442 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.var_type)=OPT_SESSION; } -#line 38698 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38811 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2533: -#line 14437 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.var_type)=OPT_GLOBAL; } -#line 38704 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 14446 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.var_type)=OPT_SESSION; } +#line 38817 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2534: -#line 14438 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.var_type)=OPT_SESSION; } -#line 38710 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 14447 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.var_type)=OPT_GLOBAL; } +#line 38823 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2535: -#line 14439 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14448 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.var_type)=OPT_SESSION; } -#line 38716 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38829 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2536: -#line 14443 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.var_type)=OPT_DEFAULT; } -#line 38722 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 14449 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.var_type)=OPT_SESSION; } +#line 38835 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2537: -#line 14444 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.var_type)=OPT_GLOBAL; } -#line 38728 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 14453 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.var_type)=OPT_DEFAULT; } +#line 38841 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2538: -#line 14445 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.var_type)=OPT_SESSION; } -#line 38734 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 14454 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.var_type)=OPT_GLOBAL; } +#line 38847 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2539: -#line 14446 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14455 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.var_type)=OPT_SESSION; } -#line 38740 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38853 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2540: -#line 14452 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 14456 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.var_type)=OPT_SESSION; } +#line 38859 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ + break; + + case 2541: +#line 14462 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; @@ -38760,11 +38879,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 38764 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38883 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2541: -#line 14476 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2542: +#line 14486 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; @@ -38790,11 +38909,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 38794 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38913 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2542: -#line 14502 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2543: +#line 14512 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Item_func_set_user_var *item; item= new (thd->mem_root) Item_func_set_user_var(thd, (yyvsp[-2].lex_str), (yyvsp[0].item)); @@ -38805,11 +38924,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; Lex->var_list.push_back(var, thd->mem_root); } -#line 38809 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38928 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2543: -#line 14513 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2544: +#line 14523 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { struct sys_var_with_base tmp= (yyvsp[-2].variable); if (tmp.var == trg_new_row_fake_var) @@ -38826,11 +38945,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (set_system_variable(thd, &tmp, (yyvsp[-3].var_type), (yyvsp[0].item))) MYSQL_YYABORT; } -#line 38830 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38949 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2544: -#line 14530 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2545: +#line 14540 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= thd->lex; CHARSET_INFO *cs2; @@ -38844,11 +38963,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; lex->var_list.push_back(var, thd->mem_root); } -#line 38848 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38967 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2545: -#line 14544 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2546: +#line 14554 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; sp_pcontext *spc= lex->spcont; @@ -38863,11 +38982,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } -#line 38867 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 38986 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2546: -#line 14559 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2547: +#line 14569 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; CHARSET_INFO *cs2; @@ -38886,11 +39005,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; lex->var_list.push_back(var, thd->mem_root); } -#line 38890 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39009 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2547: -#line 14578 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2548: +#line 14588 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex = Lex; LEX_USER *user; @@ -38907,11 +39026,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->sphead) lex->sphead->m_flags|= sp_head::HAS_SET_AUTOCOMMIT_STMT; } -#line 38911 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39030 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2548: -#line 14595 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2549: +#line 14605 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex = Lex; set_var_default_role *var= (new (thd->mem_root) @@ -38923,11 +39042,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->sphead) lex->sphead->m_flags|= sp_head::HAS_SET_AUTOCOMMIT_STMT; } -#line 38927 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39046 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2549: -#line 14607 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2550: +#line 14617 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex = Lex; set_var_role *var= new (thd->mem_root) set_var_role((yyvsp[0].lex_str)); @@ -38935,11 +39054,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; lex->var_list.push_back(var, thd->mem_root); } -#line 38939 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39058 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2550: -#line 14615 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2551: +#line 14625 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex = Lex; set_var_password *var= (new (thd->mem_root) @@ -38951,11 +39070,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->sphead) lex->sphead->m_flags|= sp_head::HAS_SET_AUTOCOMMIT_STMT; } -#line 38955 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39074 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2551: -#line 14631 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2552: +#line 14641 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { sp_pcontext *spc= thd->lex->spcont; sp_variable *spv; @@ -38981,11 +39100,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.variable).base_name= (yyvsp[0].lex_str); } } -#line 38985 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39104 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2552: -#line 14657 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2553: +#line 14667 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; if (check_reserved_words(&(yyvsp[-2].lex_str))) @@ -39022,11 +39141,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.variable).base_name= (yyvsp[-2].lex_str); } } -#line 39026 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39145 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2553: -#line 14694 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2554: +#line 14704 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { sys_var *tmp=find_sys_var(thd, (yyvsp[0].lex_str).str, (yyvsp[0].lex_str).length); if (!tmp) @@ -39037,11 +39156,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.variable).base_name.str= (char*) "default"; (yyval.variable).base_name.length= 7; } -#line 39041 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39160 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2558: -#line 14715 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2559: +#line 14725 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; Item *item= new (thd->mem_root) Item_int(thd, (int32) (yyvsp[0].num)); @@ -39056,11 +39175,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; lex->var_list.push_back(var, thd->mem_root); } -#line 39060 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39179 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2559: -#line 14733 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2560: +#line 14743 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; Item *item= new (thd->mem_root) Item_int(thd, (int32) (yyvsp[0].tx_isolation)); @@ -39075,47 +39194,47 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; lex->var_list.push_back(var, thd->mem_root); } -#line 39079 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39198 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2560: -#line 14750 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2561: +#line 14760 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= true; } -#line 39085 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39204 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2561: -#line 14751 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2562: +#line 14761 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= false; } -#line 39091 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39210 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2562: -#line 14755 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2563: +#line 14765 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.tx_isolation)= ISO_READ_UNCOMMITTED; } -#line 39097 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39216 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2563: -#line 14756 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2564: +#line 14766 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.tx_isolation)= ISO_READ_COMMITTED; } -#line 39103 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39222 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2564: -#line 14757 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2565: +#line 14767 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.tx_isolation)= ISO_REPEATABLE_READ; } -#line 39109 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39228 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2565: -#line 14758 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2566: +#line 14768 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.tx_isolation)= ISO_SERIALIZABLE; } -#line 39115 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39234 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2566: -#line 14763 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2567: +#line 14773 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= thd->lex; sp_pcontext *spc= lex->spcont; @@ -39129,82 +39248,82 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->definer->plugin= empty_lex_str; lex->definer->auth= empty_lex_str; } -#line 39133 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39252 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2567: -#line 14776 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2568: +#line 14786 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->definer= (yyvsp[-1].lex_user); } -#line 39139 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39258 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2568: -#line 14780 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2569: +#line 14790 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->definer->pwhash= (yyvsp[0].lex_str);} -#line 39145 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39264 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2569: -#line 14781 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2570: +#line 14791 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->definer->pwtext= (yyvsp[-1].lex_str); } -#line 39151 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39270 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2570: -#line 14783 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2571: +#line 14793 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->definer->pwtext= (yyvsp[-1].lex_str); Lex->definer->pwhash.str= Item_func_password::alloc(thd, (yyvsp[-1].lex_str).str, (yyvsp[-1].lex_str).length, Item_func_password::OLD); Lex->definer->pwhash.length= SCRAMBLED_PASSWORD_CHAR_LENGTH_323; } -#line 39162 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39281 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2571: -#line 14792 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2572: +#line 14802 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)=(yyvsp[0].item); } -#line 39168 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39287 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2572: -#line 14793 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2573: +#line 14803 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)=0; } -#line 39174 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39293 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2573: -#line 14795 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2574: +#line 14805 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)=new (thd->mem_root) Item_string_sys(thd, "ON", 2); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 39184 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39303 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2574: -#line 14801 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2575: +#line 14811 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)=new (thd->mem_root) Item_string_sys(thd, "ALL", 3); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 39194 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39313 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2575: -#line 14807 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2576: +#line 14817 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.item)=new (thd->mem_root) Item_string_sys(thd, "binary", 6); if ((yyval.item) == NULL) MYSQL_YYABORT; } -#line 39204 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39323 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2576: -#line 14818 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2577: +#line 14828 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; @@ -39212,29 +39331,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_SP_BADSTATEMENT, MYF(0), "LOCK")); lex->sql_command= SQLCOM_LOCK_TABLES; } -#line 39216 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39335 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2577: -#line 14826 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2578: +#line 14836 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 39222 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39341 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2578: -#line 14830 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2579: +#line 14840 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 39228 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39347 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2579: -#line 14831 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2580: +#line 14841 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { } -#line 39234 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39353 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2582: -#line 14841 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2583: +#line 14851 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { thr_lock_type lock_type= (thr_lock_type) (yyvsp[0].num); bool lock_for_write= (lock_type >= TL_WRITE_ALLOW_WRITE); @@ -39246,43 +39365,43 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MDL_SHARED_READ))) MYSQL_YYABORT; } -#line 39250 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39369 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2583: -#line 14855 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2584: +#line 14865 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= TL_READ_NO_INSERT; } -#line 39256 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39375 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2584: -#line 14856 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2585: +#line 14866 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= TL_WRITE_DEFAULT; } -#line 39262 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39381 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2585: -#line 14858 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2586: +#line 14868 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= (Lex->sphead ? TL_WRITE_DEFAULT : TL_WRITE_CONCURRENT_INSERT); } -#line 39270 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39389 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2586: -#line 14862 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2587: +#line 14872 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= TL_WRITE_LOW_PRIORITY; } -#line 39276 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39395 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2587: -#line 14863 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2588: +#line 14873 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= TL_READ; } -#line 39282 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39401 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2588: -#line 14868 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2589: +#line 14878 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; @@ -39290,17 +39409,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); my_yyabort_error((ER_SP_BADSTATEMENT, MYF(0), "UNLOCK")); lex->sql_command= SQLCOM_UNLOCK_TABLES; } -#line 39294 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39413 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2589: -#line 14876 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2590: +#line 14886 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 39300 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39419 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2590: -#line 14885 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2591: +#line 14895 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; if (lex->sphead) @@ -39309,11 +39428,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (!lex->current_select->add_table_to_list(thd, (yyvsp[-2].table), (yyvsp[0].lex_str_ptr), 0)) MYSQL_YYABORT; } -#line 39313 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39432 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2591: -#line 14894 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2592: +#line 14904 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; if (lex->sphead) @@ -39322,11 +39441,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (!lex->current_select->add_table_to_list(thd, (yyvsp[-1].table), 0, 0)) MYSQL_YYABORT; } -#line 39326 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39445 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2592: -#line 14903 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2593: +#line 14913 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; if (lex->sphead) @@ -39343,11 +39462,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (!lex->current_select->add_table_to_list(thd, (yyvsp[-1].table), 0, 0)) MYSQL_YYABORT; } -#line 39347 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39466 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2593: -#line 14920 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2594: +#line 14930 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->expr_allows_subselect= TRUE; /* Stored functions are not supported for HANDLER READ. */ @@ -39358,59 +39477,59 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; } } -#line 39362 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39481 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2594: -#line 14933 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2595: +#line 14943 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->ident= null_lex_str; } -#line 39368 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39487 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2595: -#line 14934 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2596: +#line 14944 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->ident= (yyvsp[-1].lex_str); } -#line 39374 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39493 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2596: -#line 14938 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2597: +#line 14948 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->ha_read_mode = RFIRST; } -#line 39380 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39499 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2597: -#line 14939 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2598: +#line 14949 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->ha_read_mode = RNEXT; } -#line 39386 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39505 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2598: -#line 14943 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2599: +#line 14953 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->ha_read_mode = RFIRST; } -#line 39392 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39511 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2599: -#line 14944 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2600: +#line 14954 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->ha_read_mode = RNEXT; } -#line 39398 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39517 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2600: -#line 14945 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2601: +#line 14955 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->ha_read_mode = RPREV; } -#line 39404 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39523 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2601: -#line 14946 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2602: +#line 14956 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->ha_read_mode = RLAST; } -#line 39410 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39529 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2602: -#line 14948 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2603: +#line 14958 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->ha_read_mode = RKEY; @@ -39418,63 +39537,63 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (!(lex->insert_list= new (thd->mem_root) List_item)) MYSQL_YYABORT; } -#line 39422 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39541 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2603: -#line 14956 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2604: +#line 14966 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 39428 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39547 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2604: -#line 14960 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2605: +#line 14970 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ha_rkey_mode)=HA_READ_KEY_EXACT; } -#line 39434 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39553 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2605: -#line 14961 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2606: +#line 14971 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ha_rkey_mode)=HA_READ_KEY_OR_NEXT; } -#line 39440 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39559 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2606: -#line 14962 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2607: +#line 14972 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ha_rkey_mode)=HA_READ_KEY_OR_PREV; } -#line 39446 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39565 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2607: -#line 14963 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2608: +#line 14973 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ha_rkey_mode)=HA_READ_AFTER_KEY; } -#line 39452 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39571 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2608: -#line 14964 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2609: +#line 14974 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.ha_rkey_mode)=HA_READ_BEFORE_KEY; } -#line 39458 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39577 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2609: -#line 14971 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2610: +#line 14981 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 39464 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39583 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2610: -#line 14976 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2611: +#line 14986 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_REVOKE; lex->type= 0; } -#line 39474 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39593 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2611: -#line 14982 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2612: +#line 14992 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; if (lex->columns.elements) @@ -39485,11 +39604,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sql_command= SQLCOM_REVOKE; lex->type= TYPE_ENUM_FUNCTION; } -#line 39489 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39608 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2612: -#line 14993 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2613: +#line 15003 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; if (lex->columns.elements) @@ -39500,68 +39619,68 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sql_command= SQLCOM_REVOKE; lex->type= TYPE_ENUM_PROCEDURE; } -#line 39504 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39623 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2613: -#line 15004 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2614: +#line 15014 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command = SQLCOM_REVOKE_ALL; } -#line 39512 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39631 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2614: -#line 15008 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2615: +#line 15018 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->users_list.push_front ((yyvsp[-2].lex_user)); lex->sql_command= SQLCOM_REVOKE; lex->type= TYPE_ENUM_PROXY; } -#line 39523 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39642 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2615: -#line 15015 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2616: +#line 15025 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command= SQLCOM_REVOKE_ROLE; if (Lex->users_list.push_front((yyvsp[-2].lex_user), thd->mem_root)) MYSQL_YYABORT; } -#line 39533 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39652 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2616: -#line 15024 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2617: +#line 15034 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->with_admin_option= true; (yyval.lex_user)= (yyvsp[0].lex_user); } -#line 39539 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39658 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2617: -#line 15026 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2618: +#line 15036 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->with_admin_option= false; (yyval.lex_user)= (yyvsp[0].lex_user); } -#line 39545 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39664 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2618: -#line 15031 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2619: +#line 15041 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 39551 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39670 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2619: -#line 15037 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2620: +#line 15047 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_GRANT; lex->type= 0; } -#line 39561 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39680 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2620: -#line 15044 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2621: +#line 15054 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; if (lex->columns.elements) @@ -39572,11 +39691,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sql_command= SQLCOM_GRANT; lex->type= TYPE_ENUM_FUNCTION; } -#line 39576 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39695 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2621: -#line 15056 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2622: +#line 15066 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; if (lex->columns.elements) @@ -39587,22 +39706,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sql_command= SQLCOM_GRANT; lex->type= TYPE_ENUM_PROCEDURE; } -#line 39591 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39710 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2622: -#line 15067 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2623: +#line 15077 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->users_list.push_front ((yyvsp[-3].lex_user)); lex->sql_command= SQLCOM_GRANT; lex->type= TYPE_ENUM_PROXY; } -#line 39602 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39721 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2623: -#line 15074 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2624: +#line 15084 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_GRANT_ROLE; @@ -39610,64 +39729,64 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (Lex->users_list.push_front((yyvsp[-3].lex_user), thd->mem_root)) MYSQL_YYABORT; } -#line 39614 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39733 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2624: -#line 15085 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2625: +#line 15095 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->definer = 0; } -#line 39620 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39739 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2625: -#line 15086 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2626: +#line 15096 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->definer = (yyvsp[0].lex_user); } -#line 39626 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39745 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2626: -#line 15089 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2627: +#line 15099 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->with_admin_option= false; } -#line 39632 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39751 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2627: -#line 15090 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2628: +#line 15100 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->with_admin_option= true; } -#line 39638 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39757 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2628: -#line 15094 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2629: +#line 15104 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)) MYSQL_YYABORT; } -#line 39647 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39766 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2629: -#line 15099 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2630: +#line 15109 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)) MYSQL_YYABORT; } -#line 39656 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39775 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2630: -#line 15107 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2631: +#line 15117 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (!((yyval.lex_user)=(LEX_USER*) thd->calloc(sizeof(LEX_USER)))) MYSQL_YYABORT; (yyval.lex_user)->user= current_role; (yyval.lex_user)->reset_auth(); } -#line 39667 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39786 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2631: -#line 15117 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2632: +#line 15127 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { CHARSET_INFO *cs= system_charset_info; /* trim end spaces (as they'll be lost in mysql.user anyway) */ @@ -39686,275 +39805,275 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); cs, 0)) MYSQL_YYABORT; } -#line 39690 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39809 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2635: -#line 15144 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2636: +#line 15154 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 39696 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39815 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2636: -#line 15146 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2637: +#line 15156 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->all_privileges= 1; Lex->grant= GLOBAL_ACLS; } -#line 39705 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39824 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2641: -#line 15164 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2642: +#line 15174 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->which_columns = SELECT_ACL;} -#line 39711 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39830 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2642: -#line 15165 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2643: +#line 15175 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 39717 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39836 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2643: -#line 15167 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2644: +#line 15177 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->which_columns = INSERT_ACL;} -#line 39723 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39842 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2644: -#line 15168 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2645: +#line 15178 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 39729 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39848 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2645: -#line 15170 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2646: +#line 15180 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->which_columns = UPDATE_ACL; } -#line 39735 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39854 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2646: -#line 15171 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2647: +#line 15181 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 39741 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39860 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2647: -#line 15173 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2648: +#line 15183 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->which_columns = REFERENCES_ACL;} -#line 39747 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39866 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2648: -#line 15174 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2649: +#line 15184 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 39753 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39872 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2649: -#line 15175 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2650: +#line 15185 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= DELETE_ACL;} -#line 39759 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39878 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2650: -#line 15176 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2651: +#line 15186 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 39765 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39884 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2651: -#line 15177 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2652: +#line 15187 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= INDEX_ACL;} -#line 39771 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39890 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2652: -#line 15178 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2653: +#line 15188 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= ALTER_ACL;} -#line 39777 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39896 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2653: -#line 15179 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2654: +#line 15189 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= CREATE_ACL;} -#line 39783 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39902 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2654: -#line 15180 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2655: +#line 15190 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= DROP_ACL;} -#line 39789 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39908 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2655: -#line 15181 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2656: +#line 15191 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= EXECUTE_ACL;} -#line 39795 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39914 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2656: -#line 15182 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2657: +#line 15192 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= RELOAD_ACL;} -#line 39801 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39920 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2657: -#line 15183 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2658: +#line 15193 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= SHUTDOWN_ACL;} -#line 39807 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39926 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2658: -#line 15184 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2659: +#line 15194 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= PROCESS_ACL;} -#line 39813 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39932 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2659: -#line 15185 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2660: +#line 15195 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= FILE_ACL;} -#line 39819 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39938 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2660: -#line 15186 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2661: +#line 15196 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= GRANT_ACL;} -#line 39825 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39944 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2661: -#line 15187 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2662: +#line 15197 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= SHOW_DB_ACL;} -#line 39831 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39950 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2662: -#line 15188 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2663: +#line 15198 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= SUPER_ACL;} -#line 39837 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39956 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2663: -#line 15189 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2664: +#line 15199 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= CREATE_TMP_ACL;} -#line 39843 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39962 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2664: -#line 15190 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2665: +#line 15200 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= LOCK_TABLES_ACL; } -#line 39849 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39968 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2665: -#line 15191 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2666: +#line 15201 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= REPL_SLAVE_ACL; } -#line 39855 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39974 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2666: -#line 15192 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2667: +#line 15202 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= REPL_CLIENT_ACL; } -#line 39861 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39980 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2667: -#line 15193 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2668: +#line 15203 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= CREATE_VIEW_ACL; } -#line 39867 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39986 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2668: -#line 15194 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2669: +#line 15204 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= SHOW_VIEW_ACL; } -#line 39873 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39992 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2669: -#line 15195 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2670: +#line 15205 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= CREATE_PROC_ACL; } -#line 39879 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 39998 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2670: -#line 15196 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2671: +#line 15206 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= ALTER_PROC_ACL; } -#line 39885 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40004 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2671: -#line 15197 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2672: +#line 15207 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= CREATE_USER_ACL; } -#line 39891 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40010 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2672: -#line 15198 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2673: +#line 15208 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= EVENT_ACL;} -#line 39897 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40016 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2673: -#line 15199 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2674: +#line 15209 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= TRIGGER_ACL; } -#line 39903 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40022 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2674: -#line 15200 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2675: +#line 15210 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= CREATE_TABLESPACE_ACL; } -#line 39909 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40028 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2675: -#line 15204 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2676: +#line 15214 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 39915 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40034 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2676: -#line 15205 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2677: +#line 15215 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 39921 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40040 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2679: -#line 15215 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2680: +#line 15225 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; if (lex->x509_subject) my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "SUBJECT")); lex->x509_subject=(yyvsp[0].lex_str).str; } -#line 39932 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40051 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2680: -#line 15222 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2681: +#line 15232 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; if (lex->x509_issuer) my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "ISSUER")); lex->x509_issuer=(yyvsp[0].lex_str).str; } -#line 39943 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40062 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2681: -#line 15229 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2682: +#line 15239 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; if (lex->ssl_cipher) my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "CIPHER")); lex->ssl_cipher=(yyvsp[0].lex_str).str; } -#line 39954 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40073 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2682: -#line 15239 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2683: +#line 15249 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; size_t dummy; @@ -39965,11 +40084,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else if (lex->columns.elements) my_yyabort_error((ER_ILLEGAL_GRANT_FOR_TABLE, MYF(0))); } -#line 39969 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40088 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2683: -#line 15250 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2684: +#line 15260 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->current_select->db = (yyvsp[-2].lex_str).str; @@ -39978,11 +40097,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else if (lex->columns.elements) my_yyabort_error((ER_ILLEGAL_GRANT_FOR_TABLE, MYF(0))); } -#line 39982 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40101 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2684: -#line 15259 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2685: +#line 15269 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->current_select->db = NULL; @@ -39991,11 +40110,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else if (lex->columns.elements) my_yyabort_error((ER_ILLEGAL_GRANT_FOR_TABLE, MYF(0))); } -#line 39995 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40114 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2685: -#line 15268 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2686: +#line 15278 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; if (!lex->current_select->add_table_to_list(thd, (yyvsp[0].table),NULL, @@ -40004,120 +40123,120 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (lex->grant == GLOBAL_ACLS) lex->grant = TABLE_ACLS & ~GRANT_ACL; } -#line 40008 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40127 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2686: -#line 15280 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2687: +#line 15290 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)) MYSQL_YYABORT; } -#line 40017 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40136 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2687: -#line 15285 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2688: +#line 15295 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)) MYSQL_YYABORT; } -#line 40026 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40145 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2688: -#line 15293 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2689: +#line 15303 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)) MYSQL_YYABORT; } -#line 40035 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40154 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2689: -#line 15298 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2690: +#line 15308 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)) MYSQL_YYABORT; } -#line 40044 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40163 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2690: -#line 15306 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2691: +#line 15316 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)) MYSQL_YYABORT; } -#line 40053 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40172 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2691: -#line 15311 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2692: +#line 15321 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (Lex->users_list.push_back((yyvsp[0].lex_user), thd->mem_root)) MYSQL_YYABORT; } -#line 40062 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40181 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2696: -#line 15322 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2697: +#line 15332 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_user)= (yyvsp[-3].lex_user); (yyvsp[-3].lex_user)->pwtext= (yyvsp[0].lex_str); if (Lex->sql_command == SQLCOM_REVOKE) MYSQL_YYABORT; } -#line 40073 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40192 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2697: -#line 15329 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2698: +#line 15339 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_user)= (yyvsp[-4].lex_user); (yyvsp[-4].lex_user)->pwhash= (yyvsp[0].lex_str); } -#line 40082 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40201 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2698: -#line 15334 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2699: +#line 15344 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_user)= (yyvsp[-3].lex_user); (yyvsp[-3].lex_user)->plugin= (yyvsp[0].lex_str); (yyvsp[-3].lex_user)->auth= empty_lex_str; } -#line 40092 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40211 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2699: -#line 15340 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2700: +#line 15350 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_user)= (yyvsp[-5].lex_user); (yyvsp[-5].lex_user)->plugin= (yyvsp[-2].lex_str); (yyvsp[-5].lex_user)->auth= (yyvsp[0].lex_str); } -#line 40102 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40221 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2700: -#line 15346 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2701: +#line 15356 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.lex_user)= (yyvsp[0].lex_user); } -#line 40108 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40227 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2701: -#line 15351 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2702: +#line 15361 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->grant |= lex->which_columns; } -#line 40117 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40236 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2705: -#line 15365 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2706: +#line 15375 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { String *new_str= new (thd->mem_root) String((const char*) (yyvsp[0].lex_str).str,(yyvsp[0].lex_str).length,system_charset_info); if (new_str == NULL) @@ -40143,227 +40262,227 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->columns.push_back(col, thd->mem_root); } } -#line 40147 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40266 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2707: -#line 15395 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2708: +#line 15405 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->ssl_type=SSL_TYPE_SPECIFIED; } -#line 40155 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40274 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2708: -#line 15399 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2709: +#line 15409 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->ssl_type=SSL_TYPE_ANY; } -#line 40163 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40282 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2709: -#line 15403 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2710: +#line 15413 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->ssl_type=SSL_TYPE_X509; } -#line 40171 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40290 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2710: -#line 15407 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2711: +#line 15417 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->ssl_type=SSL_TYPE_NONE; } -#line 40179 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40298 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2711: -#line 15413 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2712: +#line 15423 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 40185 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40304 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2713: -#line 15418 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2714: +#line 15428 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 40191 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40310 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2714: -#line 15419 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2715: +#line 15429 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= GRANT_ACL;} -#line 40197 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40316 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2715: -#line 15423 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2716: +#line 15433 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 40203 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40322 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2716: -#line 15424 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2717: +#line 15434 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 40209 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40328 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2717: -#line 15428 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2718: +#line 15438 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->grant |= GRANT_ACL;} -#line 40215 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40334 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2718: -#line 15430 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2719: +#line 15440 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->mqh.questions=(yyvsp[0].ulong_num); lex->mqh.specified_limits|= USER_RESOURCES::QUERIES_PER_HOUR; } -#line 40225 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40344 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2719: -#line 15436 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2720: +#line 15446 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->mqh.updates=(yyvsp[0].ulong_num); lex->mqh.specified_limits|= USER_RESOURCES::UPDATES_PER_HOUR; } -#line 40235 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40354 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2720: -#line 15442 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2721: +#line 15452 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->mqh.conn_per_hour= (yyvsp[0].ulong_num); lex->mqh.specified_limits|= USER_RESOURCES::CONNECTIONS_PER_HOUR; } -#line 40245 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40364 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2721: -#line 15448 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2722: +#line 15458 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->mqh.user_conn= (yyvsp[0].num); lex->mqh.specified_limits|= USER_RESOURCES::USER_CONNECTIONS; } -#line 40255 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40374 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2722: -#line 15454 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2723: +#line 15464 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->mqh.max_statement_time= (yyvsp[0].item_num)->val_real(); lex->mqh.specified_limits|= USER_RESOURCES::MAX_STATEMENT_TIME; } -#line 40265 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40384 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2723: -#line 15463 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2724: +#line 15473 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command = SQLCOM_BEGIN; lex->start_transaction_opt= 0; } -#line 40275 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40394 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2724: -#line 15468 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2725: +#line 15478 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 40281 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40400 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2725: -#line 15473 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2726: +#line 15483 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command= SQLCOM_COMPOUND; - Lex->sphead->set_stmt_end(thd); - Lex->sphead->restore_thd_mem_root(thd); - } -#line 40291 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ - break; - - case 2726: -#line 15481 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.num)= 0; } -#line 40297 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ + Lex->sphead->set_stmt_end(thd); + Lex->sphead->restore_thd_mem_root(thd); + } +#line 40410 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2727: -#line 15482 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.num)= 1; } -#line 40303 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 15491 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.num)= 0; } +#line 40416 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2728: -#line 15486 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - {} -#line 40309 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 15492 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.num)= 1; } +#line 40422 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2729: -#line 15487 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 15496 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 40315 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40428 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2730: -#line 15492 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.m_yes_no_unk)= TVL_UNKNOWN; } -#line 40321 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 15497 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + {} +#line 40434 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2731: -#line 15493 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.m_yes_no_unk)= TVL_NO; } -#line 40327 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 15502 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.m_yes_no_unk)= TVL_UNKNOWN; } +#line 40440 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2732: -#line 15494 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.m_yes_no_unk)= TVL_YES; } -#line 40333 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 15503 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.m_yes_no_unk)= TVL_NO; } +#line 40446 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2733: -#line 15499 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.m_yes_no_unk)= TVL_UNKNOWN; } -#line 40339 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 15504 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.m_yes_no_unk)= TVL_YES; } +#line 40452 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2734: -#line 15500 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.m_yes_no_unk)= TVL_YES; } -#line 40345 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 15509 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.m_yes_no_unk)= TVL_UNKNOWN; } +#line 40458 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2735: -#line 15501 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - { (yyval.m_yes_no_unk)= TVL_NO; } -#line 40351 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 15510 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.m_yes_no_unk)= TVL_YES; } +#line 40464 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2736: -#line 15505 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ - {} -#line 40357 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 15511 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + { (yyval.m_yes_no_unk)= TVL_NO; } +#line 40470 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2737: -#line 15506 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 15515 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 40363 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40476 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; case 2738: -#line 15511 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ +#line 15516 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + {} +#line 40482 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ + break; + + case 2739: +#line 15521 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command= SQLCOM_COMMIT; @@ -40372,11 +40491,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->tx_chain= (yyvsp[-1].m_yes_no_unk); lex->tx_release= (yyvsp[0].m_yes_no_unk); } -#line 40376 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40495 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2739: -#line 15523 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2740: +#line 15533 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command= SQLCOM_ROLLBACK; @@ -40385,56 +40504,56 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->tx_chain= (yyvsp[-1].m_yes_no_unk); lex->tx_release= (yyvsp[0].m_yes_no_unk); } -#line 40389 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40508 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2740: -#line 15533 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2741: +#line 15543 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command= SQLCOM_ROLLBACK_TO_SAVEPOINT; lex->ident= (yyvsp[0].lex_str); } -#line 40399 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40518 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2741: -#line 15542 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2742: +#line 15552 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command= SQLCOM_SAVEPOINT; lex->ident= (yyvsp[0].lex_str); } -#line 40409 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40528 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2742: -#line 15551 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2743: +#line 15561 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; lex->sql_command= SQLCOM_RELEASE_SAVEPOINT; lex->ident= (yyvsp[0].lex_str); } -#line 40419 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40538 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2743: -#line 15564 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2744: +#line 15574 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 40425 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40544 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2745: -#line 15570 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2746: +#line 15580 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (add_select_to_union_list(Lex, (bool)(yyvsp[0].num), TRUE)) MYSQL_YYABORT; } -#line 40434 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40553 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2746: -#line 15575 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2747: +#line 15585 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* Remove from the name resolution context stack the context of the @@ -40442,29 +40561,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); */ Lex->pop_context(); } -#line 40446 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40565 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2748: -#line 15586 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2749: +#line 15596 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 1; } -#line 40452 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40571 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2749: -#line 15590 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2750: +#line 15600 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 0; } -#line 40458 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40577 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2750: -#line 15591 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2751: +#line 15601 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)= 1; } -#line 40464 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40583 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2751: -#line 15595 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2752: +#line 15605 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= thd->lex; DBUG_ASSERT(lex->current_select->linkage != GLOBAL_OPTIONS_TYPE); @@ -40478,80 +40597,80 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } thd->where= "global ORDER clause"; } -#line 40482 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40601 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2752: -#line 15609 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2753: +#line 15619 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { thd->lex->current_select->no_table_names_allowed= 0; thd->where= ""; } -#line 40491 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40610 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2755: -#line 15621 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2756: +#line 15631 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)=1; } -#line 40497 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40616 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2756: -#line 15622 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2757: +#line 15632 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)=1; } -#line 40503 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40622 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2757: -#line 15623 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2758: +#line 15633 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.num)=0; } -#line 40509 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40628 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2758: -#line 15629 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2759: +#line 15639 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.select_lex)= Lex->current_select->master_unit()->first_select(); } -#line 40517 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40636 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2759: -#line 15634 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2760: +#line 15644 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.select_lex)= Lex->current_select->master_unit()->first_select(); } -#line 40525 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40644 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2761: -#line 15643 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2762: +#line 15653 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (add_select_to_union_list(Lex, (bool)(yyvsp[0].num), FALSE)) MYSQL_YYABORT; } -#line 40534 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40653 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2762: -#line 15648 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2763: +#line 15658 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->pop_context(); (yyval.select_lex)= (yyvsp[-4].select_lex); } -#line 40543 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40662 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2763: -#line 15657 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2764: +#line 15667 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { (yyval.select_lex)= (yyvsp[-1].select_lex); } -#line 40551 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40670 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2764: -#line 15663 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2765: +#line 15673 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; if (!lex->expr_allows_subselect || @@ -40570,11 +40689,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (mysql_new_select(Lex, 1)) MYSQL_YYABORT; } -#line 40574 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40693 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2765: -#line 15684 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2766: +#line 15694 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex=Lex; @@ -40583,31 +40702,33 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->current_select = lex->current_select->return_after_parsing(); lex->nest_level--; lex->current_select->n_child_sum_items += child->n_sum_items; - /* - A subselect can add fields to an outer select. Reserve space for - them. - */ - lex->current_select->select_n_where_fields+= - child->select_n_where_fields; /* - Aggregate functions in having clause may add fields to an outer - select. Count them also. + A subquery (and all the subsequent query blocks in a UNION) can + add columns to an outer query block. Reserve space for them. + Aggregate functions in having clause can also add fields to an + outer select. */ - lex->current_select->select_n_having_items+= - child->select_n_having_items; + for (SELECT_LEX *temp= child->master_unit()->first_select(); + temp != NULL; temp= temp->next_select()) + { + lex->current_select->select_n_where_fields+= + temp->select_n_where_fields; + lex->current_select->select_n_having_items+= + temp->select_n_having_items; + } } -#line 40601 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40722 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2770: -#line 15719 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2771: +#line 15731 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->options|= SELECT_STRAIGHT_JOIN; } -#line 40607 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40728 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2771: -#line 15721 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2772: +#line 15733 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (check_simple_select()) MYSQL_YYABORT; @@ -40615,73 +40736,73 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); YYPS->m_mdl_type= MDL_SHARED_READ; Select->options|= SELECT_HIGH_PRIORITY; } -#line 40619 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40740 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2772: -#line 15728 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2773: +#line 15740 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->options|= SELECT_DISTINCT; } -#line 40625 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40746 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2773: -#line 15729 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2774: +#line 15741 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->options|= SELECT_SMALL_RESULT; } -#line 40631 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40752 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2774: -#line 15730 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2775: +#line 15742 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->options|= SELECT_BIG_RESULT; } -#line 40637 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40758 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2775: -#line 15732 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2776: +#line 15744 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (check_simple_select()) MYSQL_YYABORT; Select->options|= OPTION_BUFFER_RESULT; } -#line 40647 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40768 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2776: -#line 15738 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2777: +#line 15750 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (check_simple_select()) MYSQL_YYABORT; Select->options|= OPTION_FOUND_ROWS; } -#line 40657 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40778 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2777: -#line 15743 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2778: +#line 15755 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Select->options|= SELECT_ALL; } -#line 40663 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40784 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2778: -#line 15754 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2779: +#line 15766 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 40669 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40790 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2779: -#line 15756 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2780: +#line 15768 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 40675 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40796 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2780: -#line 15758 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2781: +#line 15770 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 40681 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40802 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2794: -#line 15791 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2795: +#line 15803 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* We have to distinguish missing DEFINER-clause from case when @@ -40692,58 +40813,58 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); */ thd->lex->definer= 0; } -#line 40696 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40817 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2795: -#line 15805 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2796: +#line 15817 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->definer= (yyvsp[0].lex_user); Lex->ssl_type= SSL_TYPE_NOT_SPECIFIED; Lex->ssl_cipher= Lex->x509_subject= Lex->x509_issuer= 0; bzero(&(Lex->mqh), sizeof(Lex->mqh)); } -#line 40707 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40828 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2796: -#line 15821 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2797: +#line 15833 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->create_view_algorithm= DTYPE_ALGORITHM_UNDEFINED; } -#line 40713 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40834 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2797: -#line 15823 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2798: +#line 15835 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->create_view_algorithm= VIEW_ALGORITHM_MERGE; } -#line 40719 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40840 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2798: -#line 15825 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2799: +#line 15837 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->create_view_algorithm= VIEW_ALGORITHM_TMPTABLE; } -#line 40725 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40846 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2799: -#line 15830 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2800: +#line 15842 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->create_view_suid= VIEW_SUID_DEFAULT; } -#line 40731 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40852 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2800: -#line 15832 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2801: +#line 15844 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->create_view_suid= VIEW_SUID_DEFINER; } -#line 40737 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40858 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2801: -#line 15834 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2802: +#line 15846 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->create_view_suid= VIEW_SUID_INVOKER; } -#line 40743 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40864 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2802: -#line 15839 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2803: +#line 15851 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= thd->lex; if (lex->add_create_options_with_check((yyvsp[-1].object_ddl_options))) @@ -40757,37 +40878,37 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; lex->query_tables->open_strategy= TABLE_LIST::OPEN_STUB; } -#line 40761 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40882 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2804: -#line 15857 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2805: +#line 15869 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 40767 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40888 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2806: -#line 15863 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2807: +#line 15875 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->view_list.push_back((LEX_STRING*) thd->memdup(&(yyvsp[0].lex_str), sizeof(LEX_STRING)), thd->mem_root); } -#line 40777 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40898 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2807: -#line 15869 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2808: +#line 15881 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->view_list.push_back((LEX_STRING*) thd->memdup(&(yyvsp[0].lex_str), sizeof(LEX_STRING)), thd->mem_root); } -#line 40787 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40908 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2808: -#line 15877 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2809: +#line 15889 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->parsing_options.allows_variable= FALSE; @@ -40796,11 +40917,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->parsing_options.allows_derived= FALSE; lex->create_view_select.str= (char *) YYLIP->get_cpp_ptr(); } -#line 40800 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40921 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2809: -#line 15886 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2810: +#line 15898 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; uint len= YYLIP->get_cpp_ptr() - lex->create_view_select.str; @@ -40813,60 +40934,60 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->parsing_options.allows_select_procedure= TRUE; lex->parsing_options.allows_derived= TRUE; } -#line 40817 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40938 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2812: -#line 15907 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2813: +#line 15919 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->create_view_check= VIEW_CHECK_NONE; } -#line 40823 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40944 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2813: -#line 15909 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2814: +#line 15921 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->create_view_check= VIEW_CHECK_CASCADED; } -#line 40829 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40950 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2814: -#line 15911 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2815: +#line 15923 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->create_view_check= VIEW_CHECK_CASCADED; } -#line 40835 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40956 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2815: -#line 15913 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2816: +#line 15925 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->create_view_check= VIEW_CHECK_LOCAL; } -#line 40841 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40962 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2816: -#line 15926 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2817: +#line 15938 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (Lex->add_create_options_with_check((yyvsp[0].object_ddl_options))) MYSQL_YYABORT; } -#line 40850 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40971 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2817: -#line 15935 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2818: +#line 15947 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* $10 */ Lex->raw_trg_on_table_name_begin= YYLIP->get_tok_start(); } -#line 40858 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40979 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2818: -#line 15941 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2819: +#line 15953 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* $14 */ Lex->raw_trg_on_table_name_end= YYLIP->get_tok_start(); } -#line 40866 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 40987 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2819: -#line 15946 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2820: +#line 15958 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* $17 */ LEX *lex= thd->lex; Lex_input_stream *lip= YYLIP; @@ -40884,11 +41005,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sphead->set_body_start(thd, lip->get_cpp_ptr()); } -#line 40888 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41009 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2820: -#line 15964 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2821: +#line 15976 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* $19 */ LEX *lex= Lex; sp_head *sp= lex->sphead; @@ -40912,23 +41033,23 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MDL_SHARED_NO_WRITE)) MYSQL_YYABORT; } -#line 40916 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41037 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2821: -#line 15996 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2822: +#line 16008 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { thd->lex->udf.type= UDFTYPE_AGGREGATE; } -#line 40922 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41043 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2822: -#line 15997 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2823: +#line 16009 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { thd->lex->udf.type= UDFTYPE_FUNCTION; } -#line 40928 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41049 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2823: -#line 16003 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2824: +#line 16015 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= thd->lex; if (lex->add_create_options_with_check((yyvsp[-5].object_ddl_options))) @@ -40940,11 +41061,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->udf.returns= (Item_result) (yyvsp[-2].num); lex->udf.dl= (yyvsp[0].lex_str).str; } -#line 40944 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41065 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2824: -#line 16021 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2825: +#line 16033 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* $5 */ LEX *lex= Lex; Lex_input_stream *lip= YYLIP; @@ -40964,50 +41085,50 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); tmp_param_begin++; lex->sphead->m_param_begin= tmp_param_begin; } -#line 40968 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41089 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2825: -#line 16042 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2826: +#line 16054 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* $8 */ Lex->sphead->m_param_end= YYLIP->get_cpp_tok_start(); } -#line 40976 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41097 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2826: -#line 16046 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2827: +#line 16058 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* $10 */ LEX *lex= Lex; lex->init_last_field(&lex->sphead->m_return_field_def, NULL, thd->variables.collation_database); } -#line 40986 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41107 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2827: -#line 16052 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2828: +#line 16064 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* $12 */ if (Lex->sphead->fill_field_definition(thd, Lex, (yyvsp[0].field_type), Lex->last_field)) MYSQL_YYABORT; } -#line 40996 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41117 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2828: -#line 16058 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2829: +#line 16070 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { /* $14 */ LEX *lex= thd->lex; Lex_input_stream *lip= YYLIP; lex->sphead->set_body_start(thd, lip->get_cpp_tok_start()); } -#line 41007 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41128 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2829: -#line 16065 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2830: +#line 16077 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= thd->lex; sp_head *sp= lex->sphead; @@ -41056,11 +41177,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } sp->restore_thd_mem_root(thd); } -#line 41060 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41181 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2830: -#line 16117 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2831: +#line 16129 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { if (Lex->add_create_options_with_check((yyvsp[-1].object_ddl_options))) MYSQL_YYABORT; @@ -41072,11 +41193,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); MYSQL_YYABORT; Lex->spname= (yyvsp[0].spname); } -#line 41076 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41197 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2831: -#line 16129 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2832: +#line 16141 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { const char* tmp_param_begin; @@ -41084,27 +41205,27 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); tmp_param_begin++; Lex->sphead->m_param_begin= tmp_param_begin; } -#line 41088 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41209 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2832: -#line 16138 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2833: +#line 16150 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sphead->m_param_end= YYLIP->get_cpp_tok_start(); } -#line 41096 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41217 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2833: -#line 16142 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2834: +#line 16154 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sphead->set_body_start(thd, YYLIP->get_cpp_tok_start()); } -#line 41104 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41225 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2834: -#line 16146 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2835: +#line 16158 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; sp_head *sp= lex->sphead; @@ -41113,209 +41234,209 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); lex->sql_command= SQLCOM_CREATE_PROCEDURE; sp->restore_thd_mem_root(thd); } -#line 41117 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41238 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2835: -#line 16160 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2836: +#line 16172 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command = SQLCOM_XA_START; } -#line 41125 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41246 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2836: -#line 16164 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2837: +#line 16176 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command = SQLCOM_XA_END; } -#line 41133 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41254 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2837: -#line 16168 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2838: +#line 16180 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command = SQLCOM_XA_PREPARE; } -#line 41141 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41262 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2838: -#line 16172 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2839: +#line 16184 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command = SQLCOM_XA_COMMIT; } -#line 41149 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41270 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2839: -#line 16176 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2840: +#line 16188 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command = SQLCOM_XA_ROLLBACK; } -#line 41157 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41278 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2840: -#line 16180 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2841: +#line 16192 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->sql_command = SQLCOM_XA_RECOVER; } -#line 41165 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41286 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2841: -#line 16187 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2842: +#line 16199 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { MYSQL_YYABORT_UNLESS((yyvsp[0].string)->length() <= MAXGTRIDSIZE); if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID)))) MYSQL_YYABORT; Lex->xid->set(1L, (yyvsp[0].string)->ptr(), (yyvsp[0].string)->length(), 0, 0); } -#line 41176 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41297 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2842: -#line 16194 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2843: +#line 16206 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { MYSQL_YYABORT_UNLESS((yyvsp[-2].string)->length() <= MAXGTRIDSIZE && (yyvsp[0].string)->length() <= MAXBQUALSIZE); if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID)))) MYSQL_YYABORT; Lex->xid->set(1L, (yyvsp[-2].string)->ptr(), (yyvsp[-2].string)->length(), (yyvsp[0].string)->ptr(), (yyvsp[0].string)->length()); } -#line 41187 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41308 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2843: -#line 16201 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2844: +#line 16213 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { MYSQL_YYABORT_UNLESS((yyvsp[-4].string)->length() <= MAXGTRIDSIZE && (yyvsp[-2].string)->length() <= MAXBQUALSIZE); if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID)))) MYSQL_YYABORT; Lex->xid->set((yyvsp[0].ulong_num), (yyvsp[-4].string)->ptr(), (yyvsp[-4].string)->length(), (yyvsp[-2].string)->ptr(), (yyvsp[-2].string)->length()); } -#line 41198 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41319 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2844: -#line 16210 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2845: +#line 16222 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 41204 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41325 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2845: -#line 16211 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2846: +#line 16223 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 41210 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41331 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2846: -#line 16215 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2847: +#line 16227 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->xa_opt=XA_NONE; } -#line 41216 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41337 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2847: -#line 16216 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2848: +#line 16228 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->xa_opt=XA_JOIN; } -#line 41222 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41343 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2848: -#line 16217 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2849: +#line 16229 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->xa_opt=XA_RESUME; } -#line 41228 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41349 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2849: -#line 16221 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2850: +#line 16233 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->xa_opt=XA_NONE; } -#line 41234 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41355 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2850: -#line 16222 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2851: +#line 16234 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->xa_opt=XA_ONE_PHASE; } -#line 41240 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41361 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2851: -#line 16227 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2852: +#line 16239 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->xa_opt=XA_NONE; } -#line 41246 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41367 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2852: -#line 16229 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2853: +#line 16241 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->xa_opt=XA_SUSPEND; } -#line 41252 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41373 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2854: -#line 16234 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2855: +#line 16246 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ {} -#line 41258 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41379 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2855: -#line 16235 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2856: +#line 16247 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { Lex->xa_opt=XA_FOR_MIGRATE; } -#line 41264 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41385 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2856: -#line 16240 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2857: +#line 16252 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_INSTALL_PLUGIN; lex->comment= (yyvsp[-2].lex_str); lex->ident= (yyvsp[0].lex_str); } -#line 41275 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41396 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2857: -#line 16247 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2858: +#line 16259 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_INSTALL_PLUGIN; lex->comment= null_lex_str; lex->ident= (yyvsp[0].lex_str); } -#line 41286 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41407 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2858: -#line 16257 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2859: +#line 16269 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_UNINSTALL_PLUGIN; lex->comment= (yyvsp[0].lex_str); } -#line 41296 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41417 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2859: -#line 16263 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2860: +#line 16275 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { LEX *lex= Lex; lex->sql_command= SQLCOM_UNINSTALL_PLUGIN; lex->comment= null_lex_str; lex->ident= (yyvsp[0].lex_str); } -#line 41307 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41428 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; - case 2860: -#line 16274 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ + case 2861: +#line 16286 "/home/buildbot/git/sql/sql_yacc.yy" /* yacc.c:1646 */ { YYERROR; } -#line 41315 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41436 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ break; -#line 41319 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ +#line 41440 "/home/buildbot/git/mkdist/sql/sql_yacc.cc" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index af1d67fb2..f98a7b7e4 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -7950,8 +7950,17 @@ binlog_base64_event: { Lex->sql_command = SQLCOM_BINLOG_BASE64_EVENT; Lex->comment= $2; + Lex->ident.str= NULL; + Lex->ident.length= 0; } - ; + | + BINLOG_SYM '@' ident_or_text ',' '@' ident_or_text + { + Lex->sql_command = SQLCOM_BINLOG_BASE64_EVENT; + Lex->comment= $3; + Lex->ident= $6; + } + ; check_view_or_table: table_or_tables table_list opt_mi_check_type @@ -13012,6 +13021,7 @@ load: lex->field_list.empty(); lex->update_list.empty(); lex->value_list.empty(); + lex->many_values.empty(); } opt_load_data_charset { Lex->exchange->cs= $15; } @@ -15689,19 +15699,21 @@ subselect_end: lex->current_select = lex->current_select->return_after_parsing(); lex->nest_level--; lex->current_select->n_child_sum_items += child->n_sum_items; - /* - A subselect can add fields to an outer select. Reserve space for - them. - */ - lex->current_select->select_n_where_fields+= - child->select_n_where_fields; /* - Aggregate functions in having clause may add fields to an outer - select. Count them also. + A subquery (and all the subsequent query blocks in a UNION) can + add columns to an outer query block. Reserve space for them. + Aggregate functions in having clause can also add fields to an + outer select. */ - lex->current_select->select_n_having_items+= - child->select_n_having_items; + for (SELECT_LEX *temp= child->master_unit()->first_select(); + temp != NULL; temp= temp->next_select()) + { + lex->current_select->select_n_where_fields+= + temp->select_n_where_fields; + lex->current_select->select_n_having_items+= + temp->select_n_having_items; + } } ; diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index f941794f8..d1db14d7b 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -3178,11 +3178,15 @@ static Sys_var_charptr Sys_system_time_zone( CMD_LINE_HELP_ONLY, IN_SYSTEM_CHARSET, DEFAULT(system_time_zone)); +/* + If One use views with prepared statements this should be bigger than + table_open_cache (now we allow 2 times bigger value) +*/ static Sys_var_ulong Sys_table_def_size( "table_definition_cache", "The number of cached table definitions", GLOBAL_VAR(tdc_size), CMD_LINE(REQUIRED_ARG), - VALID_RANGE(TABLE_DEF_CACHE_MIN, 512*1024), + VALID_RANGE(TABLE_DEF_CACHE_MIN, 2*1024*1024), DEFAULT(TABLE_DEF_CACHE_DEFAULT), BLOCK_SIZE(1)); @@ -3194,7 +3198,7 @@ static bool fix_table_open_cache(sys_var *, THD *, enum_var_type) return false; } - +/* Check the table_definition_cache comment if makes changes */ static Sys_var_ulong Sys_table_cache_size( "table_open_cache", "The number of cached open tables", GLOBAL_VAR(tc_size), CMD_LINE(REQUIRED_ARG), @@ -4936,6 +4940,19 @@ static Sys_var_mybool Sys_wsrep_certify_nonPK( GLOBAL_VAR(wsrep_certify_nonPK), CMD_LINE(OPT_ARG), DEFAULT(TRUE)); +static const char *wsrep_certification_rules_names[]= { "strict", "optimized", NullS }; +static Sys_var_enum Sys_wsrep_certification_rules( + "wsrep_certification_rules", + "Certification rules to use in the cluster. Possible values are: " + "\"strict\": stricter rules that could result in more certification " + "failures. " + "\"optimized\": relaxed rules that allow more concurrency and " + "cause less certification failures.", + GLOBAL_VAR(wsrep_certification_rules), CMD_LINE(REQUIRED_ARG), + wsrep_certification_rules_names, DEFAULT(WSREP_CERTIFICATION_RULES_STRICT), + NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0), + ON_UPDATE(0)); + static Sys_var_mybool Sys_wsrep_causal_reads( "wsrep_causal_reads", "Setting this variable is equivalent " "to setting wsrep_sync_wait READ flag", diff --git a/sql/table.cc b/sql/table.cc index e1edcc0b4..31f0d2558 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -1851,7 +1851,7 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write, uint pk_part_length= key_first_info->key_part[i].store_length; if (keyinfo->ext_key_part_map & 1< MAX_KEY_LENGTH) + if (ext_key_length + pk_part_length > MAX_DATA_LENGTH_FOR_KEY) { add_keyparts_for_this_key= i; break; @@ -1861,9 +1861,9 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write, } } - if (add_keyparts_for_this_key < (keyinfo->ext_key_parts - - keyinfo->user_defined_key_parts)) - { + if (add_keyparts_for_this_key < keyinfo->ext_key_parts - + keyinfo->user_defined_key_parts) + { share->ext_key_parts-= keyinfo->ext_key_parts; key_part_map ext_key_part_map= keyinfo->ext_key_part_map; keyinfo->ext_key_parts= keyinfo->user_defined_key_parts; @@ -6137,6 +6137,8 @@ void TABLE::mark_columns_per_binlog_row_image() mark_columns_used_by_index_no_reset(s->primary_key, read_set); /* Only write columns that have changed */ rpl_write_set= write_set; + if (default_field) + mark_default_fields_for_write(rpl_write_set); break; default: @@ -6283,7 +6285,7 @@ bool TABLE::has_default_function(bool is_update) Add all fields that have a default function to the table write set. */ -void TABLE::mark_default_fields_for_write() +void TABLE::mark_default_fields_for_write(MY_BITMAP* bset) { Field **dfield_ptr, *dfield; enum_sql_command cmd= in_use->lex->sql_command; @@ -6294,7 +6296,7 @@ void TABLE::mark_default_fields_for_write() dfield->has_insert_default_function()) || ((sql_command_flags[cmd] & CF_UPDATES_DATA) && dfield->has_update_default_function())) - bitmap_set_bit(write_set, dfield->field_index); + bitmap_set_bit(bset, dfield->field_index); } } diff --git a/sql/table.h b/sql/table.h index ca3223457..de10a966d 100644 --- a/sql/table.h +++ b/sql/table.h @@ -1353,7 +1353,11 @@ struct TABLE void mark_columns_per_binlog_row_image(void); bool mark_virtual_col(Field *field); void mark_virtual_columns_for_write(bool insert_fl); - void mark_default_fields_for_write(); + void mark_default_fields_for_write(MY_BITMAP* bset); + inline void mark_default_fields_for_write() + { + mark_default_fields_for_write(write_set); + } bool has_default_function(bool is_update); inline void column_bitmaps_set(MY_BITMAP *read_set_arg, MY_BITMAP *write_set_arg) @@ -1887,7 +1891,7 @@ struct TABLE_LIST /* Index names in a "... JOIN ... USE/IGNORE INDEX ..." clause. */ List *index_hints; TABLE *table; /* opened table */ - uint table_id; /* table id (from binlog) for opened table */ + ulonglong table_id; /* table id (from binlog) for opened table */ /* select_result for derived table to pass it from table creation to table filling procedure diff --git a/sql/table_cache.cc b/sql/table_cache.cc index 6d1904002..b3cf6cd28 100644 --- a/sql/table_cache.cc +++ b/sql/table_cache.cc @@ -1134,6 +1134,9 @@ void tdc_assign_new_table_id(TABLE_SHARE *share) DBUG_ASSERT(share); DBUG_ASSERT(tdc_inited); + DBUG_EXECUTE_IF("simulate_big_table_id", + if (last_table_id < UINT_MAX32) + last_table_id= UINT_MAX32 - 1;); /* There is one reserved number that cannot be used. Remember to change this when 6-byte global table id's are introduced. @@ -1141,7 +1144,7 @@ void tdc_assign_new_table_id(TABLE_SHARE *share) do { tid= my_atomic_add64_explicit(&last_table_id, 1, MY_MEMORY_ORDER_RELAXED); - } while (unlikely(tid == ~0UL)); + } while (unlikely(tid == ~0UL || tid == 0)); share->table_map_id= tid; DBUG_PRINT("info", ("table_id= %lu", share->table_map_id)); diff --git a/sql/unireg.h b/sql/unireg.h index e1947d8d3..86d88fcdc 100644 --- a/sql/unireg.h +++ b/sql/unireg.h @@ -203,7 +203,7 @@ LEX_CUSTRING build_frm_image(THD *thd, const char *table, #define FRM_HEADER_SIZE 64 #define FRM_FORMINFO_SIZE 288 -#define FRM_MAX_SIZE (512*1024) +#define FRM_MAX_SIZE (1024*1024) static inline bool is_binary_frm_header(uchar *head) { diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc index c3f5dd1ce..ee8509e3f 100644 --- a/sql/wsrep_mysqld.cc +++ b/sql/wsrep_mysqld.cc @@ -77,6 +77,7 @@ ulong wsrep_max_ws_size = 1073741824UL;//max ws (RBR buffer) size ulong wsrep_max_ws_rows = 65536; // max number of rows in ws int wsrep_to_isolation = 0; // # of active TO isolation threads my_bool wsrep_certify_nonPK = 1; // certify, even when no primary key +ulong wsrep_certification_rules = WSREP_CERTIFICATION_RULES_STRICT; long wsrep_max_protocol_version = 3; // maximum protocol version to use ulong wsrep_forced_binlog_format = BINLOG_FORMAT_UNSPEC; my_bool wsrep_recovery = 0; // recovery @@ -2229,7 +2230,7 @@ int wsrep_wait_committing_connections_close(int wait_time) } -void wsrep_close_client_connections(my_bool wait_to_end) +void wsrep_close_client_connections(my_bool wait_to_end, THD *except_caller_thd) { /* First signal all threads that it's time to die @@ -2251,6 +2252,12 @@ void wsrep_close_client_connections(my_bool wait_to_end) if (!is_client_connection(tmp)) continue; + if (tmp == except_caller_thd) + { + DBUG_ASSERT(is_client_connection(tmp)); + continue; + } + if (is_replaying_connection(tmp)) { tmp->set_killed(KILL_CONNECTION); @@ -2262,7 +2269,16 @@ void wsrep_close_client_connections(my_bool wait_to_end) continue; WSREP_DEBUG("closing connection %ld", tmp->thread_id); - wsrep_close_thread(tmp); + + /* + instead of wsrep_close_thread() we do now soft kill by THD::awake + */ + mysql_mutex_lock(&tmp->LOCK_thd_data); + + tmp->awake(KILL_CONNECTION); + + mysql_mutex_unlock(&tmp->LOCK_thd_data); + } mysql_mutex_unlock(&LOCK_thread_count); @@ -2280,7 +2296,8 @@ void wsrep_close_client_connections(my_bool wait_to_end) #ifndef __bsdi__ // Bug in BSDI kernel if (is_client_connection(tmp) && !abort_replicated(tmp) && - !is_replaying_connection(tmp)) + !is_replaying_connection(tmp) && + tmp != except_caller_thd) { WSREP_INFO("killing local connection: %ld",tmp->thread_id); close_connection(tmp,0); diff --git a/sql/wsrep_mysqld.h b/sql/wsrep_mysqld.h index 43f0d5339..2b55fbe42 100644 --- a/sql/wsrep_mysqld.h +++ b/sql/wsrep_mysqld.h @@ -30,6 +30,7 @@ typedef struct st_mysql_show_var SHOW_VAR; #include "mdl.h" #include "mysqld.h" #include "sql_table.h" +#include "wsrep_mysqld_c.h" #define WSREP_UNDEFINED_TRX_ID ULONGLONG_MAX @@ -161,7 +162,6 @@ extern "C" query_id_t wsrep_thd_query_id(THD *thd); extern "C" query_id_t wsrep_thd_wsrep_last_query_id(THD *thd); extern "C" void wsrep_thd_set_wsrep_last_query_id(THD *thd, query_id_t id); -extern void wsrep_close_client_connections(my_bool wait_to_end); extern int wsrep_wait_committing_connections_close(int wait_time); extern void wsrep_close_applier(THD *thd); extern void wsrep_wait_appliers_close(THD *thd); @@ -314,7 +314,8 @@ void thd_binlog_trx_reset(THD * thd); typedef void (*wsrep_thd_processor_fun)(THD *); pthread_handler_t start_wsrep_THD(void *arg); int wsrep_wait_committing_connections_close(int wait_time); -void wsrep_close_client_connections(my_bool wait_to_end); +extern void wsrep_close_client_connections(my_bool wait_to_end, + THD *except_caller_thd = NULL); void wsrep_close_applier(THD *thd); void wsrep_close_applier_threads(int count); void wsrep_wait_appliers_close(THD *thd); diff --git a/sql/wsrep_mysqld_c.h b/sql/wsrep_mysqld_c.h new file mode 100644 index 000000000..235a871c1 --- /dev/null +++ b/sql/wsrep_mysqld_c.h @@ -0,0 +1,30 @@ +/* Copyright 2018-2018 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 + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#ifndef WSREP_MYSQLD_C_H +#define WSREP_MYSQLD_C_H + +enum enum_wsrep_certification_rules { + WSREP_CERTIFICATION_RULES_STRICT, + WSREP_CERTIFICATION_RULES_OPTIMIZED +}; + +/* This is intentionally declared as a weak global symbol, so that +the same ha_innodb.so can be used with the embedded server +(which does not link to the definition of this variable) +and with the regular server built WITH_WSREP. */ +extern ulong wsrep_certification_rules __attribute__((weak)); + +#endif /* WSREP_MYSQLD_C_H */ diff --git a/sql/wsrep_utils.h b/sql/wsrep_utils.h index 88a4c1e1a..dee7eb115 100644 --- a/sql/wsrep_utils.h +++ b/sql/wsrep_utils.h @@ -108,7 +108,8 @@ class Address { /* Hostname with port (host:port) */ start= addr_in; end= colon; - parse_port(colon + 1); + if (parse_port(colon + 1)) + return; /* Error: invalid port */ break; default: /* IPv6 address */ diff --git a/sql/wsrep_var.cc b/sql/wsrep_var.cc index 718676025..395974615 100644 --- a/sql/wsrep_var.cc +++ b/sql/wsrep_var.cc @@ -398,7 +398,8 @@ bool wsrep_reject_queries_update(sys_var *self, THD* thd, enum_var_type type) WSREP_INFO("Rejecting client queries due to manual setting"); break; case WSREP_REJECT_ALL_KILL: - wsrep_close_client_connections(FALSE); + /* close all client connections, but this one */ + wsrep_close_client_connections(FALSE, thd); WSREP_INFO("Rejecting client queries and killing connections due to manual setting"); break; default: diff --git a/storage/connect/global.h b/storage/connect/global.h index 36e8a3111..dc1e14974 100644 --- a/storage/connect/global.h +++ b/storage/connect/global.h @@ -219,11 +219,11 @@ DllExport LPCSTR PlugSetPath(LPSTR to, LPCSTR prefix, LPCSTR name, LPCSTR dir); DllExport BOOL PlugIsAbsolutePath(LPCSTR path); DllExport bool AllocSarea(PGLOBAL, uint); DllExport void FreeSarea(PGLOBAL); -DllExport BOOL PlugSubSet(PGLOBAL, void *, uint); +DllExport BOOL PlugSubSet(void *, uint); +DllExport void *PlugSubAlloc(PGLOBAL, void *, size_t); DllExport char *PlugDup(PGLOBAL g, const char *str); DllExport void *MakePtr(void *, OFFSET); DllExport void htrc(char const *fmt, ...); -//DllExport int GetTraceValue(void); DllExport uint GetTraceValue(void); #if defined(__cplusplus) @@ -233,6 +233,6 @@ DllExport uint GetTraceValue(void); /***********************************************************************/ /* Non exported routine declarations. */ /***********************************************************************/ -void *PlugSubAlloc(PGLOBAL, void *, size_t); // Does throw +//void *PlugSubAlloc(PGLOBAL, void *, size_t); // Does throw /*-------------------------- End of Global.H --------------------------*/ diff --git a/storage/connect/ha_connect.cc b/storage/connect/ha_connect.cc index 58b112b1f..135e51e0a 100644 --- a/storage/connect/ha_connect.cc +++ b/storage/connect/ha_connect.cc @@ -4191,7 +4191,7 @@ int ha_connect::rnd_pos(uchar *buf, uchar *pos) rc= rnd_next(buf); } else { PGLOBAL g = GetPlug((table) ? table->in_use : NULL, xp); - strcpy(g->Message, "Not supported by this table type"); +// strcpy(g->Message, "Not supported by this table type"); my_message(ER_ILLEGAL_HA, g->Message, MYF(0)); rc= HA_ERR_INTERNAL_ERROR; } // endif SetRecpos @@ -7307,7 +7307,7 @@ maria_declare_plugin(connect) PLUGIN_LICENSE_GPL, connect_init_func, /* Plugin Init */ connect_done_func, /* Plugin Deinit */ - 0x0107, /* version number (1.05) */ + 0x0106, /* version number (1.06) */ NULL, /* status variables */ connect_system_variables, /* system variables */ "1.06.0008", /* string version */ diff --git a/storage/connect/jsonudf.cpp b/storage/connect/jsonudf.cpp index 26455d572..d5a3a8401 100644 --- a/storage/connect/jsonudf.cpp +++ b/storage/connect/jsonudf.cpp @@ -3055,7 +3055,7 @@ my_bool json_array_grp_init(UDF_INIT *initid, UDF_ARGS *args, char *message) PGLOBAL g = (PGLOBAL)initid->ptr; - PlugSubSet(g, g->Sarea, g->Sarea_Size); + PlugSubSet(g->Sarea, g->Sarea_Size); g->Activityp = (PACTIVITY)JsonNew(g, TYPE_JAR); g->N = (int)n; return false; @@ -3098,7 +3098,7 @@ void json_array_grp_clear(UDF_INIT *initid, char*, char*) { PGLOBAL g = (PGLOBAL)initid->ptr; - PlugSubSet(g, g->Sarea, g->Sarea_Size); + PlugSubSet(g->Sarea, g->Sarea_Size); g->Activityp = (PACTIVITY)JsonNew(g, TYPE_JAR); g->N = GetJsonGroupSize(); } // end of json_array_grp_clear @@ -3132,7 +3132,7 @@ my_bool json_object_grp_init(UDF_INIT *initid, UDF_ARGS *args, char *message) PGLOBAL g = (PGLOBAL)initid->ptr; - PlugSubSet(g, g->Sarea, g->Sarea_Size); + PlugSubSet(g->Sarea, g->Sarea_Size); g->Activityp = (PACTIVITY)JsonNew(g, TYPE_JOB); g->N = (int)n; return false; @@ -3169,7 +3169,7 @@ void json_object_grp_clear(UDF_INIT *initid, char*, char*) { PGLOBAL g = (PGLOBAL)initid->ptr; - PlugSubSet(g, g->Sarea, g->Sarea_Size); + PlugSubSet(g->Sarea, g->Sarea_Size); g->Activityp = (PACTIVITY)JsonNew(g, TYPE_JOB); g->N = GetJsonGroupSize(); } // end of json_object_grp_clear @@ -4418,7 +4418,7 @@ char *json_file(UDF_INIT *initid, UDF_ARGS *args, char *result, } else if (initid->const_item) g->N = 1; - PlugSubSet(g, g->Sarea, g->Sarea_Size); + PlugSubSet(g->Sarea, g->Sarea_Size); fn = MakePSZ(g, args, 0); if (args->arg_count > 1) { @@ -5662,7 +5662,7 @@ char *jbin_file(UDF_INIT *initid, UDF_ARGS *args, char *result, if (bsp && !bsp->Changed) goto fin; - PlugSubSet(g, g->Sarea, g->Sarea_Size); + PlugSubSet(g->Sarea, g->Sarea_Size); g->Xchk = NULL; fn = MakePSZ(g, args, 0); pretty = (args->arg_count > 2 && args->args[2]) ? (int)*(longlong*)args->args[2] : 3; diff --git a/storage/connect/mysql-test/connect/r/jdbc_oracle.result b/storage/connect/mysql-test/connect/r/jdbc_oracle.result index 2e36891a0..ec314c5f0 100644 --- a/storage/connect/mysql-test/connect/r/jdbc_oracle.result +++ b/storage/connect/mysql-test/connect/r/jdbc_oracle.result @@ -8,12 +8,19 @@ SELECT * FROM t2 WHERE command = 'drop table employee'; command number message drop table employee 0 Execute: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist +Warnings: +Warning 1105 Execute: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist + SELECT * FROM t2 WHERE command = 'create table employee (id int not null, name varchar(32), title char(16), salary number(8,2))'; command number message create table employee (id int not null, name varchar(32), title char(16), salary number(8,2)) 0 Affected rows +Warnings: +Warning 1105 Affected rows SELECT * FROM t2 WHERE command = "insert into employee values(4567,'Johnson', 'Engineer', 12560.50)"; command number message insert into employee values(4567,'Johnson', 'Engineer', 12560.50) 1 Affected rows +Warnings: +Warning 1105 Affected rows CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=JDBC CATFUNC=tables CONNECTION='jdbc:oracle:thin:@localhost:1521:xe' OPTION_LIST='User=system,Password=manager'; @@ -27,8 +34,8 @@ OPTION_LIST='User=system,Password=manager'; SELECT * FROM t1; Table_Cat Table_Schema Table_Name Column_Name Data_Type Type_Name Column_Size Buffer_Length Decimal_Digits Radix Nullable Remarks NULL SYSTEM EMPLOYEE ID 3 NUMBER 38 0 0 10 0 NULL -NULL SYSTEM EMPLOYEE NAME 12 VARCHAR2 32 0 0 10 1 NULL -NULL SYSTEM EMPLOYEE TITLE 1 CHAR 16 0 0 10 1 NULL +NULL SYSTEM EMPLOYEE NAME 12 VARCHAR2 32 0 NULL 10 1 NULL +NULL SYSTEM EMPLOYEE TITLE 1 CHAR 16 0 NULL 10 1 NULL NULL SYSTEM EMPLOYEE SALARY 3 NUMBER 8 0 2 10 1 NULL DROP TABLE t1; CREATE SERVER 'oracle' FOREIGN DATA WRAPPER 'oracle.jdbc.driver.OracleDriver' OPTIONS ( @@ -52,7 +59,7 @@ Note 1105 EMPLOYEE: 1 affected rows SELECT * FROM t1; ID NAME TITLE SALARY 4567 Trump Engineer 12560.50 -6214 Clinton Retired 0.00 +6214 Clinton Retired NULL DELETE FROM t1 WHERE id = 6214; Warnings: Note 1105 EMPLOYEE: 1 affected rows @@ -63,8 +70,7 @@ DROP TABLE t1; SELECT * FROM t2 WHERE command = 'drop table employee'; command number message drop table employee 0 Affected rows +Warnings: +Warning 1105 Affected rows DROP TABLE t2; DROP SERVER 'oracle'; -SET GLOBAL connect_jvm_path=NULL; -SET GLOBAL connect_class_path=NULL; -SET GLOBAL time_zone = SYSTEM; diff --git a/storage/connect/mysql-test/connect/r/jdbc_postgresql.result b/storage/connect/mysql-test/connect/r/jdbc_postgresql.result index 7969672dd..bec1dc872 100644 --- a/storage/connect/mysql-test/connect/r/jdbc_postgresql.result +++ b/storage/connect/mysql-test/connect/r/jdbc_postgresql.result @@ -1,4 +1,4 @@ -SET GLOBAL connect_class_path='C:/MariaDB-10.2/MariaDB/storage/connect/mysql-test/connect/std_data/JavaWrappers.jar;C:/Jconnectors/postgresql-42.2.1.jar'; +SET GLOBAL connect_class_path='C:/MariaDB-10.0/MariaDB/storage/connect/mysql-test/connect/std_data/JavaWrappers.jar;C:/Jconnectors/postgresql-42.2.1.jar'; CREATE TABLE t2 ( command varchar(128) not null, number int(5) not null flag=1, @@ -9,12 +9,18 @@ OPTION_LIST='Execsrc=1'; SELECT * FROM t2 WHERE command='drop table employee'; command number message drop table employee 0 Execute: org.postgresql.util.PSQLException: ERREUR: la table « employee » n'existe pas +Warnings: +Warning 1105 Execute: org.postgresql.util.PSQLException: ERREUR: la table « employee » n'existe pas SELECT * FROM t2 WHERE command = 'create table employee (id int not null, name varchar(32), title char(16), salary decimal(8,2))'; command number message create table employee (id int not null, name varchar(32), title char(16), salary decimal(8,2)) 0 Affected rows +Warnings: +Warning 1105 Affected rows SELECT * FROM t2 WHERE command = "insert into employee values(4567,'Johnson', 'Engineer', 12560.50)"; command number message insert into employee values(4567,'Johnson', 'Engineer', 12560.50) 1 Affected rows +Warnings: +Warning 1105 Affected rows CREATE TABLE t1 ENGINE=CONNECT TABLE_TYPE=JDBC CATFUNC=tables CONNECTION='jdbc:postgresql://localhost/test?user=postgres&password=tinono' OPTION_LIST='Tabtype=TABLE,Maxres=10'; @@ -63,4 +69,6 @@ DROP SERVER 'postgresql'; SELECT * FROM t2 WHERE command='drop table employee'; command number message drop table employee 0 Affected rows +Warnings: +Warning 1105 Affected rows DROP TABLE t2; diff --git a/storage/connect/mysql-test/connect/r/part_table.result b/storage/connect/mysql-test/connect/r/part_table.result index f3a556ae7..ee17a1d32 100644 --- a/storage/connect/mysql-test/connect/r/part_table.result +++ b/storage/connect/mysql-test/connect/r/part_table.result @@ -23,7 +23,7 @@ id msg CREATE TABLE xt3 ( id INT KEY NOT NULL, msg VARCHAR(32)) -ENGINE=CONNECT TABLE_TYPE=CSV AVG_ROW_LENGTH=10; +ENGINE=CONNECT TABLE_TYPE=CSV AVG_ROW_LENGTH=6; Warnings: Warning 1105 No file name. Table will use xt3.csv INSERT INTO xt3 VALUES(60,'sixty'),(81,'eighty one'),(72,'seventy two'); @@ -92,7 +92,7 @@ id msg EXPLAIN PARTITIONS SELECT * FROM t1 WHERE id = 81; id select_type table partitions type possible_keys key key_len ref rows Extra -1 SIMPLE t1 3 ALL NULL NULL NULL NULL 4 Using where +1 SIMPLE t1 3 ALL NULL NULL NULL NULL 6 Using where DELETE FROM t1; Warnings: Note 1105 xt1: 4 affected rows diff --git a/storage/connect/mysql-test/connect/t/part_table.test b/storage/connect/mysql-test/connect/t/part_table.test index 5edd5766b..0fb2a11f0 100644 --- a/storage/connect/mysql-test/connect/t/part_table.test +++ b/storage/connect/mysql-test/connect/t/part_table.test @@ -22,7 +22,7 @@ SELECT * FROM xt2; CREATE TABLE xt3 ( id INT KEY NOT NULL, msg VARCHAR(32)) -ENGINE=CONNECT TABLE_TYPE=CSV AVG_ROW_LENGTH=10; +ENGINE=CONNECT TABLE_TYPE=CSV AVG_ROW_LENGTH=6; INSERT INTO xt3 VALUES(60,'sixty'),(81,'eighty one'),(72,'seventy two'); SELECT * FROM xt3; diff --git a/storage/connect/plugutil.cpp b/storage/connect/plugutil.cpp index 887527e38..048f00be7 100644 --- a/storage/connect/plugutil.cpp +++ b/storage/connect/plugutil.cpp @@ -514,27 +514,31 @@ void FreeSarea(PGLOBAL g) /* Here there should be some verification done such as validity of */ /* the address and size not larger than memory size. */ /***********************************************************************/ -BOOL PlugSubSet(PGLOBAL g __attribute__((unused)), void *memp, uint size) +BOOL PlugSubSet(void *memp, uint size) { PPOOLHEADER pph = (PPOOLHEADER)memp; pph->To_Free = (OFFSET)sizeof(POOLHEADER); pph->FreeBlk = size - pph->To_Free; - return FALSE; } /* end of PlugSubSet */ +/***********************************************************************/ +/* Use it to export a function that do throwing. */ +/***********************************************************************/ +void *DoThrow(int n) +{ + throw n; +} /* end of DoThrow */ + /***********************************************************************/ /* Program for sub-allocating one item in a storage area. */ -/* Note: SubAlloc routines of OS/2 are no more used to increase the */ -/* code portability and avoid problems when a grammar compiled under */ -/* one version of OS/2 is used under another version. */ -/* The simple way things are done here is also based on the fact */ -/* that no freeing of suballocated blocks is permitted in Plug. */ +/* The simple way things are done here is based on the fact */ +/* that no freeing of suballocated blocks is permitted in CONNECT. */ /***********************************************************************/ void *PlugSubAlloc(PGLOBAL g, void *memp, size_t size) - { - PPOOLHEADER pph; /* Points on area header. */ +{ + PPOOLHEADER pph; /* Points on area header. */ if (!memp) /*******************************************************************/ @@ -559,8 +563,8 @@ void *PlugSubAlloc(PGLOBAL g, void *memp, size_t size) if (trace(1)) htrc("PlugSubAlloc: %s\n", g->Message); - throw 1234; - } /* endif size OS32 code */ + DoThrow(1234); + } /* endif size OS32 code */ /*********************************************************************/ /* Do the suballocation the simplest way. */ @@ -574,7 +578,7 @@ void *PlugSubAlloc(PGLOBAL g, void *memp, size_t size) memp, pph->To_Free, pph->FreeBlk); return (memp); - } /* end of PlugSubAlloc */ +} /* end of PlugSubAlloc */ /***********************************************************************/ /* Program for sub-allocating and copying a string in a storage area. */ diff --git a/storage/connect/reldef.cpp b/storage/connect/reldef.cpp index e4f169575..30d8063d1 100644 --- a/storage/connect/reldef.cpp +++ b/storage/connect/reldef.cpp @@ -522,8 +522,15 @@ PTABDEF OEMDEF::GetXdef(PGLOBAL g) // Get the function returning an instance of the external DEF class if (!(getdef = (XGETDEF)GetProcAddress((HINSTANCE)Hdll, getname))) { - sprintf(g->Message, MSG(PROCADD_ERROR), GetLastError(), getname); - FreeLibrary((HMODULE)Hdll); + char buf[256]; + DWORD rc = GetLastError(); + + sprintf(g->Message, MSG(PROCADD_ERROR), rc, getname); + FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, NULL, rc, 0, + (LPTSTR)buf, sizeof(buf), NULL); + strcat(strcat(g->Message, ": "), buf); + FreeLibrary((HMODULE)Hdll); return NULL; } // endif getdef #else // !__WIN__ diff --git a/storage/connect/tabfmt.h b/storage/connect/tabfmt.h index 396bba568..10f0757c6 100644 --- a/storage/connect/tabfmt.h +++ b/storage/connect/tabfmt.h @@ -13,7 +13,7 @@ typedef class TDBFMT *PTDBFMT; /***********************************************************************/ /* Functions used externally. */ /***********************************************************************/ -PQRYRES CSVColumns(PGLOBAL g, PCSZ dp, PTOS topt, bool info); +DllExport PQRYRES CSVColumns(PGLOBAL g, PCSZ dp, PTOS topt, bool info); /***********************************************************************/ /* CSV table. */ diff --git a/storage/connect/tabjson.cpp b/storage/connect/tabjson.cpp index 9e4f5ab98..c0d36efcf 100644 --- a/storage/connect/tabjson.cpp +++ b/storage/connect/tabjson.cpp @@ -1,6 +1,6 @@ /************* tabjson C++ Program Source Code File (.CPP) *************/ -/* PROGRAM NAME: tabjson Version 1.5 */ -/* (C) Copyright to the author Olivier BERTRAND 2014 - 2017 */ +/* PROGRAM NAME: tabjson Version 1.6 */ +/* (C) Copyright to the author Olivier BERTRAND 2014 - 2018 */ /* This program are the JSON class DB execution routines. */ /***********************************************************************/ @@ -173,6 +173,7 @@ JSONDISC::JSONDISC(PGLOBAL g, uint *lg) int JSONDISC::GetColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt) { + char filename[_MAX_PATH]; bool mgo = (GetTypeID(topt->type) == TAB_MONGO); PCSZ level = GetStringTableOption(g, topt, "Level", NULL); @@ -209,6 +210,12 @@ int JSONDISC::GetColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt) return 0; } // endif Fn + if (tdp->Fn) { + // We used the file name relative to recorded datapath + PlugSetPath(filename, tdp->Fn, tdp->GetPath()); + tdp->Fn = PlugDup(g, filename); + } // endif Fn + if (trace(1)) htrc("File %s objname=%s pretty=%d lvl=%d\n", tdp->Fn, tdp->Objname, tdp->Pretty, lvl); @@ -299,7 +306,7 @@ int JSONDISC::GetColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt) memset(G, 0, sizeof(GLOBAL)); G->Sarea_Size = tdp->Lrecl * 10; G->Sarea = PlugSubAlloc(g, NULL, G->Sarea_Size); - PlugSubSet(G, G->Sarea, G->Sarea_Size); + PlugSubSet(G->Sarea, G->Sarea_Size); G->jump_level = 0; tjnp->SetG(G); @@ -342,7 +349,7 @@ int JSONDISC::GetColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt) strncpy(colname, jpp->GetKey(), 64); fmt[bf] = 0; - if (Find(g, jpp->GetVal(), MY_MIN(lvl, 0))) + if (Find(g, jpp->GetVal(), colname, MY_MIN(lvl, 0))) goto err; } // endfor jpp @@ -385,7 +392,7 @@ int JSONDISC::GetColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt) return 0; } // end of GetColumns -bool JSONDISC::Find(PGLOBAL g, PJVAL jvp, int j) +bool JSONDISC::Find(PGLOBAL g, PJVAL jvp, PCSZ key, int j) { char *p, *pc = colname + strlen(colname); int ars; @@ -413,12 +420,14 @@ bool JSONDISC::Find(PGLOBAL g, PJVAL jvp, int j) job = (PJOB)jsp; for (PJPR jrp = job->GetFirst(); jrp; jrp = jrp->GetNext()) { - if (*jrp->GetKey() != '$') { - strncat(strncat(fmt, sep, 128), jrp->GetKey(), 128); - strncat(strncat(colname, "_", 64), jrp->GetKey(), 64); + PCSZ k = jrp->GetKey(); + + if (*k != '$') { + strncat(strncat(fmt, sep, 128), k, 128); + strncat(strncat(colname, "_", 64), k, 64); } // endif Key - if (Find(g, jrp->GetVal(), j + 1)) + if (Find(g, jrp->GetVal(), k, j + 1)) return true; *p = *pc = 0; @@ -428,13 +437,13 @@ bool JSONDISC::Find(PGLOBAL g, PJVAL jvp, int j) case TYPE_JAR: jar = (PJAR)jsp; - if (all || (tdp->Xcol && !stricmp(tdp->Xcol, colname))) + if (all || (tdp->Xcol && !stricmp(tdp->Xcol, key))) ars = jar->GetSize(false); else ars = MY_MIN(jar->GetSize(false), 1); for (int k = 0; k < ars; k++) { - if (!tdp->Xcol || stricmp(tdp->Xcol, colname)) { + if (!tdp->Xcol || stricmp(tdp->Xcol, key)) { sprintf(buf, "%d", k); if (tdp->Uri) @@ -448,7 +457,7 @@ bool JSONDISC::Find(PGLOBAL g, PJVAL jvp, int j) } else strncat(fmt, (tdp->Uri ? sep : "[*]"), 128); - if (Find(g, jar->GetValue(k), j)) + if (Find(g, jar->GetValue(k), "", j)) return true; *p = *pc = 0; @@ -522,7 +531,9 @@ void JSONDISC::AddColumn(PGLOBAL g) n++; } // endif jcp - pjcp = jcp; + if (jcp) + pjcp = jcp; + } // end of AddColumn @@ -549,7 +560,7 @@ JSONDEF::JSONDEF(void) /***********************************************************************/ /* DefineAM: define specific AM block values. */ /***********************************************************************/ -bool JSONDEF::DefineAM(PGLOBAL g, LPCSTR, int poff) +bool JSONDEF::DefineAM(PGLOBAL g, LPCSTR am, int poff) { Schema = GetStringCatInfo(g, "DBname", Schema); Jmode = (JMODE)GetIntCatInfo("Jmode", MODE_OBJECT); @@ -561,7 +572,8 @@ bool JSONDEF::DefineAM(PGLOBAL g, LPCSTR, int poff) Sep = *GetStringCatInfo(g, "Separator", "."); Accept = GetBoolCatInfo("Accept", false); - if (Uri = GetStringCatInfo(g, "Connect", NULL)) { + // Don't use url as uri when called from REST OEM module + if (stricmp(am, "REST") && (Uri = GetStringCatInfo(g, "Connect", NULL))) { #if defined(JAVA_SUPPORT) || defined(CMGO_SUPPORT) Collname = GetStringCatInfo(g, "Name", (Catfunc & (FNC_TABLE | FNC_COL)) ? NULL : Name); @@ -670,7 +682,7 @@ PTDB JSONDEF::GetTable(PGLOBAL g, MODE m) memset(G, 0, sizeof(GLOBAL)); G->Sarea_Size = Lrecl * 10; G->Sarea = PlugSubAlloc(g, NULL, G->Sarea_Size); - PlugSubSet(G, G->Sarea, G->Sarea_Size); + PlugSubSet(G->Sarea, G->Sarea_Size); G->jump_level = 0; ((TDBJSN*)tdbp)->G = G; } else { @@ -963,7 +975,7 @@ int TDBJSN::ReadDB(PGLOBAL g) return rc; // Recover the memory used for parsing - PlugSubSet(G, G->Sarea, G->Sarea_Size); + PlugSubSet(G->Sarea, G->Sarea_Size); if ((Row = ParseJson(G, To_Line, strlen(To_Line), &Pretty, &Comma))) { Row = FindRow(g); @@ -1079,13 +1091,13 @@ int TDBJSN::MakeTopTree(PGLOBAL g, PJSON jsp) } // end of PrepareWriting /***********************************************************************/ -/* WriteDB: Data Base write routine for DOS access method. */ +/* WriteDB: Data Base write routine for JSON access method. */ /***********************************************************************/ int TDBJSN::WriteDB(PGLOBAL g) { int rc = TDBDOS::WriteDB(g); - PlugSubSet(G, G->Sarea, G->Sarea_Size); + PlugSubSet(G->Sarea, G->Sarea_Size); Row->Clear(); return rc; } // end of WriteDB @@ -2340,7 +2352,7 @@ void TDBJSON::CloseDB(PGLOBAL g) TDBJCL::TDBJCL(PJDEF tdp) : TDBCAT(tdp) { Topt = tdp->GetTopt(); - Db = tdp->Schema; + Db = tdp->Schema; Dsn = tdp->Uri; } // end of TDBJCL constructor diff --git a/storage/connect/tabjson.h b/storage/connect/tabjson.h index 2ff72905e..8721a2a5a 100644 --- a/storage/connect/tabjson.h +++ b/storage/connect/tabjson.h @@ -1,11 +1,11 @@ /*************** tabjson H Declares Source Code File (.H) **************/ /* Name: tabjson.h Version 1.3 */ /* */ -/* (C) Copyright to the author Olivier BERTRAND 2014 - 2017 */ +/* (C) Copyright to the author Olivier BERTRAND 2014 - 2018 */ /* */ /* This file contains the JSON classes declares. */ /***********************************************************************/ -#include "osutil.h" +//#include "osutil.h" // Unuseful and bad for OEM #include "block.h" #include "colblk.h" #include "json.h" @@ -16,7 +16,7 @@ typedef class JSONDEF *PJDEF; typedef class TDBJSON *PJTDB; typedef class JSONCOL *PJCOL; class TDBJSN; -PQRYRES JSONColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt, bool info); +DllExport PQRYRES JSONColumns(PGLOBAL, PCSZ, PCSZ, PTOS, bool); /***********************************************************************/ /* The JSON tree node. Can be an Object or an Array. */ @@ -52,7 +52,7 @@ class JSONDISC : public BLOCK { // Functions int GetColumns(PGLOBAL g, PCSZ db, PCSZ dsn, PTOS topt); - bool Find(PGLOBAL g, PJVAL jvp, int j); + bool Find(PGLOBAL g, PJVAL jvp, PCSZ key, int j); void AddColumn(PGLOBAL g); // Members diff --git a/storage/connect/tabodbc.cpp b/storage/connect/tabodbc.cpp index fddfb0c04..0fa117c3d 100644 --- a/storage/connect/tabodbc.cpp +++ b/storage/connect/tabodbc.cpp @@ -5,7 +5,7 @@ /* */ /* COPYRIGHT: */ /* ---------- */ -/* (C) Copyright to the author Olivier BERTRAND 2000-2017 */ +/* (C) Copyright to the author Olivier BERTRAND 2000-2018 */ /* */ /* WHAT THIS PROGRAM DOES: */ /* ----------------------- */ @@ -95,23 +95,23 @@ bool ExactInfo(void); /* Constructor. */ /***********************************************************************/ ODBCDEF::ODBCDEF(void) - { +{ Connect = NULL; Catver = 0; UseCnc = false; - } // end of ODBCDEF constructor +} // end of ODBCDEF constructor /***********************************************************************/ /* DefineAM: define specific AM block values from XDB file. */ /***********************************************************************/ bool ODBCDEF::DefineAM(PGLOBAL g, LPCSTR am, int poff) - { +{ Desc = Connect = GetStringCatInfo(g, "Connect", NULL); if (!Connect && !Catfunc) { sprintf(g->Message, "Missing connection for ODBC table %s", Name); return true; - } // endif Connect + } // endif Connect if (EXTDEF::DefineAM(g, am, poff)) return true; @@ -123,13 +123,13 @@ bool ODBCDEF::DefineAM(PGLOBAL g, LPCSTR am, int poff) Qto= GetIntCatInfo("QueryTimeout", DEFAULT_QUERY_TIMEOUT); UseCnc = GetBoolCatInfo("UseDSN", false); return false; - } // end of DefineAM +} // end of DefineAM /***********************************************************************/ /* GetTable: makes a new Table Description Block. */ /***********************************************************************/ PTDB ODBCDEF::GetTable(PGLOBAL g, MODE m) - { +{ PTDB tdbp = NULL; /*********************************************************************/ @@ -158,10 +158,10 @@ PTDB ODBCDEF::GetTable(PGLOBAL g, MODE m) tdbp = new(g) TDBMUL(tdbp); else if (Multiple == 2) strcpy(g->Message, MSG(NO_ODBC_MUL)); - } // endswitch Catfunc + } // endswitch Catfunc return tdbp; - } // end of GetTable +} // end of GetTable /* -------------------------- Class TDBODBC -------------------------- */ @@ -169,7 +169,7 @@ PTDB ODBCDEF::GetTable(PGLOBAL g, MODE m) /* Implementation of the TDBODBC class. */ /***********************************************************************/ TDBODBC::TDBODBC(PODEF tdp) : TDBEXT(tdp) - { +{ Ocp = NULL; Cnp = NULL; @@ -191,19 +191,19 @@ TDBODBC::TDBODBC(PODEF tdp) : TDBEXT(tdp) Ops.UseCnc = false; } // endif tdp - } // end of TDBODBC standard constructor +} // end of TDBODBC standard constructor TDBODBC::TDBODBC(PTDBODBC tdbp) : TDBEXT(tdbp) - { +{ Ocp = tdbp->Ocp; // is that right ? Cnp = tdbp->Cnp; Connect = tdbp->Connect; Ops = tdbp->Ops; - } // end of TDBODBC copy constructor +} // end of TDBODBC copy constructor // Method PTDB TDBODBC::Clone(PTABS t) - { +{ PTDB tp; PODBCCOL cp1, cp2; PGLOBAL g = t->G; // Is this really useful ??? @@ -213,18 +213,18 @@ PTDB TDBODBC::Clone(PTABS t) for (cp1 = (PODBCCOL)Columns; cp1; cp1 = (PODBCCOL)cp1->GetNext()) { cp2 = new(g) ODBCCOL(cp1, tp); // Make a copy NewPointer(t, cp1, cp2); - } // endfor cp1 + } // endfor cp1 return tp; - } // end of CopyOne +} // end of CopyOne /***********************************************************************/ /* Allocate ODBC column description block. */ /***********************************************************************/ PCOL TDBODBC::MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n) - { +{ return new(g) ODBCCOL(cdp, this, cprec, n); - } // end of MakeCol +} // end of MakeCol /***********************************************************************/ /* Extract the filename from connect string and return it. */ @@ -232,7 +232,7 @@ PCOL TDBODBC::MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n) /* with a place holder to be used by SetFile. */ /***********************************************************************/ PCSZ TDBODBC::GetFile(PGLOBAL g) - { +{ if (Connect) { char *p1, *p2; int i; @@ -263,18 +263,18 @@ PCSZ TDBODBC::GetFile(PGLOBAL g) memcpy(MulConn, Connect, p1 - Connect); MulConn[p1 - Connect] = '\0'; strcat(strcat(MulConn, "%s"), (p2) ? p2 : ";"); - } // endif p1 + } // endif p1 - } // endif Connect + } // endif Connect return (DBQ) ? DBQ : (PSZ)"???"; - } // end of GetFile +} // end of GetFile /***********************************************************************/ /* Set DBQ and get the new file name into the connect string. */ /***********************************************************************/ void TDBODBC::SetFile(PGLOBAL g, PCSZ fn) - { +{ if (MulConn) { int n = strlen(MulConn) + strlen(fn) - 1; @@ -283,20 +283,20 @@ void TDBODBC::SetFile(PGLOBAL g, PCSZ fn) // of having to reallocate it is reduced. BufSize = n + 6; Connect = (char*)PlugSubAlloc(g, NULL, BufSize); - } // endif n + } // endif n // Make the complete connect string sprintf(Connect, MulConn, fn); - } // endif MultConn + } // endif MultConn DBQ = PlugDup(g, fn); - } // end of SetFile +} // end of SetFile /***********************************************************************/ /* MakeInsert: make the Insert statement used with ODBC connection. */ /***********************************************************************/ bool TDBODBC::MakeInsert(PGLOBAL g) - { +{ PCSZ schmp = NULL; char *catp = NULL, buf[NAM_LEN * 3]; int len = 0; @@ -377,7 +377,7 @@ bool TDBODBC::MakeInsert(PGLOBAL g) } else Query->Append(buf); - } // endfor colp + } // endfor colp Query->Append(") VALUES ("); @@ -390,32 +390,32 @@ bool TDBODBC::MakeInsert(PGLOBAL g) Query->RepLast(')'); return oom; - } // end of MakeInsert +} // end of MakeInsert /***********************************************************************/ /* ODBC Bind Parameter function. */ /***********************************************************************/ bool TDBODBC::BindParameters(PGLOBAL g) - { - PODBCCOL colp; +{ + PODBCCOL colp; - for (colp = (PODBCCOL)Columns; colp; colp = (PODBCCOL)colp->Next) { - colp->AllocateBuffers(g, 0); + for (colp = (PODBCCOL)Columns; colp; colp = (PODBCCOL)colp->Next) { + colp->AllocateBuffers(g, 0); - if (Ocp->BindParam(colp)) - return true; + if (Ocp->BindParam(colp)) + return true; - } // endfor colp + } // endfor colp - return false; - } // end of BindParameters + return false; +} // end of BindParameters #if 0 /***********************************************************************/ /* MakeUpdate: make the SQL statement to send to ODBC connection. */ /***********************************************************************/ char *TDBODBC::MakeUpdate(PGLOBAL g) - { +{ char *qc, *stmt = NULL, cmd[8], tab[96], end[1024]; stmt = (char*)PlugSubAlloc(g, NULL, strlen(Qrystr) + 64); @@ -440,60 +440,60 @@ char *TDBODBC::MakeUpdate(PGLOBAL g) strcat(stmt, end); return stmt; - } // end of MakeUpdate +} // end of MakeUpdate /***********************************************************************/ /* MakeDelete: make the SQL statement to send to ODBC connection. */ /***********************************************************************/ char *TDBODBC::MakeDelete(PGLOBAL g) - { - char *qc, *stmt = NULL, cmd[8], from[8], tab[96], end[512]; - - stmt = (char*)PlugSubAlloc(g, NULL, strlen(Qrystr) + 64); - memset(end, 0, sizeof(end)); - - if (sscanf(Qrystr, "%s %s `%[^`]`%511c", cmd, from, tab, end) > 2 || - sscanf(Qrystr, "%s %s \"%[^\"]\"%511c", cmd, from, tab, end) > 2) - qc = Ocp->GetQuoteChar(); - else if (sscanf(Qrystr, "%s %s %s%511c", cmd, from, tab, end) > 2) - qc = (Quoted) ? Quote : ""; - else { - strcpy(g->Message, "Cannot use this DELETE command"); - return NULL; - } // endif sscanf - - assert(!stricmp(cmd, "delete") && !stricmp(from, "from")); - strcat(strcat(strcat(strcpy(stmt, "DELETE FROM "), qc), TableName), qc); - - if (*end) { - for (int i = 0; end[i]; i++) - if (end[i] == '`') - end[i] = *qc; - - strcat(stmt, end); - } // endif end - - return stmt; - } // end of MakeDelete +{ + char *qc, *stmt = NULL, cmd[8], from[8], tab[96], end[512]; + + stmt = (char*)PlugSubAlloc(g, NULL, strlen(Qrystr) + 64); + memset(end, 0, sizeof(end)); + + if (sscanf(Qrystr, "%s %s `%[^`]`%511c", cmd, from, tab, end) > 2 || + sscanf(Qrystr, "%s %s \"%[^\"]\"%511c", cmd, from, tab, end) > 2) + qc = Ocp->GetQuoteChar(); + else if (sscanf(Qrystr, "%s %s %s%511c", cmd, from, tab, end) > 2) + qc = (Quoted) ? Quote : ""; + else { + strcpy(g->Message, "Cannot use this DELETE command"); + return NULL; + } // endif sscanf + + assert(!stricmp(cmd, "delete") && !stricmp(from, "from")); + strcat(strcat(strcat(strcpy(stmt, "DELETE FROM "), qc), TableName), qc); + + if (*end) { + for (int i = 0; end[i]; i++) + if (end[i] == '`') + end[i] = *qc; + + strcat(stmt, end); + } // endif end + + return stmt; +} // end of MakeDelete #endif // 0 /***********************************************************************/ /* ResetSize: call by TDBMUL when calculating size estimate. */ /***********************************************************************/ void TDBODBC::ResetSize(void) - { +{ MaxSize = -1; if (Ocp && Ocp->IsOpen()) Ocp->Close(); - } // end of ResetSize +} // end of ResetSize /***********************************************************************/ /* ODBC Cardinality: returns table size in number of rows. */ /***********************************************************************/ int TDBODBC::Cardinality(PGLOBAL g) - { +{ if (!g) return (Mode == MODE_ANY && !Srcdef) ? 1 : 0; @@ -526,7 +526,7 @@ int TDBODBC::Cardinality(PGLOBAL g) Cardinal = 10; // To make MySQL happy return Cardinal; - } // end of Cardinality +} // end of Cardinality /***********************************************************************/ /* ODBC Access Method opening routine. */ @@ -535,7 +535,7 @@ int TDBODBC::Cardinality(PGLOBAL g) /* join block of next table if it exists or else are discarted. */ /***********************************************************************/ bool TDBODBC::OpenDB(PGLOBAL g) - { +{ bool rc = true; if (trace(1)) @@ -571,7 +571,7 @@ bool TDBODBC::OpenDB(PGLOBAL g) Fpos = 0; Curpos = 1; return false; - } // endif use + } // endif use /*********************************************************************/ /* Open an ODBC connection for this table. */ @@ -593,7 +593,7 @@ bool TDBODBC::OpenDB(PGLOBAL g) Use = USE_OPEN; // Do it now in case we are recursively called /*********************************************************************/ - /* Make the command and allocate whatever is used for getting results. */ + /* Make the command and allocate whatever is used for getting results*/ /*********************************************************************/ if (Mode == MODE_READ || Mode == MODE_READX) { if (Memory > 1 && !Srcdef) { @@ -624,7 +624,7 @@ bool TDBODBC::OpenDB(PGLOBAL g) } else return true; - } // endif Memory + } // endif Memory if (!(rc = MakeSQL(g, false))) { for (PODBCCOL colp = (PODBCCOL)Columns; colp; @@ -635,7 +635,7 @@ bool TDBODBC::OpenDB(PGLOBAL g) rc = (Mode == MODE_READ) ? ((Rows = Ocp->ExecDirectSQL(Query->GetStr(), (PODBCCOL)Columns)) < 0) : false; - } // endif rc + } // endif rc } else if (Mode == MODE_INSERT) { if (!(rc = MakeInsert(g))) { @@ -645,7 +645,7 @@ bool TDBODBC::OpenDB(PGLOBAL g) } else rc = BindParameters(g); - } // endif rc + } // endif rc } else if (Mode == MODE_UPDATE || Mode == MODE_DELETE) { rc = false; // wait for CheckCond before calling MakeCommand(g); @@ -655,30 +655,30 @@ bool TDBODBC::OpenDB(PGLOBAL g) if (rc) { Ocp->Close(); return true; - } // endif rc + } // endif rc /*********************************************************************/ /* Reset statistics values. */ /*********************************************************************/ num_read = num_there = num_eq[0] = num_eq[1] = 0; return false; - } // end of OpenDB +} // end of OpenDB #if 0 /***********************************************************************/ /* GetRecpos: return the position of last read record. */ /***********************************************************************/ int TDBODBC::GetRecpos(void) - { +{ return Fpos; - } // end of GetRecpos +} // end of GetRecpos #endif // 0 /***********************************************************************/ /* SetRecpos: set the position of next read record. */ /***********************************************************************/ bool TDBODBC::SetRecpos(PGLOBAL g, int recpos) - { +{ if (Ocp->m_Full) { Fpos = 0; CurNum = recpos - 1; @@ -696,14 +696,15 @@ bool TDBODBC::SetRecpos(PGLOBAL g, int recpos) } // endif recpos } else { - strcpy(g->Message, "This action requires a scrollable cursor"); + strcpy(g->Message, + "This action requires Memory setting or a scrollable cursor"); return true; } // endif's // Indicate the table position was externally set Placed = true; return false; - } // end of SetRecpos +} // end of SetRecpos /***********************************************************************/ /* Data Base indexed read routine for ODBC access method. */ @@ -721,7 +722,7 @@ bool TDBODBC::ReadKey(PGLOBAL g, OPVAL op, const key_range *kr) Rows = Ocp->ExecDirectSQL((char*)Query->GetStr(), (PODBCCOL)Columns); Mode = MODE_READ; return (Rows < 0); - } // endif key + } // endif key return false; } else { @@ -737,7 +738,7 @@ bool TDBODBC::ReadKey(PGLOBAL g, OPVAL op, const key_range *kr) if ((To_CondFil = hc->CheckCond(g, To_CondFil, Cond))) PlugSubAlloc(g, NULL, strlen(To_CondFil->Body) + 1); - } // endif active_index + } // endif active_index if (To_CondFil) if (Query->Append(" AND ") || Query->Append(To_CondFil->Body)) { @@ -762,7 +763,7 @@ bool TDBODBC::ReadKey(PGLOBAL g, OPVAL op, const key_range *kr) /* VRDNDOS: Data Base read routine for odbc access method. */ /***********************************************************************/ int TDBODBC::ReadDB(PGLOBAL g) - { +{ int rc; if (trace(2)) @@ -784,7 +785,7 @@ int TDBODBC::ReadDB(PGLOBAL g) } else return RC_FX; // Error - } // endif Mode + } // endif Mode /*********************************************************************/ /* Now start the reading process. */ @@ -813,7 +814,7 @@ int TDBODBC::ReadDB(PGLOBAL g) Qrp->Nblin++; Fpos++; // Used for memory and pos - } // endif rc + } // endif rc } // endif Placed @@ -821,13 +822,13 @@ int TDBODBC::ReadDB(PGLOBAL g) htrc(" Read: Rbuf=%d rc=%d\n", Rbuf, rc); return rc; - } // end of ReadDB +} // end of ReadDB /***********************************************************************/ /* Data Base Insert write routine for ODBC access method. */ /***********************************************************************/ int TDBODBC::WriteDB(PGLOBAL g) - { +{ int n = Ocp->ExecuteSQL(); if (n < 0) { @@ -837,13 +838,13 @@ int TDBODBC::WriteDB(PGLOBAL g) AftRows += n; return RC_OK; - } // end of WriteDB +} // end of WriteDB /***********************************************************************/ /* Data Base delete line routine for ODBC access method. */ /***********************************************************************/ int TDBODBC::DeleteDB(PGLOBAL g, int irc) - { +{ if (irc == RC_FX) { if (!Query && MakeCommand(g)) return RC_FX; @@ -863,13 +864,13 @@ int TDBODBC::DeleteDB(PGLOBAL g, int irc) } else return RC_OK; // Ignore - } // end of DeleteDB +} // end of DeleteDB /***********************************************************************/ /* Data Base close routine for ODBC access method. */ /***********************************************************************/ void TDBODBC::CloseDB(PGLOBAL g) - { +{ if (Ocp) Ocp->Close(); @@ -877,7 +878,7 @@ void TDBODBC::CloseDB(PGLOBAL g) if (trace(1)) htrc("ODBC CloseDB: closing %s\n", Name); - } // end of CloseDB +} // end of CloseDB /* --------------------------- ODBCCOL ------------------------------- */ @@ -886,33 +887,33 @@ void TDBODBC::CloseDB(PGLOBAL g) /***********************************************************************/ ODBCCOL::ODBCCOL(PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i, PCSZ am) : EXTCOL(cdp, tdbp, cprec, i, am) - { +{ // Set additional ODBC access method information for column. Slen = 0; StrLen = &Slen; Sqlbuf = NULL; - } // end of ODBCCOL constructor +} // end of ODBCCOL constructor /***********************************************************************/ /* ODBCCOL private constructor. */ /***********************************************************************/ ODBCCOL::ODBCCOL(void) : EXTCOL() - { +{ Slen = 0; StrLen = &Slen; Sqlbuf = NULL; - } // end of ODBCCOL constructor +} // end of ODBCCOL constructor /***********************************************************************/ /* ODBCCOL constructor used for copying columns. */ /* tdbp is the pointer to the new table descriptor. */ /***********************************************************************/ ODBCCOL::ODBCCOL(ODBCCOL *col1, PTDB tdbp) : EXTCOL(col1, tdbp) - { +{ Slen = col1->Slen; StrLen = col1->StrLen; Sqlbuf = col1->Sqlbuf; - } // end of ODBCCOL copy constructor +} // end of ODBCCOL copy constructor /***********************************************************************/ /* ReadColumn: when SQLFetch is used there is nothing to do as the */ @@ -920,7 +921,7 @@ ODBCCOL::ODBCCOL(ODBCCOL *col1, PTDB tdbp) : EXTCOL(col1, tdbp) /* when calculating MaxSize (Bufp is NULL even when Rows is not). */ /***********************************************************************/ void ODBCCOL::ReadColumn(PGLOBAL g) - { +{ PTDBODBC tdbp = (PTDBODBC)To_Tdb; int i = tdbp->Fpos - 1, n = tdbp->CurNum; @@ -953,7 +954,7 @@ void ODBCCOL::ReadColumn(PGLOBAL g) else Value->SetValue_pvblk(Blkp, n); - } // endif Bufp + } // endif Bufp if (Buf_Type == TYPE_DATE) { struct tm dbtime; @@ -980,7 +981,7 @@ void ODBCCOL::ReadColumn(PGLOBAL g) htrc("ODBC Column %s: rows=%d buf=%p type=%d value=%s\n", Name, tdbp->Rows, Bufp, Buf_Type, Value->GetCharString(buf)); - } // endif trace + } // endif trace put: if (tdbp->Memory != 2) @@ -997,7 +998,7 @@ void ODBCCOL::ReadColumn(PGLOBAL g) } else Crp->Kdata->SetValue(Value, i); - } // end of ReadColumn +} // end of ReadColumn /***********************************************************************/ /* AllocateBuffers: allocate the extended buffer for SQLExtendedFetch */ @@ -1005,7 +1006,7 @@ void ODBCCOL::ReadColumn(PGLOBAL g) /* for the ending null character. */ /***********************************************************************/ void ODBCCOL::AllocateBuffers(PGLOBAL g, int rows) - { +{ if (Buf_Type == TYPE_DATE) Sqlbuf = (TIMESTAMP_STRUCT*)PlugSubAlloc(g, NULL, sizeof(TIMESTAMP_STRUCT)); @@ -1019,31 +1020,31 @@ void ODBCCOL::AllocateBuffers(PGLOBAL g, int rows) Blkp = AllocValBlock(g, NULL, Buf_Type, rows, GetBuflen(), GetScale(), true, false, false); Bufp = Blkp->GetValPointer(); - } // endelse + } // endelse if (rows > 1) StrLen = (SQLLEN *)PlugSubAlloc(g, NULL, rows * sizeof(SQLLEN)); - } // end of AllocateBuffers +} // end of AllocateBuffers /***********************************************************************/ /* Returns the buffer to use for Fetch or Extended Fetch. */ /***********************************************************************/ void *ODBCCOL::GetBuffer(DWORD rows) - { +{ if (rows && To_Tdb) { assert(rows == (DWORD)((TDBODBC*)To_Tdb)->Rows); return Bufp; } else return (Buf_Type == TYPE_DATE) ? Sqlbuf : Value->GetTo_Val(); - } // end of GetBuffer +} // end of GetBuffer /***********************************************************************/ /* Returns the buffer length to use for Fetch or Extended Fetch. */ /***********************************************************************/ SWORD ODBCCOL::GetBuflen(void) - { +{ SWORD flen; switch (Buf_Type) { @@ -1059,13 +1060,13 @@ SWORD ODBCCOL::GetBuflen(void) } // endswitch Buf_Type return flen; - } // end of GetBuflen +} // end of GetBuflen /***********************************************************************/ /* WriteColumn: make sure the bind buffer is updated. */ /***********************************************************************/ void ODBCCOL::WriteColumn(PGLOBAL g) - { +{ /*********************************************************************/ /* Do convert the column value if necessary. */ /*********************************************************************/ @@ -1095,7 +1096,7 @@ void ODBCCOL::WriteColumn(PGLOBAL g) *StrLen = (Value->IsNull()) ? SQL_NULL_DATA : (IsTypeChar(Buf_Type)) ? SQL_NTS : 0; - } // end of WriteColumn +} // end of WriteColumn /* -------------------------- Class TDBXDBC -------------------------- */ @@ -1119,7 +1120,7 @@ TDBXDBC::TDBXDBC(PTDBXDBC tdbp) : TDBODBC(tdbp) } // end of TDBXDBC copy constructor PTDB TDBXDBC::Clone(PTABS t) - { +{ PTDB tp; PXSRCCOL cp1, cp2; PGLOBAL g = t->G; // Is this really useful ??? @@ -1129,29 +1130,29 @@ PTDB TDBXDBC::Clone(PTABS t) for (cp1 = (PXSRCCOL)Columns; cp1; cp1 = (PXSRCCOL)cp1->GetNext()) { cp2 = new(g) XSRCCOL(cp1, tp); // Make a copy NewPointer(t, cp1, cp2); - } // endfor cp1 + } // endfor cp1 return tp; - } // end of CopyOne +} // end of CopyOne /***********************************************************************/ /* Allocate XSRC column description block. */ /***********************************************************************/ PCOL TDBXDBC::MakeCol(PGLOBAL g, PCOLDEF cdp, PCOL cprec, int n) - { +{ PXSRCCOL colp = new(g) XSRCCOL(cdp, this, cprec, n); if (!colp->Flag) Cmdcol = colp->GetName(); return colp; - } // end of MakeCol +} // end of MakeCol /***********************************************************************/ /* MakeCMD: make the SQL statement to send to ODBC connection. */ /***********************************************************************/ PCMD TDBXDBC::MakeCMD(PGLOBAL g) - { +{ PCMD xcmd = NULL; if (To_CondFil) { @@ -1171,14 +1172,14 @@ PCMD TDBXDBC::MakeCMD(PGLOBAL g) xcmd = new(g) CMD(g, Srcdef); return xcmd; - } // end of MakeCMD +} // end of MakeCMD #if 0 /***********************************************************************/ /* ODBC Bind Parameter function. */ /***********************************************************************/ bool TDBXDBC::BindParameters(PGLOBAL g) - { +{ PODBCCOL colp; for (colp = (PODBCCOL)Columns; colp; colp = (PODBCCOL)colp->Next) { @@ -1190,19 +1191,19 @@ bool TDBXDBC::BindParameters(PGLOBAL g) } // endfor colp return false; - } // end of BindParameters +} // end of BindParameters #endif // 0 /***********************************************************************/ /* XDBC GetMaxSize: returns table size (not always one row). */ /***********************************************************************/ int TDBXDBC::GetMaxSize(PGLOBAL g) - { +{ if (MaxSize < 0) MaxSize = 10; // Just a guess return MaxSize; - } // end of GetMaxSize +} // end of GetMaxSize /***********************************************************************/ /* ODBC Access Method opening routine. */ @@ -1211,7 +1212,7 @@ int TDBXDBC::GetMaxSize(PGLOBAL g) /* join block of next table if it exists or else are discarted. */ /***********************************************************************/ bool TDBXDBC::OpenDB(PGLOBAL g) - { +{ bool rc = false; if (trace(1)) @@ -1221,7 +1222,7 @@ bool TDBXDBC::OpenDB(PGLOBAL g) if (Use == USE_OPEN) { strcpy(g->Message, "Multiple execution is not allowed"); return true; - } // endif use + } // endif use /*********************************************************************/ /* Open an ODBC connection for this table. */ @@ -1243,7 +1244,7 @@ bool TDBXDBC::OpenDB(PGLOBAL g) if (Mode != MODE_READ && Mode != MODE_READX) { strcpy(g->Message, "No INSERT/DELETE/UPDATE of XDBC tables"); return true; - } // endif Mode + } // endif Mode /*********************************************************************/ /* Get the command to execute. */ @@ -1256,13 +1257,13 @@ bool TDBXDBC::OpenDB(PGLOBAL g) Rows = 1; return false; - } // end of OpenDB +} // end of OpenDB /***********************************************************************/ /* ReadDB: Data Base read routine for xdbc access method. */ /***********************************************************************/ int TDBXDBC::ReadDB(PGLOBAL g) - { +{ if (Cmdlist) { if (!Query) Query = new(g)STRING(g, 0, Cmdlist->Cmd); @@ -1280,25 +1281,25 @@ int TDBXDBC::ReadDB(PGLOBAL g) return RC_EF; } // endif Cmdlist - } // end of ReadDB +} // end of ReadDB /***********************************************************************/ -/* Data Base delete line routine for ODBC access method. */ +/* Data Base write line routine for XDBC access method. */ /***********************************************************************/ int TDBXDBC::WriteDB(PGLOBAL g) - { +{ strcpy(g->Message, "Execsrc tables are read only"); return RC_FX; - } // end of DeleteDB +} // end of DeleteDB /***********************************************************************/ -/* Data Base delete line routine for ODBC access method. */ +/* Data Base delete line routine for XDBC access method. */ /***********************************************************************/ int TDBXDBC::DeleteDB(PGLOBAL g, int irc) - { +{ strcpy(g->Message, MSG(NO_ODBC_DELETE)); return RC_FX; - } // end of DeleteDB +} // end of DeleteDB /* --------------------------- XSRCCOL ------------------------------- */ @@ -1307,25 +1308,25 @@ int TDBXDBC::DeleteDB(PGLOBAL g, int irc) /***********************************************************************/ XSRCCOL::XSRCCOL(PCOLDEF cdp, PTDB tdbp, PCOL cprec, int i, PCSZ am) : ODBCCOL(cdp, tdbp, cprec, i, am) - { +{ // Set additional ODBC access method information for column. Flag = cdp->GetOffset(); - } // end of XSRCCOL constructor +} // end of XSRCCOL constructor /***********************************************************************/ /* XSRCCOL constructor used for copying columns. */ /* tdbp is the pointer to the new table descriptor. */ /***********************************************************************/ XSRCCOL::XSRCCOL(XSRCCOL *col1, PTDB tdbp) : ODBCCOL(col1, tdbp) - { +{ Flag = col1->Flag; - } // end of XSRCCOL copy constructor +} // end of XSRCCOL copy constructor /***********************************************************************/ /* ReadColumn: set column value according to Flag. */ /***********************************************************************/ void XSRCCOL::ReadColumn(PGLOBAL g) - { +{ PTDBXDBC tdbp = (PTDBXDBC)To_Tdb; switch (Flag) { @@ -1335,15 +1336,15 @@ void XSRCCOL::ReadColumn(PGLOBAL g) default: Value->SetValue_psz("Invalid Flag"); break; } // endswitch Flag - } // end of ReadColumn +} // end of ReadColumn /***********************************************************************/ /* WriteColumn: Should never be called. */ /***********************************************************************/ void XSRCCOL::WriteColumn(PGLOBAL g) - { +{ // Should never be called - } // end of WriteColumn +} // end of WriteColumn /* ---------------------------TDBDRV class --------------------------- */ @@ -1351,9 +1352,9 @@ void XSRCCOL::WriteColumn(PGLOBAL g) /* GetResult: Get the list of ODBC drivers. */ /***********************************************************************/ PQRYRES TDBDRV::GetResult(PGLOBAL g) - { +{ return ODBCDrivers(g, Maxres, false); - } // end of GetResult +} // end of GetResult /* ---------------------------TDBSRC class --------------------------- */ @@ -1361,9 +1362,9 @@ PQRYRES TDBDRV::GetResult(PGLOBAL g) /* GetResult: Get the list of ODBC data sources. */ /***********************************************************************/ PQRYRES TDBSRC::GetResult(PGLOBAL g) - { +{ return ODBCDataSources(g, Maxres, false); - } // end of GetResult +} // end of GetResult /* ---------------------------TDBOTB class --------------------------- */ @@ -1371,7 +1372,7 @@ PQRYRES TDBSRC::GetResult(PGLOBAL g) /* TDBOTB class constructor. */ /***********************************************************************/ TDBOTB::TDBOTB(PODEF tdp) : TDBDRV(tdp) - { +{ Dsn = tdp->GetConnect(); Schema = tdp->GetTabschema(); Tab = tdp->GetTabname(); @@ -1381,15 +1382,15 @@ TDBOTB::TDBOTB(PODEF tdp) : TDBDRV(tdp) Ops.Cto = tdp->Cto; Ops.Qto = tdp->Qto; Ops.UseCnc = tdp->UseCnc; - } // end of TDBOTB constructor +} // end of TDBOTB constructor /***********************************************************************/ /* GetResult: Get the list of ODBC tables. */ /***********************************************************************/ PQRYRES TDBOTB::GetResult(PGLOBAL g) - { +{ return ODBCTables(g, Dsn, Schema, Tab, Tabtyp, Maxres, false, &Ops); - } // end of GetResult +} // end of GetResult /* ---------------------------TDBOCL class --------------------------- */ @@ -1405,8 +1406,8 @@ TDBOCL::TDBOCL(PODEF tdp) : TDBOTB(tdp) /* GetResult: Get the list of ODBC table columns. */ /***********************************************************************/ PQRYRES TDBOCL::GetResult(PGLOBAL g) - { +{ return ODBCColumns(g, Dsn, Schema, Tab, Colpat, Maxres, false, &Ops); - } // end of GetResult +} // end of GetResult /* ------------------------ End of Tabodbc --------------------------- */ diff --git a/storage/connect/tabxml.cpp b/storage/connect/tabxml.cpp index c96e08444..d808bd5ec 100644 --- a/storage/connect/tabxml.cpp +++ b/storage/connect/tabxml.cpp @@ -163,8 +163,11 @@ PQRYRES XMLColumns(PGLOBAL g, char *db, char *tab, PTOS topt, bool info) return NULL; tdp->Tabname = tab; + tdp->Tabname = (char*)GetStringTableOption(g, topt, "Tabname", tab); + tdp->Rowname = (char*)GetStringTableOption(g, topt, "Rownode", NULL); tdp->Zipped = GetBooleanTableOption(g, topt, "Zipped", false); tdp->Entry = GetStringTableOption(g, topt, "Entry", NULL); + tdp->Skip = GetBooleanTableOption(g, topt, "Skipnull", false); if (!(op = GetStringTableOption(g, topt, "Xmlsup", NULL))) #if defined(__WIN__) @@ -280,7 +283,9 @@ PQRYRES XMLColumns(PGLOBAL g, char *db, char *tab, PTOS topt, bool info) if (!vp->atp) node = vp->nl->GetItem(g, vp->k++, tdp->Usedom ? node : NULL); - strncat(fmt, colname, XLEN(fmt)); + if (!j) + strncat(fmt, colname, XLEN(fmt)); + strncat(fmt, "/", XLEN(fmt)); strncat(xcol->Name, "_", XLEN(xcol->Name)); j++; @@ -302,6 +307,7 @@ PQRYRES XMLColumns(PGLOBAL g, char *db, char *tab, PTOS topt, bool info) case RC_INFO: PushWarning(g, txmp); case RC_OK: + xcol->Cbn = !strlen(buf); break; default: goto err; @@ -327,9 +333,9 @@ PQRYRES XMLColumns(PGLOBAL g, char *db, char *tab, PTOS topt, bool info) xcp->Len = MY_MAX(xcp->Len, xcol->Len); xcp->Scale = MY_MAX(xcp->Scale, xcol->Scale); - xcp->Cbn |= xcol->Cbn; + xcp->Cbn |= (xcol->Cbn || !xcol->Len); xcp->Found = true; - } else { + } else if(xcol->Len || !tdp->Skip) { // New column xcp = new(g) XMCOL(g, xcol, fmt, i); length[0] = MY_MAX(length[0], strlen(xcol->Name)); @@ -344,7 +350,8 @@ PQRYRES XMLColumns(PGLOBAL g, char *db, char *tab, PTOS topt, bool info) n++; } // endif xcp - pxcp = xcp; + if (xcp) + pxcp = xcp; if (vp->atp) vp->atp = vp->atp->GetNext(g); @@ -445,6 +452,7 @@ XMLDEF::XMLDEF(void) Usedom = false; Zipped = false; Mulentries = false; + Skip = false; } // end of XMLDEF constructor /***********************************************************************/ @@ -681,6 +689,14 @@ PTDB TDBXML::Clone(PTABS t) return tp; } // end of Clone +/***********************************************************************/ +/* Must not be in tabxml.h because of OEM tables */ +/***********************************************************************/ +const CHARSET_INFO *TDBXML::data_charset() +{ + return &my_charset_utf8_general_ci; +} // end of data_charset + /***********************************************************************/ /* Allocate XML column description block. */ /***********************************************************************/ @@ -806,127 +822,141 @@ bool TDBXML::Initialize(PGLOBAL g) } // endif Bufdone #if !defined(UNIX) - if (!Root) try { + if (!Root) try { #else - if (!Root) { + if (!Root) { #endif - char tabpath[64], filename[_MAX_PATH]; - - // We used the file name relative to recorded datapath - PlugSetPath(filename, Xfile, GetPath()); - - // Load or re-use the table file - rc = LoadTableFile(g, filename); - - if (rc == RC_OK) { - // Get root node - if (!(Root = Docp->GetRoot(g))) { - // This should never happen as load should have failed - strcpy(g->Message, MSG(EMPTY_DOC)); - goto error; - } // endif Root - - // If tabname is not an Xpath, - // construct one that will find it anywhere - if (!strchr(Tabname, '/')) - strcat(strcpy(tabpath, "//"), Tabname); - else - strcpy(tabpath, Tabname); - - // Evaluate table xpath - if ((TabNode = Root->SelectSingleNode(g, tabpath))) { - if (TabNode->GetType() != XML_ELEMENT_NODE) { - sprintf(g->Message, MSG(BAD_NODE_TYPE), TabNode->GetType()); - goto error; - } // endif Type - - } else if (Mode == MODE_INSERT && XmlDB) { - // We are adding a new table to a multi-table file - - // If XmlDB is not an Xpath, - // construct one that will find it anywhere - if (!strchr(XmlDB, '/')) - strcat(strcpy(tabpath, "//"), XmlDB); - else - strcpy(tabpath, XmlDB); - - if (!(DBnode = Root->SelectSingleNode(g, tabpath))) { - // DB node does not exist yet; we cannot create it - // because we don't know where it should be placed - sprintf(g->Message, MSG(MISSING_NODE), XmlDB, Xfile); - goto error; - } // endif DBnode - - if (!(TabNode = DBnode->AddChildNode(g, Tabname))) { - sprintf(g->Message, MSG(FAIL_ADD_NODE), Tabname); - goto error; - } // endif TabNode - - DBnode->AddText(g, "\n"); - } else - TabNode = Root; // Try this ? - - } else if (rc == RC_NF || rc == RC_EF) { - // The XML file does not exist or is void - if (Mode == MODE_INSERT) { - // New Document - char buf[64]; - - // Create the XML node - if (Docp->NewDoc(g, "1.0")) { - strcpy(g->Message, MSG(NEW_DOC_FAILED)); - goto error; - } // endif NewDoc - - // Now we can link the Xblock - To_Xb = Docp->LinkXblock(g, Mode, rc, filename); - - // Add a CONNECT comment node - strcpy(buf, " Created by the MariaDB CONNECT Storage Engine"); - Docp->AddComment(g, buf); - - if (XmlDB) { - // This is a multi-table file - DBnode = Root = Docp->NewRoot(g, XmlDB); - DBnode->AddText(g, "\n"); - TabNode = DBnode->AddChildNode(g, Tabname); - DBnode->AddText(g, "\n"); - } else - TabNode = Root = Docp->NewRoot(g, Tabname); - - if (TabNode == NULL || Root == NULL) { - strcpy(g->Message, MSG(XML_INIT_ERROR)); - goto error; - } else if (SetTabNode(g)) - goto error; - - } else { - sprintf(g->Message, MSG(FILE_UNFOUND), Xfile); - - if (Mode == MODE_READ) { - PushWarning(g, this); - Void = true; - } // endif Mode - - goto error; - } // endif Mode - - } else if (rc == RC_INFO) { - // Loading failed - sprintf(g->Message, MSG(LOADING_FAILED), Xfile); - goto error; - } else // (rc == RC_FX) - goto error; - - // Get row node list - if (Rowname) - Nlist = TabNode->SelectNodes(g, Rowname); - else - Nlist = TabNode->GetChildElements(g); - - Docp->SetNofree(true); // For libxml2 + char tabpath[64], filename[_MAX_PATH]; + + // We used the file name relative to recorded datapath + PlugSetPath(filename, Xfile, GetPath()); + + // Load or re-use the table file + rc = LoadTableFile(g, filename); + + if (rc == RC_OK) { + // Get root node + if (!(Root = Docp->GetRoot(g))) { + // This should never happen as load should have failed + strcpy(g->Message, MSG(EMPTY_DOC)); + goto error; + } // endif Root + + // If tabname is not an Xpath, + // construct one that will find it anywhere + if (!strchr(Tabname, '/')) + strcat(strcpy(tabpath, "//"), Tabname); + else + strcpy(tabpath, Tabname); + + // Evaluate table xpath + if ((TabNode = Root->SelectSingleNode(g, tabpath))) { + if (TabNode->GetType() != XML_ELEMENT_NODE) { + sprintf(g->Message, MSG(BAD_NODE_TYPE), TabNode->GetType()); + goto error; + } // endif Type + + } else if (Mode == MODE_INSERT && XmlDB) { + // We are adding a new table to a multi-table file + + // If XmlDB is not an Xpath, + // construct one that will find it anywhere + if (!strchr(XmlDB, '/')) + strcat(strcpy(tabpath, "//"), XmlDB); + else + strcpy(tabpath, XmlDB); + + if (!(DBnode = Root->SelectSingleNode(g, tabpath))) { + // DB node does not exist yet; we cannot create it + // because we don't know where it should be placed + sprintf(g->Message, MSG(MISSING_NODE), XmlDB, Xfile); + goto error; + } // endif DBnode + + if (!(TabNode = DBnode->AddChildNode(g, Tabname))) { + sprintf(g->Message, MSG(FAIL_ADD_NODE), Tabname); + goto error; + } // endif TabNode + + DBnode->AddText(g, "\n"); + } else { + TabNode = Root; // Try this ? + Tabname = TabNode->GetName(g); + } // endif's + + } else if (rc == RC_NF || rc == RC_EF) { + // The XML file does not exist or is void + if (Mode == MODE_INSERT) { + // New Document + char buf[64]; + + // Create the XML node + if (Docp->NewDoc(g, "1.0")) { + strcpy(g->Message, MSG(NEW_DOC_FAILED)); + goto error; + } // endif NewDoc + + // Now we can link the Xblock + To_Xb = Docp->LinkXblock(g, Mode, rc, filename); + + // Add a CONNECT comment node + strcpy(buf, " Created by the MariaDB CONNECT Storage Engine"); + Docp->AddComment(g, buf); + + if (XmlDB) { + // This is a multi-table file + DBnode = Root = Docp->NewRoot(g, XmlDB); + DBnode->AddText(g, "\n"); + TabNode = DBnode->AddChildNode(g, Tabname); + DBnode->AddText(g, "\n"); + } else + TabNode = Root = Docp->NewRoot(g, Tabname); + + if (TabNode == NULL || Root == NULL) { + strcpy(g->Message, MSG(XML_INIT_ERROR)); + goto error; + } else if (SetTabNode(g)) + goto error; + + } else { + sprintf(g->Message, MSG(FILE_UNFOUND), Xfile); + + if (Mode == MODE_READ) { + PushWarning(g, this); + Void = true; + } // endif Mode + + goto error; + } // endif Mode + + } else if (rc == RC_INFO) { + // Loading failed + sprintf(g->Message, MSG(LOADING_FAILED), Xfile); + goto error; + } else // (rc == RC_FX) + goto error; + + if (!Rowname) { + for (PXNODE n = TabNode->GetChild(g); n; n = n->GetNext(g)) + if (n->GetType() == XML_ELEMENT_NODE) { + Rowname = n->GetName(g); + break; + } // endif Type + + if (!Rowname) + Rowname = TabNode->GetName(g); + } // endif Rowname + + // Get row node list + if (strcmp(Rowname, Tabname)) + Nlist = TabNode->SelectNodes(g, Rowname); + else + Nrow = 1; + + + Docp->SetNofree(true); // For libxml2 #if defined(__WIN__) - } catch(_com_error e) { + } catch (_com_error e) { // We come here if a DOM command threw an error char buf[128]; @@ -1213,10 +1243,14 @@ int TDBXML::ReadDB(PGLOBAL g) htrc("TDBXML ReadDB: Irow=%d RowNode=%p\n", Irow, RowNode); // Get the new row node - if ((RowNode = Nlist->GetItem(g, Irow, RowNode)) == NULL) { - sprintf(g->Message, MSG(MISSING_ROWNODE), Irow); - return RC_FX; - } // endif RowNode + if (Nlist) { + if ((RowNode = Nlist->GetItem(g, Irow, RowNode)) == NULL) { + sprintf(g->Message, MSG(MISSING_ROWNODE), Irow); + return RC_FX; + } // endif RowNode + + } else + RowNode = TabNode; if (Colname && Coltype == 2) Clist = RowNode->SelectNodes(g, Colname, Clist); @@ -1271,6 +1305,7 @@ int TDBXML::WriteDB(PGLOBAL g) /***********************************************************************/ int TDBXML::DeleteDB(PGLOBAL g, int irc) { + // TODO: Handle null Nlist if (irc == RC_FX) { // Delete all rows for (Irow = 0; Irow < Nrow; Irow++) @@ -2209,8 +2244,9 @@ void XPOSCOL::WriteColumn(PGLOBAL g) TDBXCT::TDBXCT(PXMLDEF tdp) : TDBCAT(tdp) { Topt = tdp->GetTopt(); - Db = (char*)tdp->GetDB(); - Tabn = tdp->Tabname; + //Db = (char*)tdp->GetDB(); + Db = (char*)tdp->Schema; + Tabn = tdp->Tabname; } // end of TDBXCT constructor /***********************************************************************/ diff --git a/storage/connect/tabxml.h b/storage/connect/tabxml.h index f55b7d98d..fb3913f08 100644 --- a/storage/connect/tabxml.h +++ b/storage/connect/tabxml.h @@ -9,6 +9,8 @@ typedef class XMLDEF *PXMLDEF; typedef class TDBXML *PTDBXML; typedef class XMLCOL *PXMLCOL; +DllExport PQRYRES XMLColumns(PGLOBAL, char *, char *, PTOS, bool); + /* --------------------------- XML classes --------------------------- */ /***********************************************************************/ @@ -50,6 +52,7 @@ class DllExport XMLDEF : public TABDEF { /* Logical table description */ bool Usedom; /* True: DOM, False: libxml2 */ bool Zipped; /* True: Zipped XML file(s) */ bool Mulentries; /* True: multiple entries in zip file*/ + bool Skip; /* Skip null columns */ }; // end of XMLDEF #if defined(INCLUDE_TDBXML) @@ -100,8 +103,7 @@ class DllExport TDBXML : public TDBASE { virtual int DeleteDB(PGLOBAL g, int irc); virtual void CloseDB(PGLOBAL g); virtual int CheckWrite(PGLOBAL g) {Checked = true; return 0;} - virtual const CHARSET_INFO *data_charset() - {return &my_charset_utf8_general_ci;} + virtual const CHARSET_INFO *data_charset(); protected: // Members diff --git a/storage/connect/user_connect.cc b/storage/connect/user_connect.cc index e2d3b664a..a2a8faf9b 100644 --- a/storage/connect/user_connect.cc +++ b/storage/connect/user_connect.cc @@ -107,7 +107,7 @@ bool user_connect::user_init() g= PlugInit(NULL, worksize); // Check whether the initialization is complete - if (!g || !g->Sarea || PlugSubSet(g, g->Sarea, g->Sarea_Size) + if (!g || !g->Sarea || PlugSubSet(g->Sarea, g->Sarea_Size) || !(dup= PlgMakeUser(g))) { if (g) printf("%s\n", g->Message); @@ -172,7 +172,7 @@ bool user_connect::CheckCleanup(bool force) } // endif worksize - PlugSubSet(g, g->Sarea, g->Sarea_Size); + PlugSubSet(g->Sarea, g->Sarea_Size); g->Xchk = NULL; g->Createas = 0; g->Alchecked = 0; diff --git a/storage/innobase/buf/buf0buf.cc b/storage/innobase/buf/buf0buf.cc index c628147fc..621433c1c 100644 --- a/storage/innobase/buf/buf0buf.cc +++ b/storage/innobase/buf/buf0buf.cc @@ -2,7 +2,7 @@ Copyright (c) 1995, 2016, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2008, Google Inc. -Copyright (c) 2013, 2018, MariaDB Corporation. +Copyright (c) 2013, 2019, MariaDB Corporation. Portions of this file contain modifications contributed and copyrighted by Google, Inc. Those modifications are gratefully acknowledged and are described @@ -451,9 +451,18 @@ static bool buf_page_decrypt_after_read(buf_page_t* bpage, fil_space_t* space) /* Verify encryption checksum before we even try to decrypt. */ if (!fil_space_verify_crypt_checksum( - dst_frame, buf_page_get_zip_size(bpage), NULL, - bpage->offset)) { + dst_frame, buf_page_get_zip_size(bpage))) { + decrypt_failed: + ib_logf(IB_LOG_LEVEL_ERROR, + "Encrypted page %u:%u in file %s" + " looks corrupted; key_version=" ULINTPF, + bpage->space, bpage->offset, + space->chain.start->name, + mach_read_from_4( + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION + + dst_frame)); + /* Mark page encrypted in case it should be. */ if (space->crypt_data->type != CRYPT_SCHEME_UNENCRYPTED) { @@ -667,24 +676,6 @@ buf_block_alloc( #endif /* !UNIV_HOTBACKUP */ #endif /* !UNIV_INNOCHECKSUM */ -/** Check if a page is all zeroes. -@param[in] read_buf database page -@param[in] zip_size ROW_FORMAT=COMPRESSED page size, or 0 -@return whether the page is all zeroes */ -UNIV_INTERN -bool -buf_page_is_zeroes(const byte* read_buf, ulint zip_size) -{ - const ulint page_size = zip_size ? zip_size : UNIV_PAGE_SIZE; - - for (ulint i = 0; i < page_size; i++) { - if (read_buf[i] != 0) { - return(false); - } - } - return(true); -} - /** Checks if the page is in crc32 checksum format. @param[in] read_buf database page @param[in] checksum_field1 new checksum field @@ -865,16 +856,16 @@ buf_page_is_corrupted( DBUG_EXECUTE_IF("buf_page_import_corrupt_failure", return(TRUE); ); ulint checksum_field1 = 0; ulint checksum_field2 = 0; -#ifndef UNIV_INNOCHECKSUM - ulint space_id = mach_read_from_4(read_buf + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID); -#endif + bool crc32_inited = false; + ib_uint32_t crc32 = ULINT32_UNDEFINED; + ulint page_type = mach_read_from_2(read_buf + FIL_PAGE_TYPE); /* We can trust page type if page compression is set on tablespace flags because page compression flag means file must have been created with 10.1 (later than 5.5 code base). In 10.1 page compressed tables do not contain post compression checksum and - FIL_PAGE_END_LSN_OLD_CHKSUM field stored. Note that space can + FIL_PAGE_END_LSN_OLD_CHKSUM field stored. Note that space can be null if we are in fil_check_first_page() and first page is not compressed or encrypted. Page checksum is verified after decompression (i.e. normally pages are already @@ -895,12 +886,6 @@ buf_page_is_corrupted( /* Stored log sequence numbers at the start and the end of page do not match */ -#ifndef UNIV_INNOCHECKSUM - ib_logf(IB_LOG_LEVEL_INFO, - "Log sequence number at the start " ULINTPF " and the end " ULINTPF " do not match.", - mach_read_from_4(read_buf + FIL_PAGE_LSN + 4), - mach_read_from_4(read_buf + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM + 4)); -#endif /* UNIV_INNOCHECKSUM */ return(true); } @@ -940,12 +925,15 @@ buf_page_is_corrupted( /* Check whether the checksum fields have correct values */ - if (srv_checksum_algorithm == SRV_CHECKSUM_ALGORITHM_NONE) { + const srv_checksum_algorithm_t curr_algo = + static_cast(srv_checksum_algorithm); + + if (curr_algo == SRV_CHECKSUM_ALGORITHM_NONE) { return(false); } if (zip_size) { - return(!page_zip_verify_checksum((const void *)read_buf, zip_size)); + return(!page_zip_verify_checksum(read_buf, zip_size)); } checksum_field1 = mach_read_from_4( @@ -965,10 +953,6 @@ buf_page_is_corrupted( /* make sure that the page is really empty */ for (ulint i = 0; i < UNIV_PAGE_SIZE; i++) { if (read_buf[i] != 0) { -#ifndef UNIV_INNOCHECKSUM - ib_logf(IB_LOG_LEVEL_INFO, - "Checksum fields zero but page is not empty."); -#endif return(true); } } @@ -976,191 +960,124 @@ buf_page_is_corrupted( return(false); } -#ifndef UNIV_INNOCHECKSUM - ulint page_no = mach_read_from_4(read_buf + FIL_PAGE_OFFSET); -#endif - - const srv_checksum_algorithm_t curr_algo = - static_cast(srv_checksum_algorithm); - switch (curr_algo) { - case SRV_CHECKSUM_ALGORITHM_CRC32: case SRV_CHECKSUM_ALGORITHM_STRICT_CRC32: + return !buf_page_is_checksum_valid_crc32( + read_buf, checksum_field1, checksum_field2); - if (buf_page_is_checksum_valid_crc32(read_buf, - checksum_field1, checksum_field2)) { - return(false); - } + case SRV_CHECKSUM_ALGORITHM_STRICT_INNODB: + return !buf_page_is_checksum_valid_innodb( + read_buf, checksum_field1, checksum_field2); + case SRV_CHECKSUM_ALGORITHM_STRICT_NONE: + return !buf_page_is_checksum_valid_none( + read_buf, checksum_field1, checksum_field2); + case SRV_CHECKSUM_ALGORITHM_CRC32: + case SRV_CHECKSUM_ALGORITHM_INNODB: + /* Very old versions of InnoDB only stored 8 byte lsn to the + start and the end of the page. */ - if (buf_page_is_checksum_valid_none(read_buf, - checksum_field1, checksum_field2)) { - if (curr_algo - == SRV_CHECKSUM_ALGORITHM_STRICT_CRC32) { -#ifndef UNIV_INNOCHECKSUM - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_NONE, - space_id, page_no); -#endif /* !UNIV_INNOCHECKSUM */ - } + /* Since innodb_checksum_algorithm is not strict_* allow + any of the algos to match for the old field */ -#ifdef UNIV_INNOCHECKSUM - if (log_file) { - fprintf(log_file, "page::%llu;" - " old style: calculated = " ULINTPF ";" - " recorded = " ULINTPF "\n", - cur_page_num, - buf_calc_page_old_checksum(read_buf), - checksum_field2); - fprintf(log_file, "page::%llu;" - " new style: calculated = " ULINTPF ";" - " crc32 = %u; recorded = " ULINTPF "\n", - cur_page_num, - buf_calc_page_new_checksum(read_buf), - buf_calc_page_crc32(read_buf), - checksum_field1); - } -#endif /* UNIV_INNOCHECKSUM */ + if (checksum_field2 + != mach_read_from_4(read_buf + FIL_PAGE_LSN) + && checksum_field2 != BUF_NO_CHECKSUM_MAGIC) { - return(false); - } + /* The checksum does not match any of the + fast to check. First check the selected algorithm + for writing checksums because we assume that the + chance of it matching is higher. */ - if (buf_page_is_checksum_valid_innodb(read_buf, - checksum_field1, checksum_field2)) { - if (curr_algo - == SRV_CHECKSUM_ALGORITHM_STRICT_CRC32) { -#ifndef UNIV_INNOCHECKSUM - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_INNODB, - space_id, page_no); -#endif - } + if (curr_algo == SRV_CHECKSUM_ALGORITHM_CRC32) { + crc32 = buf_calc_page_crc32(read_buf); + crc32_inited = true; - return(false); - } + if (checksum_field2 != crc32 + && checksum_field2 + != buf_calc_page_old_checksum(read_buf)) { + return true; + } + } else { + ut_ad(curr_algo + == SRV_CHECKSUM_ALGORITHM_INNODB); -#ifdef UNIV_INNOCHECKSUM - if (log_file) { - fprintf(log_file, "Fail; page::%llu;" - " invalid (fails crc32 checksum)\n", - cur_page_num); - } -#endif /* UNIV_INNOCHECKSUM */ - return(true); + if (checksum_field2 + != buf_calc_page_old_checksum(read_buf)) { - case SRV_CHECKSUM_ALGORITHM_INNODB: - case SRV_CHECKSUM_ALGORITHM_STRICT_INNODB: + crc32 = buf_calc_page_crc32(read_buf); + crc32_inited = true; - if (buf_page_is_checksum_valid_innodb(read_buf, - checksum_field1, checksum_field2)) { - return(false); + if (checksum_field2 != crc32) { + return true; + } + } + } } - if (buf_page_is_checksum_valid_none(read_buf, - checksum_field1, checksum_field2)) { - if (curr_algo - == SRV_CHECKSUM_ALGORITHM_STRICT_INNODB) { -#ifndef UNIV_INNOCHECKSUM - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_NONE, - space_id, page_no); -#endif - } -#ifdef UNIV_INNOCHECKSUM - if (log_file) { - fprintf(log_file, "page::%llu;" - " old style: calculated = " ULINTPF ";" - " recorded = " ULINTPF "\n", cur_page_num, - buf_calc_page_old_checksum(read_buf), - checksum_field2); - fprintf(log_file, "page::%llu;" - " new style: calculated = " ULINTPF ";" - " crc32 = %u; recorded = " ULINTPF "\n", - cur_page_num, - buf_calc_page_new_checksum(read_buf), - buf_calc_page_crc32(read_buf), - checksum_field1); - } -#endif /* UNIV_INNOCHECKSUM */ + /* old field is fine, check the new field */ - return(false); - } + /* InnoDB versions < 4.0.14 and < 4.1.1 stored the space id + (always equal to 0), to FIL_PAGE_SPACE_OR_CHKSUM */ - if (buf_page_is_checksum_valid_crc32(read_buf, - checksum_field1, checksum_field2)) { - if (curr_algo - == SRV_CHECKSUM_ALGORITHM_STRICT_INNODB) { -#ifndef UNIV_INNOCHECKSUM - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_CRC32, - space_id, page_no); -#endif - } + if (checksum_field1 != 0 + && checksum_field1 != BUF_NO_CHECKSUM_MAGIC) { - return(false); - } + /* The checksum does not match any of the + fast to check. First check the selected algorithm + for writing checksums because we assume that the + chance of it matching is higher. */ -#ifdef UNIV_INNOCHECKSUM - if (log_file) { - fprintf(log_file, "Fail; page::%llu;" - " invalid (fails innodb checksum)\n", - cur_page_num); - } -#endif /* UNIV_INNOCHECKSUM */ + if (curr_algo == SRV_CHECKSUM_ALGORITHM_CRC32) { - return(true); + if (!crc32_inited) { + crc32 = buf_calc_page_crc32(read_buf); + crc32_inited = true; + } - case SRV_CHECKSUM_ALGORITHM_STRICT_NONE: + if (checksum_field1 != crc32 + && checksum_field1 + != buf_calc_page_new_checksum(read_buf)) { + return true; + } + } else { + ut_ad(curr_algo + == SRV_CHECKSUM_ALGORITHM_INNODB); - if (buf_page_is_checksum_valid_none(read_buf, - checksum_field1, checksum_field2)) { - return(false); - } + if (checksum_field1 + != buf_calc_page_new_checksum(read_buf)) { - if (buf_page_is_checksum_valid_crc32(read_buf, - checksum_field1, checksum_field2)) { -#ifndef UNIV_INNOCHECKSUM - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_CRC32, - space_id, page_no); -#endif - return(false); - } + if (!crc32_inited) { + crc32 = buf_calc_page_crc32( + read_buf); + crc32_inited = true; + } - if (buf_page_is_checksum_valid_innodb(read_buf, - checksum_field1, checksum_field2)) { -#ifndef UNIV_INNOCHECKSUM - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_INNODB, - space_id, page_no); -#endif - return(false); + if (checksum_field1 != crc32) { + return true; + } + } + } } -#ifdef UNIV_INNOCHECKSUM - if (log_file) { - fprintf(log_file, "Fail; page::%llu;" - " invalid (fails none checksum)\n", - cur_page_num); + /* If CRC32 is stored in at least one of the fields then the + other field must also be CRC32 */ + if (crc32_inited + && ((checksum_field1 == crc32 + && checksum_field2 != crc32) + || (checksum_field1 != crc32 + && checksum_field2 == crc32))) { + return true; } -#endif /* UNIV_INNOCHECKSUM */ - - return(true); + break; case SRV_CHECKSUM_ALGORITHM_NONE: /* should have returned FALSE earlier */ - break; + ut_error; /* no default so the compiler will emit a warning if new enum is added and not handled here */ } - ut_error; - return(false); + return false; } #ifndef UNIV_INNOCHECKSUM @@ -4823,19 +4740,15 @@ or decrypt/decompress just failed. @retval DB_DECRYPTION_FAILED if page post encryption checksum matches but after decryption normal page checksum does not match. @retval DB_TABLESPACE_DELETED if accessed tablespace is not found */ -static -dberr_t -buf_page_check_corrupt(buf_page_t* bpage, fil_space_t* space) +static dberr_t buf_page_check_corrupt(buf_page_t* bpage, fil_space_t* space) { ut_ad(space->n_pending_ios > 0); ulint zip_size = buf_page_get_zip_size(bpage); byte* dst_frame = (zip_size) ? bpage->zip.data : ((buf_block_t*) bpage)->frame; - bool still_encrypted = false; dberr_t err = DB_SUCCESS; bool corrupted = false; - fil_space_crypt_t* crypt_data = space->crypt_data; /* In buf_decrypt_after_read we have either decrypted the page if page post encryption checksum matches and used key_id is found @@ -4843,18 +4756,18 @@ buf_page_check_corrupt(buf_page_t* bpage, fil_space_t* space) not decrypted and it could be either encrypted and corrupted or corrupted or good page. If we decrypted, there page could still be corrupted if used key does not match. */ - still_encrypted = (crypt_data && - crypt_data->type != CRYPT_SCHEME_UNENCRYPTED && - !bpage->encrypted && - fil_space_verify_crypt_checksum(dst_frame, zip_size, - space, bpage->offset)); + const bool still_encrypted = mach_read_from_4( + dst_frame + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION) + && space->crypt_data + && space->crypt_data->type != CRYPT_SCHEME_UNENCRYPTED + && !bpage->encrypted + && fil_space_verify_crypt_checksum(dst_frame, zip_size); if (!still_encrypted) { /* If traditional checksums match, we assume that page is not anymore encrypted. */ corrupted = buf_page_is_corrupted(true, dst_frame, zip_size, space); - if (!corrupted) { bpage->encrypted = false; } else { diff --git a/storage/innobase/buf/buf0dblwr.cc b/storage/innobase/buf/buf0dblwr.cc index 5f126ebb2..2046d8736 100644 --- a/storage/innobase/buf/buf0dblwr.cc +++ b/storage/innobase/buf/buf0dblwr.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2013, 2017, MariaDB Corporation. +Copyright (c) 2013, 2018, MariaDB Corporation. 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 the Free Software @@ -362,6 +362,22 @@ buf_dblwr_create() goto start_again; } +/** Check if a page is all zeroes. +@param[in] read_buf database page +@param[in] zip_size ROW_FORMAT=COMPRESSED page size, or 0 +@return whether the page is all zeroes */ +static bool buf_page_is_zeroes(const byte* read_buf, ulint zip_size) +{ + const ulint page_size = zip_size ? zip_size : UNIV_PAGE_SIZE; + + for (ulint i = 0; i < page_size; i++) { + if (read_buf[i] != 0) { + return false; + } + } + return true; +} + /****************************************************************//** At a database startup initializes the doublewrite buffer memory structure if we already have a doublewrite buffer created in the data files. If we are @@ -556,6 +572,9 @@ buf_dblwr_process() const bool is_all_zero = buf_page_is_zeroes( read_buf, zip_size); + const bool expect_encrypted = space()->crypt_data + && space()->crypt_data->type + != CRYPT_SCHEME_UNENCRYPTED; if (is_all_zero) { /* We will check if the copy in the @@ -570,10 +589,13 @@ buf_dblwr_process() goto bad; } - if (fil_space_verify_crypt_checksum( - read_buf, zip_size, NULL, page_no) - || !buf_page_is_corrupted( - true, read_buf, zip_size, space())) { + if (expect_encrypted && mach_read_from_4( + read_buf + + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION) + ? fil_space_verify_crypt_checksum(read_buf, + zip_size) + : !buf_page_is_corrupted(true, read_buf, + zip_size, space())) { /* The page is good; there is no need to consult the doublewrite buffer. */ continue; @@ -592,9 +614,11 @@ buf_dblwr_process() if (!decomp || (decomp != srv_page_size && zip_size)) { goto bad_doublewrite; } - if (!fil_space_verify_crypt_checksum(page, zip_size, NULL, - page_no) - && buf_page_is_corrupted(true, page, zip_size, space)) { + + if (expect_encrypted && mach_read_from_4( + page + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION) + ? !fil_space_verify_crypt_checksum(page, zip_size) + : buf_page_is_corrupted(true, page, zip_size, space())) { if (!is_all_zero) { bad_doublewrite: ib_logf(IB_LOG_LEVEL_WARN, diff --git a/storage/innobase/dict/dict0dict.cc b/storage/innobase/dict/dict0dict.cc index bbb07e883..2a37db4e0 100644 --- a/storage/innobase/dict/dict0dict.cc +++ b/storage/innobase/dict/dict0dict.cc @@ -1,8 +1,8 @@ /***************************************************************************** -Copyright (c) 1996, 2018, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2012, Facebook Inc. -Copyright (c) 2013, 2018, MariaDB Corporation. +Copyright (c) 2013, 2019, MariaDB Corporation. 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 the Free Software @@ -3381,10 +3381,7 @@ dict_foreign_find_index( table, col_names, columns, n_cols, index, types_idx, check_charsets, check_null, - error, err_col_no,err_index) - && (!(index->online_status == - ONLINE_INDEX_ABORTED_DROPPED - ||index->online_status == ONLINE_INDEX_ABORTED))) { + error, err_col_no,err_index)) { if (error) { *error = DB_SUCCESS; } @@ -7253,30 +7250,14 @@ UNIV_INTERN ulint dict_sys_get_size() { - ulint size = 0; - - ut_ad(dict_sys); - - mutex_enter(&dict_sys->mutex); - - for(ulint i = 0; i < hash_get_n_cells(dict_sys->table_hash); i++) { - dict_table_t* table; - - for (table = static_cast(HASH_GET_FIRST(dict_sys->table_hash,i)); - table != NULL; - table = static_cast(HASH_GET_NEXT(name_hash, table))) { - dict_index_t* index; - size += mem_heap_get_size(table->heap) + strlen(table->name) +1; - - for(index = dict_table_get_first_index(table); - index != NULL; - index = dict_table_get_next_index(index)) { - size += mem_heap_get_size(index->heap); - } - } - } - - mutex_exit(&dict_sys->mutex); - - return (size); + /* No mutex; this is a very crude approximation anyway */ + ulint size = UT_LIST_GET_LEN(dict_sys->table_LRU) + + UT_LIST_GET_LEN(dict_sys->table_non_LRU); + size *= sizeof(dict_table_t) + + sizeof(dict_index_t) * 2 + + (sizeof(dict_col_t) + sizeof(dict_field_t)) * 10 + + sizeof(dict_field_t) * 5 /* total number of key fields */ + + 200; /* arbitrary, covering names and overhead */ + + return size; } diff --git a/storage/innobase/dict/dict0mem.cc b/storage/innobase/dict/dict0mem.cc index dd8155c09..c67e58162 100644 --- a/storage/innobase/dict/dict0mem.cc +++ b/storage/innobase/dict/dict0mem.cc @@ -498,9 +498,7 @@ dict_mem_table_col_rename( s += len + 1; } - /* This could fail if the data dictionaries are out of sync. - Proceed with the renaming anyway. */ - ut_ad(!strcmp(from, s)); + ut_ad(!my_strcasecmp(system_charset_info, from, s)); dict_mem_table_col_rename_low(table, nth_col, to, s); } diff --git a/storage/innobase/fil/fil0crypt.cc b/storage/innobase/fil/fil0crypt.cc index 7859fe67d..fb84b5703 100644 --- a/storage/innobase/fil/fil0crypt.cc +++ b/storage/innobase/fil/fil0crypt.cc @@ -529,10 +529,12 @@ fil_parse_write_crypt_data( uint len = mach_read_from_1(ptr); ptr += 1; - ut_a(type == CRYPT_SCHEME_UNENCRYPTED || - type == CRYPT_SCHEME_1); // only supported + if ((type != CRYPT_SCHEME_1 && type != CRYPT_SCHEME_UNENCRYPTED) + || len != CRYPT_SCHEME_1_IV_LEN) { + *err = DB_CORRUPTION; + return NULL; + } - ut_a(len == CRYPT_SCHEME_1_IV_LEN); // only supported uint min_key_version = mach_read_from_4(ptr); ptr += 4; @@ -551,6 +553,7 @@ fil_parse_write_crypt_data( crypt_data->page0_offset = offset; crypt_data->min_key_version = min_key_version; crypt_data->encryption = encryption; + crypt_data->type = type; memcpy(crypt_data->iv, ptr, len); ptr += len; @@ -662,7 +665,7 @@ fil_encrypt_buf( // store the post-encryption checksum after the key-version mach_write_to_4(dst_frame + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION + 4, checksum); - ut_ad(fil_space_verify_crypt_checksum(dst_frame, zip_size, NULL, offset)); + ut_ad(fil_space_verify_crypt_checksum(dst_frame, zip_size)); srv_stats.pages_encrypted.inc(); @@ -2413,7 +2416,8 @@ void fil_space_crypt_close_tablespace( const fil_space_t* space) { - if (!srv_encrypt_tables || !space->crypt_data) { + if (!srv_encrypt_tables || !space->crypt_data + || srv_n_fil_crypt_threads == 0) { return; } @@ -2568,146 +2572,64 @@ encrypted, or corrupted. @param[in] page Page to verify @param[in] zip_size zip size -@param[in] space Tablespace -@param[in] pageno Page no -@return true if page is encrypted AND OK, false otherwise */ +@return whether the encrypted page is OK */ UNIV_INTERN -bool -fil_space_verify_crypt_checksum( - byte* page, - ulint zip_size, -#ifndef UNIV_INNOCHECKSUM - const fil_space_t* space, -#else - const void* space, -#endif - ulint pageno) +bool fil_space_verify_crypt_checksum(const byte* page, ulint zip_size) { - uint key_version = mach_read_from_4(page+ FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION); - - /* If page is not encrypted, return false */ - if (key_version == 0) { - return(false); - } - - srv_checksum_algorithm_t algorithm = - static_cast(srv_checksum_algorithm); - - /* If no checksum is used, can't continue checking. */ - if (algorithm == SRV_CHECKSUM_ALGORITHM_NONE) { - return(true); - } - - /* Read stored post encryption checksum. */ - ib_uint32_t checksum = mach_read_from_4( - page + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION + 4); - - /* Declare empty pages non-corrupted */ - if (checksum == 0 - && *reinterpret_cast(page + FIL_PAGE_LSN) == 0 - && buf_page_is_zeroes(page, zip_size)) { - return(true); - } + ut_ad(mach_read_from_4(page + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION)); /* Compressed and encrypted pages do not have checksum. Assume not corrupted. Page verification happens after decompression in buf_page_io_complete() using buf_page_is_corrupted(). */ - if (mach_read_from_2(page+FIL_PAGE_TYPE) == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) { - return (true); + if (mach_read_from_2(page + FIL_PAGE_TYPE) + == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) { + return true; } - ib_uint32_t cchecksum1 = 0; - ib_uint32_t cchecksum2 = 0; - - /* Calculate checksums */ - if (zip_size) { - cchecksum1 = page_zip_calc_checksum( - page, zip_size, SRV_CHECKSUM_ALGORITHM_CRC32); - - cchecksum2 = (cchecksum1 == checksum) - ? 0 - : page_zip_calc_checksum( - page, zip_size, - SRV_CHECKSUM_ALGORITHM_INNODB); - } else { - cchecksum1 = buf_calc_page_crc32(page); - cchecksum2 = (cchecksum1 == checksum) - ? 0 - : buf_calc_page_new_checksum(page); - } + /* Read stored post encryption checksum. */ + const ib_uint32_t checksum = mach_read_from_4( + page + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION + 4); /* If stored checksum matches one of the calculated checksums page is not corrupted. */ - bool encrypted = (checksum == cchecksum1 || checksum == cchecksum2 - || checksum == BUF_NO_CHECKSUM_MAGIC); - - /* MySQL 5.6 and MariaDB 10.0 and 10.1 will write an LSN to the - first page of each system tablespace file at - FIL_PAGE_FILE_FLUSH_LSN offset. On other pages and in other files, - the field might have been uninitialized until MySQL 5.5. In MySQL 5.7 - (and MariaDB Server 10.2.2) WL#7990 stopped writing the field for other - than page 0 of the system tablespace. - - Starting from MariaDB 10.1 the field has been repurposed for - encryption key_version. - - Starting with MySQL 5.7 (and MariaDB Server 10.2), the - field has been repurposed for SPATIAL INDEX pages for - FIL_RTREE_SPLIT_SEQ_NUM. - - Note that FIL_PAGE_FILE_FLUSH_LSN is not included in the InnoDB page - checksum. - - Thus, FIL_PAGE_FILE_FLUSH_LSN could contain any value. While the - field would usually be 0 for pages that are not encrypted, we cannot - assume that a nonzero value means that the page is encrypted. - Therefore we must validate the page both as encrypted and unencrypted - when FIL_PAGE_FILE_FLUSH_LSN does not contain 0. - */ - - uint32_t checksum1 = mach_read_from_4(page + FIL_PAGE_SPACE_OR_CHKSUM); - uint32_t checksum2; - - bool valid; - - if (zip_size) { - valid = (checksum1 == cchecksum1); - checksum2 = checksum1; - } else { - checksum2 = mach_read_from_4( - page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM); - valid = (buf_page_is_checksum_valid_crc32(page,checksum1,checksum2) - || buf_page_is_checksum_valid_innodb(page,checksum1, checksum2)); - } + switch (srv_checksum_algorithm_t(srv_checksum_algorithm)) { + case SRV_CHECKSUM_ALGORITHM_STRICT_CRC32: + if (zip_size) { + return checksum == page_zip_calc_checksum( + page, zip_size, SRV_CHECKSUM_ALGORITHM_CRC32); + } - if (encrypted && valid) { - /* If page is encrypted and traditional checksums match, - page could be still encrypted, or not encrypted and valid or - corrupted. */ -#ifndef UNIV_INNOCHECKSUM - ib_logf(IB_LOG_LEVEL_ERROR, - " Page " ULINTPF " in space %s (" ULINTPF ") maybe corrupted." - " Post encryption checksum %u stored [%u:%u] key_version %u", - pageno, - space ? space->name : "N/A", - mach_read_from_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID), - checksum, checksum1, checksum2, key_version); -#else - if (log_file) { - fprintf(log_file, - "Page " ULINTPF ":" ULINTPF " may be corrupted." - " Post encryption checksum %u" - " stored [%u:%u] key_version %u\n", - pageno, - mach_read_from_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID), - checksum, checksum1, checksum2, - key_version); + return checksum == buf_calc_page_crc32(page); + case SRV_CHECKSUM_ALGORITHM_STRICT_NONE: + /* Starting with MariaDB 10.1.25, 10.2.7, 10.3.1, + due to MDEV-12114, fil_crypt_calculate_checksum() + is only using CRC32 for the encrypted pages. + Due to this, we must treat "strict_none" as "none". */ + case SRV_CHECKSUM_ALGORITHM_NONE: + return true; + case SRV_CHECKSUM_ALGORITHM_STRICT_INNODB: + /* Starting with MariaDB 10.1.25, 10.2.7, 10.3.1, + due to MDEV-12114, fil_crypt_calculate_checksum() + is only using CRC32 for the encrypted pages. + Due to this, we must treat "strict_innodb" as "innodb". */ + case SRV_CHECKSUM_ALGORITHM_INNODB: + case SRV_CHECKSUM_ALGORITHM_CRC32: + if (checksum == BUF_NO_CHECKSUM_MAGIC) { + return true; + } + if (zip_size) { + return checksum == page_zip_calc_checksum( + page, zip_size, SRV_CHECKSUM_ALGORITHM_CRC32) + || checksum == page_zip_calc_checksum( + page, zip_size, + SRV_CHECKSUM_ALGORITHM_INNODB); } -#endif /* UNIV_INNOCHECKSUM */ - encrypted = false; + return checksum == buf_calc_page_crc32(page) + || checksum == buf_calc_page_new_checksum(page); } - return(encrypted); + ut_ad(!"unhandled innodb_checksum_algorithm"); + return false; } diff --git a/storage/innobase/fil/fil0fil.cc b/storage/innobase/fil/fil0fil.cc index 5891db627..31178b67a 100644 --- a/storage/innobase/fil/fil0fil.cc +++ b/storage/innobase/fil/fil0fil.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2014, 2018, MariaDB Corporation. +Copyright (c) 2014, 2019, MariaDB Corporation. 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 the Free Software @@ -838,10 +838,9 @@ fil_try_to_close_file_in_LRU( } /** Flush any writes cached by the file system. -@param[in,out] space tablespace */ -static -void -fil_flush_low(fil_space_t* space) +@param[in,out] space tablespace +@param[in] metadata whether to update file system metadata */ +static void fil_flush_low(fil_space_t* space, bool metadata = false) { ut_ad(mutex_own(&fil_system->mutex)); ut_ad(space); @@ -865,7 +864,7 @@ fil_flush_low(fil_space_t* space) } #endif /* UNIV_DEBUG */ - return; + if (!metadata) return; } /* Prevent dropping of the space while we are flushing */ @@ -1030,12 +1029,12 @@ fil_space_extend_must_retry( *success = os_file_set_size(node->name, node->handle, new_size, FSP_FLAGS_HAS_PAGE_COMPRESSION(space->flags)); - DBUG_EXECUTE_IF("ib_os_aio_func_io_failure_28", *success = FALSE; os_has_said_disk_full = TRUE;); if (*success) { + os_file_flush(node->handle); os_has_said_disk_full = FALSE; start_page_no = size; } @@ -1063,7 +1062,7 @@ fil_space_extend_must_retry( = (node->size / pages_per_mb) * pages_per_mb; } - fil_flush_low(space); + fil_flush_low(space, true); return(false); } diff --git a/storage/innobase/fil/fil0pagecompress.cc b/storage/innobase/fil/fil0pagecompress.cc index 25cd8e28a..101f8fb0f 100644 --- a/storage/innobase/fil/fil0pagecompress.cc +++ b/storage/innobase/fil/fil0pagecompress.cc @@ -341,14 +341,14 @@ UNIV_INTERN ulint fil_page_decompress(byte* tmp_buf, byte* buf) case PAGE_ZLIB_ALGORITHM: { uLong len = srv_page_size; - if (Z_OK != uncompress(tmp_buf, &len, + if (Z_OK == uncompress(tmp_buf, &len, buf + header_len, uLong(actual_size)) - && len != srv_page_size) { - return 0; + && len == srv_page_size) { + break; } } - break; + return 0; #ifdef HAVE_LZ4 case PAGE_LZ4_ALGORITHM: if (LZ4_decompress_safe(reinterpret_cast(buf) diff --git a/storage/innobase/fts/fts0fts.cc b/storage/innobase/fts/fts0fts.cc index 5cbb7d9f7..75258bb86 100644 --- a/storage/innobase/fts/fts0fts.cc +++ b/storage/innobase/fts/fts0fts.cc @@ -870,19 +870,19 @@ fts_drop_index( err = fts_drop_index_tables(trx, index); while (index->index_fts_syncing - && !trx_is_interrupted(trx)) { - DICT_BG_YIELD(trx); - } + && !trx_is_interrupted(trx)) { + DICT_BG_YIELD(trx); + } - fts_free(table); + fts_free(table); return(err); } while (index->index_fts_syncing - && !trx_is_interrupted(trx)) { - DICT_BG_YIELD(trx); - } + && !trx_is_interrupted(trx)) { + DICT_BG_YIELD(trx); + } current_doc_id = table->fts->cache->next_doc_id; first_doc_id = table->fts->cache->first_doc_id; @@ -901,9 +901,9 @@ fts_drop_index( if (index_cache != NULL) { while (index->index_fts_syncing - && !trx_is_interrupted(trx)) { - DICT_BG_YIELD(trx); - } + && !trx_is_interrupted(trx)) { + DICT_BG_YIELD(trx); + } if (index_cache->words) { fts_words_free(index_cache->words); rbt_free(index_cache->words); diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index d35c64662..472fb8628 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -112,6 +112,7 @@ MYSQL_PLUGIN_IMPORT extern char mysql_unpacked_real_data_home[]; #include "fts0priv.h" #include "page0zip.h" #include "fil0pagecompress.h" +#include "dict0priv.h" #define thd_get_trx_isolation(X) ((enum_tx_isolation)thd_tx_isolation(X)) @@ -134,7 +135,7 @@ MYSQL_PLUGIN_IMPORT extern char mysql_unpacked_real_data_home[]; # endif /* MYSQL_PLUGIN_IMPORT */ #ifdef WITH_WSREP -#include "dict0priv.h" +#include "../../../wsrep/wsrep_api.h" #include "../storage/innobase/include/ut0byte.h" #include @@ -2357,11 +2358,6 @@ innobase_get_lower_case_table_names(void) { return(lower_case_table_names); } -/** return one of the tmpdir path -@return tmpdir path*/ -UNIV_INTERN -char* -innobase_mysql_tmpdir(void) { return (mysql_tmpdir); } /** Create a temporary file in the location specified by the parameter path. If the path is null, then it will be created in tmpdir. @@ -5818,19 +5814,18 @@ ha_innobase::open( ib_table = dict_table_open_on_name(norm_name, FALSE, TRUE, ignore_err); if (ib_table - && ((!DICT_TF2_FLAG_IS_SET(ib_table, DICT_TF2_FTS_HAS_DOC_ID) - && table->s->stored_fields != dict_table_get_n_user_cols(ib_table)) - || (DICT_TF2_FLAG_IS_SET(ib_table, DICT_TF2_FTS_HAS_DOC_ID) - && (table->s->fields - != dict_table_get_n_user_cols(ib_table) - 1)))) { + && (table->s->stored_fields != dict_table_get_n_user_cols(ib_table) + - !!DICT_TF2_FLAG_IS_SET(ib_table, DICT_TF2_FTS_HAS_DOC_ID))) { ib_logf(IB_LOG_LEVEL_WARN, "table %s contains " ULINTPF " user defined columns " "in InnoDB, but %u columns in MySQL. Please " "check INFORMATION_SCHEMA.INNODB_SYS_COLUMNS and " REFMAN "innodb-troubleshooting.html " "for how to resolve it", - norm_name, dict_table_get_n_user_cols(ib_table), - table->s->fields); + norm_name, dict_table_get_n_user_cols(ib_table) + - !!DICT_TF2_FLAG_IS_SET(ib_table, + DICT_TF2_FTS_HAS_DOC_ID), + table->s->stored_fields); /* Mark this table as corrupted, so the drop table or force recovery can still use it, but not others. */ @@ -8455,7 +8450,8 @@ ha_innobase::write_row( && wsrep_thd_exec_mode(user_thd) == LOCAL_STATE && !wsrep_consistency_check(user_thd) && !wsrep_thd_ignore_table(user_thd)) { - if (wsrep_append_keys(user_thd, false, record, NULL)) { + if (wsrep_append_keys(user_thd, WSREP_KEY_EXCLUSIVE, record, + NULL)) { DBUG_PRINT("wsrep", ("row key failed")); error_result = HA_ERR_INTERNAL_ERROR; goto wsrep_error; @@ -8978,7 +8974,8 @@ ha_innobase::update_row( { DBUG_PRINT("wsrep", ("update row key")); - if (wsrep_append_keys(user_thd, false, old_row, new_row)) { + if (wsrep_append_keys(user_thd, WSREP_KEY_EXCLUSIVE, old_row, + new_row)) { WSREP_DEBUG("WSREP: UPDATE_ROW_KEY FAILED"); DBUG_PRINT("wsrep", ("row key failed")); err = HA_ERR_INTERNAL_ERROR; @@ -9042,7 +9039,8 @@ ha_innobase::delete_row( wsrep_on(user_thd) && !wsrep_thd_ignore_table(user_thd)) { - if (wsrep_append_keys(user_thd, false, record, NULL)) { + if (wsrep_append_keys(user_thd, WSREP_KEY_EXCLUSIVE, record, + NULL)) { DBUG_PRINT("wsrep", ("delete fail")); error = (dberr_t) HA_ERR_INTERNAL_ERROR; goto wsrep_error; @@ -10277,16 +10275,6 @@ ha_innobase::ft_read( return(HA_ERR_END_OF_FILE); } -/************************************************************************* -*/ - -void -ha_innobase::ft_end() -{ - fprintf(stderr, "ft_end()\n"); - - rnd_end(); -} #ifdef WITH_WSREP extern dict_index_t* wsrep_dict_foreign_find_index( @@ -10298,8 +10286,22 @@ wsrep_dict_foreign_find_index( ibool check_charsets, ulint check_null); +inline +const char* +wsrep_key_type_to_str(wsrep_key_type type) +{ + switch (type) { + case WSREP_KEY_SHARED: + return "shared"; + case WSREP_KEY_SEMI: + return "semi"; + case WSREP_KEY_EXCLUSIVE: + return "exclusive"; + }; + return "unknown"; +} -extern dberr_t +ulint wsrep_append_foreign_key( /*===========================*/ trx_t* trx, /*!< in: trx */ @@ -10307,7 +10309,8 @@ wsrep_append_foreign_key( const rec_t* rec, /*!mysql_thd; @@ -10405,10 +10408,11 @@ wsrep_append_foreign_key( rcode = wsrep_rec_get_foreign_key( &key[1], &len, rec, index, idx, wsrep_protocol_version > 1); + if (rcode != DB_SUCCESS) { WSREP_ERROR( - "FK key set failed: %lu (%lu %lu), index: %s %s, %s", - rcode, referenced, shared, + "FK key set failed: %lu (%lu %s), index: %s %s, %s", + rcode, referenced, wsrep_key_type_to_str(key_type), (index && index->name) ? index->name : "void index", (index && index->table_name) ? index->table_name : @@ -10416,6 +10420,7 @@ wsrep_append_foreign_key( wsrep_thd_query(thd)); return DB_ERROR; } + strncpy(cache_key, (wsrep_protocol_version > 1) ? ((referenced) ? @@ -10460,7 +10465,7 @@ wsrep_append_foreign_key( wsrep_ws_handle(thd, trx), &wkey, 1, - shared ? WSREP_KEY_SHARED : WSREP_KEY_EXCLUSIVE, + key_type, copy); if (rcode) { DBUG_PRINT("wsrep", ("row key failed: %zu", rcode)); @@ -10482,15 +10487,16 @@ wsrep_append_key( TABLE *table, const char* key, uint16_t key_len, - bool shared + wsrep_key_type key_type /*!< in: access type of this key + (shared, exclusive, semi...) */ ) { DBUG_ENTER("wsrep_append_key"); bool const copy = true; #ifdef WSREP_DEBUG_PRINT fprintf(stderr, "%s conn %ld, trx %llu, keylen %d, table %s\n Query: %s ", - (shared) ? "Shared" : "Exclusive", - thd_get_thread_id(thd), (long long)trx->id, key_len, + wsrep_key_type_to_str(key_type), + wsrep_thd_thread_id(thd), trx->id, key_len, table_share->table_name.str, wsrep_thd_query(thd)); for (int i=0; iflags & HA_NOSAME || shared) + if (key_info->flags & HA_NOSAME || + key_type == WSREP_KEY_SHARED) key_appended = true; } else @@ -10659,7 +10667,7 @@ ha_innobase::wsrep_append_keys( rcode = wsrep_append_key( thd, trx, table_share, table, - keyval1, len+1, shared); + keyval1, len+1, key_type); if (rcode) DBUG_RETURN(rcode); } } @@ -10675,7 +10683,7 @@ ha_innobase::wsrep_append_keys( wsrep_calc_row_hash(digest, record0, table, prebuilt, thd); if ((rcode = wsrep_append_key(thd, trx, table_share, table, (const char*) digest, 16, - shared))) { + key_type))) { DBUG_RETURN(rcode); } @@ -10685,7 +10693,7 @@ ha_innobase::wsrep_append_keys( if ((rcode = wsrep_append_key(thd, trx, table_share, table, (const char*) digest, - 16, shared))) { + 16, key_type))) { DBUG_RETURN(rcode); } } @@ -11030,10 +11038,6 @@ create_table_def( : ER_TABLESPACE_EXISTS, MYF(0), display_name); } - if (err == DB_SUCCESS && (flags2 & DICT_TF2_FTS)) { - fts_optimize_add_table(table); - } - error_ret: DBUG_RETURN(convert_error_code_to_mysql(err, flags, thd)); } @@ -11963,21 +11967,18 @@ ha_innobase::check_table_options( options->encryption_key_id = FIL_DEFAULT_ENCRYPTION_KEY; } - /* If default encryption is used make sure that used kay is found - from key file. */ - if (encrypt == FIL_ENCRYPTION_DEFAULT && - !srv_encrypt_tables && - options->encryption_key_id != FIL_DEFAULT_ENCRYPTION_KEY) { - if (!encryption_key_id_exists((unsigned int)options->encryption_key_id)) { - push_warning_printf( - thd, Sql_condition::WARN_LEVEL_WARN, - HA_WRONG_CREATE_OPTION, - "InnoDB: ENCRYPTION_KEY_ID %u not available", - (uint)options->encryption_key_id + /* If default encryption is used and encryption is disabled, you may + not use nondefault encryption_key_id as it is not stored anywhere. */ + if (encrypt == FIL_ENCRYPTION_DEFAULT + && !srv_encrypt_tables + && options->encryption_key_id != FIL_DEFAULT_ENCRYPTION_KEY) { + compile_time_assert(FIL_DEFAULT_ENCRYPTION_KEY == 1); + push_warning_printf( + thd, Sql_condition::WARN_LEVEL_WARN, + HA_WRONG_CREATE_OPTION, + "InnoDB: innodb_encrypt_tables=OFF only allows ENCRYPTION_KEY_ID=1" ); - return "ENCRYPTION_KEY_ID"; - - } + return "ENCRYPTION_KEY_ID"; } /* Check atomic writes requirements */ @@ -12314,6 +12315,10 @@ ha_innobase::create( trx_free_for_mysql(trx); DBUG_RETURN(-1); } + + mutex_enter(&dict_sys->mutex); + fts_optimize_add_table(innobase_table); + mutex_exit(&dict_sys->mutex); } /* Note: We can't call update_thd() as prebuilt will not be @@ -12872,36 +12877,35 @@ innobase_rename_table( row_mysql_lock_data_dictionary(trx); - dict_table_t* table = NULL; - table = dict_table_open_on_name(norm_from, TRUE, FALSE, - DICT_ERR_IGNORE_NONE); + dict_table_t* table = dict_table_open_on_name(norm_from, TRUE, FALSE, + DICT_ERR_IGNORE_NONE); - /* Since DICT_BG_YIELD has sleep for 250 milliseconds, + /* Since DICT_BG_YIELD has sleep for 250 milliseconds, Convert lock_wait_timeout unit from second to 250 milliseconds */ - long int lock_wait_timeout = thd_lock_wait_timeout(thd) * 4; - if (table != NULL) { - for (dict_index_t* index = dict_table_get_first_index(table); - index != NULL; - index = dict_table_get_next_index(index)) { - - if (index->type & DICT_FTS) { - /* Found */ - while (index->index_fts_syncing - && !trx_is_interrupted(trx) - && (lock_wait_timeout--) > 0) { - DICT_BG_YIELD(trx); - } - } - } - dict_table_close(table, TRUE, FALSE); - } + long int lock_wait_timeout = thd_lock_wait_timeout(thd) * 4; + if (table != NULL) { + for (dict_index_t* index = dict_table_get_first_index(table); + index != NULL; + index = dict_table_get_next_index(index)) { + + if (index->type & DICT_FTS) { + /* Found */ + while (index->index_fts_syncing + && !trx_is_interrupted(trx) + && (lock_wait_timeout--) > 0) { + DICT_BG_YIELD(trx); + } + } + } + dict_table_close(table, TRUE, FALSE); + } - /* FTS sync is in progress. We shall timeout this operation */ - if (lock_wait_timeout < 0) { - error = DB_LOCK_WAIT_TIMEOUT; - row_mysql_unlock_data_dictionary(trx); - DBUG_RETURN(error); - } + /* FTS sync is in progress. We shall timeout this operation */ + if (lock_wait_timeout < 0) { + error = DB_LOCK_WAIT_TIMEOUT; + row_mysql_unlock_data_dictionary(trx); + DBUG_RETURN(error); + } /* Transaction must be flagged as a locking transaction or it hasn't been started yet. */ @@ -13056,13 +13060,11 @@ 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); + } else if (error == DB_LOCK_WAIT_TIMEOUT) { + my_error(ER_LOCK_WAIT_TIMEOUT, MYF(0), to); - error = DB_LOCK_WAIT; - } + error = DB_LOCK_WAIT; + } DBUG_RETURN(convert_error_code_to_mysql(error, 0, NULL)); } diff --git a/storage/innobase/handler/ha_innodb.h b/storage/innobase/handler/ha_innodb.h index 9c8389104..2429c8a3f 100644 --- a/storage/innobase/handler/ha_innodb.h +++ b/storage/innobase/handler/ha_innodb.h @@ -26,6 +26,10 @@ this program; if not, write to the Free Software Foundation, Inc., #include "dict0stats.h" +#ifdef WITH_WSREP +#include "../../../wsrep/wsrep_api.h" +#endif /* WITH_WSREP */ + /* Structure defines translation table between mysql index and innodb index structures */ struct innodb_idx_translate_t { @@ -115,7 +119,7 @@ class ha_innobase: public handler dict_index_t* innobase_get_index(uint keynr); #ifdef WITH_WSREP - int wsrep_append_keys(THD *thd, bool shared, + int wsrep_append_keys(THD *thd, wsrep_key_type key_type, const uchar* record0, const uchar* record1); #endif /* Init values for the class: */ @@ -175,7 +179,7 @@ class ha_innobase: public handler int rnd_pos(uchar * buf, uchar *pos); int ft_init(); - void ft_end(); + void ft_end() { rnd_end(); } FT_INFO *ft_init_ext(uint flags, uint inx, String* key); int ft_read(uchar* buf); diff --git a/storage/innobase/handler/handler0alter.cc b/storage/innobase/handler/handler0alter.cc index aa98d3298..7e8a8334a 100644 --- a/storage/innobase/handler/handler0alter.cc +++ b/storage/innobase/handler/handler0alter.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 2005, 2018, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2013, 2018, MariaDB Corporation. +Copyright (c) 2013, 2019, MariaDB Corporation. 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 the Free Software @@ -3687,9 +3687,8 @@ ha_innobase::prepare_inplace_alter_table( /* Check each index's column length to make sure they do not exceed limit */ - for (ulint i = 0; i < ha_alter_info->index_add_count; i++) { - const KEY* key = &ha_alter_info->key_info_buffer[ - ha_alter_info->index_add_buffer[i]]; + for (ulint i = 0; i < ha_alter_info->key_count; i++) { + const KEY* key = &ha_alter_info->key_info_buffer[i]; if (key->flags & HA_FULLTEXT) { /* The column length does not matter for @@ -3796,12 +3795,14 @@ ha_innobase::prepare_inplace_alter_table( continue; } + dict_foreign_t* foreign; + for (dict_foreign_set::iterator it = prebuilt->table->foreign_set.begin(); it != prebuilt->table->foreign_set.end(); ++it) { - dict_foreign_t* foreign = *it; + foreign = *it; const char* fid = strchr(foreign->id, '/'); DBUG_ASSERT(fid); @@ -3812,7 +3813,6 @@ ha_innobase::prepare_inplace_alter_table( if (!my_strcasecmp(system_charset_info, fid, drop->name)) { - drop_fk[n_drop_fk++] = foreign; goto found_fk; } } @@ -3821,12 +3821,19 @@ ha_innobase::prepare_inplace_alter_table( drop->name); goto err_exit; found_fk: + for (ulint i = n_drop_fk; i--; ) { + if (drop_fk[i] == foreign) { + goto dup_fk; + } + } + drop_fk[n_drop_fk++] = foreign; +dup_fk: continue; } DBUG_ASSERT(n_drop_fk > 0); DBUG_ASSERT(n_drop_fk - == ha_alter_info->alter_info->drop_list.elements); + <= ha_alter_info->alter_info->drop_list.elements); } else { drop_fk = NULL; } @@ -4283,23 +4290,11 @@ ha_innobase::inplace_alter_table( table. Either way, we should be seeing and reporting a bogus duplicate key error. */ dup_key = NULL; - } else if (prebuilt->trx->error_key_num == 0) { + } else { + DBUG_ASSERT(prebuilt->trx->error_key_num + < ha_alter_info->key_count); dup_key = &ha_alter_info->key_info_buffer[ prebuilt->trx->error_key_num]; - } else { - /* Check if there is generated cluster index column */ - if (ctx->num_to_add_index > ha_alter_info->key_count) { - DBUG_ASSERT(prebuilt->trx->error_key_num - <= ha_alter_info->key_count); - dup_key = &ha_alter_info->key_info_buffer[ - prebuilt->trx->error_key_num - 1]; - } - else { - DBUG_ASSERT(prebuilt->trx->error_key_num - < ha_alter_info->key_count); - dup_key = &ha_alter_info->key_info_buffer[ - prebuilt->trx->error_key_num]; - } } print_keydup_error(altered_table, dup_key, MYF(0)); break; @@ -4631,7 +4626,6 @@ innobase_rename_column_try( pars_info_add_ull_literal(info, "tableid", user_table->id); pars_info_add_int4_literal(info, "nth", nth_col); - pars_info_add_str_literal(info, "old", from); pars_info_add_str_literal(info, "new", to); trx->op_info = "renaming column in SYS_COLUMNS"; @@ -4641,7 +4635,7 @@ innobase_rename_column_try( "PROCEDURE RENAME_SYS_COLUMNS_PROC () IS\n" "BEGIN\n" "UPDATE SYS_COLUMNS SET NAME=:new\n" - "WHERE TABLE_ID=:tableid AND NAME=:old\n" + "WHERE TABLE_ID=:tableid\n" "AND POS=:nth;\n" "END;\n", FALSE, trx); @@ -4664,35 +4658,40 @@ innobase_rename_column_try( index != NULL; index = dict_table_get_next_index(index)) { + bool has_prefixes = false; + for (size_t i = 0; i < dict_index_get_n_fields(index); i++) { + if (dict_index_get_nth_field(index, i)->prefix_len) { + has_prefixes = true; + break; + } + } + for (ulint i = 0; i < dict_index_get_n_fields(index); i++) { - if (strcmp(dict_index_get_nth_field(index, i)->name, - from)) { + const dict_field_t* field + = dict_index_get_nth_field(index, i); + if (my_strcasecmp(system_charset_info, field->name, + from)) { continue; } info = pars_info_create(); + ulint pos = i; + if (has_prefixes) { + pos = (pos << 16) + field->prefix_len; + } + pars_info_add_ull_literal(info, "indexid", index->id); - pars_info_add_int4_literal(info, "nth", i); - pars_info_add_str_literal(info, "old", from); + pars_info_add_int4_literal(info, "nth", pos); pars_info_add_str_literal(info, "new", to); error = que_eval_sql( info, "PROCEDURE RENAME_SYS_FIELDS_PROC () IS\n" "BEGIN\n" - "UPDATE SYS_FIELDS SET COL_NAME=:new\n" - "WHERE INDEX_ID=:indexid AND COL_NAME=:old\n" + "WHERE INDEX_ID=:indexid\n" "AND POS=:nth;\n" - - /* Try again, in case there is a prefix_len - encoded in SYS_FIELDS.POS */ - - "UPDATE SYS_FIELDS SET COL_NAME=:new\n" - "WHERE INDEX_ID=:indexid AND COL_NAME=:old\n" - "AND POS>=65536*:nth AND POS<65536*(:nth+1);\n" - "END;\n", FALSE, trx); @@ -4705,7 +4704,7 @@ innobase_rename_column_try( rename_foreign: trx->op_info = "renaming column in SYS_FOREIGN_COLS"; - std::list fk_evict; + std::set fk_evict; bool foreign_modified; for (dict_foreign_set::const_iterator it = user_table->foreign_set.begin(); @@ -4716,7 +4715,9 @@ innobase_rename_column_try( foreign_modified = false; for (unsigned i = 0; i < foreign->n_fields; i++) { - if (strcmp(foreign->foreign_col_names[i], from)) { + if (my_strcasecmp(system_charset_info, + foreign->foreign_col_names[i], + from)) { continue; } @@ -4724,7 +4725,6 @@ innobase_rename_column_try( pars_info_add_str_literal(info, "id", foreign->id); pars_info_add_int4_literal(info, "nth", i); - pars_info_add_str_literal(info, "old", from); pars_info_add_str_literal(info, "new", to); error = que_eval_sql( @@ -4733,8 +4733,7 @@ innobase_rename_column_try( "BEGIN\n" "UPDATE SYS_FOREIGN_COLS\n" "SET FOR_COL_NAME=:new\n" - "WHERE ID=:id AND POS=:nth\n" - "AND FOR_COL_NAME=:old;\n" + "WHERE ID=:id AND POS=:nth;\n" "END;\n", FALSE, trx); @@ -4745,7 +4744,7 @@ innobase_rename_column_try( } if (foreign_modified) { - fk_evict.push_back(foreign); + fk_evict.insert(foreign); } } @@ -4758,7 +4757,9 @@ innobase_rename_column_try( dict_foreign_t* foreign = *it; for (unsigned i = 0; i < foreign->n_fields; i++) { - if (strcmp(foreign->referenced_col_names[i], from)) { + if (my_strcasecmp(system_charset_info, + foreign->referenced_col_names[i], + from)) { continue; } @@ -4766,7 +4767,6 @@ innobase_rename_column_try( pars_info_add_str_literal(info, "id", foreign->id); pars_info_add_int4_literal(info, "nth", i); - pars_info_add_str_literal(info, "old", from); pars_info_add_str_literal(info, "new", to); error = que_eval_sql( @@ -4775,8 +4775,7 @@ innobase_rename_column_try( "BEGIN\n" "UPDATE SYS_FOREIGN_COLS\n" "SET REF_COL_NAME=:new\n" - "WHERE ID=:id AND POS=:nth\n" - "AND REF_COL_NAME=:old;\n" + "WHERE ID=:id AND POS=:nth;\n" "END;\n", FALSE, trx); @@ -4787,7 +4786,7 @@ innobase_rename_column_try( } if (foreign_modified) { - fk_evict.push_back(foreign); + fk_evict.insert(foreign); } } @@ -5183,7 +5182,7 @@ commit_try_rebuild( & Alter_inplace_info::DROP_FOREIGN_KEY) || ctx->num_to_drop_fk > 0); DBUG_ASSERT(ctx->num_to_drop_fk - == ha_alter_info->alter_info->drop_list.elements); + <= ha_alter_info->alter_info->drop_list.elements); for (dict_index_t* index = dict_table_get_first_index(rebuilt_table); index; @@ -5234,18 +5233,9 @@ commit_try_rebuild( FTS_DOC_ID. */ dup_key = NULL; } else { - if (ctx->num_to_add_index > ha_alter_info->key_count) { - DBUG_ASSERT(err_key <= - ha_alter_info->key_count); - dup_key = &ha_alter_info - ->key_info_buffer[err_key - 1]; - } - else { - DBUG_ASSERT(err_key < - ha_alter_info->key_count); - dup_key = &ha_alter_info - ->key_info_buffer[err_key]; - } + DBUG_ASSERT(err_key < ha_alter_info->key_count); + dup_key = &ha_alter_info + ->key_info_buffer[err_key]; } print_keydup_error(altered_table, dup_key, MYF(0)); @@ -5444,7 +5434,7 @@ commit_try_norebuild( & Alter_inplace_info::DROP_FOREIGN_KEY) || ctx->num_to_drop_fk > 0); DBUG_ASSERT(ctx->num_to_drop_fk - == ha_alter_info->alter_info->drop_list.elements); + <= ha_alter_info->alter_info->drop_list.elements); for (ulint i = 0; i < ctx->num_to_add_index; i++) { dict_index_t* index = ctx->add_index[i]; @@ -5765,7 +5755,6 @@ ha_innobase::commit_inplace_alter_table( Alter_inplace_info* ha_alter_info, bool commit) { - dberr_t error; ha_innobase_inplace_ctx* ctx0 = static_cast (ha_alter_info->handler_ctx); @@ -5845,7 +5834,7 @@ ha_innobase::commit_inplace_alter_table( transactions collected during crash recovery could be holding InnoDB locks only, not MySQL locks. */ - error = row_merge_lock_table( + dberr_t error = row_merge_lock_table( prebuilt->trx, ctx->old_table, LOCK_X); if (error != DB_SUCCESS) { @@ -6030,9 +6019,9 @@ ha_innobase::commit_inplace_alter_table( file operations that will be performed in commit_cache_rebuild(), and if none, generate the redo log for these operations. */ - error = fil_mtr_rename_log(ctx->old_table, - ctx->new_table, - ctx->tmp_name, &mtr); + dberr_t error = fil_mtr_rename_log( + ctx->old_table, ctx->new_table, ctx->tmp_name, + &mtr); if (error != DB_SUCCESS) { /* Out of memory or a problem will occur when renaming files. */ @@ -6157,39 +6146,30 @@ ha_innobase::commit_inplace_alter_table( /* Rename the tablespace files. */ commit_cache_rebuild(ctx); - error = innobase_update_foreign_cache(ctx, user_thd); - if (error != DB_SUCCESS) { - goto foreign_fail; + if (innobase_update_foreign_cache(ctx, user_thd) + != DB_SUCCESS + && prebuilt->trx->check_foreigns) { +foreign_fail: + push_warning_printf( + user_thd, + Sql_condition::WARN_LEVEL_WARN, + ER_ALTER_INFO, + "failed to load FOREIGN KEY" + " constraints"); } } else { - error = innobase_update_foreign_cache(ctx, user_thd); + bool fk_fail = innobase_update_foreign_cache( + ctx, user_thd) != DB_SUCCESS; - if (error != DB_SUCCESS) { -foreign_fail: - /* The data dictionary cache - should be corrupted now. The - best solution should be to - kill and restart the server, - but the *.frm file has not - been replaced yet. */ - my_error(ER_CANNOT_ADD_FOREIGN, - MYF(0)); - sql_print_error( - "InnoDB: dict_load_foreigns()" - " returned %u for %s", - (unsigned) error, - thd_query_string(user_thd) - ->str); - ut_ad(0); - } else { - if (!commit_cache_norebuild( - ctx, table, trx)) { - ut_a(!prebuilt->trx->check_foreigns); - } + if (!commit_cache_norebuild(ctx, table, trx)) { + fk_fail = true; + ut_ad(!prebuilt->trx->check_foreigns); + } - innobase_rename_columns_cache( - ha_alter_info, table, - ctx->new_table); + innobase_rename_columns_cache(ha_alter_info, table, + ctx->new_table); + if (fk_fail && prebuilt->trx->check_foreigns) { + goto foreign_fail; } } DBUG_INJECT_CRASH("ib_commit_inplace_crash", diff --git a/storage/innobase/include/buf0buf.h b/storage/innobase/include/buf0buf.h index aca4e5881..4850d2432 100644 --- a/storage/innobase/include/buf0buf.h +++ b/storage/innobase/include/buf0buf.h @@ -703,14 +703,6 @@ buf_page_is_corrupted( #endif MY_ATTRIBUTE((warn_unused_result)); -/** Check if a page is all zeroes. -@param[in] read_buf database page -@param[in] zip_size ROW_FORMAT=COMPRESSED page size, or 0 -@return whether the page is all zeroes */ -UNIV_INTERN -bool -buf_page_is_zeroes(const byte* read_buf, ulint zip_size); - #ifndef UNIV_INNOCHECKSUM #ifndef UNIV_HOTBACKUP @@ -1563,6 +1555,9 @@ struct buf_page_t{ by buf_pool->mutex. */ ib_uint32_t offset; /*!< page number; also protected by buf_pool->mutex. */ + buf_page_t* hash; /*!< node used in chaining to + buf_pool->page_hash or + buf_pool->zip_hash */ /** count of how manyfold this block is currently bufferfixed */ #ifdef PAGE_ATOMIC_REF_COUNT ib_uint32_t buf_fix_count; @@ -1625,10 +1620,7 @@ struct buf_page_t{ buf_tmp_buffer_t* slot; /*!< Slot for temporary memory used for encryption/compression or NULL */ - #ifndef UNIV_HOTBACKUP - buf_page_t* hash; /*!< node used in chaining to - buf_pool->page_hash or - buf_pool->zip_hash */ +#ifndef UNIV_HOTBACKUP #ifdef UNIV_DEBUG ibool in_page_hash; /*!< TRUE if in buf_pool->page_hash */ ibool in_zip_hash; /*!< TRUE if in buf_pool->zip_hash */ diff --git a/storage/innobase/include/dict0mem.h b/storage/innobase/include/dict0mem.h index 96eca0823..0b8a9acdf 100644 --- a/storage/innobase/include/dict0mem.h +++ b/storage/innobase/include/dict0mem.h @@ -1034,8 +1034,10 @@ struct dict_table_t{ table_id_t id; /*!< id of the table */ + hash_node_t id_hash; /*!< hash chain node */ mem_heap_t* heap; /*!< memory heap */ char* name; /*!< table name */ + hash_node_t name_hash; /*!< hash chain node */ const char* dir_path_of_temp_table;/*!< NULL or the directory path where a TEMPORARY table that was explicitly created by a user should be placed if @@ -1092,8 +1094,6 @@ struct dict_table_t{ dictionary information and MySQL FRM information mismatch. */ #ifndef UNIV_HOTBACKUP - hash_node_t name_hash; /*!< hash chain node */ - hash_node_t id_hash; /*!< hash chain node */ UT_LIST_BASE_NODE_T(dict_index_t) indexes; /*!< list of indexes of the table */ diff --git a/storage/innobase/include/fil0crypt.h b/storage/innobase/include/fil0crypt.h index 7eb8b46d9..5e828ae41 100644 --- a/storage/innobase/include/fil0crypt.h +++ b/storage/innobase/include/fil0crypt.h @@ -1,6 +1,6 @@ /***************************************************************************** Copyright (C) 2013, 2015, Google Inc. All Rights Reserved. -Copyright (c) 2015, 2017, MariaDB Corporation. +Copyright (c) 2015, 2018, MariaDB Corporation. 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 the Free Software @@ -415,20 +415,9 @@ encrypted, or corrupted. @param[in] page Page to verify @param[in] zip_size zip size -@param[in] space Tablespace -@param[in] pageno Page no -@return true if page is encrypted AND OK, false otherwise */ +@return whether the encrypted page is OK */ UNIV_INTERN -bool -fil_space_verify_crypt_checksum( - byte* page, - ulint zip_size, -#ifndef UNIV_INNOCHECKSUM - const fil_space_t* space, -#else - const void* space, -#endif - ulint pageno) +bool fil_space_verify_crypt_checksum(const byte* page, ulint zip_size) MY_ATTRIBUTE((warn_unused_result)); #ifndef UNIV_INNOCHECKSUM diff --git a/storage/innobase/include/fil0fil.h b/storage/innobase/include/fil0fil.h index a8dc9e143..79a598b36 100644 --- a/storage/innobase/include/fil0fil.h +++ b/storage/innobase/include/fil0fil.h @@ -273,7 +273,9 @@ struct fil_node_t { struct fil_space_t { char* name; /*!< space name = the path to the first file in it */ + hash_node_t name_hash;/*!< hash chain the name_hash table */ ulint id; /*!< space id */ + hash_node_t hash; /*!< hash chain node */ ib_int64_t tablespace_version; /*!< in DISCARD/IMPORT this timestamp is used to check if we should ignore @@ -329,8 +331,6 @@ struct fil_space_t { Note that fil_node_t::n_pending tracks actual pending I/O requests. Protected by fil_system->mutex. */ ulint n_pending_ios; - hash_node_t hash; /*!< hash chain node */ - hash_node_t name_hash;/*!< hash chain the name_hash table */ #ifndef UNIV_HOTBACKUP rw_lock_t latch; /*!< latch protecting the file space storage allocation */ diff --git a/storage/innobase/include/os0file.h b/storage/innobase/include/os0file.h index 73becb38e..55e41f6eb 100644 --- a/storage/innobase/include/os0file.h +++ b/storage/innobase/include/os0file.h @@ -1,6 +1,6 @@ /*********************************************************************** -Copyright (c) 1995, 2018, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2009, Percona Inc. Copyright (c) 2013, 2017, MariaDB Corporation. @@ -1323,10 +1323,6 @@ os_file_get_status( file can be opened in RW mode */ #if !defined(UNIV_HOTBACKUP) - -/** return one of the tmpdir path - @return tmpdir path*/ -char *innobase_mysql_tmpdir(void); /** Create a temporary file in the location specified by the parameter path. If the path is null, then it will be created in tmpdir. @param[in] path location for creating temporary file diff --git a/storage/innobase/include/page0page.h b/storage/innobase/include/page0page.h index e8b4265bc..9c6d430eb 100644 --- a/storage/innobase/include/page0page.h +++ b/storage/innobase/include/page0page.h @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 1994, 2016, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2013, 2016, MariaDB Corporation +Copyright (c) 2013, 2018, MariaDB Corporation. 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 the Free Software @@ -1125,19 +1125,6 @@ const rec_t* page_find_rec_max_not_deleted( const page_t* page); -/** Issue a warning when the checksum that is stored in the page is valid, -but different than the global setting innodb_checksum_algorithm. -@param[in] current_algo current checksum algorithm -@param[in] page_checksum page valid checksum -@param[in] space_id tablespace id -@param[in] page_no page number */ -void -page_warn_strict_checksum( - srv_checksum_algorithm_t curr_algo, - srv_checksum_algorithm_t page_checksum, - ulint space_id, - ulint page_no); - #ifdef UNIV_MATERIALIZE #undef UNIV_INLINE #define UNIV_INLINE UNIV_INLINE_ORIGINAL diff --git a/storage/innobase/include/page0zip.h b/storage/innobase/include/page0zip.h index 4e362cec6..0bf77e2fc 100644 --- a/storage/innobase/include/page0zip.h +++ b/storage/innobase/include/page0zip.h @@ -546,21 +546,6 @@ from outside the buffer pool. # define UNIV_INLINE UNIV_INLINE_ORIGINAL #endif -#ifdef UNIV_INNOCHECKSUM -/** Issue a warning when the checksum that is stored in the page is valid, -but different than the global setting innodb_checksum_algorithm. -@param[in] current_algo current checksum algorithm -@param[in] page_checksum page valid checksum -@param[in] space_id tablespace id -@param[in] page_no page number */ -void -page_warn_strict_checksum( - srv_checksum_algorithm_t curr_algo, - srv_checksum_algorithm_t page_checksum, - ulint space_id, - ulint page_no); -#endif /* UNIV_INNOCHECKSUM */ - #ifndef UNIV_INNOCHECKSUM #ifndef UNIV_NONINL # include "page0zip.ic" diff --git a/storage/innobase/include/univ.i b/storage/innobase/include/univ.i index 20ecd18f5..8807e2bf9 100644 --- a/storage/innobase/include/univ.i +++ b/storage/innobase/include/univ.i @@ -45,7 +45,7 @@ Created 1/20/1994 Heikki Tuuri #define INNODB_VERSION_MAJOR 5 #define INNODB_VERSION_MINOR 6 -#define INNODB_VERSION_BUGFIX 42 +#define INNODB_VERSION_BUGFIX 43 /* The following is the InnoDB version as shown in SELECT plugin_version FROM information_schema.plugins; @@ -631,12 +631,14 @@ typedef void* os_thread_ret_t; #include "ut0dbg.h" #include "ut0ut.h" #include "db0err.h" +#include +/* define UNIV macros in terms of my_valgrind.h */ +#define UNIV_MEM_INVALID(addr, size) MEM_UNDEFINED(addr, size) +#define UNIV_MEM_FREE(addr, size) MEM_NOACCESS(addr, size) +#define UNIV_MEM_ALLOC(addr, size) UNIV_MEM_INVALID(addr, size) #ifdef UNIV_DEBUG_VALGRIND # include # define UNIV_MEM_VALID(addr, size) VALGRIND_MAKE_MEM_DEFINED(addr, size) -# define UNIV_MEM_INVALID(addr, size) VALGRIND_MAKE_MEM_UNDEFINED(addr, size) -# define UNIV_MEM_FREE(addr, size) VALGRIND_MAKE_MEM_NOACCESS(addr, size) -# define UNIV_MEM_ALLOC(addr, size) VALGRIND_MAKE_MEM_UNDEFINED(addr, size) # define UNIV_MEM_DESC(addr, size) VALGRIND_CREATE_BLOCK(addr, size, #addr) # define UNIV_MEM_UNDESC(b) VALGRIND_DISCARD(b) # define UNIV_MEM_ASSERT_RW_LOW(addr, size, should_abort) do { \ @@ -671,9 +673,6 @@ typedef void* os_thread_ret_t; } while (0) #else # define UNIV_MEM_VALID(addr, size) do {} while(0) -# define UNIV_MEM_INVALID(addr, size) do {} while(0) -# define UNIV_MEM_FREE(addr, size) do {} while(0) -# define UNIV_MEM_ALLOC(addr, size) do {} while(0) # define UNIV_MEM_DESC(addr, size) do {} while(0) # define UNIV_MEM_UNDESC(b) do {} while(0) # define UNIV_MEM_ASSERT_RW_LOW(addr, size, should_abort) do {} while(0) diff --git a/storage/innobase/os/os0proc.cc b/storage/innobase/os/os0proc.cc index ff6d65e4a..f711fbb02 100644 --- a/storage/innobase/os/os0proc.cc +++ b/storage/innobase/os/os0proc.cc @@ -192,7 +192,6 @@ os_mem_free_large( ut_a(ut_total_allocated_memory >= size); ut_total_allocated_memory -= size; os_fast_mutex_unlock(&ut_list_mutex); - UNIV_MEM_FREE(ptr, size); return; } #endif /* HAVE_LARGE_PAGES && UNIV_LINUX */ @@ -208,7 +207,6 @@ os_mem_free_large( ut_a(ut_total_allocated_memory >= size); ut_total_allocated_memory -= size; os_fast_mutex_unlock(&ut_list_mutex); - UNIV_MEM_FREE(ptr, size); } #elif !defined OS_MAP_ANON ut_free(ptr); @@ -226,7 +224,6 @@ os_mem_free_large( ut_a(ut_total_allocated_memory >= size); ut_total_allocated_memory -= size; os_fast_mutex_unlock(&ut_list_mutex); - UNIV_MEM_FREE(ptr, size); } #endif } diff --git a/storage/innobase/page/page0page.cc b/storage/innobase/page/page0page.cc index 2cc967129..9d267f3f0 100644 --- a/storage/innobase/page/page0page.cc +++ b/storage/innobase/page/page0page.cc @@ -2815,45 +2815,3 @@ page_find_rec_max_not_deleted( } return(prev_rec); } - -/** Issue a warning when the checksum that is stored in the page is valid, -but different than the global setting innodb_checksum_algorithm. -@param[in] current_algo current checksum algorithm -@param[in] page_checksum page valid checksum -@param[in] space_id tablespace id -@param[in] page_no page number */ -void -page_warn_strict_checksum( - srv_checksum_algorithm_t curr_algo, - srv_checksum_algorithm_t page_checksum, - ulint space_id, - ulint page_no) -{ - srv_checksum_algorithm_t curr_algo_nonstrict; - switch (curr_algo) { - case SRV_CHECKSUM_ALGORITHM_STRICT_CRC32: - curr_algo_nonstrict = SRV_CHECKSUM_ALGORITHM_CRC32; - break; - case SRV_CHECKSUM_ALGORITHM_STRICT_INNODB: - curr_algo_nonstrict = SRV_CHECKSUM_ALGORITHM_INNODB; - break; - case SRV_CHECKSUM_ALGORITHM_STRICT_NONE: - curr_algo_nonstrict = SRV_CHECKSUM_ALGORITHM_NONE; - break; - default: - ut_error; - } - - ib_logf(IB_LOG_LEVEL_WARN, - "innodb_checksum_algorithm is set to \"%s\"" - " but the page [page id: space=" ULINTPF "," - " page number=" ULINTPF "] contains a valid checksum \"%s\"." - " Accepting the page as valid. Change innodb_checksum_algorithm" - " to \"%s\" to silently accept such pages or rewrite all pages" - " so that they contain \"%s\" checksum.", - buf_checksum_algorithm_name(curr_algo), - space_id, page_no, - buf_checksum_algorithm_name(page_checksum), - buf_checksum_algorithm_name(curr_algo_nonstrict), - buf_checksum_algorithm_name(curr_algo_nonstrict)); -} diff --git a/storage/innobase/page/page0zip.cc b/storage/innobase/page/page0zip.cc index b580ba6d0..5090aa405 100644 --- a/storage/innobase/page/page0zip.cc +++ b/storage/innobase/page/page0zip.cc @@ -2,7 +2,7 @@ Copyright (c) 2005, 2016, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2012, Facebook Inc. -Copyright (c) 2014, 2017, MariaDB Corporation. +Copyright (c) 2014, 2018, MariaDB Corporation. 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 the Free Software @@ -48,8 +48,6 @@ using namespace std; #include "btr0cur.h" #include "page0types.h" #include "log0recv.h" -#else -#define page_warn_strict_checksum(A,B,C,D) #endif /* !UNIV_INNOCHECKSUM */ #include "zlib.h" #ifndef UNIV_HOTBACKUP @@ -4926,13 +4924,6 @@ page_zip_verify_checksum( stored = static_cast(mach_read_from_4( static_cast(data) + FIL_PAGE_SPACE_OR_CHKSUM)); - ulint page_no MY_ATTRIBUTE((unused)) = - mach_read_from_4(static_cast - (data) + FIL_PAGE_OFFSET); - ulint space_id MY_ATTRIBUTE((unused)) = - mach_read_from_4(static_cast - (data) + FIL_PAGE_SPACE_ID); - #if FIL_PAGE_LSN % 8 #error "FIL_PAGE_LSN must be 64 bit aligned" #endif @@ -4948,12 +4939,6 @@ page_zip_verify_checksum( return(FALSE); } } -#ifdef UNIV_INNOCHECKSUM - if (log_file) { - fprintf(log_file, "Page::%llu is empty and" - " uncorrupted\n", cur_page_num); - } -#endif /* UNIV_INNOCHECKSUM */ /* Empty page */ return(TRUE); } @@ -4968,130 +4953,36 @@ page_zip_verify_checksum( calc = static_cast(page_zip_calc_checksum( data, size, curr_algo)); -#ifdef UNIV_INNOCHECKSUM - if (log_file) { - fprintf(log_file, "page::%llu;" - " %s checksum: calculated = %u;" - " recorded = %u\n", cur_page_num, - buf_checksum_algorithm_name( - static_cast( - srv_checksum_algorithm)), - calc, stored); - } - - if (!strict_verify) { - - const uint32_t crc32 = page_zip_calc_checksum( - data, size, SRV_CHECKSUM_ALGORITHM_CRC32); - - if (log_file) { - fprintf(log_file, "page::%llu: crc32 checksum:" - " calculated = %u; recorded = %u\n", - cur_page_num, crc32, stored); - fprintf(log_file, "page::%llu: none checksum:" - " calculated = %lu; recorded = %u\n", - cur_page_num, BUF_NO_CHECKSUM_MAGIC, stored); - } - } -#endif /* UNIV_INNOCHECKSUM */ - if (stored == calc) { return(TRUE); } switch (curr_algo) { case SRV_CHECKSUM_ALGORITHM_STRICT_CRC32: + case SRV_CHECKSUM_ALGORITHM_STRICT_INNODB: + case SRV_CHECKSUM_ALGORITHM_STRICT_NONE: + return stored == calc; case SRV_CHECKSUM_ALGORITHM_CRC32: - if (stored == BUF_NO_CHECKSUM_MAGIC) { - if (curr_algo - == SRV_CHECKSUM_ALGORITHM_STRICT_CRC32) { - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_NONE, - space_id, page_no); - } - return(TRUE); } + crc32 = calc; innodb = static_cast(page_zip_calc_checksum( data, size, SRV_CHECKSUM_ALGORITHM_INNODB)); - - if (stored == innodb) { - if (curr_algo - == SRV_CHECKSUM_ALGORITHM_STRICT_CRC32) { - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_INNODB, - space_id, page_no); - } - - return(TRUE); - } - break; - case SRV_CHECKSUM_ALGORITHM_STRICT_INNODB: case SRV_CHECKSUM_ALGORITHM_INNODB: - if (stored == BUF_NO_CHECKSUM_MAGIC) { - if (curr_algo - == SRV_CHECKSUM_ALGORITHM_STRICT_INNODB) { - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_NONE, - space_id, page_no); - } - - return(TRUE); - } - - crc32 = static_cast(page_zip_calc_checksum( - data, size, SRV_CHECKSUM_ALGORITHM_CRC32)); - - if (stored == crc32) { - if (curr_algo - == SRV_CHECKSUM_ALGORITHM_STRICT_INNODB) { - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_CRC32, - space_id, page_no); - } - - return(TRUE); + return TRUE; } - break; - case SRV_CHECKSUM_ALGORITHM_STRICT_NONE: - crc32 = static_cast(page_zip_calc_checksum( data, size, SRV_CHECKSUM_ALGORITHM_CRC32)); - - if (stored == crc32) { - page_warn_strict_checksum( - curr_algo, SRV_CHECKSUM_ALGORITHM_CRC32, - space_id, page_no); - - return(TRUE); - } - - innodb = static_cast(page_zip_calc_checksum( - data, size, SRV_CHECKSUM_ALGORITHM_INNODB)); - - if (stored == innodb) { - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_INNODB, - space_id, page_no); - return(TRUE); - } - + innodb = calc; break; case SRV_CHECKSUM_ALGORITHM_NONE: - ut_error; - /* no default so the compiler will emit a warning if new enum - is added and not handled here */ + return TRUE; } - return(FALSE); + return (stored == crc32 || stored == innodb); } diff --git a/storage/innobase/row/row0ftsort.cc b/storage/innobase/row/row0ftsort.cc index 1ec666123..7e6e92ed8 100644 --- a/storage/innobase/row/row0ftsort.cc +++ b/storage/innobase/row/row0ftsort.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 2010, 2016, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2015, 2018, MariaDB Corporation. +Copyright (c) 2015, 2019, MariaDB Corporation. 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 the Free Software @@ -779,7 +779,7 @@ fts_parallel_tokenization( goto func_exit; } - UNIV_MEM_INVALID(block[t_ctx.buf_used][0], srv_sort_buf_size); + UNIV_MEM_INVALID(block[t_ctx.buf_used], srv_sort_buf_size); buf[t_ctx.buf_used] = row_merge_buf_empty(buf[t_ctx.buf_used]); mycount[t_ctx.buf_used] += t_ctx.rows_added[t_ctx.buf_used]; t_ctx.rows_added[t_ctx.buf_used] = 0; @@ -874,12 +874,11 @@ fts_parallel_tokenization( goto func_exit; } - UNIV_MEM_INVALID(block[i][0], - srv_sort_buf_size); + UNIV_MEM_INVALID(block[i], srv_sort_buf_size); if (crypt_block[i]) { - UNIV_MEM_INVALID(crypt_block[i][0], - srv_sort_buf_size); + UNIV_MEM_INVALID(crypt_block[i], + srv_sort_buf_size); } } diff --git a/storage/innobase/row/row0import.cc b/storage/innobase/row/row0import.cc index 2080637d7..2351b1d0a 100644 --- a/storage/innobase/row/row0import.cc +++ b/storage/innobase/row/row0import.cc @@ -3537,8 +3537,7 @@ fil_iterate( } } else { if (!fil_space_verify_crypt_checksum( - src, callback.get_zip_size(), - NULL, block->page.offset)) { + src, callback.get_zip_size())) { goto page_corrupted; } diff --git a/storage/innobase/row/row0ins.cc b/storage/innobase/row/row0ins.cc index c50eaa2a6..65a27ebeb 100644 --- a/storage/innobase/row/row0ins.cc +++ b/storage/innobase/row/row0ins.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2017, 2018, MariaDB Corporation. +Copyright (c) 2017, 2019, MariaDB Corporation. 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 the Free Software @@ -55,6 +55,12 @@ Created 4/20/1996 Heikki Tuuri #include "fts0types.h" #include "m_string.h" +#ifdef WITH_WSREP +#include +#include "../../../wsrep/wsrep_api.h" +#include "wsrep_mysqld_c.h" +#endif /* WITH_WSREP */ + /************************************************************************* IMPORTANT NOTE: Any operation that generates redo MUST check that there is enough space in the redo log before for that operation. This is @@ -933,11 +939,11 @@ row_ins_invalidate_query_cache( } #ifdef WITH_WSREP dberr_t wsrep_append_foreign_key(trx_t *trx, - dict_foreign_t* foreign, - const rec_t* clust_rec, - dict_index_t* clust_index, - ibool referenced, - ibool shared); + dict_foreign_t* foreign, + const rec_t* clust_rec, + dict_index_t* clust_index, + ibool referenced, + enum wsrep_key_type key_type); #endif /* WITH_WSREP */ /*********************************************************************//** @@ -1296,7 +1302,7 @@ row_ins_foreign_check_on_constraint( foreign, clust_rec, clust_index, - FALSE, FALSE); + FALSE, WSREP_KEY_EXCLUSIVE); if (err != DB_SUCCESS) { fprintf(stderr, "WSREP: foreign key append failed: %d\n", err); @@ -1640,13 +1646,31 @@ row_ins_check_foreign_constraint( if (check_ref) { err = DB_SUCCESS; #ifdef WITH_WSREP + if (!wsrep_on(trx->mysql_thd)) { + goto end_scan; + } + enum wsrep_key_type key_type; + if (upd_node != NULL) { + key_type = WSREP_KEY_SHARED; + } else { + switch (wsrep_certification_rules) { + default: + case WSREP_CERTIFICATION_RULES_STRICT: + key_type = WSREP_KEY_EXCLUSIVE; + break; + case WSREP_CERTIFICATION_RULES_OPTIMIZED: + key_type = WSREP_KEY_SEMI; + break; + } + } + err = wsrep_append_foreign_key( - thr_get_trx(thr), + trx, foreign, rec, check_index, check_ref, - (upd_node) ? TRUE : FALSE); + key_type); #endif /* WITH_WSREP */ goto end_scan; } else if (foreign->type != 0) { diff --git a/storage/innobase/row/row0merge.cc b/storage/innobase/row/row0merge.cc index 34f83f2fa..356eec8e7 100644 --- a/storage/innobase/row/row0merge.cc +++ b/storage/innobase/row/row0merge.cc @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2005, 2018, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 2005, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2014, 2018, MariaDB Corporation. This program is free software; you can redistribute it and/or modify it under @@ -3339,10 +3339,9 @@ row_merge_file_create_low( file APIs, add instrumentation to register with performance schema */ struct PSI_file_locker* locker = NULL; - PSI_file_locker_state state; if (!path) { - path = innobase_mysql_tmpdir(); + path = mysql_tmpdir; } static const char label[] = "/Innodb Merge Temp File"; char* name = static_cast( diff --git a/storage/innobase/row/row0mysql.cc b/storage/innobase/row/row0mysql.cc index bb815de31..2a9ade1da 100644 --- a/storage/innobase/row/row0mysql.cc +++ b/storage/innobase/row/row0mysql.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 2000, 2018, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2015, 2018, MariaDB Corporation. +Copyright (c) 2015, 2019, MariaDB Corporation. 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 the Free Software @@ -4224,9 +4224,12 @@ row_drop_table_for_mysql( calling btr_search_drop_page_hash_index() while we hold the InnoDB dictionary lock, we will drop any adaptive hash index entries upfront. */ + const bool is_temp = dict_table_is_temporary(table) + || strncmp(tablename_minus_db, tmp_file_prefix, + tmp_file_prefix_length) + || strncmp(tablename_minus_db, "FTS_", 4); while (buf_LRU_drop_page_hash_for_tablespace(table)) { - if ((!dict_table_is_temporary(table) - && trx_is_interrupted(trx)) + if ((!is_temp && trx_is_interrupted(trx)) || srv_shutdown_state != SRV_SHUTDOWN_NONE) { err = DB_INTERRUPTED; goto funct_exit; @@ -4469,7 +4472,8 @@ row_drop_table_for_mysql( char msg_tablename[MAX_FULL_NAME_LEN + 1]; innobase_format_name( - msg_tablename, sizeof(tablename), + msg_tablename, + sizeof msg_tablename, tablename, FALSE); ib_logf(IB_LOG_LEVEL_INFO, @@ -5275,9 +5279,6 @@ row_rename_table_for_mysql( " = TO_BINARY(:old_table_name);\n" "END;\n" , FALSE, trx); - if (err != DB_SUCCESS) { - goto end; - } } else if (n_constraints_to_drop > 0) { /* Drop some constraints of tmp tables. */ diff --git a/storage/innobase/row/row0sel.cc b/storage/innobase/row/row0sel.cc index 2fc7b6892..06bf4cc30 100644 --- a/storage/innobase/row/row0sel.cc +++ b/storage/innobase/row/row0sel.cc @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1997, 2018, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 1997, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2008, Google Inc. Copyright (c) 2015, 2018, MariaDB Corporation. @@ -4721,7 +4721,7 @@ row_search_for_mysql( prebuilt->new_rec_locks = 1; } err = DB_SUCCESS; - break; + /* fall through */ case DB_SUCCESS: break; case DB_LOCK_WAIT: diff --git a/storage/innobase/srv/srv0srv.cc b/storage/innobase/srv/srv0srv.cc index 87f9064c1..f17a6ddd9 100644 --- a/storage/innobase/srv/srv0srv.cc +++ b/storage/innobase/srv/srv0srv.cc @@ -3,7 +3,7 @@ Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2008, 2009 Google Inc. Copyright (c) 2009, Percona Inc. -Copyright (c) 2013, 2017, MariaDB Corporation. +Copyright (c) 2013, 2019, MariaDB Corporation. Portions of this file contain modifications contributed and copyrighted by Google, Inc. Those modifications are gratefully acknowledged and are described @@ -1341,8 +1341,6 @@ srv_printf_innodb_monitor( "; in additional pool allocated " ULINTPF "\n", ut_total_allocated_memory, mem_pool_get_reserved(mem_comm_pool)); - fprintf(file, "Dictionary memory allocated " ULINTPF "\n", - dict_sys_get_size()); buf_print_io(file); diff --git a/storage/innobase/srv/srv0start.cc b/storage/innobase/srv/srv0start.cc index db52e3188..4ce3ea667 100644 --- a/storage/innobase/srv/srv0start.cc +++ b/storage/innobase/srv/srv0start.cc @@ -2312,6 +2312,10 @@ innobase_start_or_create_for_mysql() break; } + if (stat_info.type != OS_FILE_TYPE_FILE) { + break; + } + if (!srv_file_check_mode(logfilename)) { return(DB_ERROR); } diff --git a/storage/innobase/trx/trx0trx.cc b/storage/innobase/trx/trx0trx.cc index 58dc94455..f36aabba8 100644 --- a/storage/innobase/trx/trx0trx.cc +++ b/storage/innobase/trx/trx0trx.cc @@ -2300,6 +2300,12 @@ trx_get_trx_by_xid_low( && memcmp(xid->data, trx->xid.data, xid->gtrid_length + xid->bqual_length) == 0) { +#ifdef WITH_WSREP + /* The commit of a prepared recovered Galera + transaction needs a valid trx->xid for + invoking trx_sys_update_wsrep_checkpoint(). */ + if (wsrep_is_wsrep_xid(&trx->xid)) break; +#endif /* Invalidate the XID, so that subsequent calls will not find it. */ trx->xid.null(); diff --git a/storage/tokudb/PerconaFT/COPYING.APACHEv2 b/storage/tokudb/PerconaFT/COPYING.APACHEv2 new file mode 100644 index 000000000..ecbfc770f --- /dev/null +++ b/storage/tokudb/PerconaFT/COPYING.APACHEv2 @@ -0,0 +1,174 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. diff --git a/storage/tokudb/PerconaFT/README.md b/storage/tokudb/PerconaFT/README.md index ffb646b67..26333df87 100644 --- a/storage/tokudb/PerconaFT/README.md +++ b/storage/tokudb/PerconaFT/README.md @@ -104,11 +104,14 @@ All source code and test contributions must be provided under a [BSD 2-Clause][b License ------- +Portions of the PerconaFT library (the 'locktree' and 'omt') are available under the Apache version 2 license. PerconaFT is available under the GPL version 2, and AGPL version 3. -See [COPYING.AGPLv3][agpllicense], +See [COPYING.APACHEv2][apachelicense], +[COPYING.AGPLv3][agpllicense], [COPYING.GPLv2][gpllicense], and [PATENTS][patents]. +[apachelicense]: http://github.com/Percona/PerconaFT/blob/master/COPYING.APACHEv2 [agpllicense]: http://github.com/Percona/PerconaFT/blob/master/COPYING.AGPLv3 [gpllicense]: http://github.com/Percona/PerconaFT/blob/master/COPYING.GPLv2 [patents]: http://github.com/Percona/PerconaFT/blob/master/PATENTS diff --git a/storage/tokudb/PerconaFT/ft/txn/txn_manager.h b/storage/tokudb/PerconaFT/ft/txn/txn_manager.h index 7cdc52c4f..25fa60321 100644 --- a/storage/tokudb/PerconaFT/ft/txn/txn_manager.h +++ b/storage/tokudb/PerconaFT/ft/txn/txn_manager.h @@ -46,11 +46,11 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. void set_test_txn_sync_callback(void (*) (pthread_t, void*), void*); #define toku_test_txn_sync_callback(a) ((test_txn_sync_callback)? test_txn_sync_callback( a,test_txn_sync_callback_extra) : (void) 0) -#if TOKU_DEBUG_TXN_SYNC +#if defined(TOKU_DEBUG_TXN_SYNC) #define toku_debug_txn_sync(a) toku_test_txn_sync_callback(a) #else #define toku_debug_txn_sync(a) ((void) 0) -#endif +#endif // defined(TOKU_DEBUG_TXN_SYNC) typedef struct txn_manager *TXN_MANAGER; diff --git a/storage/tokudb/PerconaFT/locktree/concurrent_tree.cc b/storage/tokudb/PerconaFT/locktree/concurrent_tree.cc index 9347267db..e07f32c98 100644 --- a/storage/tokudb/PerconaFT/locktree/concurrent_tree.cc +++ b/storage/tokudb/PerconaFT/locktree/concurrent_tree.cc @@ -32,6 +32,20 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. ======= */ #ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." diff --git a/storage/tokudb/PerconaFT/locktree/concurrent_tree.h b/storage/tokudb/PerconaFT/locktree/concurrent_tree.h index 1eb339b73..66a7ff176 100644 --- a/storage/tokudb/PerconaFT/locktree/concurrent_tree.h +++ b/storage/tokudb/PerconaFT/locktree/concurrent_tree.h @@ -32,6 +32,20 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. ======= */ #ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." diff --git a/storage/tokudb/PerconaFT/locktree/keyrange.cc b/storage/tokudb/PerconaFT/locktree/keyrange.cc index 8c2a69d47..2b4b3bbd4 100644 --- a/storage/tokudb/PerconaFT/locktree/keyrange.cc +++ b/storage/tokudb/PerconaFT/locktree/keyrange.cc @@ -32,6 +32,19 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and ======= */ #ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." diff --git a/storage/tokudb/PerconaFT/locktree/keyrange.h b/storage/tokudb/PerconaFT/locktree/keyrange.h index 079ac3d7a..a454287cb 100644 --- a/storage/tokudb/PerconaFT/locktree/keyrange.h +++ b/storage/tokudb/PerconaFT/locktree/keyrange.h @@ -32,6 +32,19 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and ======= */ #ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." diff --git a/storage/tokudb/PerconaFT/locktree/lock_request.cc b/storage/tokudb/PerconaFT/locktree/lock_request.cc index c0829e3f4..51898d4cc 100644 --- a/storage/tokudb/PerconaFT/locktree/lock_request.cc +++ b/storage/tokudb/PerconaFT/locktree/lock_request.cc @@ -32,6 +32,19 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and ======= */ #ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." diff --git a/storage/tokudb/PerconaFT/locktree/lock_request.h b/storage/tokudb/PerconaFT/locktree/lock_request.h index 9e82b3154..455433cb9 100644 --- a/storage/tokudb/PerconaFT/locktree/lock_request.h +++ b/storage/tokudb/PerconaFT/locktree/lock_request.h @@ -32,6 +32,19 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and ======= */ #ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." diff --git a/storage/tokudb/PerconaFT/locktree/locktree.cc b/storage/tokudb/PerconaFT/locktree/locktree.cc index 069aae26f..8ba3f0f00 100644 --- a/storage/tokudb/PerconaFT/locktree/locktree.cc +++ b/storage/tokudb/PerconaFT/locktree/locktree.cc @@ -32,6 +32,19 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and ======= */ #ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." diff --git a/storage/tokudb/PerconaFT/locktree/locktree.h b/storage/tokudb/PerconaFT/locktree/locktree.h index 1ba7a51b1..7006b6fb0 100644 --- a/storage/tokudb/PerconaFT/locktree/locktree.h +++ b/storage/tokudb/PerconaFT/locktree/locktree.h @@ -32,6 +32,19 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and ======= */ #ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." diff --git a/storage/tokudb/PerconaFT/locktree/manager.cc b/storage/tokudb/PerconaFT/locktree/manager.cc index 6bb5c77bf..21f8dc6cf 100644 --- a/storage/tokudb/PerconaFT/locktree/manager.cc +++ b/storage/tokudb/PerconaFT/locktree/manager.cc @@ -32,6 +32,19 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and ======= */ #ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." diff --git a/storage/tokudb/PerconaFT/locktree/range_buffer.cc b/storage/tokudb/PerconaFT/locktree/range_buffer.cc index 3ddfd0faf..d1f14fc4a 100644 --- a/storage/tokudb/PerconaFT/locktree/range_buffer.cc +++ b/storage/tokudb/PerconaFT/locktree/range_buffer.cc @@ -32,6 +32,19 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and ======= */ #ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." diff --git a/storage/tokudb/PerconaFT/locktree/range_buffer.h b/storage/tokudb/PerconaFT/locktree/range_buffer.h index b0e36968e..811b0f85e 100644 --- a/storage/tokudb/PerconaFT/locktree/range_buffer.h +++ b/storage/tokudb/PerconaFT/locktree/range_buffer.h @@ -32,6 +32,19 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and ======= */ #ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." diff --git a/storage/tokudb/PerconaFT/locktree/treenode.cc b/storage/tokudb/PerconaFT/locktree/treenode.cc index cc3a49696..0247242f9 100644 --- a/storage/tokudb/PerconaFT/locktree/treenode.cc +++ b/storage/tokudb/PerconaFT/locktree/treenode.cc @@ -32,6 +32,19 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and ======= */ #ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." diff --git a/storage/tokudb/PerconaFT/locktree/treenode.h b/storage/tokudb/PerconaFT/locktree/treenode.h index 08aad2b66..981e8b5a9 100644 --- a/storage/tokudb/PerconaFT/locktree/treenode.h +++ b/storage/tokudb/PerconaFT/locktree/treenode.h @@ -32,6 +32,19 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and ======= */ #ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." diff --git a/storage/tokudb/PerconaFT/locktree/txnid_set.cc b/storage/tokudb/PerconaFT/locktree/txnid_set.cc index 82b594531..bd4e97231 100644 --- a/storage/tokudb/PerconaFT/locktree/txnid_set.cc +++ b/storage/tokudb/PerconaFT/locktree/txnid_set.cc @@ -32,6 +32,19 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and ======= */ #ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." diff --git a/storage/tokudb/PerconaFT/locktree/txnid_set.h b/storage/tokudb/PerconaFT/locktree/txnid_set.h index 109d7f798..81fd45b6d 100644 --- a/storage/tokudb/PerconaFT/locktree/txnid_set.h +++ b/storage/tokudb/PerconaFT/locktree/txnid_set.h @@ -32,6 +32,19 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and ======= */ #ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." diff --git a/storage/tokudb/PerconaFT/locktree/wfg.cc b/storage/tokudb/PerconaFT/locktree/wfg.cc index 9a234f500..26b7a3b52 100644 --- a/storage/tokudb/PerconaFT/locktree/wfg.cc +++ b/storage/tokudb/PerconaFT/locktree/wfg.cc @@ -32,6 +32,19 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and ======= */ #ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." diff --git a/storage/tokudb/PerconaFT/locktree/wfg.h b/storage/tokudb/PerconaFT/locktree/wfg.h index c56886e13..5c1599592 100644 --- a/storage/tokudb/PerconaFT/locktree/wfg.h +++ b/storage/tokudb/PerconaFT/locktree/wfg.h @@ -32,6 +32,19 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and ======= */ #ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." diff --git a/storage/tokudb/PerconaFT/portability/toku_instr_mysql.cc b/storage/tokudb/PerconaFT/portability/toku_instr_mysql.cc index d742555f8..786a6ef05 100644 --- a/storage/tokudb/PerconaFT/portability/toku_instr_mysql.cc +++ b/storage/tokudb/PerconaFT/portability/toku_instr_mysql.cc @@ -184,9 +184,9 @@ void toku_instr_file_io_end(toku_io_instrumentation &io_instr, ssize_t count) { void toku_instr_mutex_init(const toku_instr_key &key, toku_mutex_t &mutex) { mutex.psi_mutex = PSI_MUTEX_CALL(init_mutex)(key.id(), &mutex.pmutex); -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) mutex.instr_key_id = key.id(); -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) } void toku_instr_mutex_destroy(PSI_mutex *&mutex_instr) { @@ -242,9 +242,9 @@ void toku_instr_mutex_unlock(PSI_mutex *mutex_instr) { void toku_instr_cond_init(const toku_instr_key &key, toku_cond_t &cond) { cond.psi_cond = PSI_COND_CALL(init_cond)(key.id(), &cond.pcond); -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) cond.instr_key_id = key.id(); -#endif +#endif // // defined(TOKU_PTHREAD_DEBUG) } void toku_instr_cond_destroy(PSI_cond *&cond_instr) { @@ -295,9 +295,9 @@ void toku_instr_cond_broadcast(const toku_cond_t &cond) { void toku_instr_rwlock_init(const toku_instr_key &key, toku_pthread_rwlock_t &rwlock) { rwlock.psi_rwlock = PSI_RWLOCK_CALL(init_rwlock)(key.id(), &rwlock.rwlock); -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) rwlock.instr_key_id = key.id(); -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) } void toku_instr_rwlock_destroy(PSI_rwlock *&rwlock_instr) { diff --git a/storage/tokudb/PerconaFT/portability/toku_instr_mysql.h b/storage/tokudb/PerconaFT/portability/toku_instr_mysql.h index d6b0ed35c..beb833a16 100644 --- a/storage/tokudb/PerconaFT/portability/toku_instr_mysql.h +++ b/storage/tokudb/PerconaFT/portability/toku_instr_mysql.h @@ -12,8 +12,15 @@ // undefine them here to avoid compilation errors. #undef __STDC_FORMAT_MACROS #undef __STDC_LIMIT_MACROS -#include // PSI_file -#include // PSI_mutex +#include "mysql/psi/mysql_file.h" // PSI_file +#include "mysql/psi/mysql_thread.h" // PSI_mutex +#include "mysql/psi/mysql_stage.h" // PSI_stage + +#if (MYSQL_VERSION_ID >= 80000) && ( MYSQL_VERSION_ID <= 100000) +#include "mysql/psi/mysql_cond.h" +#include "mysql/psi/mysql_mutex.h" +#include "mysql/psi/mysql_rwlock.h" +#endif // (MYSQL_VERSION_ID >= nn) #ifndef HAVE_PSI_MUTEX_INTERFACE #error HAVE_PSI_MUTEX_INTERFACE required diff --git a/storage/tokudb/PerconaFT/portability/toku_pthread.h b/storage/tokudb/PerconaFT/portability/toku_pthread.h index a0dfcc246..d05c6fabf 100644 --- a/storage/tokudb/PerconaFT/portability/toku_pthread.h +++ b/storage/tokudb/PerconaFT/portability/toku_pthread.h @@ -64,23 +64,23 @@ struct toku_mutex_t { pthread_mutex_t pmutex; struct PSI_mutex *psi_mutex; /* The performance schema instrumentation hook */ -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) pthread_t owner; // = pthread_self(); // for debugging bool locked; bool valid; pfs_key_t instr_key_id; -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) }; struct toku_cond_t { pthread_cond_t pcond; struct PSI_cond *psi_cond; -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) pfs_key_t instr_key_id; -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) }; -#ifdef TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) #define TOKU_COND_INITIALIZER \ { \ .pcond = PTHREAD_COND_INITIALIZER, .psi_cond = nullptr, \ @@ -89,14 +89,14 @@ struct toku_cond_t { #else #define TOKU_COND_INITIALIZER \ { .pcond = PTHREAD_COND_INITIALIZER, .psi_cond = nullptr } -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) struct toku_pthread_rwlock_t { pthread_rwlock_t rwlock; struct PSI_rwlock *psi_rwlock; -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) pfs_key_t instr_key_id; -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) }; typedef struct toku_mutex_aligned { @@ -117,7 +117,7 @@ typedef struct toku_mutex_aligned { #define ZERO_MUTEX_INITIALIZER \ {} -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) #define TOKU_MUTEX_INITIALIZER \ { \ .pmutex = PTHREAD_MUTEX_INITIALIZER, .psi_mutex = nullptr, .owner = 0, \ @@ -126,12 +126,12 @@ typedef struct toku_mutex_aligned { #else #define TOKU_MUTEX_INITIALIZER \ { .pmutex = PTHREAD_MUTEX_INITIALIZER, .psi_mutex = nullptr } -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) // Darwin doesn't provide adaptive mutexes #if defined(__APPLE__) #define TOKU_MUTEX_ADAPTIVE PTHREAD_MUTEX_DEFAULT -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) #define TOKU_ADAPTIVE_MUTEX_INITIALIZER \ { \ .pmutex = PTHREAD_MUTEX_INITIALIZER, .psi_mutex = nullptr, .owner = 0, \ @@ -140,10 +140,10 @@ typedef struct toku_mutex_aligned { #else #define TOKU_ADAPTIVE_MUTEX_INITIALIZER \ { .pmutex = PTHREAD_MUTEX_INITIALIZER, .psi_mutex = nullptr } -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) #else // __FreeBSD__, __linux__, at least #define TOKU_MUTEX_ADAPTIVE PTHREAD_MUTEX_ADAPTIVE_NP -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) #define TOKU_ADAPTIVE_MUTEX_INITIALIZER \ { \ .pmutex = PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP, .psi_mutex = nullptr, \ @@ -152,8 +152,8 @@ typedef struct toku_mutex_aligned { #else #define TOKU_ADAPTIVE_MUTEX_INITIALIZER \ { .pmutex = PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP, .psi_mutex = nullptr } -#endif -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) +#endif // defined(__APPLE__) // Different OSes implement mutexes as different amounts of nested structs. // C++ will fill out all missing values with zeroes if you provide at least one @@ -198,7 +198,7 @@ toku_mutexattr_destroy(toku_pthread_mutexattr_t *attr) { assert_zero(r); } -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) static inline void toku_mutex_assert_locked(const toku_mutex_t *mutex) { invariant(mutex->locked); invariant(mutex->owner == pthread_self()); @@ -207,7 +207,7 @@ static inline void toku_mutex_assert_locked(const toku_mutex_t *mutex) { static inline void toku_mutex_assert_locked(const toku_mutex_t *mutex __attribute__((unused))) { } -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) // asserting that a mutex is unlocked only makes sense // if the calling thread can guaruntee that no other threads @@ -217,7 +217,7 @@ toku_mutex_assert_locked(const toku_mutex_t *mutex __attribute__((unused))) { // when a node is locked the caller knows that no other threads // can be trying to lock its childrens' mutexes. the children // are in one of two fixed states: locked or unlocked. -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) static inline void toku_mutex_assert_unlocked(toku_mutex_t *mutex) { invariant(mutex->owner == 0); @@ -226,7 +226,7 @@ toku_mutex_assert_unlocked(toku_mutex_t *mutex) { #else static inline void toku_mutex_assert_unlocked(toku_mutex_t *mutex __attribute__((unused))) {} -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) #define toku_mutex_lock(M) \ toku_mutex_lock_with_source_location(M, __FILE__, __LINE__) @@ -241,13 +241,13 @@ static inline void toku_cond_init(toku_cond_t *cond, toku_mutex_trylock_with_source_location(M, __FILE__, __LINE__) inline void toku_mutex_unlock(toku_mutex_t *mutex) { -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) invariant(mutex->owner == pthread_self()); invariant(mutex->valid); invariant(mutex->locked); mutex->locked = false; mutex->owner = 0; -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) toku_instr_mutex_unlock(mutex->psi_mutex); int r = pthread_mutex_unlock(&mutex->pmutex); assert_zero(r); @@ -264,13 +264,13 @@ inline void toku_mutex_lock_with_source_location(toku_mutex_t *mutex, toku_instr_mutex_lock_end(mutex_instr, r); assert_zero(r); -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) invariant(mutex->valid); invariant(!mutex->locked); invariant(mutex->owner == 0); mutex->locked = true; mutex->owner = pthread_self(); -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) } inline int toku_mutex_trylock_with_source_location(toku_mutex_t *mutex, @@ -283,7 +283,7 @@ inline int toku_mutex_trylock_with_source_location(toku_mutex_t *mutex, const int r = pthread_mutex_lock(&mutex->pmutex); toku_instr_mutex_lock_end(mutex_instr, r); -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) if (r == 0) { invariant(mutex->valid); invariant(!mutex->locked); @@ -291,7 +291,7 @@ inline int toku_mutex_trylock_with_source_location(toku_mutex_t *mutex, mutex->locked = true; mutex->owner = pthread_self(); } -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) return r; } @@ -320,11 +320,11 @@ inline void toku_cond_wait_with_source_location(toku_cond_t *cond, const char *src_file, uint src_line) { -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) invariant(mutex->locked); mutex->locked = false; mutex->owner = 0; -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) /* Instrumentation start */ toku_cond_instrumentation cond_instr; @@ -342,11 +342,11 @@ inline void toku_cond_wait_with_source_location(toku_cond_t *cond, toku_instr_cond_wait_end(cond_instr, r); assert_zero(r); -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) invariant(!mutex->locked); mutex->locked = true; mutex->owner = pthread_self(); -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) } inline int toku_cond_timedwait_with_source_location(toku_cond_t *cond, @@ -354,11 +354,11 @@ inline int toku_cond_timedwait_with_source_location(toku_cond_t *cond, toku_timespec_t *wakeup_at, const char *src_file, uint src_line) { -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) invariant(mutex->locked); mutex->locked = false; mutex->owner = 0; -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) /* Instrumentation start */ toku_cond_instrumentation cond_instr; @@ -376,11 +376,11 @@ inline int toku_cond_timedwait_with_source_location(toku_cond_t *cond, /* Instrumentation end */ toku_instr_cond_wait_end(cond_instr, r); -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) invariant(!mutex->locked); mutex->locked = true; mutex->owner = pthread_self(); -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) return r; } @@ -399,26 +399,26 @@ inline void toku_cond_broadcast(toku_cond_t *cond) { inline void toku_mutex_init(const toku_instr_key &key, toku_mutex_t *mutex, const toku_pthread_mutexattr_t *attr) { -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) mutex->valid = true; -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) toku_instr_mutex_init(key, *mutex); const int r = pthread_mutex_init(&mutex->pmutex, attr); assert_zero(r); -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) mutex->locked = false; invariant(mutex->valid); mutex->valid = true; mutex->owner = 0; -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) } inline void toku_mutex_destroy(toku_mutex_t *mutex) { -#if TOKU_PTHREAD_DEBUG +#if defined(TOKU_PTHREAD_DEBUG) invariant(mutex->valid); mutex->valid = false; invariant(!mutex->locked); -#endif +#endif // defined(TOKU_PTHREAD_DEBUG) toku_instr_mutex_destroy(mutex->psi_mutex); int r = pthread_mutex_destroy(&mutex->pmutex); assert_zero(r); diff --git a/storage/tokudb/PerconaFT/util/growable_array.h b/storage/tokudb/PerconaFT/util/growable_array.h index e8873ae4a..ad60ea639 100644 --- a/storage/tokudb/PerconaFT/util/growable_array.h +++ b/storage/tokudb/PerconaFT/util/growable_array.h @@ -32,6 +32,19 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and ======= */ #ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." diff --git a/storage/tokudb/PerconaFT/util/omt.cc b/storage/tokudb/PerconaFT/util/omt.cc index 1fae0712c..846c4df7f 100644 --- a/storage/tokudb/PerconaFT/util/omt.cc +++ b/storage/tokudb/PerconaFT/util/omt.cc @@ -32,1105 +32,1356 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and ======= */ -#ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." +#ident \ + "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." -#include #include +#include #include namespace toku { -template -void omt::create(void) { - this->create_internal(2); - if (supports_marks) { - this->convert_to_tree(); + template + void omt::create(void) { + this->create_internal(2); + if (supports_marks) { + this->convert_to_tree(); + } } -} -template -void omt::create_no_array(void) { - if (!supports_marks) { - this->create_internal_no_array(0); - } else { - this->is_array = false; - this->capacity = 0; - this->d.t.nodes = nullptr; - this->d.t.root.set_to_null(); - this->d.t.free_idx = 0; - } -} - -template -void omt::create_from_sorted_array(const omtdata_t *const values, const uint32_t numvalues) { - this->create_internal(numvalues); - memcpy(this->d.a.values, values, numvalues * (sizeof values[0])); - this->d.a.num_values = numvalues; - if (supports_marks) { - this->convert_to_tree(); - } -} - -template -void omt::create_steal_sorted_array(omtdata_t **const values, const uint32_t numvalues, const uint32_t new_capacity) { - paranoid_invariant_notnull(values); - this->create_internal_no_array(new_capacity); - this->d.a.num_values = numvalues; - this->d.a.values = *values; - *values = nullptr; - if (supports_marks) { - this->convert_to_tree(); - } -} - -template -int omt::split_at(omt *const newomt, const uint32_t idx) { - barf_if_marked(*this); - paranoid_invariant_notnull(newomt); - if (idx > this->size()) { return EINVAL; } - this->convert_to_array(); - const uint32_t newsize = this->size() - idx; - newomt->create_from_sorted_array(&this->d.a.values[this->d.a.start_idx + idx], newsize); - this->d.a.num_values = idx; - this->maybe_resize_array(idx); - if (supports_marks) { - this->convert_to_tree(); - } - return 0; -} - -template -void omt::merge(omt *const leftomt, omt *const rightomt) { - barf_if_marked(*this); - paranoid_invariant_notnull(leftomt); - paranoid_invariant_notnull(rightomt); - const uint32_t leftsize = leftomt->size(); - const uint32_t rightsize = rightomt->size(); - const uint32_t newsize = leftsize + rightsize; - - if (leftomt->is_array) { - if (leftomt->capacity - (leftomt->d.a.start_idx + leftomt->d.a.num_values) >= rightsize) { - this->create_steal_sorted_array(&leftomt->d.a.values, leftomt->d.a.num_values, leftomt->capacity); - this->d.a.start_idx = leftomt->d.a.start_idx; + template + void omt::create_no_array(void) { + if (!supports_marks) { + this->create_internal_no_array(0); + } else { + this->is_array = false; + this->capacity = 0; + this->d.t.nodes = nullptr; + this->d.t.root.set_to_null(); + this->d.t.free_idx = 0; + } + } + + template + void omt::create_from_sorted_array( + const omtdata_t *const values, + const uint32_t numvalues) { + this->create_internal(numvalues); + memcpy(this->d.a.values, values, numvalues * (sizeof values[0])); + this->d.a.num_values = numvalues; + if (supports_marks) { + this->convert_to_tree(); + } + } + + template + void + omt::create_steal_sorted_array( + omtdata_t **const values, + const uint32_t numvalues, + const uint32_t new_capacity) { + paranoid_invariant_notnull(values); + this->create_internal_no_array(new_capacity); + this->d.a.num_values = numvalues; + this->d.a.values = *values; + *values = nullptr; + if (supports_marks) { + this->convert_to_tree(); + } + } + + template + int omt::split_at( + omt *const newomt, + const uint32_t idx) { + barf_if_marked(*this); + paranoid_invariant_notnull(newomt); + if (idx > this->size()) { + return EINVAL; + } + this->convert_to_array(); + const uint32_t newsize = this->size() - idx; + newomt->create_from_sorted_array( + &this->d.a.values[this->d.a.start_idx + idx], newsize); + this->d.a.num_values = idx; + this->maybe_resize_array(idx); + if (supports_marks) { + this->convert_to_tree(); + } + return 0; + } + + template + void omt::merge( + omt *const leftomt, + omt *const rightomt) { + barf_if_marked(*this); + paranoid_invariant_notnull(leftomt); + paranoid_invariant_notnull(rightomt); + const uint32_t leftsize = leftomt->size(); + const uint32_t rightsize = rightomt->size(); + const uint32_t newsize = leftsize + rightsize; + + if (leftomt->is_array) { + if (leftomt->capacity - + (leftomt->d.a.start_idx + leftomt->d.a.num_values) >= + rightsize) { + this->create_steal_sorted_array(&leftomt->d.a.values, + leftomt->d.a.num_values, + leftomt->capacity); + this->d.a.start_idx = leftomt->d.a.start_idx; + } else { + this->create_internal(newsize); + memcpy(&this->d.a.values[0], + &leftomt->d.a.values[leftomt->d.a.start_idx], + leftomt->d.a.num_values * (sizeof this->d.a.values[0])); + } } else { this->create_internal(newsize); + leftomt->fill_array_with_subtree_values(&this->d.a.values[0], + leftomt->d.t.root); + } + leftomt->destroy(); + this->d.a.num_values = leftsize; + + if (rightomt->is_array) { + memcpy( + &this->d.a.values[this->d.a.start_idx + this->d.a.num_values], + &rightomt->d.a.values[rightomt->d.a.start_idx], + rightomt->d.a.num_values * (sizeof this->d.a.values[0])); + } else { + rightomt->fill_array_with_subtree_values( + &this->d.a.values[this->d.a.start_idx + this->d.a.num_values], + rightomt->d.t.root); + } + rightomt->destroy(); + this->d.a.num_values += rightsize; + paranoid_invariant(this->size() == newsize); + if (supports_marks) { + this->convert_to_tree(); + } + } + + template + void omt::clone(const omt &src) { + barf_if_marked(*this); + this->create_internal(src.size()); + if (src.is_array) { memcpy(&this->d.a.values[0], - &leftomt->d.a.values[leftomt->d.a.start_idx], - leftomt->d.a.num_values * (sizeof this->d.a.values[0])); - } - } else { - this->create_internal(newsize); - leftomt->fill_array_with_subtree_values(&this->d.a.values[0], leftomt->d.t.root); - } - leftomt->destroy(); - this->d.a.num_values = leftsize; - - if (rightomt->is_array) { - memcpy(&this->d.a.values[this->d.a.start_idx + this->d.a.num_values], - &rightomt->d.a.values[rightomt->d.a.start_idx], - rightomt->d.a.num_values * (sizeof this->d.a.values[0])); - } else { - rightomt->fill_array_with_subtree_values(&this->d.a.values[this->d.a.start_idx + this->d.a.num_values], - rightomt->d.t.root); - } - rightomt->destroy(); - this->d.a.num_values += rightsize; - paranoid_invariant(this->size() == newsize); - if (supports_marks) { - this->convert_to_tree(); - } -} - -template -void omt::clone(const omt &src) { - barf_if_marked(*this); - this->create_internal(src.size()); - if (src.is_array) { - memcpy(&this->d.a.values[0], &src.d.a.values[src.d.a.start_idx], src.d.a.num_values * (sizeof this->d.a.values[0])); - } else { - src.fill_array_with_subtree_values(&this->d.a.values[0], src.d.t.root); - } - this->d.a.num_values = src.size(); - if (supports_marks) { - this->convert_to_tree(); - } -} - -template -void omt::clear(void) { - if (this->is_array) { - this->d.a.start_idx = 0; - this->d.a.num_values = 0; - } else { - this->d.t.root.set_to_null(); - this->d.t.free_idx = 0; - } -} - -template -void omt::destroy(void) { - this->clear(); - this->capacity = 0; - if (this->is_array) { - if (this->d.a.values != nullptr) { - toku_free(this->d.a.values); + &src.d.a.values[src.d.a.start_idx], + src.d.a.num_values * (sizeof this->d.a.values[0])); + } else { + src.fill_array_with_subtree_values(&this->d.a.values[0], + src.d.t.root); } - this->d.a.values = nullptr; - } else { - if (this->d.t.nodes != nullptr) { - toku_free(this->d.t.nodes); + this->d.a.num_values = src.size(); + if (supports_marks) { + this->convert_to_tree(); + } + } + + template + void omt::clear(void) { + if (this->is_array) { + this->d.a.start_idx = 0; + this->d.a.num_values = 0; + } else { + this->d.t.root.set_to_null(); + this->d.t.free_idx = 0; + } + } + + template + void omt::destroy(void) { + this->clear(); + this->capacity = 0; + if (this->is_array) { + if (this->d.a.values != nullptr) { + toku_free(this->d.a.values); + } + this->d.a.values = nullptr; + } else { + if (this->d.t.nodes != nullptr) { + toku_free(this->d.t.nodes); + } + this->d.t.nodes = nullptr; } - this->d.t.nodes = nullptr; } -} -template -uint32_t omt::size(void) const { - if (this->is_array) { - return this->d.a.num_values; - } else { - return this->nweight(this->d.t.root); + template + uint32_t omt::size(void) const { + if (this->is_array) { + return this->d.a.num_values; + } else { + return this->nweight(this->d.t.root); + } } -} + template + template + int omt::insert( + const omtdata_t &value, + const omtcmp_t &v, + uint32_t *const idx) { + int r; + uint32_t insert_idx; -template -template -int omt::insert(const omtdata_t &value, const omtcmp_t &v, uint32_t *const idx) { - int r; - uint32_t insert_idx; + r = this->find_zero(v, nullptr, &insert_idx); + if (r == 0) { + if (idx) + *idx = insert_idx; + return DB_KEYEXIST; + } + if (r != DB_NOTFOUND) + return r; - r = this->find_zero(v, nullptr, &insert_idx); - if (r==0) { - if (idx) *idx = insert_idx; - return DB_KEYEXIST; + if ((r = this->insert_at(value, insert_idx))) + return r; + if (idx) + *idx = insert_idx; + + return 0; } - if (r != DB_NOTFOUND) return r; - if ((r = this->insert_at(value, insert_idx))) return r; - if (idx) *idx = insert_idx; + // The following 3 functions implement a static if for us. + template + static void barf_if_marked( + const omt &UU(omt)) {} - return 0; -} + template + static void barf_if_marked(const omt &omt) { + invariant(!omt.has_marks()); + } -// The following 3 functions implement a static if for us. -template -static void barf_if_marked(const omt &UU(omt)) { -} + template + bool omt::has_marks(void) const { + static_assert(supports_marks, "Does not support marks"); + if (this->d.t.root.is_null()) { + return false; + } + const omt_node &node = this->d.t.nodes[this->d.t.root.get_index()]; + return node.get_marks_below() || node.get_marked(); + } -template -static void barf_if_marked(const omt &omt) { - invariant(!omt.has_marks()); -} - -template -bool omt::has_marks(void) const { - static_assert(supports_marks, "Does not support marks"); - if (this->d.t.root.is_null()) { - return false; - } - const omt_node &node = this->d.t.nodes[this->d.t.root.get_index()]; - return node.get_marks_below() || node.get_marked(); -} - -template -int omt::insert_at(const omtdata_t &value, const uint32_t idx) { - barf_if_marked(*this); - if (idx > this->size()) { return EINVAL; } - - this->maybe_resize_or_convert(this->size() + 1); - if (this->is_array && idx != this->d.a.num_values && - (idx != 0 || this->d.a.start_idx == 0)) { - this->convert_to_tree(); - } - if (this->is_array) { - if (idx == this->d.a.num_values) { - this->d.a.values[this->d.a.start_idx + this->d.a.num_values] = value; - } - else { - this->d.a.values[--this->d.a.start_idx] = value; - } - this->d.a.num_values++; - } - else { - subtree *rebalance_subtree = nullptr; - this->insert_internal(&this->d.t.root, value, idx, &rebalance_subtree); - if (rebalance_subtree != nullptr) { - this->rebalance(rebalance_subtree); - } - } - return 0; -} - -template -int omt::set_at(const omtdata_t &value, const uint32_t idx) { - barf_if_marked(*this); - if (idx >= this->size()) { return EINVAL; } - - if (this->is_array) { - this->set_at_internal_array(value, idx); - } else { - this->set_at_internal(this->d.t.root, value, idx); - } - return 0; -} - -template -int omt::delete_at(const uint32_t idx) { - barf_if_marked(*this); - if (idx >= this->size()) { return EINVAL; } - - this->maybe_resize_or_convert(this->size() - 1); - if (this->is_array && idx != 0 && idx != this->d.a.num_values - 1) { - this->convert_to_tree(); - } - if (this->is_array) { - //Testing for 0 does not rule out it being the last entry. - //Test explicitly for num_values-1 - if (idx != this->d.a.num_values - 1) { - this->d.a.start_idx++; - } - this->d.a.num_values--; - } else { - subtree *rebalance_subtree = nullptr; - this->delete_internal(&this->d.t.root, idx, nullptr, &rebalance_subtree); - if (rebalance_subtree != nullptr) { - this->rebalance(rebalance_subtree); - } - } - return 0; -} - -template -template -int omt::iterate(iterate_extra_t *const iterate_extra) const { - return this->iterate_on_range(0, this->size(), iterate_extra); -} - -template -template -int omt::iterate_on_range(const uint32_t left, const uint32_t right, iterate_extra_t *const iterate_extra) const { - if (right > this->size()) { return EINVAL; } - if (left == right) { return 0; } - if (this->is_array) { - return this->iterate_internal_array(left, right, iterate_extra); - } - return this->iterate_internal(left, right, this->d.t.root, 0, iterate_extra); -} - -template -template -int omt::iterate_and_mark_range(const uint32_t left, const uint32_t right, iterate_extra_t *const iterate_extra) { - static_assert(supports_marks, "does not support marks"); - if (right > this->size()) { return EINVAL; } - if (left == right) { return 0; } - paranoid_invariant(!this->is_array); - return this->iterate_and_mark_range_internal(left, right, this->d.t.root, 0, iterate_extra); -} - -//TODO: We can optimize this if we steal 3 bits. 1 bit: this node is marked. 1 bit: left subtree has marks. 1 bit: right subtree has marks. -template -template -int omt::iterate_over_marked(iterate_extra_t *const iterate_extra) const { - static_assert(supports_marks, "does not support marks"); - paranoid_invariant(!this->is_array); - return this->iterate_over_marked_internal(this->d.t.root, 0, iterate_extra); -} - -template -void omt::unmark(const subtree &subtree, const uint32_t index, GrowableArray *const indexes) { - if (subtree.is_null()) { return; } - omt_node &n = this->d.t.nodes[subtree.get_index()]; - const uint32_t index_root = index + this->nweight(n.left); - - const bool below = n.get_marks_below(); - if (below) { - this->unmark(n.left, index, indexes); - } - if (n.get_marked()) { - indexes->push(index_root); - } - n.clear_stolen_bits(); - if (below) { - this->unmark(n.right, index_root + 1, indexes); - } -} - -template -void omt::delete_all_marked(void) { - static_assert(supports_marks, "does not support marks"); - if (!this->has_marks()) { - return; - } - paranoid_invariant(!this->is_array); - GrowableArray marked_indexes; - marked_indexes.init(); - - // Remove all marks. - // We need to delete all the stolen bits before calling delete_at to prevent barfing. - this->unmark(this->d.t.root, 0, &marked_indexes); - - for (uint32_t i = 0; i < marked_indexes.get_size(); i++) { - // Delete from left to right, shift by number already deleted. - // Alternative is delete from right to left. - int r = this->delete_at(marked_indexes.fetch_unchecked(i) - i); - lazy_assert_zero(r); - } - marked_indexes.deinit(); - barf_if_marked(*this); -} - -template -uint32_t omt::verify_marks_consistent_internal(const subtree &subtree, const bool UU(allow_marks)) const { - if (subtree.is_null()) { + template + int omt::insert_at( + const omtdata_t &value, + const uint32_t idx) { + barf_if_marked(*this); + if (idx > this->size()) { + return EINVAL; + } + + this->maybe_resize_or_convert(this->size() + 1); + if (this->is_array && idx != this->d.a.num_values && + (idx != 0 || this->d.a.start_idx == 0)) { + this->convert_to_tree(); + } + if (this->is_array) { + if (idx == this->d.a.num_values) { + this->d.a.values[this->d.a.start_idx + this->d.a.num_values] = + value; + } else { + this->d.a.values[--this->d.a.start_idx] = value; + } + this->d.a.num_values++; + } else { + subtree *rebalance_subtree = nullptr; + this->insert_internal( + &this->d.t.root, value, idx, &rebalance_subtree); + if (rebalance_subtree != nullptr) { + this->rebalance(rebalance_subtree); + } + } return 0; } - const omt_node &node = this->d.t.nodes[subtree.get_index()]; - uint32_t num_marks = verify_marks_consistent_internal(node.left, node.get_marks_below()); - num_marks += verify_marks_consistent_internal(node.right, node.get_marks_below()); - if (node.get_marks_below()) { - paranoid_invariant(allow_marks); - paranoid_invariant(num_marks > 0); - } else { - // redundant with invariant below, but nice to have explicitly - paranoid_invariant(num_marks == 0); - } - if (node.get_marked()) { - paranoid_invariant(allow_marks); - ++num_marks; - } - return num_marks; -} - -template -void omt::verify_marks_consistent(void) const { - static_assert(supports_marks, "does not support marks"); - paranoid_invariant(!this->is_array); - this->verify_marks_consistent_internal(this->d.t.root, true); -} - -template -template -void omt::iterate_ptr(iterate_extra_t *const iterate_extra) { - if (this->is_array) { - this->iterate_ptr_internal_array(0, this->size(), iterate_extra); - } else { - this->iterate_ptr_internal(0, this->size(), this->d.t.root, 0, iterate_extra); - } -} - -template -int omt::fetch(const uint32_t idx, omtdataout_t *const value) const { - if (idx >= this->size()) { return EINVAL; } - if (this->is_array) { - this->fetch_internal_array(idx, value); - } else { - this->fetch_internal(this->d.t.root, idx, value); - } - return 0; -} - -template -template -int omt::find_zero(const omtcmp_t &extra, omtdataout_t *const value, uint32_t *const idxp) const { - uint32_t tmp_index; - uint32_t *const child_idxp = (idxp != nullptr) ? idxp : &tmp_index; - int r; - if (this->is_array) { - r = this->find_internal_zero_array(extra, value, child_idxp); - } - else { - r = this->find_internal_zero(this->d.t.root, extra, value, child_idxp); - } - return r; -} - -template -template -int omt::find(const omtcmp_t &extra, int direction, omtdataout_t *const value, uint32_t *const idxp) const { - uint32_t tmp_index; - uint32_t *const child_idxp = (idxp != nullptr) ? idxp : &tmp_index; - paranoid_invariant(direction != 0); - if (direction < 0) { + + template + int omt::set_at( + const omtdata_t &value, + const uint32_t idx) { + barf_if_marked(*this); + if (idx >= this->size()) { + return EINVAL; + } + if (this->is_array) { - return this->find_internal_minus_array(extra, value, child_idxp); + this->set_at_internal_array(value, idx); } else { - return this->find_internal_minus(this->d.t.root, extra, value, child_idxp); + this->set_at_internal(this->d.t.root, value, idx); + } + return 0; + } + + template + int omt::delete_at( + const uint32_t idx) { + barf_if_marked(*this); + if (idx >= this->size()) { + return EINVAL; + } + + this->maybe_resize_or_convert(this->size() - 1); + if (this->is_array && idx != 0 && idx != this->d.a.num_values - 1) { + this->convert_to_tree(); } - } else { if (this->is_array) { - return this->find_internal_plus_array(extra, value, child_idxp); + // Testing for 0 does not rule out it being the last entry. + // Test explicitly for num_values-1 + if (idx != this->d.a.num_values - 1) { + this->d.a.start_idx++; + } + this->d.a.num_values--; } else { - return this->find_internal_plus(this->d.t.root, extra, value, child_idxp); + subtree *rebalance_subtree = nullptr; + this->delete_internal( + &this->d.t.root, idx, nullptr, &rebalance_subtree); + if (rebalance_subtree != nullptr) { + this->rebalance(rebalance_subtree); + } } + return 0; } -} -template -size_t omt::memory_size(void) { - if (this->is_array) { - return (sizeof *this) + this->capacity * (sizeof this->d.a.values[0]); + template + template < + typename iterate_extra_t, + int (*f)(const omtdata_t &, const uint32_t, iterate_extra_t *const)> + int omt::iterate( + iterate_extra_t *const iterate_extra) const { + return this->iterate_on_range( + 0, this->size(), iterate_extra); + } + + template + template < + typename iterate_extra_t, + int (*f)(const omtdata_t &, const uint32_t, iterate_extra_t *const)> + int omt::iterate_on_range( + const uint32_t left, + const uint32_t right, + iterate_extra_t *const iterate_extra) const { + if (right > this->size()) { + return EINVAL; + } + if (left == right) { + return 0; + } + if (this->is_array) { + return this->iterate_internal_array( + left, right, iterate_extra); + } + return this->iterate_internal( + left, right, this->d.t.root, 0, iterate_extra); + } + + template + template < + typename iterate_extra_t, + int (*f)(const omtdata_t &, const uint32_t, iterate_extra_t *const)> + int omt::iterate_and_mark_range( + const uint32_t left, + const uint32_t right, + iterate_extra_t *const iterate_extra) { + static_assert(supports_marks, "does not support marks"); + if (right > this->size()) { + return EINVAL; + } + if (left == right) { + return 0; + } + paranoid_invariant(!this->is_array); + return this->iterate_and_mark_range_internal( + left, right, this->d.t.root, 0, iterate_extra); + } + + // TODO: We can optimize this if we steal 3 bits. 1 bit: this node is + // marked. 1 bit: left subtree has marks. 1 bit: right subtree has marks. + template + template < + typename iterate_extra_t, + int (*f)(const omtdata_t &, const uint32_t, iterate_extra_t *const)> + int omt::iterate_over_marked( + iterate_extra_t *const iterate_extra) const { + static_assert(supports_marks, "does not support marks"); + paranoid_invariant(!this->is_array); + return this->iterate_over_marked_internal( + this->d.t.root, 0, iterate_extra); + } + + template + void omt::unmark( + const subtree &st, + const uint32_t index, + GrowableArray *const indexes) { + if (st.is_null()) { + return; + } + omt_node &n = this->d.t.nodes[st.get_index()]; + const uint32_t index_root = index + this->nweight(n.left); + + const bool below = n.get_marks_below(); + if (below) { + this->unmark(n.left, index, indexes); + } + if (n.get_marked()) { + indexes->push(index_root); + } + n.clear_stolen_bits(); + if (below) { + this->unmark(n.right, index_root + 1, indexes); + } } - return (sizeof *this) + this->capacity * (sizeof this->d.t.nodes[0]); -} + template + void omt::delete_all_marked(void) { + static_assert(supports_marks, "does not support marks"); + if (!this->has_marks()) { + return; + } + paranoid_invariant(!this->is_array); + GrowableArray marked_indexes; + marked_indexes.init(); + + // Remove all marks. + // We need to delete all the stolen bits before calling delete_at to + // prevent barfing. + this->unmark(this->d.t.root, 0, &marked_indexes); + + for (uint32_t i = 0; i < marked_indexes.get_size(); i++) { + // Delete from left to right, shift by number already deleted. + // Alternative is delete from right to left. + int r = this->delete_at(marked_indexes.fetch_unchecked(i) - i); + lazy_assert_zero(r); + } + marked_indexes.deinit(); + barf_if_marked(*this); + } -template -void omt::create_internal_no_array(const uint32_t new_capacity) { - this->is_array = true; - this->d.a.start_idx = 0; - this->d.a.num_values = 0; - this->d.a.values = nullptr; - this->capacity = new_capacity; -} + template + uint32_t omt:: + verify_marks_consistent_internal(const subtree &st, + const bool UU(allow_marks)) const { + if (st.is_null()) { + return 0; + } + const omt_node &node = this->d.t.nodes[st.get_index()]; + uint32_t num_marks = + verify_marks_consistent_internal(node.left, node.get_marks_below()); + num_marks += verify_marks_consistent_internal(node.right, + node.get_marks_below()); + if (node.get_marks_below()) { + paranoid_invariant(allow_marks); + paranoid_invariant(num_marks > 0); + } else { + // redundant with invariant below, but nice to have explicitly + paranoid_invariant(num_marks == 0); + } + if (node.get_marked()) { + paranoid_invariant(allow_marks); + ++num_marks; + } + return num_marks; + } + + template + void omt::verify_marks_consistent( + void) const { + static_assert(supports_marks, "does not support marks"); + paranoid_invariant(!this->is_array); + this->verify_marks_consistent_internal(this->d.t.root, true); + } -template -void omt::create_internal(const uint32_t new_capacity) { - this->create_internal_no_array(new_capacity); - XMALLOC_N(this->capacity, this->d.a.values); -} + template + template + void omt::iterate_ptr( + iterate_extra_t *const iterate_extra) { + if (this->is_array) { + this->iterate_ptr_internal_array( + 0, this->size(), iterate_extra); + } else { + this->iterate_ptr_internal( + 0, this->size(), this->d.t.root, 0, iterate_extra); + } + } -template -uint32_t omt::nweight(const subtree &subtree) const { - if (subtree.is_null()) { + template + int omt::fetch( + const uint32_t idx, + omtdataout_t *const value) const { + if (idx >= this->size()) { + return EINVAL; + } + if (this->is_array) { + this->fetch_internal_array(idx, value); + } else { + this->fetch_internal(this->d.t.root, idx, value); + } return 0; - } else { - return this->d.t.nodes[subtree.get_index()].weight; - } -} - -template -typename omt::node_idx omt::node_malloc(void) { - paranoid_invariant(this->d.t.free_idx < this->capacity); - omt_node &n = this->d.t.nodes[this->d.t.free_idx]; - n.clear_stolen_bits(); - return this->d.t.free_idx++; -} - -template -void omt::node_free(const node_idx UU(idx)) { - paranoid_invariant(idx < this->capacity); -} - -template -void omt::maybe_resize_array(const uint32_t n) { - const uint32_t new_size = n<=2 ? 4 : 2*n; - const uint32_t room = this->capacity - this->d.a.start_idx; - - if (room < n || this->capacity / 2 >= new_size) { - omtdata_t *XMALLOC_N(new_size, tmp_values); - memcpy(tmp_values, &this->d.a.values[this->d.a.start_idx], - this->d.a.num_values * (sizeof tmp_values[0])); + } + + template + template + int omt::find_zero( + const omtcmp_t &extra, + omtdataout_t *const value, + uint32_t *const idxp) const { + uint32_t tmp_index; + uint32_t *const child_idxp = (idxp != nullptr) ? idxp : &tmp_index; + int r; + if (this->is_array) { + r = this->find_internal_zero_array( + extra, value, child_idxp); + } else { + r = this->find_internal_zero( + this->d.t.root, extra, value, child_idxp); + } + return r; + } + + template + template + int omt::find( + const omtcmp_t &extra, + int direction, + omtdataout_t *const value, + uint32_t *const idxp) const { + uint32_t tmp_index; + uint32_t *const child_idxp = (idxp != nullptr) ? idxp : &tmp_index; + paranoid_invariant(direction != 0); + if (direction < 0) { + if (this->is_array) { + return this->find_internal_minus_array( + extra, value, child_idxp); + } else { + return this->find_internal_minus( + this->d.t.root, extra, value, child_idxp); + } + } else { + if (this->is_array) { + return this->find_internal_plus_array( + extra, value, child_idxp); + } else { + return this->find_internal_plus( + this->d.t.root, extra, value, child_idxp); + } + } + } + + template + size_t omt::memory_size(void) { + if (this->is_array) { + return (sizeof *this) + + this->capacity * (sizeof this->d.a.values[0]); + } + return (sizeof *this) + this->capacity * (sizeof this->d.t.nodes[0]); + } + + template + void omt::create_internal_no_array( + const uint32_t new_capacity) { + this->is_array = true; this->d.a.start_idx = 0; - this->capacity = new_size; - toku_free(this->d.a.values); - this->d.a.values = tmp_values; - } -} - -template -void omt::fill_array_with_subtree_values(omtdata_t *const array, const subtree &subtree) const { - if (subtree.is_null()) return; - const omt_node &tree = this->d.t.nodes[subtree.get_index()]; - this->fill_array_with_subtree_values(&array[0], tree.left); - array[this->nweight(tree.left)] = tree.value; - this->fill_array_with_subtree_values(&array[this->nweight(tree.left) + 1], tree.right); -} - -template -void omt::convert_to_array(void) { - if (!this->is_array) { - const uint32_t num_values = this->size(); - uint32_t new_size = 2*num_values; - new_size = new_size < 4 ? 4 : new_size; - - omtdata_t *XMALLOC_N(new_size, tmp_values); - this->fill_array_with_subtree_values(tmp_values, this->d.t.root); - toku_free(this->d.t.nodes); - this->is_array = true; - this->capacity = new_size; - this->d.a.num_values = num_values; - this->d.a.values = tmp_values; - this->d.a.start_idx = 0; - } -} - -template -void omt::rebuild_from_sorted_array(subtree *const subtree, const omtdata_t *const values, const uint32_t numvalues) { - if (numvalues==0) { - subtree->set_to_null(); - } else { - const uint32_t halfway = numvalues/2; - const node_idx newidx = this->node_malloc(); - omt_node *const newnode = &this->d.t.nodes[newidx]; - newnode->weight = numvalues; - newnode->value = values[halfway]; - subtree->set_index(newidx); - // update everything before the recursive calls so the second call can be a tail call. - this->rebuild_from_sorted_array(&newnode->left, &values[0], halfway); - this->rebuild_from_sorted_array(&newnode->right, &values[halfway+1], numvalues - (halfway+1)); - } -} - -template -void omt::convert_to_tree(void) { - if (this->is_array) { - const uint32_t num_nodes = this->size(); - uint32_t new_size = num_nodes*2; - new_size = new_size < 4 ? 4 : new_size; - - omt_node *XMALLOC_N(new_size, new_nodes); - omtdata_t *const values = this->d.a.values; - omtdata_t *const tmp_values = &values[this->d.a.start_idx]; - this->is_array = false; - this->d.t.nodes = new_nodes; - this->capacity = new_size; - this->d.t.free_idx = 0; - this->d.t.root.set_to_null(); - this->rebuild_from_sorted_array(&this->d.t.root, tmp_values, num_nodes); - toku_free(values); - } -} - -template -void omt::maybe_resize_or_convert(const uint32_t n) { - if (this->is_array) { - this->maybe_resize_array(n); - } else { - const uint32_t new_size = n<=2 ? 4 : 2*n; - const uint32_t num_nodes = this->nweight(this->d.t.root); - if ((this->capacity/2 >= new_size) || - (this->d.t.free_idx >= this->capacity && num_nodes < n) || - (this->capacityconvert_to_array(); - // if we had a free list, the "supports_marks" version could - // just resize, as it is now, we have to convert to and back - // from an array. - if (supports_marks) { - this->convert_to_tree(); + this->d.a.num_values = 0; + this->d.a.values = nullptr; + this->capacity = new_capacity; + } + + template + void omt::create_internal( + const uint32_t new_capacity) { + this->create_internal_no_array(new_capacity); + XMALLOC_N(this->capacity, this->d.a.values); + } + + template + uint32_t omt::nweight( + const subtree &st) const { + if (st.is_null()) { + return 0; + } else { + return this->d.t.nodes[st.get_index()].weight; + } + } + + template + typename omt::node_idx + omt::node_malloc(void) { + paranoid_invariant(this->d.t.free_idx < this->capacity); + omt_node &n = this->d.t.nodes[this->d.t.free_idx]; + n.clear_stolen_bits(); + return this->d.t.free_idx++; + } + + template + void omt::node_free( + const node_idx UU(idx)) { + paranoid_invariant(idx < this->capacity); + } + + template + void omt::maybe_resize_array( + const uint32_t n) { + const uint32_t new_size = n <= 2 ? 4 : 2 * n; + const uint32_t room = this->capacity - this->d.a.start_idx; + + if (room < n || this->capacity / 2 >= new_size) { + omtdata_t *XMALLOC_N(new_size, tmp_values); + memcpy(tmp_values, + &this->d.a.values[this->d.a.start_idx], + this->d.a.num_values * (sizeof tmp_values[0])); + this->d.a.start_idx = 0; + this->capacity = new_size; + toku_free(this->d.a.values); + this->d.a.values = tmp_values; + } + } + + template + void omt:: + fill_array_with_subtree_values(omtdata_t *const array, + const subtree &st) const { + if (st.is_null()) + return; + const omt_node &tree = this->d.t.nodes[st.get_index()]; + this->fill_array_with_subtree_values(&array[0], tree.left); + array[this->nweight(tree.left)] = tree.value; + this->fill_array_with_subtree_values( + &array[this->nweight(tree.left) + 1], tree.right); + } + + template + void omt::convert_to_array(void) { + if (!this->is_array) { + const uint32_t num_values = this->size(); + uint32_t new_size = 2 * num_values; + new_size = new_size < 4 ? 4 : new_size; + + omtdata_t *XMALLOC_N(new_size, tmp_values); + this->fill_array_with_subtree_values(tmp_values, this->d.t.root); + toku_free(this->d.t.nodes); + this->is_array = true; + this->capacity = new_size; + this->d.a.num_values = num_values; + this->d.a.values = tmp_values; + this->d.a.start_idx = 0; + } + } + + template + void + omt::rebuild_from_sorted_array( + subtree *const st, + const omtdata_t *const values, + const uint32_t numvalues) { + if (numvalues == 0) { + st->set_to_null(); + } else { + const uint32_t halfway = numvalues / 2; + const node_idx newidx = this->node_malloc(); + omt_node *const newnode = &this->d.t.nodes[newidx]; + newnode->weight = numvalues; + newnode->value = values[halfway]; + st->set_index(newidx); + // update everything before the recursive calls so the second call + // can be a tail call. + this->rebuild_from_sorted_array( + &newnode->left, &values[0], halfway); + this->rebuild_from_sorted_array(&newnode->right, + &values[halfway + 1], + numvalues - (halfway + 1)); + } + } + + template + void omt::convert_to_tree(void) { + if (this->is_array) { + const uint32_t num_nodes = this->size(); + uint32_t new_size = num_nodes * 2; + new_size = new_size < 4 ? 4 : new_size; + + omt_node *XMALLOC_N(new_size, new_nodes); + omtdata_t *const values = this->d.a.values; + omtdata_t *const tmp_values = &values[this->d.a.start_idx]; + this->is_array = false; + this->d.t.nodes = new_nodes; + this->capacity = new_size; + this->d.t.free_idx = 0; + this->d.t.root.set_to_null(); + this->rebuild_from_sorted_array( + &this->d.t.root, tmp_values, num_nodes); + toku_free(values); + } + } + + template + void omt::maybe_resize_or_convert( + const uint32_t n) { + if (this->is_array) { + this->maybe_resize_array(n); + } else { + const uint32_t new_size = n <= 2 ? 4 : 2 * n; + const uint32_t num_nodes = this->nweight(this->d.t.root); + if ((this->capacity / 2 >= new_size) || + (this->d.t.free_idx >= this->capacity && num_nodes < n) || + (this->capacity < n)) { + this->convert_to_array(); + // if we had a free list, the "supports_marks" version could + // just resize, as it is now, we have to convert to and back + // from an array. + if (supports_marks) { + this->convert_to_tree(); + } } } } -} - -template -bool omt::will_need_rebalance(const subtree &subtree, const int leftmod, const int rightmod) const { - if (subtree.is_null()) { return false; } - const omt_node &n = this->d.t.nodes[subtree.get_index()]; - // one of the 1's is for the root. - // the other is to take ceil(n/2) - const uint32_t weight_left = this->nweight(n.left) + leftmod; - const uint32_t weight_right = this->nweight(n.right) + rightmod; - return ((1+weight_left < (1+1+weight_right)/2) - || - (1+weight_right < (1+1+weight_left)/2)); -} - -template -void omt::insert_internal(subtree *const subtreep, const omtdata_t &value, const uint32_t idx, subtree **const rebalance_subtree) { - if (subtreep->is_null()) { - paranoid_invariant_zero(idx); - const node_idx newidx = this->node_malloc(); - omt_node *const newnode = &this->d.t.nodes[newidx]; - newnode->weight = 1; - newnode->left.set_to_null(); - newnode->right.set_to_null(); - newnode->value = value; - subtreep->set_index(newidx); - } else { + + template + bool omt::will_need_rebalance( + const subtree &st, + const int leftmod, + const int rightmod) const { + if (st.is_null()) { + return false; + } + const omt_node &n = this->d.t.nodes[st.get_index()]; + // one of the 1's is for the root. + // the other is to take ceil(n/2) + const uint32_t weight_left = this->nweight(n.left) + leftmod; + const uint32_t weight_right = this->nweight(n.right) + rightmod; + return ((1 + weight_left < (1 + 1 + weight_right) / 2) || + (1 + weight_right < (1 + 1 + weight_left) / 2)); + } + + template + void omt::insert_internal( + subtree *const subtreep, + const omtdata_t &value, + const uint32_t idx, + subtree **const rebalance_subtree) { + if (subtreep->is_null()) { + paranoid_invariant_zero(idx); + const node_idx newidx = this->node_malloc(); + omt_node *const newnode = &this->d.t.nodes[newidx]; + newnode->weight = 1; + newnode->left.set_to_null(); + newnode->right.set_to_null(); + newnode->value = value; + subtreep->set_index(newidx); + } else { + omt_node &n = this->d.t.nodes[subtreep->get_index()]; + n.weight++; + if (idx <= this->nweight(n.left)) { + if (*rebalance_subtree == nullptr && + this->will_need_rebalance(*subtreep, 1, 0)) { + *rebalance_subtree = subtreep; + } + this->insert_internal(&n.left, value, idx, rebalance_subtree); + } else { + if (*rebalance_subtree == nullptr && + this->will_need_rebalance(*subtreep, 0, 1)) { + *rebalance_subtree = subtreep; + } + const uint32_t sub_index = idx - this->nweight(n.left) - 1; + this->insert_internal( + &n.right, value, sub_index, rebalance_subtree); + } + } + } + + template + void omt::set_at_internal_array( + const omtdata_t &value, + const uint32_t idx) { + this->d.a.values[this->d.a.start_idx + idx] = value; + } + + template + void omt::set_at_internal( + const subtree &st, + const omtdata_t &value, + const uint32_t idx) { + paranoid_invariant(!st.is_null()); + omt_node &n = this->d.t.nodes[st.get_index()]; + const uint32_t leftweight = this->nweight(n.left); + if (idx < leftweight) { + this->set_at_internal(n.left, value, idx); + } else if (idx == leftweight) { + n.value = value; + } else { + this->set_at_internal(n.right, value, idx - leftweight - 1); + } + } + + template + void omt::delete_internal( + subtree *const subtreep, + const uint32_t idx, + omt_node *const copyn, + subtree **const rebalance_subtree) { + paranoid_invariant_notnull(subtreep); + paranoid_invariant_notnull(rebalance_subtree); + paranoid_invariant(!subtreep->is_null()); omt_node &n = this->d.t.nodes[subtreep->get_index()]; - n.weight++; - if (idx <= this->nweight(n.left)) { - if (*rebalance_subtree == nullptr && this->will_need_rebalance(*subtreep, 1, 0)) { + const uint32_t leftweight = this->nweight(n.left); + if (idx < leftweight) { + n.weight--; + if (*rebalance_subtree == nullptr && + this->will_need_rebalance(*subtreep, -1, 0)) { *rebalance_subtree = subtreep; } - this->insert_internal(&n.left, value, idx, rebalance_subtree); + this->delete_internal(&n.left, idx, copyn, rebalance_subtree); + } else if (idx == leftweight) { + if (n.left.is_null()) { + const uint32_t oldidx = subtreep->get_index(); + *subtreep = n.right; + if (copyn != nullptr) { + copyn->value = n.value; + } + this->node_free(oldidx); + } else if (n.right.is_null()) { + const uint32_t oldidx = subtreep->get_index(); + *subtreep = n.left; + if (copyn != nullptr) { + copyn->value = n.value; + } + this->node_free(oldidx); + } else { + if (*rebalance_subtree == nullptr && + this->will_need_rebalance(*subtreep, 0, -1)) { + *rebalance_subtree = subtreep; + } + // don't need to copy up value, it's only used by this + // next call, and when that gets to the bottom there + // won't be any more recursion + n.weight--; + this->delete_internal(&n.right, 0, &n, rebalance_subtree); + } } else { - if (*rebalance_subtree == nullptr && this->will_need_rebalance(*subtreep, 0, 1)) { + n.weight--; + if (*rebalance_subtree == nullptr && + this->will_need_rebalance(*subtreep, 0, -1)) { *rebalance_subtree = subtreep; } - const uint32_t sub_index = idx - this->nweight(n.left) - 1; - this->insert_internal(&n.right, value, sub_index, rebalance_subtree); - } - } -} - -template -void omt::set_at_internal_array(const omtdata_t &value, const uint32_t idx) { - this->d.a.values[this->d.a.start_idx + idx] = value; -} - -template -void omt::set_at_internal(const subtree &subtree, const omtdata_t &value, const uint32_t idx) { - paranoid_invariant(!subtree.is_null()); - omt_node &n = this->d.t.nodes[subtree.get_index()]; - const uint32_t leftweight = this->nweight(n.left); - if (idx < leftweight) { - this->set_at_internal(n.left, value, idx); - } else if (idx == leftweight) { - n.value = value; - } else { - this->set_at_internal(n.right, value, idx - leftweight - 1); - } -} - -template -void omt::delete_internal(subtree *const subtreep, const uint32_t idx, omt_node *const copyn, subtree **const rebalance_subtree) { - paranoid_invariant_notnull(subtreep); - paranoid_invariant_notnull(rebalance_subtree); - paranoid_invariant(!subtreep->is_null()); - omt_node &n = this->d.t.nodes[subtreep->get_index()]; - const uint32_t leftweight = this->nweight(n.left); - if (idx < leftweight) { - n.weight--; - if (*rebalance_subtree == nullptr && this->will_need_rebalance(*subtreep, -1, 0)) { - *rebalance_subtree = subtreep; - } - this->delete_internal(&n.left, idx, copyn, rebalance_subtree); - } else if (idx == leftweight) { - if (n.left.is_null()) { - const uint32_t oldidx = subtreep->get_index(); - *subtreep = n.right; - if (copyn != nullptr) { - copyn->value = n.value; + this->delete_internal( + &n.right, idx - leftweight - 1, copyn, rebalance_subtree); + } + } + + template + template < + typename iterate_extra_t, + int (*f)(const omtdata_t &, const uint32_t, iterate_extra_t *const)> + int omt::iterate_internal_array( + const uint32_t left, + const uint32_t right, + iterate_extra_t *const iterate_extra) const { + int r; + for (uint32_t i = left; i < right; ++i) { + r = f(this->d.a.values[this->d.a.start_idx + i], i, iterate_extra); + if (r != 0) { + return r; } - this->node_free(oldidx); - } else if (n.right.is_null()) { - const uint32_t oldidx = subtreep->get_index(); - *subtreep = n.left; - if (copyn != nullptr) { - copyn->value = n.value; + } + return 0; + } + + template + template + void omt::iterate_ptr_internal( + const uint32_t left, + const uint32_t right, + const subtree &st, + const uint32_t idx, + iterate_extra_t *const iterate_extra) { + if (!st.is_null()) { + omt_node &n = this->d.t.nodes[st.get_index()]; + const uint32_t idx_root = idx + this->nweight(n.left); + if (left < idx_root) { + this->iterate_ptr_internal( + left, right, n.left, idx, iterate_extra); } - this->node_free(oldidx); - } else { - if (*rebalance_subtree == nullptr && this->will_need_rebalance(*subtreep, 0, -1)) { - *rebalance_subtree = subtreep; + if (left <= idx_root && idx_root < right) { + int r = f(&n.value, idx_root, iterate_extra); + lazy_assert_zero(r); + } + if (idx_root + 1 < right) { + this->iterate_ptr_internal( + left, right, n.right, idx_root + 1, iterate_extra); } - // don't need to copy up value, it's only used by this - // next call, and when that gets to the bottom there - // won't be any more recursion - n.weight--; - this->delete_internal(&n.right, 0, &n, rebalance_subtree); - } - } else { - n.weight--; - if (*rebalance_subtree == nullptr && this->will_need_rebalance(*subtreep, 0, -1)) { - *rebalance_subtree = subtreep; - } - this->delete_internal(&n.right, idx - leftweight - 1, copyn, rebalance_subtree); - } -} - -template -template -int omt::iterate_internal_array(const uint32_t left, const uint32_t right, - iterate_extra_t *const iterate_extra) const { - int r; - for (uint32_t i = left; i < right; ++i) { - r = f(this->d.a.values[this->d.a.start_idx + i], i, iterate_extra); - if (r != 0) { - return r; } } - return 0; -} -template -template -void omt::iterate_ptr_internal(const uint32_t left, const uint32_t right, - const subtree &subtree, const uint32_t idx, - iterate_extra_t *const iterate_extra) { - if (!subtree.is_null()) { - omt_node &n = this->d.t.nodes[subtree.get_index()]; + template + template + void + omt::iterate_ptr_internal_array( + const uint32_t left, + const uint32_t right, + iterate_extra_t *const iterate_extra) { + for (uint32_t i = left; i < right; ++i) { + int r = + f(&this->d.a.values[this->d.a.start_idx + i], i, iterate_extra); + lazy_assert_zero(r); + } + } + + template + template < + typename iterate_extra_t, + int (*f)(const omtdata_t &, const uint32_t, iterate_extra_t *const)> + int omt::iterate_internal( + const uint32_t left, + const uint32_t right, + const subtree &st, + const uint32_t idx, + iterate_extra_t *const iterate_extra) const { + if (st.is_null()) { + return 0; + } + int r; + const omt_node &n = this->d.t.nodes[st.get_index()]; const uint32_t idx_root = idx + this->nweight(n.left); if (left < idx_root) { - this->iterate_ptr_internal(left, right, n.left, idx, iterate_extra); + r = this->iterate_internal( + left, right, n.left, idx, iterate_extra); + if (r != 0) { + return r; + } } if (left <= idx_root && idx_root < right) { - int r = f(&n.value, idx_root, iterate_extra); - lazy_assert_zero(r); + r = f(n.value, idx_root, iterate_extra); + if (r != 0) { + return r; + } } if (idx_root + 1 < right) { - this->iterate_ptr_internal(left, right, n.right, idx_root + 1, iterate_extra); - } - } -} - -template -template -void omt::iterate_ptr_internal_array(const uint32_t left, const uint32_t right, - iterate_extra_t *const iterate_extra) { - for (uint32_t i = left; i < right; ++i) { - int r = f(&this->d.a.values[this->d.a.start_idx + i], i, iterate_extra); - lazy_assert_zero(r); - } -} - -template -template -int omt::iterate_internal(const uint32_t left, const uint32_t right, - const subtree &subtree, const uint32_t idx, - iterate_extra_t *const iterate_extra) const { - if (subtree.is_null()) { return 0; } - int r; - const omt_node &n = this->d.t.nodes[subtree.get_index()]; - const uint32_t idx_root = idx + this->nweight(n.left); - if (left < idx_root) { - r = this->iterate_internal(left, right, n.left, idx, iterate_extra); - if (r != 0) { return r; } - } - if (left <= idx_root && idx_root < right) { - r = f(n.value, idx_root, iterate_extra); - if (r != 0) { return r; } - } - if (idx_root + 1 < right) { - return this->iterate_internal(left, right, n.right, idx_root + 1, iterate_extra); - } - return 0; -} - -template -template -int omt::iterate_and_mark_range_internal(const uint32_t left, const uint32_t right, - const subtree &subtree, const uint32_t idx, - iterate_extra_t *const iterate_extra) { - paranoid_invariant(!subtree.is_null()); - int r; - omt_node &n = this->d.t.nodes[subtree.get_index()]; - const uint32_t idx_root = idx + this->nweight(n.left); - if (left < idx_root && !n.left.is_null()) { - n.set_marks_below_bit(); - r = this->iterate_and_mark_range_internal(left, right, n.left, idx, iterate_extra); - if (r != 0) { return r; } - } - if (left <= idx_root && idx_root < right) { - n.set_marked_bit(); - r = f(n.value, idx_root, iterate_extra); - if (r != 0) { return r; } - } - if (idx_root + 1 < right && !n.right.is_null()) { - n.set_marks_below_bit(); - return this->iterate_and_mark_range_internal(left, right, n.right, idx_root + 1, iterate_extra); - } - return 0; -} - -template -template -int omt::iterate_over_marked_internal(const subtree &subtree, const uint32_t idx, - iterate_extra_t *const iterate_extra) const { - if (subtree.is_null()) { return 0; } - int r; - const omt_node &n = this->d.t.nodes[subtree.get_index()]; - const uint32_t idx_root = idx + this->nweight(n.left); - if (n.get_marks_below()) { - r = this->iterate_over_marked_internal(n.left, idx, iterate_extra); - if (r != 0) { return r; } - } - if (n.get_marked()) { - r = f(n.value, idx_root, iterate_extra); - if (r != 0) { return r; } - } - if (n.get_marks_below()) { - return this->iterate_over_marked_internal(n.right, idx_root + 1, iterate_extra); - } - return 0; -} - -template -void omt::fetch_internal_array(const uint32_t i, omtdataout_t *const value) const { - if (value != nullptr) { - copyout(value, &this->d.a.values[this->d.a.start_idx + i]); - } -} - -template -void omt::fetch_internal(const subtree &subtree, const uint32_t i, omtdataout_t *const value) const { - omt_node &n = this->d.t.nodes[subtree.get_index()]; - const uint32_t leftweight = this->nweight(n.left); - if (i < leftweight) { - this->fetch_internal(n.left, i, value); - } else if (i == leftweight) { - if (value != nullptr) { - copyout(value, &n); - } - } else { - this->fetch_internal(n.right, i - leftweight - 1, value); - } -} - -template -void omt::fill_array_with_subtree_idxs(node_idx *const array, const subtree &subtree) const { - if (!subtree.is_null()) { - const omt_node &tree = this->d.t.nodes[subtree.get_index()]; - this->fill_array_with_subtree_idxs(&array[0], tree.left); - array[this->nweight(tree.left)] = subtree.get_index(); - this->fill_array_with_subtree_idxs(&array[this->nweight(tree.left) + 1], tree.right); - } -} - -template -void omt::rebuild_subtree_from_idxs(subtree *const subtree, const node_idx *const idxs, const uint32_t numvalues) { - if (numvalues==0) { - subtree->set_to_null(); - } else { - uint32_t halfway = numvalues/2; - subtree->set_index(idxs[halfway]); - //node_idx newidx = idxs[halfway]; - omt_node &newnode = this->d.t.nodes[subtree->get_index()]; - newnode.weight = numvalues; - // value is already in there. - this->rebuild_subtree_from_idxs(&newnode.left, &idxs[0], halfway); - this->rebuild_subtree_from_idxs(&newnode.right, &idxs[halfway+1], numvalues-(halfway+1)); - //n_idx = newidx; - } -} - -template -void omt::rebalance(subtree *const subtree) { - node_idx idx = subtree->get_index(); - if (idx==this->d.t.root.get_index()) { - //Try to convert to an array. - //If this fails, (malloc) nothing will have changed. - //In the failure case we continue on to the standard rebalance - //algorithm. - this->convert_to_array(); - if (supports_marks) { - this->convert_to_tree(); + return this->iterate_internal( + left, right, n.right, idx_root + 1, iterate_extra); } - } else { - const omt_node &n = this->d.t.nodes[idx]; - node_idx *tmp_array; - size_t mem_needed = n.weight * (sizeof tmp_array[0]); - size_t mem_free = (this->capacity - this->d.t.free_idx) * (sizeof this->d.t.nodes[0]); - bool malloced; - if (mem_needed<=mem_free) { - //There is sufficient free space at the end of the nodes array - //to hold enough node indexes to rebalance. - malloced = false; - tmp_array = reinterpret_cast(&this->d.t.nodes[this->d.t.free_idx]); - } - else { - malloced = true; - XMALLOC_N(n.weight, tmp_array); - } - this->fill_array_with_subtree_idxs(tmp_array, *subtree); - this->rebuild_subtree_from_idxs(subtree, tmp_array, n.weight); - if (malloced) toku_free(tmp_array); - } -} - -template -void omt::copyout(omtdata_t *const out, const omt_node *const n) { - *out = n->value; -} - -template -void omt::copyout(omtdata_t **const out, omt_node *const n) { - *out = &n->value; -} - -template -void omt::copyout(omtdata_t *const out, const omtdata_t *const stored_value_ptr) { - *out = *stored_value_ptr; -} - -template -void omt::copyout(omtdata_t **const out, omtdata_t *const stored_value_ptr) { - *out = stored_value_ptr; -} - -template -template -int omt::find_internal_zero_array(const omtcmp_t &extra, omtdataout_t *const value, uint32_t *const idxp) const { - paranoid_invariant_notnull(idxp); - uint32_t min = this->d.a.start_idx; - uint32_t limit = this->d.a.start_idx + this->d.a.num_values; - uint32_t best_pos = subtree::NODE_NULL; - uint32_t best_zero = subtree::NODE_NULL; - - while (min!=limit) { - uint32_t mid = (min + limit) / 2; - int hv = h(this->d.a.values[mid], extra); - if (hv<0) { - min = mid+1; - } - else if (hv>0) { - best_pos = mid; - limit = mid; - } - else { - best_zero = mid; - limit = mid; - } - } - if (best_zero!=subtree::NODE_NULL) { - //Found a zero - if (value != nullptr) { - copyout(value, &this->d.a.values[best_zero]); + return 0; + } + + template + template < + typename iterate_extra_t, + int (*f)(const omtdata_t &, const uint32_t, iterate_extra_t *const)> + int omt:: + iterate_and_mark_range_internal(const uint32_t left, + const uint32_t right, + const subtree &st, + const uint32_t idx, + iterate_extra_t *const iterate_extra) { + paranoid_invariant(!st.is_null()); + int r; + omt_node &n = this->d.t.nodes[st.get_index()]; + const uint32_t idx_root = idx + this->nweight(n.left); + if (left < idx_root && !n.left.is_null()) { + n.set_marks_below_bit(); + r = this->iterate_and_mark_range_internal( + left, right, n.left, idx, iterate_extra); + if (r != 0) { + return r; + } + } + if (left <= idx_root && idx_root < right) { + n.set_marked_bit(); + r = f(n.value, idx_root, iterate_extra); + if (r != 0) { + return r; + } + } + if (idx_root + 1 < right && !n.right.is_null()) { + n.set_marks_below_bit(); + return this->iterate_and_mark_range_internal( + left, right, n.right, idx_root + 1, iterate_extra); } - *idxp = best_zero - this->d.a.start_idx; return 0; } - if (best_pos!=subtree::NODE_NULL) *idxp = best_pos - this->d.a.start_idx; - else *idxp = this->d.a.num_values; - return DB_NOTFOUND; -} - -template -template -int omt::find_internal_zero(const subtree &subtree, const omtcmp_t &extra, omtdataout_t *const value, uint32_t *const idxp) const { - paranoid_invariant_notnull(idxp); - if (subtree.is_null()) { - *idxp = 0; - return DB_NOTFOUND; + + template + template < + typename iterate_extra_t, + int (*f)(const omtdata_t &, const uint32_t, iterate_extra_t *const)> + int + omt::iterate_over_marked_internal( + const subtree &st, + const uint32_t idx, + iterate_extra_t *const iterate_extra) const { + if (st.is_null()) { + return 0; + } + int r; + const omt_node &n = this->d.t.nodes[st.get_index()]; + const uint32_t idx_root = idx + this->nweight(n.left); + if (n.get_marks_below()) { + r = this->iterate_over_marked_internal( + n.left, idx, iterate_extra); + if (r != 0) { + return r; + } + } + if (n.get_marked()) { + r = f(n.value, idx_root, iterate_extra); + if (r != 0) { + return r; + } + } + if (n.get_marks_below()) { + return this->iterate_over_marked_internal( + n.right, idx_root + 1, iterate_extra); + } + return 0; } - omt_node &n = this->d.t.nodes[subtree.get_index()]; - int hv = h(n.value, extra); - if (hv<0) { - int r = this->find_internal_zero(n.right, extra, value, idxp); - *idxp += this->nweight(n.left)+1; - return r; - } else if (hv>0) { - return this->find_internal_zero(n.left, extra, value, idxp); - } else { - int r = this->find_internal_zero(n.left, extra, value, idxp); - if (r==DB_NOTFOUND) { - *idxp = this->nweight(n.left); + + template + void omt::fetch_internal_array( + const uint32_t i, + omtdataout_t *const value) const { + if (value != nullptr) { + copyout(value, &this->d.a.values[this->d.a.start_idx + i]); + } + } + + template + void omt::fetch_internal( + const subtree &st, + const uint32_t i, + omtdataout_t *const value) const { + omt_node &n = this->d.t.nodes[st.get_index()]; + const uint32_t leftweight = this->nweight(n.left); + if (i < leftweight) { + this->fetch_internal(n.left, i, value); + } else if (i == leftweight) { if (value != nullptr) { copyout(value, &n); } - r = 0; + } else { + this->fetch_internal(n.right, i - leftweight - 1, value); } - return r; } -} -template -template -int omt::find_internal_plus_array(const omtcmp_t &extra, omtdataout_t *const value, uint32_t *const idxp) const { - paranoid_invariant_notnull(idxp); - uint32_t min = this->d.a.start_idx; - uint32_t limit = this->d.a.start_idx + this->d.a.num_values; - uint32_t best = subtree::NODE_NULL; + template + void + omt::fill_array_with_subtree_idxs( + node_idx *const array, + const subtree &st) const { + if (!st.is_null()) { + const omt_node &tree = this->d.t.nodes[st.get_index()]; + this->fill_array_with_subtree_idxs(&array[0], tree.left); + array[this->nweight(tree.left)] = st.get_index(); + this->fill_array_with_subtree_idxs( + &array[this->nweight(tree.left) + 1], tree.right); + } + } - while (min != limit) { - const uint32_t mid = (min + limit) / 2; - const int hv = h(this->d.a.values[mid], extra); - if (hv > 0) { - best = mid; - limit = mid; + template + void + omt::rebuild_subtree_from_idxs( + subtree *const st, + const node_idx *const idxs, + const uint32_t numvalues) { + if (numvalues == 0) { + st->set_to_null(); } else { - min = mid + 1; + uint32_t halfway = numvalues / 2; + st->set_index(idxs[halfway]); + // node_idx newidx = idxs[halfway]; + omt_node &newnode = this->d.t.nodes[st->get_index()]; + newnode.weight = numvalues; + // value is already in there. + this->rebuild_subtree_from_idxs(&newnode.left, &idxs[0], halfway); + this->rebuild_subtree_from_idxs( + &newnode.right, &idxs[halfway + 1], numvalues - (halfway + 1)); + // n_idx = newidx; } } - if (best == subtree::NODE_NULL) { return DB_NOTFOUND; } - if (value != nullptr) { - copyout(value, &this->d.a.values[best]); - } - *idxp = best - this->d.a.start_idx; - return 0; -} -template -template -int omt::find_internal_plus(const subtree &subtree, const omtcmp_t &extra, omtdataout_t *const value, uint32_t *const idxp) const { - paranoid_invariant_notnull(idxp); - if (subtree.is_null()) { - return DB_NOTFOUND; + template + void omt::rebalance( + subtree *const st) { + node_idx idx = st->get_index(); + if (idx == this->d.t.root.get_index()) { + // Try to convert to an array. + // If this fails, (malloc) nothing will have changed. + // In the failure case we continue on to the standard rebalance + // algorithm. + this->convert_to_array(); + if (supports_marks) { + this->convert_to_tree(); + } + } else { + const omt_node &n = this->d.t.nodes[idx]; + node_idx *tmp_array; + size_t mem_needed = n.weight * (sizeof tmp_array[0]); + size_t mem_free = (this->capacity - this->d.t.free_idx) * + (sizeof this->d.t.nodes[0]); + bool malloced; + if (mem_needed <= mem_free) { + // There is sufficient free space at the end of the nodes array + // to hold enough node indexes to rebalance. + malloced = false; + tmp_array = reinterpret_cast( + &this->d.t.nodes[this->d.t.free_idx]); + } else { + malloced = true; + XMALLOC_N(n.weight, tmp_array); + } + this->fill_array_with_subtree_idxs(tmp_array, *st); + this->rebuild_subtree_from_idxs(st, tmp_array, n.weight); + if (malloced) + toku_free(tmp_array); + } } - omt_node *const n = &this->d.t.nodes[subtree.get_index()]; - int hv = h(n->value, extra); - int r; - if (hv > 0) { - r = this->find_internal_plus(n->left, extra, value, idxp); - if (r == DB_NOTFOUND) { - *idxp = this->nweight(n->left); - if (value != nullptr) { - copyout(value, n); + + template + void omt::copyout( + omtdata_t *const out, + const omt_node *const n) { + *out = n->value; + } + + template + void omt::copyout( + omtdata_t **const out, + omt_node *const n) { + *out = &n->value; + } + + template + void omt::copyout( + omtdata_t *const out, + const omtdata_t *const stored_value_ptr) { + *out = *stored_value_ptr; + } + + template + void omt::copyout( + omtdata_t **const out, + omtdata_t *const stored_value_ptr) { + *out = stored_value_ptr; + } + + template + template + int omt::find_internal_zero_array( + const omtcmp_t &extra, + omtdataout_t *const value, + uint32_t *const idxp) const { + paranoid_invariant_notnull(idxp); + uint32_t min = this->d.a.start_idx; + uint32_t limit = this->d.a.start_idx + this->d.a.num_values; + uint32_t best_pos = subtree::NODE_NULL; + uint32_t best_zero = subtree::NODE_NULL; + + while (min != limit) { + uint32_t mid = (min + limit) / 2; + int hv = h(this->d.a.values[mid], extra); + if (hv < 0) { + min = mid + 1; + } else if (hv > 0) { + best_pos = mid; + limit = mid; + } else { + best_zero = mid; + limit = mid; } - r = 0; } - } else { - r = this->find_internal_plus(n->right, extra, value, idxp); - if (r == 0) { - *idxp += this->nweight(n->left) + 1; + if (best_zero != subtree::NODE_NULL) { + // Found a zero + if (value != nullptr) { + copyout(value, &this->d.a.values[best_zero]); + } + *idxp = best_zero - this->d.a.start_idx; + return 0; } + if (best_pos != subtree::NODE_NULL) + *idxp = best_pos - this->d.a.start_idx; + else + *idxp = this->d.a.num_values; + return DB_NOTFOUND; } - return r; -} - -template -template -int omt::find_internal_minus_array(const omtcmp_t &extra, omtdataout_t *const value, uint32_t *const idxp) const { - paranoid_invariant_notnull(idxp); - uint32_t min = this->d.a.start_idx; - uint32_t limit = this->d.a.start_idx + this->d.a.num_values; - uint32_t best = subtree::NODE_NULL; - while (min != limit) { - const uint32_t mid = (min + limit) / 2; - const int hv = h(this->d.a.values[mid], extra); + template + template + int omt::find_internal_zero( + const subtree &st, + const omtcmp_t &extra, + omtdataout_t *const value, + uint32_t *const idxp) const { + paranoid_invariant_notnull(idxp); + if (st.is_null()) { + *idxp = 0; + return DB_NOTFOUND; + } + omt_node &n = this->d.t.nodes[st.get_index()]; + int hv = h(n.value, extra); if (hv < 0) { - best = mid; - min = mid + 1; + int r = this->find_internal_zero( + n.right, extra, value, idxp); + *idxp += this->nweight(n.left) + 1; + return r; + } else if (hv > 0) { + return this->find_internal_zero( + n.left, extra, value, idxp); } else { - limit = mid; + int r = this->find_internal_zero( + n.left, extra, value, idxp); + if (r == DB_NOTFOUND) { + *idxp = this->nweight(n.left); + if (value != nullptr) { + copyout(value, &n); + } + r = 0; + } + return r; } } - if (best == subtree::NODE_NULL) { return DB_NOTFOUND; } - if (value != nullptr) { - copyout(value, &this->d.a.values[best]); - } - *idxp = best - this->d.a.start_idx; - return 0; -} -template -template -int omt::find_internal_minus(const subtree &subtree, const omtcmp_t &extra, omtdataout_t *const value, uint32_t *const idxp) const { - paranoid_invariant_notnull(idxp); - if (subtree.is_null()) { - return DB_NOTFOUND; + template + template + int omt::find_internal_plus_array( + const omtcmp_t &extra, + omtdataout_t *const value, + uint32_t *const idxp) const { + paranoid_invariant_notnull(idxp); + uint32_t min = this->d.a.start_idx; + uint32_t limit = this->d.a.start_idx + this->d.a.num_values; + uint32_t best = subtree::NODE_NULL; + + while (min != limit) { + const uint32_t mid = (min + limit) / 2; + const int hv = h(this->d.a.values[mid], extra); + if (hv > 0) { + best = mid; + limit = mid; + } else { + min = mid + 1; + } + } + if (best == subtree::NODE_NULL) { + return DB_NOTFOUND; + } + if (value != nullptr) { + copyout(value, &this->d.a.values[best]); + } + *idxp = best - this->d.a.start_idx; + return 0; } - omt_node *const n = &this->d.t.nodes[subtree.get_index()]; - int hv = h(n->value, extra); - if (hv < 0) { - int r = this->find_internal_minus(n->right, extra, value, idxp); - if (r == 0) { - *idxp += this->nweight(n->left) + 1; - } else if (r == DB_NOTFOUND) { - *idxp = this->nweight(n->left); - if (value != nullptr) { - copyout(value, n); + + template + template + int omt::find_internal_plus( + const subtree &st, + const omtcmp_t &extra, + omtdataout_t *const value, + uint32_t *const idxp) const { + paranoid_invariant_notnull(idxp); + if (st.is_null()) { + return DB_NOTFOUND; + } + omt_node *const n = &this->d.t.nodes[st.get_index()]; + int hv = h(n->value, extra); + int r; + if (hv > 0) { + r = this->find_internal_plus( + n->left, extra, value, idxp); + if (r == DB_NOTFOUND) { + *idxp = this->nweight(n->left); + if (value != nullptr) { + copyout(value, n); + } + r = 0; + } + } else { + r = this->find_internal_plus( + n->right, extra, value, idxp); + if (r == 0) { + *idxp += this->nweight(n->left) + 1; } - r = 0; } return r; - } else { - return this->find_internal_minus(n->left, extra, value, idxp); } -} -} // namespace toku + + template + template + int omt::find_internal_minus_array( + const omtcmp_t &extra, + omtdataout_t *const value, + uint32_t *const idxp) const { + paranoid_invariant_notnull(idxp); + uint32_t min = this->d.a.start_idx; + uint32_t limit = this->d.a.start_idx + this->d.a.num_values; + uint32_t best = subtree::NODE_NULL; + + while (min != limit) { + const uint32_t mid = (min + limit) / 2; + const int hv = h(this->d.a.values[mid], extra); + if (hv < 0) { + best = mid; + min = mid + 1; + } else { + limit = mid; + } + } + if (best == subtree::NODE_NULL) { + return DB_NOTFOUND; + } + if (value != nullptr) { + copyout(value, &this->d.a.values[best]); + } + *idxp = best - this->d.a.start_idx; + return 0; + } + + template + template + int omt::find_internal_minus( + const subtree &st, + const omtcmp_t &extra, + omtdataout_t *const value, + uint32_t *const idxp) const { + paranoid_invariant_notnull(idxp); + if (st.is_null()) { + return DB_NOTFOUND; + } + omt_node *const n = &this->d.t.nodes[st.get_index()]; + int hv = h(n->value, extra); + if (hv < 0) { + int r = this->find_internal_minus( + n->right, extra, value, idxp); + if (r == 0) { + *idxp += this->nweight(n->left) + 1; + } else if (r == DB_NOTFOUND) { + *idxp = this->nweight(n->left); + if (value != nullptr) { + copyout(value, n); + } + r = 0; + } + return r; + } else { + return this->find_internal_minus( + n->left, extra, value, idxp); + } + } +} // namespace toku diff --git a/storage/tokudb/PerconaFT/util/omt.h b/storage/tokudb/PerconaFT/util/omt.h index 369464013..dc26b2d57 100644 --- a/storage/tokudb/PerconaFT/util/omt.h +++ b/storage/tokudb/PerconaFT/util/omt.h @@ -32,6 +32,19 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved. You should have received a copy of the GNU Affero General Public License along with PerconaFT. If not, see . + +---------------------------------------- + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and ======= */ #ident "Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved." diff --git a/storage/tokudb/ha_tokudb.cc b/storage/tokudb/ha_tokudb.cc index 0b0cc1525..839e9907b 100644 --- a/storage/tokudb/ha_tokudb.cc +++ b/storage/tokudb/ha_tokudb.cc @@ -7254,6 +7254,16 @@ int ha_tokudb::create( tokudb_trx_data *trx = NULL; THD* thd = ha_thd(); + String database_name, table_name, dictionary_name; + tokudb_split_dname(name, database_name, table_name, dictionary_name); + if (database_name.is_empty() || table_name.is_empty()) { + push_warning_printf(thd, + Sql_condition::WARN_LEVEL_WARN, + ER_TABLE_NAME, + "TokuDB: Table Name or Database Name is empty"); + DBUG_RETURN(ER_TABLE_NAME); + } + memset(&kc_info, 0, sizeof(kc_info)); #if 100000 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 100999 diff --git a/storage/tokudb/hatoku_hton.cc b/storage/tokudb/hatoku_hton.cc index 50fffd0a9..24e5113e7 100644 --- a/storage/tokudb/hatoku_hton.cc +++ b/storage/tokudb/hatoku_hton.cc @@ -571,10 +571,10 @@ static int tokudb_init_func(void *p) { db_env->set_update(db_env, tokudb_update_fun); - db_env_set_direct_io(tokudb::sysvars::directio == TRUE); + db_env_set_direct_io(tokudb::sysvars::directio); db_env_set_compress_buffers_before_eviction( - tokudb::sysvars::compress_buffers_before_eviction == TRUE); + tokudb::sysvars::compress_buffers_before_eviction); db_env->change_fsync_log_period(db_env, tokudb::sysvars::fsync_log_period); diff --git a/storage/tokudb/hatoku_hton.h b/storage/tokudb/hatoku_hton.h index e632a9afe..816a66aa4 100644 --- a/storage/tokudb/hatoku_hton.h +++ b/storage/tokudb/hatoku_hton.h @@ -190,7 +190,6 @@ inline bool tokudb_killed_thd_callback(void* extra, return thd_kill_level(thd) != 0; } -extern HASH tokudb_open_tables; extern const char* tokudb_hton_name; extern int tokudb_hton_initialized; extern tokudb::thread::rwlock_t tokudb_hton_initialized_lock; diff --git a/storage/tokudb/mysql-test/tokudb/t/change_column_bin.py b/storage/tokudb/mysql-test/tokudb/t/change_column_bin.py old mode 100755 new mode 100644 diff --git a/storage/tokudb/mysql-test/tokudb/t/change_column_bin_rename.py b/storage/tokudb/mysql-test/tokudb/t/change_column_bin_rename.py old mode 100755 new mode 100644 diff --git a/storage/tokudb/mysql-test/tokudb/t/change_column_char.py b/storage/tokudb/mysql-test/tokudb/t/change_column_char.py old mode 100755 new mode 100644 diff --git a/storage/tokudb/mysql-test/tokudb/t/change_column_char_binary.py b/storage/tokudb/mysql-test/tokudb/t/change_column_char_binary.py old mode 100755 new mode 100644 diff --git a/storage/tokudb/mysql-test/tokudb/t/change_column_char_charbinary.py b/storage/tokudb/mysql-test/tokudb/t/change_column_char_charbinary.py old mode 100755 new mode 100644 diff --git a/storage/tokudb/mysql-test/tokudb/t/change_column_char_rename.py b/storage/tokudb/mysql-test/tokudb/t/change_column_char_rename.py old mode 100755 new mode 100644 diff --git a/storage/tokudb/mysql-test/tokudb/t/change_column_int.py b/storage/tokudb/mysql-test/tokudb/t/change_column_int.py old mode 100755 new mode 100644 diff --git a/storage/tokudb/mysql-test/tokudb/t/change_column_int_key.py b/storage/tokudb/mysql-test/tokudb/t/change_column_int_key.py old mode 100755 new mode 100644 diff --git a/storage/tokudb/mysql-test/tokudb/t/change_column_int_not_supported.py b/storage/tokudb/mysql-test/tokudb/t/change_column_int_not_supported.py old mode 100755 new mode 100644 diff --git a/storage/tokudb/mysql-test/tokudb/t/change_column_int_rename.py b/storage/tokudb/mysql-test/tokudb/t/change_column_int_rename.py old mode 100755 new mode 100644 diff --git a/storage/tokudb/mysql-test/tokudb_bugs/r/PS-4979.result b/storage/tokudb/mysql-test/tokudb_bugs/r/PS-4979.result new file mode 100644 index 000000000..5bf7a270f --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_bugs/r/PS-4979.result @@ -0,0 +1,2 @@ +CREATE TABLE `#mysql50#q.q`(f1 INT KEY) ENGINE=TOKUDB; +ERROR 42000: Incorrect table name '#mysql50#q.q' diff --git a/storage/tokudb/mysql-test/tokudb_bugs/t/PS-4979.test b/storage/tokudb/mysql-test/tokudb_bugs/t/PS-4979.test new file mode 100644 index 000000000..cb902f6e5 --- /dev/null +++ b/storage/tokudb/mysql-test/tokudb_bugs/t/PS-4979.test @@ -0,0 +1,13 @@ +--source include/have_tokudb.inc +# PS-4979 : Dropping TokuDB table with non-alphanumeric characters could lead +# to a crash +# +# `#mysql50#q.q` is an invalid table name, but the server side doesn't detect it +# and complain. Instead it passes in an empty table name to the engine. The +# engine expects a table name in the form of a relative path like +# "./databasename/tablename". InnoDB detects this in parsing the table name +# during the creation and returns an error. +# MariaDB server detect above error. + +--error ER_WRONG_TABLE_NAME +CREATE TABLE `#mysql50#q.q`(f1 INT KEY) ENGINE=TOKUDB; diff --git a/storage/tokudb/tokudb_background.cc b/storage/tokudb/tokudb_background.cc index 13e0e9321..19f03dbca 100644 --- a/storage/tokudb/tokudb_background.cc +++ b/storage/tokudb/tokudb_background.cc @@ -182,14 +182,14 @@ void* job_manager_t::real_thread_func() { if (res == tokudb::thread::semaphore_t::E_INTERRUPTED || _shutdown) { break; } else if (res == tokudb::thread::semaphore_t::E_SIGNALLED) { -#if TOKUDB_DEBUG +#if defined(TOKUDB_DEBUG) if (TOKUDB_UNLIKELY( tokudb::sysvars::debug_pause_background_job_manager)) { _sem.signal(); tokudb::time::sleep_microsec(250000); continue; } -#endif // TOKUDB_DEBUG +#endif // defined(TOKUDB_DEBUG) mutex_t_lock(_mutex); assert_debug(_background_jobs.size() > 0); diff --git a/storage/tokudb/tokudb_sysvars.cc b/storage/tokudb/tokudb_sysvars.cc index 7771204dc..88449242d 100644 --- a/storage/tokudb/tokudb_sysvars.cc +++ b/storage/tokudb/tokudb_sysvars.cc @@ -661,13 +661,13 @@ static MYSQL_THDVAR_ULONGLONG( ~0ULL, 1); -static MYSQL_THDVAR_STR( - last_lock_timeout, - PLUGIN_VAR_MEMALLOC, - "last lock timeout", - NULL, - NULL, - NULL); +static MYSQL_THDVAR_STR(last_lock_timeout, + PLUGIN_VAR_MEMALLOC | PLUGIN_VAR_NOCMDOPT | + PLUGIN_VAR_READONLY, + "last lock timeout", + NULL, + NULL, + NULL); static MYSQL_THDVAR_BOOL( load_save_space, diff --git a/storage/tokudb/tokudb_sysvars.h b/storage/tokudb/tokudb_sysvars.h index 2454f8fef..23199baa7 100644 --- a/storage/tokudb/tokudb_sysvars.h +++ b/storage/tokudb/tokudb_sysvars.h @@ -113,10 +113,10 @@ extern my_bool gdb_on_fatal; extern my_bool check_jemalloc; -#if TOKUDB_DEBUG +#if defined(TOKUDB_DEBUG) // used to control background job manager extern my_bool debug_pause_background_job_manager; -#endif // TOKUDB_DEBUG +#endif // defined(TOKUDB_DEBUG) // session/thread my_bool alter_print_error(THD* thd); diff --git a/storage/xtradb/buf/buf0buf.cc b/storage/xtradb/buf/buf0buf.cc index a5c8da7c5..f4ef3ca70 100644 --- a/storage/xtradb/buf/buf0buf.cc +++ b/storage/xtradb/buf/buf0buf.cc @@ -2,7 +2,7 @@ Copyright (c) 1995, 2016, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2008, Google Inc. -Copyright (c) 2013, 2018, MariaDB Corporation. +Copyright (c) 2013, 2019, MariaDB Corporation. Portions of this file contain modifications contributed and copyrighted by Google, Inc. Those modifications are gratefully acknowledged and are described @@ -481,9 +481,18 @@ static bool buf_page_decrypt_after_read(buf_page_t* bpage, fil_space_t* space) /* Verify encryption checksum before we even try to decrypt. */ if (!fil_space_verify_crypt_checksum( - dst_frame, buf_page_get_zip_size(bpage), NULL, - bpage->offset)) { + dst_frame, buf_page_get_zip_size(bpage))) { + decrypt_failed: + ib_logf(IB_LOG_LEVEL_ERROR, + "Encrypted page %u:%u in file %s" + " looks corrupted; key_version=" ULINTPF, + bpage->space, bpage->offset, + space->chain.start->name, + mach_read_from_4( + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION + + dst_frame)); + /* Mark page encrypted in case it should be. */ if (space->crypt_data->type != CRYPT_SCHEME_UNENCRYPTED) { @@ -728,24 +737,6 @@ buf_block_alloc( } #endif /* !UNIV_HOTBACKUP */ -/** Check if a page is all zeroes. -@param[in] read_buf database page -@param[in] zip_size ROW_FORMAT=COMPRESSED page size, or 0 -@return whether the page is all zeroes */ -UNIV_INTERN -bool -buf_page_is_zeroes(const byte* read_buf, ulint zip_size) -{ - const ulint page_size = zip_size ? zip_size : UNIV_PAGE_SIZE; - - for (ulint i = 0; i < page_size; i++) { - if (read_buf[i] != 0) { - return(false); - } - } - return(true); -} - /** Checks if the page is in crc32 checksum format. @param[in] read_buf database page @param[in] checksum_field1 new checksum field @@ -868,10 +859,9 @@ buf_page_is_corrupted( ulint checksum_field1; ulint checksum_field2; - ulint space_id = mach_read_from_4( - read_buf + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID); - ulint page_type = mach_read_from_2( - read_buf + FIL_PAGE_TYPE); + bool crc32_inited = false; + ib_uint32_t crc32 = ULINT32_UNDEFINED; + ulint page_type = mach_read_from_2(read_buf + FIL_PAGE_TYPE); /* We can trust page type if page compression is set on tablespace flags because page compression flag means file must have been @@ -896,12 +886,7 @@ buf_page_is_corrupted( /* Stored log sequence numbers at the start and the end of page do not match */ - ib_logf(IB_LOG_LEVEL_INFO, - "Log sequence number at the start %lu and the end %lu do not match.", - mach_read_from_4(read_buf + FIL_PAGE_LSN + 4), - mach_read_from_4(read_buf + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM + 4)); - - return(TRUE); + return(true); } #ifndef UNIV_HOTBACKUP @@ -939,7 +924,10 @@ buf_page_is_corrupted( /* Check whether the checksum fields have correct values */ - if (srv_checksum_algorithm == SRV_CHECKSUM_ALGORITHM_NONE) { + const srv_checksum_algorithm_t curr_algo = + static_cast(srv_checksum_algorithm); + + if (curr_algo == SRV_CHECKSUM_ALGORITHM_NONE) { return(false); } @@ -964,9 +952,6 @@ buf_page_is_corrupted( /* make sure that the page is really empty */ for (ulint i = 0; i < UNIV_PAGE_SIZE; i++) { if (read_buf[i] != 0) { - ib_logf(IB_LOG_LEVEL_INFO, - "Checksum fields zero but page is not empty."); - return(true); } } @@ -974,120 +959,124 @@ buf_page_is_corrupted( return(false); } - ulint page_no = mach_read_from_4(read_buf + FIL_PAGE_OFFSET); - - const srv_checksum_algorithm_t curr_algo = - static_cast(srv_checksum_algorithm); - switch (curr_algo) { - case SRV_CHECKSUM_ALGORITHM_CRC32: case SRV_CHECKSUM_ALGORITHM_STRICT_CRC32: + return !buf_page_is_checksum_valid_crc32( + read_buf, checksum_field1, checksum_field2); - if (buf_page_is_checksum_valid_crc32(read_buf, - checksum_field1, checksum_field2)) { - return(false); - } + case SRV_CHECKSUM_ALGORITHM_STRICT_INNODB: + return !buf_page_is_checksum_valid_innodb( + read_buf, checksum_field1, checksum_field2); + case SRV_CHECKSUM_ALGORITHM_STRICT_NONE: + return !buf_page_is_checksum_valid_none( + read_buf, checksum_field1, checksum_field2); + case SRV_CHECKSUM_ALGORITHM_CRC32: + case SRV_CHECKSUM_ALGORITHM_INNODB: + /* Very old versions of InnoDB only stored 8 byte lsn to the + start and the end of the page. */ - if (buf_page_is_checksum_valid_none(read_buf, - checksum_field1, checksum_field2)) { - if (curr_algo - == SRV_CHECKSUM_ALGORITHM_STRICT_CRC32) { - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_NONE, - space_id, page_no); - } + /* Since innodb_checksum_algorithm is not strict_* allow + any of the algos to match for the old field */ - return(false); - } + if (checksum_field2 + != mach_read_from_4(read_buf + FIL_PAGE_LSN) + && checksum_field2 != BUF_NO_CHECKSUM_MAGIC) { - if (buf_page_is_checksum_valid_innodb(read_buf, - checksum_field1, checksum_field2)) { - if (curr_algo - == SRV_CHECKSUM_ALGORITHM_STRICT_CRC32) { - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_INNODB, - space_id, page_no); - } + /* The checksum does not match any of the + fast to check. First check the selected algorithm + for writing checksums because we assume that the + chance of it matching is higher. */ - return(false); - } + if (curr_algo == SRV_CHECKSUM_ALGORITHM_CRC32) { + crc32 = buf_calc_page_crc32(read_buf); + crc32_inited = true; - return(true); + if (checksum_field2 != crc32 + && checksum_field2 + != buf_calc_page_old_checksum(read_buf)) { + return true; + } + } else { + ut_ad(curr_algo + == SRV_CHECKSUM_ALGORITHM_INNODB); - case SRV_CHECKSUM_ALGORITHM_INNODB: - case SRV_CHECKSUM_ALGORITHM_STRICT_INNODB: + if (checksum_field2 + != buf_calc_page_old_checksum(read_buf)) { - if (buf_page_is_checksum_valid_innodb(read_buf, - checksum_field1, checksum_field2)) { - return(false); - } + crc32 = buf_calc_page_crc32(read_buf); + crc32_inited = true; - if (buf_page_is_checksum_valid_none(read_buf, - checksum_field1, checksum_field2)) { - if (curr_algo - == SRV_CHECKSUM_ALGORITHM_STRICT_INNODB) { - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_NONE, - space_id, page_no); + if (checksum_field2 != crc32) { + return true; + } + } } - - return(false); } - if (buf_page_is_checksum_valid_crc32(read_buf, - checksum_field1, checksum_field2)) { - if (curr_algo - == SRV_CHECKSUM_ALGORITHM_STRICT_INNODB) { - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_CRC32, - space_id, page_no); - } + /* old field is fine, check the new field */ - return(false); - } + /* InnoDB versions < 4.0.14 and < 4.1.1 stored the space id + (always equal to 0), to FIL_PAGE_SPACE_OR_CHKSUM */ - return(true); + if (checksum_field1 != 0 + && checksum_field1 != BUF_NO_CHECKSUM_MAGIC) { - case SRV_CHECKSUM_ALGORITHM_STRICT_NONE: + /* The checksum does not match any of the + fast to check. First check the selected algorithm + for writing checksums because we assume that the + chance of it matching is higher. */ - if (buf_page_is_checksum_valid_none(read_buf, - checksum_field1, checksum_field2)) { - return(false); - } + if (curr_algo == SRV_CHECKSUM_ALGORITHM_CRC32) { - if (buf_page_is_checksum_valid_crc32(read_buf, - checksum_field1, checksum_field2)) { - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_CRC32, - space_id, page_no); - return(false); - } + if (!crc32_inited) { + crc32 = buf_calc_page_crc32(read_buf); + crc32_inited = true; + } + + if (checksum_field1 != crc32 + && checksum_field1 + != buf_calc_page_new_checksum(read_buf)) { + return true; + } + } else { + ut_ad(curr_algo + == SRV_CHECKSUM_ALGORITHM_INNODB); - if (buf_page_is_checksum_valid_innodb(read_buf, - checksum_field1, checksum_field2)) { - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_INNODB, - space_id, page_no); - return(false); + if (checksum_field1 + != buf_calc_page_new_checksum(read_buf)) { + + if (!crc32_inited) { + crc32 = buf_calc_page_crc32( + read_buf); + crc32_inited = true; + } + + if (checksum_field1 != crc32) { + return true; + } + } + } } - return(true); + /* If CRC32 is stored in at least one of the fields then the + other field must also be CRC32 */ + if (crc32_inited + && ((checksum_field1 == crc32 + && checksum_field2 != crc32) + || (checksum_field1 != crc32 + && checksum_field2 == crc32))) { + return true; + } + break; case SRV_CHECKSUM_ALGORITHM_NONE: /* should have returned FALSE earlier */ - break; + ut_error; /* no default so the compiler will emit a warning if new enum is added and not handled here */ } - ut_error; - return(false); + return false; } /** Dump a page to stderr. @@ -4776,19 +4765,15 @@ or decrypt/decompress just failed. @retval DB_DECRYPTION_FAILED if page post encryption checksum matches but after decryption normal page checksum does not match. @retval DB_TABLESPACE_DELETED if accessed tablespace is not found */ -static -dberr_t -buf_page_check_corrupt(buf_page_t* bpage, fil_space_t* space) +static dberr_t buf_page_check_corrupt(buf_page_t* bpage, fil_space_t* space) { ut_ad(space->n_pending_ios > 0); ulint zip_size = buf_page_get_zip_size(bpage); byte* dst_frame = (zip_size) ? bpage->zip.data : ((buf_block_t*) bpage)->frame; - bool still_encrypted = false; dberr_t err = DB_SUCCESS; bool corrupted = false; - fil_space_crypt_t* crypt_data = space->crypt_data; /* In buf_decrypt_after_read we have either decrypted the page if page post encryption checksum matches and used key_id is found @@ -4796,18 +4781,18 @@ buf_page_check_corrupt(buf_page_t* bpage, fil_space_t* space) not decrypted and it could be either encrypted and corrupted or corrupted or good page. If we decrypted, there page could still be corrupted if used key does not match. */ - still_encrypted = (crypt_data && - crypt_data->type != CRYPT_SCHEME_UNENCRYPTED && - !bpage->encrypted && - fil_space_verify_crypt_checksum(dst_frame, zip_size, - space, bpage->offset)); + const bool still_encrypted = mach_read_from_4( + dst_frame + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION) + && space->crypt_data + && space->crypt_data->type != CRYPT_SCHEME_UNENCRYPTED + && !bpage->encrypted + && fil_space_verify_crypt_checksum(dst_frame, zip_size); if (!still_encrypted) { /* If traditional checksums match, we assume that page is not anymore encrypted. */ corrupted = buf_page_is_corrupted(true, dst_frame, zip_size, space); - if (!corrupted) { bpage->encrypted = false; } else { diff --git a/storage/xtradb/buf/buf0dblwr.cc b/storage/xtradb/buf/buf0dblwr.cc index 0ec23cbdb..245ec6859 100644 --- a/storage/xtradb/buf/buf0dblwr.cc +++ b/storage/xtradb/buf/buf0dblwr.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2013, 2017, MariaDB Corporation. +Copyright (c) 2013, 2018, MariaDB Corporation. 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 the Free Software @@ -362,6 +362,22 @@ buf_dblwr_create() goto start_again; } +/** Check if a page is all zeroes. +@param[in] read_buf database page +@param[in] zip_size ROW_FORMAT=COMPRESSED page size, or 0 +@return whether the page is all zeroes */ +static bool buf_page_is_zeroes(const byte* read_buf, ulint zip_size) +{ + const ulint page_size = zip_size ? zip_size : UNIV_PAGE_SIZE; + + for (ulint i = 0; i < page_size; i++) { + if (read_buf[i] != 0) { + return false; + } + } + return true; +} + /****************************************************************//** At a database startup initializes the doublewrite buffer memory structure if we already have a doublewrite buffer created in the data files. If we are @@ -556,6 +572,9 @@ buf_dblwr_process() const bool is_all_zero = buf_page_is_zeroes( read_buf, zip_size); + const bool expect_encrypted = space()->crypt_data + && space()->crypt_data->type + != CRYPT_SCHEME_UNENCRYPTED; if (is_all_zero) { /* We will check if the copy in the @@ -566,17 +585,17 @@ buf_dblwr_process() /* Decompress the page before validating the checksum. */ ulint decomp = fil_page_decompress(buf, read_buf); - if (!decomp) { - goto bad; - } if (!decomp || (decomp != srv_page_size && zip_size)) { goto bad; } - if (fil_space_verify_crypt_checksum( - read_buf, zip_size, NULL, page_no) - || !buf_page_is_corrupted( - true, read_buf, zip_size, space())) { + if (expect_encrypted && mach_read_from_4( + read_buf + + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION) + ? fil_space_verify_crypt_checksum(read_buf, + zip_size) + : !buf_page_is_corrupted(true, read_buf, + zip_size, space())) { /* The page is good; there is no need to consult the doublewrite buffer. */ continue; @@ -595,9 +614,11 @@ buf_dblwr_process() if (!decomp || (decomp != srv_page_size && zip_size)) { goto bad_doublewrite; } - if (!fil_space_verify_crypt_checksum(page, zip_size, NULL, - page_no) - && buf_page_is_corrupted(true, page, zip_size, space)) { + + if (expect_encrypted && mach_read_from_4( + page + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION) + ? !fil_space_verify_crypt_checksum(page, zip_size) + : buf_page_is_corrupted(true, page, zip_size, space())) { if (!is_all_zero) { bad_doublewrite: ib_logf(IB_LOG_LEVEL_WARN, diff --git a/storage/xtradb/dict/dict0dict.cc b/storage/xtradb/dict/dict0dict.cc index 15174b666..1eb0a53e0 100644 --- a/storage/xtradb/dict/dict0dict.cc +++ b/storage/xtradb/dict/dict0dict.cc @@ -1,8 +1,8 @@ /***************************************************************************** -Copyright (c) 1996, 2018, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 1996, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2012, Facebook Inc. -Copyright (c) 2013, 2018, MariaDB Corporation. +Copyright (c) 2013, 2019, MariaDB Corporation. 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 the Free Software @@ -3394,10 +3394,7 @@ dict_foreign_find_index( table, col_names, columns, n_cols, index, types_idx, check_charsets, check_null, - error, err_col_no,err_index) - && (!(index->online_status == - ONLINE_INDEX_ABORTED_DROPPED - ||index->online_status == ONLINE_INDEX_ABORTED))) { + error, err_col_no,err_index)) { if (error) { *error = DB_SUCCESS; } @@ -7255,30 +7252,14 @@ UNIV_INTERN ulint dict_sys_get_size() { - ulint size = 0; - - ut_ad(dict_sys); - - mutex_enter(&dict_sys->mutex); - - for(ulint i = 0; i < hash_get_n_cells(dict_sys->table_hash); i++) { - dict_table_t* table; - - for (table = static_cast(HASH_GET_FIRST(dict_sys->table_hash,i)); - table != NULL; - table = static_cast(HASH_GET_NEXT(name_hash, table))) { - dict_index_t* index; - size += mem_heap_get_size(table->heap) + strlen(table->name) +1; - - for(index = dict_table_get_first_index(table); - index != NULL; - index = dict_table_get_next_index(index)) { - size += mem_heap_get_size(index->heap); - } - } - } - - mutex_exit(&dict_sys->mutex); - - return (size); + /* No mutex; this is a very crude approximation anyway */ + ulint size = UT_LIST_GET_LEN(dict_sys->table_LRU) + + UT_LIST_GET_LEN(dict_sys->table_non_LRU); + size *= sizeof(dict_table_t) + + sizeof(dict_index_t) * 2 + + (sizeof(dict_col_t) + sizeof(dict_field_t)) * 10 + + sizeof(dict_field_t) * 5 /* total number of key fields */ + + 200; /* arbitrary, covering names and overhead */ + + return size; } diff --git a/storage/xtradb/dict/dict0mem.cc b/storage/xtradb/dict/dict0mem.cc index ab6167b92..4ef3d5df7 100644 --- a/storage/xtradb/dict/dict0mem.cc +++ b/storage/xtradb/dict/dict0mem.cc @@ -499,9 +499,7 @@ dict_mem_table_col_rename( s += len + 1; } - /* This could fail if the data dictionaries are out of sync. - Proceed with the renaming anyway. */ - ut_ad(!strcmp(from, s)); + ut_ad(!my_strcasecmp(system_charset_info, from, s)); dict_mem_table_col_rename_low(table, nth_col, to, s); } diff --git a/storage/xtradb/fil/fil0crypt.cc b/storage/xtradb/fil/fil0crypt.cc index 7859fe67d..fb84b5703 100644 --- a/storage/xtradb/fil/fil0crypt.cc +++ b/storage/xtradb/fil/fil0crypt.cc @@ -529,10 +529,12 @@ fil_parse_write_crypt_data( uint len = mach_read_from_1(ptr); ptr += 1; - ut_a(type == CRYPT_SCHEME_UNENCRYPTED || - type == CRYPT_SCHEME_1); // only supported + if ((type != CRYPT_SCHEME_1 && type != CRYPT_SCHEME_UNENCRYPTED) + || len != CRYPT_SCHEME_1_IV_LEN) { + *err = DB_CORRUPTION; + return NULL; + } - ut_a(len == CRYPT_SCHEME_1_IV_LEN); // only supported uint min_key_version = mach_read_from_4(ptr); ptr += 4; @@ -551,6 +553,7 @@ fil_parse_write_crypt_data( crypt_data->page0_offset = offset; crypt_data->min_key_version = min_key_version; crypt_data->encryption = encryption; + crypt_data->type = type; memcpy(crypt_data->iv, ptr, len); ptr += len; @@ -662,7 +665,7 @@ fil_encrypt_buf( // store the post-encryption checksum after the key-version mach_write_to_4(dst_frame + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION + 4, checksum); - ut_ad(fil_space_verify_crypt_checksum(dst_frame, zip_size, NULL, offset)); + ut_ad(fil_space_verify_crypt_checksum(dst_frame, zip_size)); srv_stats.pages_encrypted.inc(); @@ -2413,7 +2416,8 @@ void fil_space_crypt_close_tablespace( const fil_space_t* space) { - if (!srv_encrypt_tables || !space->crypt_data) { + if (!srv_encrypt_tables || !space->crypt_data + || srv_n_fil_crypt_threads == 0) { return; } @@ -2568,146 +2572,64 @@ encrypted, or corrupted. @param[in] page Page to verify @param[in] zip_size zip size -@param[in] space Tablespace -@param[in] pageno Page no -@return true if page is encrypted AND OK, false otherwise */ +@return whether the encrypted page is OK */ UNIV_INTERN -bool -fil_space_verify_crypt_checksum( - byte* page, - ulint zip_size, -#ifndef UNIV_INNOCHECKSUM - const fil_space_t* space, -#else - const void* space, -#endif - ulint pageno) +bool fil_space_verify_crypt_checksum(const byte* page, ulint zip_size) { - uint key_version = mach_read_from_4(page+ FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION); - - /* If page is not encrypted, return false */ - if (key_version == 0) { - return(false); - } - - srv_checksum_algorithm_t algorithm = - static_cast(srv_checksum_algorithm); - - /* If no checksum is used, can't continue checking. */ - if (algorithm == SRV_CHECKSUM_ALGORITHM_NONE) { - return(true); - } - - /* Read stored post encryption checksum. */ - ib_uint32_t checksum = mach_read_from_4( - page + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION + 4); - - /* Declare empty pages non-corrupted */ - if (checksum == 0 - && *reinterpret_cast(page + FIL_PAGE_LSN) == 0 - && buf_page_is_zeroes(page, zip_size)) { - return(true); - } + ut_ad(mach_read_from_4(page + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION)); /* Compressed and encrypted pages do not have checksum. Assume not corrupted. Page verification happens after decompression in buf_page_io_complete() using buf_page_is_corrupted(). */ - if (mach_read_from_2(page+FIL_PAGE_TYPE) == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) { - return (true); + if (mach_read_from_2(page + FIL_PAGE_TYPE) + == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED) { + return true; } - ib_uint32_t cchecksum1 = 0; - ib_uint32_t cchecksum2 = 0; - - /* Calculate checksums */ - if (zip_size) { - cchecksum1 = page_zip_calc_checksum( - page, zip_size, SRV_CHECKSUM_ALGORITHM_CRC32); - - cchecksum2 = (cchecksum1 == checksum) - ? 0 - : page_zip_calc_checksum( - page, zip_size, - SRV_CHECKSUM_ALGORITHM_INNODB); - } else { - cchecksum1 = buf_calc_page_crc32(page); - cchecksum2 = (cchecksum1 == checksum) - ? 0 - : buf_calc_page_new_checksum(page); - } + /* Read stored post encryption checksum. */ + const ib_uint32_t checksum = mach_read_from_4( + page + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION + 4); /* If stored checksum matches one of the calculated checksums page is not corrupted. */ - bool encrypted = (checksum == cchecksum1 || checksum == cchecksum2 - || checksum == BUF_NO_CHECKSUM_MAGIC); - - /* MySQL 5.6 and MariaDB 10.0 and 10.1 will write an LSN to the - first page of each system tablespace file at - FIL_PAGE_FILE_FLUSH_LSN offset. On other pages and in other files, - the field might have been uninitialized until MySQL 5.5. In MySQL 5.7 - (and MariaDB Server 10.2.2) WL#7990 stopped writing the field for other - than page 0 of the system tablespace. - - Starting from MariaDB 10.1 the field has been repurposed for - encryption key_version. - - Starting with MySQL 5.7 (and MariaDB Server 10.2), the - field has been repurposed for SPATIAL INDEX pages for - FIL_RTREE_SPLIT_SEQ_NUM. - - Note that FIL_PAGE_FILE_FLUSH_LSN is not included in the InnoDB page - checksum. - - Thus, FIL_PAGE_FILE_FLUSH_LSN could contain any value. While the - field would usually be 0 for pages that are not encrypted, we cannot - assume that a nonzero value means that the page is encrypted. - Therefore we must validate the page both as encrypted and unencrypted - when FIL_PAGE_FILE_FLUSH_LSN does not contain 0. - */ - - uint32_t checksum1 = mach_read_from_4(page + FIL_PAGE_SPACE_OR_CHKSUM); - uint32_t checksum2; - - bool valid; - - if (zip_size) { - valid = (checksum1 == cchecksum1); - checksum2 = checksum1; - } else { - checksum2 = mach_read_from_4( - page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM); - valid = (buf_page_is_checksum_valid_crc32(page,checksum1,checksum2) - || buf_page_is_checksum_valid_innodb(page,checksum1, checksum2)); - } + switch (srv_checksum_algorithm_t(srv_checksum_algorithm)) { + case SRV_CHECKSUM_ALGORITHM_STRICT_CRC32: + if (zip_size) { + return checksum == page_zip_calc_checksum( + page, zip_size, SRV_CHECKSUM_ALGORITHM_CRC32); + } - if (encrypted && valid) { - /* If page is encrypted and traditional checksums match, - page could be still encrypted, or not encrypted and valid or - corrupted. */ -#ifndef UNIV_INNOCHECKSUM - ib_logf(IB_LOG_LEVEL_ERROR, - " Page " ULINTPF " in space %s (" ULINTPF ") maybe corrupted." - " Post encryption checksum %u stored [%u:%u] key_version %u", - pageno, - space ? space->name : "N/A", - mach_read_from_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID), - checksum, checksum1, checksum2, key_version); -#else - if (log_file) { - fprintf(log_file, - "Page " ULINTPF ":" ULINTPF " may be corrupted." - " Post encryption checksum %u" - " stored [%u:%u] key_version %u\n", - pageno, - mach_read_from_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID), - checksum, checksum1, checksum2, - key_version); + return checksum == buf_calc_page_crc32(page); + case SRV_CHECKSUM_ALGORITHM_STRICT_NONE: + /* Starting with MariaDB 10.1.25, 10.2.7, 10.3.1, + due to MDEV-12114, fil_crypt_calculate_checksum() + is only using CRC32 for the encrypted pages. + Due to this, we must treat "strict_none" as "none". */ + case SRV_CHECKSUM_ALGORITHM_NONE: + return true; + case SRV_CHECKSUM_ALGORITHM_STRICT_INNODB: + /* Starting with MariaDB 10.1.25, 10.2.7, 10.3.1, + due to MDEV-12114, fil_crypt_calculate_checksum() + is only using CRC32 for the encrypted pages. + Due to this, we must treat "strict_innodb" as "innodb". */ + case SRV_CHECKSUM_ALGORITHM_INNODB: + case SRV_CHECKSUM_ALGORITHM_CRC32: + if (checksum == BUF_NO_CHECKSUM_MAGIC) { + return true; + } + if (zip_size) { + return checksum == page_zip_calc_checksum( + page, zip_size, SRV_CHECKSUM_ALGORITHM_CRC32) + || checksum == page_zip_calc_checksum( + page, zip_size, + SRV_CHECKSUM_ALGORITHM_INNODB); } -#endif /* UNIV_INNOCHECKSUM */ - encrypted = false; + return checksum == buf_calc_page_crc32(page) + || checksum == buf_calc_page_new_checksum(page); } - return(encrypted); + ut_ad(!"unhandled innodb_checksum_algorithm"); + return false; } diff --git a/storage/xtradb/fil/fil0fil.cc b/storage/xtradb/fil/fil0fil.cc index a88350831..d6d2a6f88 100644 --- a/storage/xtradb/fil/fil0fil.cc +++ b/storage/xtradb/fil/fil0fil.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2014, 2018, MariaDB Corporation. +Copyright (c) 2014, 2019, MariaDB Corporation. 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 the Free Software @@ -846,10 +846,9 @@ fil_try_to_close_file_in_LRU( } /** Flush any writes cached by the file system. -@param[in,out] space tablespace */ -static -void -fil_flush_low(fil_space_t* space) +@param[in,out] space tablespace +@param[in] metadata whether to update file system metadata */ +static void fil_flush_low(fil_space_t* space, bool metadata = false) { ut_ad(mutex_own(&fil_system->mutex)); ut_ad(space); @@ -873,7 +872,7 @@ fil_flush_low(fil_space_t* space) } #endif /* UNIV_DEBUG */ - return; + if (!metadata) return; } /* Prevent dropping of the space while we are flushing */ @@ -1037,15 +1036,16 @@ fil_space_extend_must_retry( *success = os_file_set_size(node->name, node->handle, new_size, FSP_FLAGS_HAS_PAGE_COMPRESSION(space->flags)); - DBUG_EXECUTE_IF("ib_os_aio_func_io_failure_28", *success = FALSE; os_has_said_disk_full = TRUE;); if (*success) { + os_file_flush(node->handle); os_has_said_disk_full = FALSE; start_page_no = size; } + mutex_enter(&fil_system->mutex); ut_a(node->being_extended); @@ -1069,7 +1069,7 @@ fil_space_extend_must_retry( = (node->size / pages_per_mb) * pages_per_mb; } - fil_flush_low(space); + fil_flush_low(space, true); return(false); } diff --git a/storage/xtradb/fil/fil0pagecompress.cc b/storage/xtradb/fil/fil0pagecompress.cc index 25cd8e28a..101f8fb0f 100644 --- a/storage/xtradb/fil/fil0pagecompress.cc +++ b/storage/xtradb/fil/fil0pagecompress.cc @@ -341,14 +341,14 @@ UNIV_INTERN ulint fil_page_decompress(byte* tmp_buf, byte* buf) case PAGE_ZLIB_ALGORITHM: { uLong len = srv_page_size; - if (Z_OK != uncompress(tmp_buf, &len, + if (Z_OK == uncompress(tmp_buf, &len, buf + header_len, uLong(actual_size)) - && len != srv_page_size) { - return 0; + && len == srv_page_size) { + break; } } - break; + return 0; #ifdef HAVE_LZ4 case PAGE_LZ4_ALGORITHM: if (LZ4_decompress_safe(reinterpret_cast(buf) diff --git a/storage/xtradb/fts/fts0fts.cc b/storage/xtradb/fts/fts0fts.cc index ac7d5e4ec..02d81551e 100644 --- a/storage/xtradb/fts/fts0fts.cc +++ b/storage/xtradb/fts/fts0fts.cc @@ -870,19 +870,19 @@ fts_drop_index( err = fts_drop_index_tables(trx, index); while (index->index_fts_syncing - && !trx_is_interrupted(trx)) { - DICT_BG_YIELD(trx); - } + && !trx_is_interrupted(trx)) { + DICT_BG_YIELD(trx); + } - fts_free(table); + fts_free(table); return(err); } while (index->index_fts_syncing - && !trx_is_interrupted(trx)) { - DICT_BG_YIELD(trx); - } + && !trx_is_interrupted(trx)) { + DICT_BG_YIELD(trx); + } current_doc_id = table->fts->cache->next_doc_id; first_doc_id = table->fts->cache->first_doc_id; @@ -901,9 +901,9 @@ fts_drop_index( if (index_cache != NULL) { while (index->index_fts_syncing - && !trx_is_interrupted(trx)) { - DICT_BG_YIELD(trx); - } + && !trx_is_interrupted(trx)) { + DICT_BG_YIELD(trx); + } if (index_cache->words) { fts_words_free(index_cache->words); rbt_free(index_cache->words); diff --git a/storage/xtradb/fts/fts0pars.cc b/storage/xtradb/fts/fts0pars.cc index b7fef4ea8..19917ccd2 100644 --- a/storage/xtradb/fts/fts0pars.cc +++ b/storage/xtradb/fts/fts0pars.cc @@ -106,8 +106,8 @@ extern int ftserror(const char* p); typedef int (*fts_scanner)(YYSTYPE* val, yyscan_t yyscanner); struct fts_lexer_t { - fts_scanner scanner; - void* yyscanner; + fts_scanner scanner; + void* yyscanner; }; diff --git a/storage/xtradb/fts/fts0pars.y b/storage/xtradb/fts/fts0pars.y index 36dae9f7c..65c4189ee 100644 --- a/storage/xtradb/fts/fts0pars.y +++ b/storage/xtradb/fts/fts0pars.y @@ -52,8 +52,8 @@ extern int ftserror(const char* p); typedef int (*fts_scanner)(YYSTYPE* val, yyscan_t yyscanner); struct fts_lexer_struct { - fts_scanner scanner; - void* yyscanner; + fts_scanner scanner; + void* yyscanner; }; %} diff --git a/storage/xtradb/handler/ha_innodb.cc b/storage/xtradb/handler/ha_innodb.cc index ce986079b..c9db941b4 100644 --- a/storage/xtradb/handler/ha_innodb.cc +++ b/storage/xtradb/handler/ha_innodb.cc @@ -5,6 +5,7 @@ Copyright (c) 2013, 2018, MariaDB Corporation. Copyright (c) 2008, 2009 Google Inc. Copyright (c) 2009, Percona Inc. Copyright (c) 2012, Facebook Inc. +Copyright (c) 2013, 2018, MariaDB Corporation. Portions of this file contain modifications contributed and copyrighted by Google, Inc. Those modifications are gratefully acknowledged and are described @@ -109,6 +110,7 @@ this program; if not, write to the Free Software Foundation, Inc., #include "fts0priv.h" #include "page0zip.h" #include "fil0pagecompress.h" +#include "dict0priv.h" #define thd_get_trx_isolation(X) ((enum_tx_isolation)thd_tx_isolation(X)) @@ -132,7 +134,7 @@ this program; if not, write to the Free Software Foundation, Inc., # endif /* MYSQL_PLUGIN_IMPORT */ #ifdef WITH_WSREP -#include "dict0priv.h" +#include "../../../wsrep/wsrep_api.h" #include "../storage/innobase/include/ut0byte.h" #include @@ -6367,19 +6369,18 @@ ha_innobase::open( ib_table = dict_table_open_on_name(norm_name, FALSE, TRUE, ignore_err); if (ib_table - && ((!DICT_TF2_FLAG_IS_SET(ib_table, DICT_TF2_FTS_HAS_DOC_ID) - && table->s->stored_fields != dict_table_get_n_user_cols(ib_table)) - || (DICT_TF2_FLAG_IS_SET(ib_table, DICT_TF2_FTS_HAS_DOC_ID) - && (table->s->fields - != dict_table_get_n_user_cols(ib_table) - 1)))) { + && (table->s->stored_fields != dict_table_get_n_user_cols(ib_table) + - !!DICT_TF2_FLAG_IS_SET(ib_table, DICT_TF2_FTS_HAS_DOC_ID))) { ib_logf(IB_LOG_LEVEL_WARN, "table %s contains " ULINTPF " user defined columns " "in InnoDB, but %u columns in MySQL. Please " "check INFORMATION_SCHEMA.INNODB_SYS_COLUMNS and " REFMAN "innodb-troubleshooting.html " "for how to resolve it", - norm_name, dict_table_get_n_user_cols(ib_table), - table->s->fields); + norm_name, dict_table_get_n_user_cols(ib_table) + - !!DICT_TF2_FLAG_IS_SET(ib_table, + DICT_TF2_FTS_HAS_DOC_ID), + table->s->stored_fields); /* Mark this table as corrupted, so the drop table or force recovery can still use it, but not others. */ @@ -8894,6 +8895,7 @@ ha_innobase::write_row( error = row_insert_for_mysql((byte*) record, prebuilt); DEBUG_SYNC(user_thd, "ib_after_row_insert"); + /* Handle duplicate key errors */ if (auto_inc_used) { ulonglong auto_inc; @@ -9035,7 +9037,7 @@ ha_innobase::write_row( && wsrep_thd_exec_mode(user_thd) == LOCAL_STATE && !wsrep_consistency_check(user_thd) && !wsrep_thd_ignore_table(user_thd)) { - if (wsrep_append_keys(user_thd, false, record, NULL)) { + if (wsrep_append_keys(user_thd, WSREP_KEY_EXCLUSIVE, record, NULL)) { DBUG_PRINT("wsrep", ("row key failed")); error_result = HA_ERR_INTERNAL_ERROR; goto wsrep_error; @@ -9556,7 +9558,8 @@ ha_innobase::update_row( { DBUG_PRINT("wsrep", ("update row key")); - if (wsrep_append_keys(user_thd, false, old_row, new_row)) { + if (wsrep_append_keys(user_thd, WSREP_KEY_EXCLUSIVE, old_row, + new_row)) { WSREP_DEBUG("WSREP: UPDATE_ROW_KEY FAILED"); DBUG_PRINT("wsrep", ("row key failed")); err = HA_ERR_INTERNAL_ERROR; @@ -9619,7 +9622,8 @@ ha_innobase::delete_row( wsrep_on(user_thd) && !wsrep_thd_ignore_table(user_thd)) { - if (wsrep_append_keys(user_thd, false, record, NULL)) { + if (wsrep_append_keys(user_thd, WSREP_KEY_EXCLUSIVE, record, + NULL)) { DBUG_PRINT("wsrep", ("delete fail")); error = (dberr_t) HA_ERR_INTERNAL_ERROR; goto wsrep_error; @@ -10839,16 +10843,6 @@ ha_innobase::ft_read( return(HA_ERR_END_OF_FILE); } -/************************************************************************* -*/ - -void -ha_innobase::ft_end() -{ - fprintf(stderr, "ft_end()\n"); - - rnd_end(); -} #ifdef WITH_WSREP extern dict_index_t* wsrep_dict_foreign_find_index( @@ -10860,8 +10854,22 @@ wsrep_dict_foreign_find_index( ibool check_charsets, ulint check_null); +inline +const char* +wsrep_key_type_to_str(wsrep_key_type type) +{ + switch (type) { + case WSREP_KEY_SHARED: + return "shared"; + case WSREP_KEY_SEMI: + return "semi"; + case WSREP_KEY_EXCLUSIVE: + return "exclusive"; + }; + return "unknown"; +} -extern dberr_t +ulint wsrep_append_foreign_key( /*===========================*/ trx_t* trx, /*!< in: trx */ @@ -10869,7 +10877,8 @@ wsrep_append_foreign_key( const rec_t* rec, /*!mysql_thd; @@ -10967,10 +10976,11 @@ wsrep_append_foreign_key( rcode = wsrep_rec_get_foreign_key( &key[1], &len, rec, index, idx, wsrep_protocol_version > 1); + if (rcode != DB_SUCCESS) { WSREP_ERROR( - "FK key set failed: %lu (%lu %lu), index: %s %s, %s", - rcode, referenced, shared, + "FK key set failed: %lu (%lu %s), index: %s %s, %s", + rcode, referenced, wsrep_key_type_to_str(key_type), (index && index->name) ? index->name : "void index", (index && index->table_name) ? index->table_name : @@ -10978,6 +10988,7 @@ wsrep_append_foreign_key( wsrep_thd_query(thd)); return DB_ERROR; } + strncpy(cache_key, (wsrep_protocol_version > 1) ? ((referenced) ? @@ -11022,7 +11033,7 @@ wsrep_append_foreign_key( wsrep_ws_handle(thd, trx), &wkey, 1, - shared ? WSREP_KEY_SHARED : WSREP_KEY_EXCLUSIVE, + key_type, copy); if (rcode) { DBUG_PRINT("wsrep", ("row key failed: %zu", rcode)); @@ -11044,14 +11055,15 @@ wsrep_append_key( TABLE *table, const char* key, uint16_t key_len, - bool shared + wsrep_key_type key_type /*!< in: access type of this key + (shared, exclusive, semi...) */ ) { DBUG_ENTER("wsrep_append_key"); bool const copy = true; #ifdef WSREP_DEBUG_PRINT fprintf(stderr, "%s conn %ld, trx %llu, keylen %d, table %s\n Query: %s ", - (shared) ? "Shared" : "Exclusive", + wsrep_key_type_to_str(key_type), thd_get_thread_id(thd), (long long)trx->id, key_len, table_share->table_name.str, wsrep_thd_query(thd)); for (int i=0; iflags & HA_NOSAME || shared) + if (key_info->flags & HA_NOSAME || + key_type == WSREP_KEY_SHARED) key_appended = true; } else @@ -11221,7 +11235,7 @@ ha_innobase::wsrep_append_keys( rcode = wsrep_append_key( thd, trx, table_share, table, - keyval1, len+1, shared); + keyval1, len+1, key_type); if (rcode) DBUG_RETURN(rcode); } } @@ -11237,7 +11251,7 @@ ha_innobase::wsrep_append_keys( wsrep_calc_row_hash(digest, record0, table, prebuilt, thd); if ((rcode = wsrep_append_key(thd, trx, table_share, table, (const char*) digest, 16, - shared))) { + key_type))) { DBUG_RETURN(rcode); } @@ -11247,7 +11261,7 @@ ha_innobase::wsrep_append_keys( if ((rcode = wsrep_append_key(thd, trx, table_share, table, (const char*) digest, - 16, shared))) { + 16, key_type))) { DBUG_RETURN(rcode); } } @@ -11593,10 +11607,6 @@ create_table_def( : ER_TABLESPACE_EXISTS, MYF(0), display_name); } - if (err == DB_SUCCESS && (flags2 & DICT_TF2_FTS)) { - fts_optimize_add_table(table); - } - error_ret: DBUG_RETURN(convert_error_code_to_mysql(err, flags, thd)); } @@ -12524,21 +12534,18 @@ ha_innobase::check_table_options( options->encryption_key_id = FIL_DEFAULT_ENCRYPTION_KEY; } - /* If default encryption is used make sure that used kay is found - from key file. */ - if (encrypt == FIL_ENCRYPTION_DEFAULT && - !srv_encrypt_tables && - options->encryption_key_id != FIL_DEFAULT_ENCRYPTION_KEY) { - if (!encryption_key_id_exists((unsigned int)options->encryption_key_id)) { - push_warning_printf( - thd, Sql_condition::WARN_LEVEL_WARN, - HA_WRONG_CREATE_OPTION, - "InnoDB: ENCRYPTION_KEY_ID %u not available", - (uint)options->encryption_key_id + /* If default encryption is used and encryption is disabled, you may + not use nondefault encryption_key_id as it is not stored anywhere. */ + if (encrypt == FIL_ENCRYPTION_DEFAULT + && !srv_encrypt_tables + && options->encryption_key_id != FIL_DEFAULT_ENCRYPTION_KEY) { + compile_time_assert(FIL_DEFAULT_ENCRYPTION_KEY == 1); + push_warning_printf( + thd, Sql_condition::WARN_LEVEL_WARN, + HA_WRONG_CREATE_OPTION, + "InnoDB: innodb_encrypt_tables=OFF only allows ENCRYPTION_KEY_ID=1" ); - return "ENCRYPTION_KEY_ID"; - - } + return "ENCRYPTION_KEY_ID"; } /* Check atomic writes requirements */ @@ -12881,6 +12888,10 @@ ha_innobase::create( trx_free_for_mysql(trx); DBUG_RETURN(-1); } + + mutex_enter(&dict_sys->mutex); + fts_optimize_add_table(innobase_table); + mutex_exit(&dict_sys->mutex); } /* Note: We can't call update_thd() as prebuilt will not be @@ -13463,36 +13474,35 @@ innobase_rename_table( row_mysql_lock_data_dictionary(trx); - dict_table_t* table = NULL; - table = dict_table_open_on_name(norm_from, TRUE, FALSE, - DICT_ERR_IGNORE_NONE); + dict_table_t* table = dict_table_open_on_name(norm_from, TRUE, FALSE, + DICT_ERR_IGNORE_NONE); - /* Since DICT_BG_YIELD has sleep for 250 milliseconds, + /* Since DICT_BG_YIELD has sleep for 250 milliseconds, Convert lock_wait_timeout unit from second to 250 milliseconds */ - long int lock_wait_timeout = thd_lock_wait_timeout(thd) * 4; - if (table != NULL) { - for (dict_index_t* index = dict_table_get_first_index(table); - index != NULL; - index = dict_table_get_next_index(index)) { - - if (index->type & DICT_FTS) { - /* Found */ - while (index->index_fts_syncing - && !trx_is_interrupted(trx) - && (lock_wait_timeout--) > 0) { - DICT_BG_YIELD(trx); - } - } - } - dict_table_close(table, TRUE, FALSE); - } + long int lock_wait_timeout = thd_lock_wait_timeout(thd) * 4; + if (table != NULL) { + for (dict_index_t* index = dict_table_get_first_index(table); + index != NULL; + index = dict_table_get_next_index(index)) { + + if (index->type & DICT_FTS) { + /* Found */ + while (index->index_fts_syncing + && !trx_is_interrupted(trx) + && (lock_wait_timeout--) > 0) { + DICT_BG_YIELD(trx); + } + } + } + dict_table_close(table, TRUE, FALSE); + } - /* FTS sync is in progress. We shall timeout this operation */ - if (lock_wait_timeout < 0) { - error = DB_LOCK_WAIT_TIMEOUT; - row_mysql_unlock_data_dictionary(trx); - DBUG_RETURN(error); - } + /* FTS sync is in progress. We shall timeout this operation */ + if (lock_wait_timeout < 0) { + error = DB_LOCK_WAIT_TIMEOUT; + row_mysql_unlock_data_dictionary(trx); + DBUG_RETURN(error); + } /* Transaction must be flagged as a locking transaction or it hasn't been started yet. */ @@ -13658,12 +13668,6 @@ ha_innobase::rename_table( error = DB_LOCK_WAIT; } - else if (error == DB_LOCK_WAIT_TIMEOUT) { - my_error(ER_LOCK_WAIT_TIMEOUT, MYF(0), to); - - error = DB_LOCK_WAIT; - } - DBUG_RETURN(convert_error_code_to_mysql(error, 0, NULL)); } @@ -22147,15 +22151,6 @@ int ha_innobase::multi_range_read_explain_info(uint mrr_mode, char *str, size_t return ds_mrr.dsmrr_explain_info(mrr_mode, str, size); } -/* - A helper function used only in index_cond_func_innodb -*/ - -bool ha_innobase::is_thd_killed() -{ - return thd_kill_level(user_thd); -} - /********************************************************************** Issue a warning that the row is too big. */ UNIV_INTERN diff --git a/storage/xtradb/handler/ha_innodb.h b/storage/xtradb/handler/ha_innodb.h index 2b562c6a3..48ec8ba5b 100644 --- a/storage/xtradb/handler/ha_innodb.h +++ b/storage/xtradb/handler/ha_innodb.h @@ -26,6 +26,10 @@ this program; if not, write to the Free Software Foundation, Inc., #include "dict0stats.h" +#ifdef WITH_WSREP +#include "../../../wsrep/wsrep_api.h" +#endif /* WITH_WSREP */ + /* Structure defines translation table between mysql index and innodb index structures */ struct innodb_idx_translate_t { @@ -115,7 +119,7 @@ class ha_innobase: public handler dict_index_t* innobase_get_index(uint keynr); #ifdef WITH_WSREP - int wsrep_append_keys(THD *thd, bool shared, + int wsrep_append_keys(THD *thd, wsrep_key_type key_type, const uchar* record0, const uchar* record1); #endif /* Init values for the class: */ @@ -177,7 +181,7 @@ class ha_innobase: public handler int rnd_pos(uchar * buf, uchar *pos); int ft_init(); - void ft_end(); + void ft_end() { rnd_end(); } FT_INFO *ft_init_ext(uint flags, uint inx, String* key); int ft_read(uchar* buf); @@ -389,10 +393,6 @@ class ha_innobase: public handler * @return idx_cond if pushed; NULL if not pushed */ class Item* idx_cond_push(uint keyno, class Item* idx_cond); - - /* An helper function for index_cond_func_innodb: */ - bool is_thd_killed(); - private: /** The multi range read session object */ DsMrr_impl ds_mrr; diff --git a/storage/xtradb/handler/handler0alter.cc b/storage/xtradb/handler/handler0alter.cc index d977bbebf..3d55ca839 100644 --- a/storage/xtradb/handler/handler0alter.cc +++ b/storage/xtradb/handler/handler0alter.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 2005, 2018, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2013, 2018, MariaDB Corporation. +Copyright (c) 2017, 2019, MariaDB Corporation. 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 the Free Software @@ -3703,9 +3703,8 @@ ha_innobase::prepare_inplace_alter_table( /* Check each index's column length to make sure they do not exceed limit */ - for (ulint i = 0; i < ha_alter_info->index_add_count; i++) { - const KEY* key = &ha_alter_info->key_info_buffer[ - ha_alter_info->index_add_buffer[i]]; + for (ulint i = 0; i < ha_alter_info->key_count; i++) { + const KEY* key = &ha_alter_info->key_info_buffer[i]; if (key->flags & HA_FULLTEXT) { /* The column length does not matter for @@ -3812,12 +3811,14 @@ ha_innobase::prepare_inplace_alter_table( continue; } + dict_foreign_t* foreign; + for (dict_foreign_set::iterator it = prebuilt->table->foreign_set.begin(); it != prebuilt->table->foreign_set.end(); ++it) { - dict_foreign_t* foreign = *it; + foreign = *it; const char* fid = strchr(foreign->id, '/'); DBUG_ASSERT(fid); @@ -3828,7 +3829,6 @@ ha_innobase::prepare_inplace_alter_table( if (!my_strcasecmp(system_charset_info, fid, drop->name)) { - drop_fk[n_drop_fk++] = foreign; goto found_fk; } } @@ -3837,12 +3837,19 @@ ha_innobase::prepare_inplace_alter_table( drop->name); goto err_exit; found_fk: + for (ulint i = n_drop_fk; i--; ) { + if (drop_fk[i] == foreign) { + goto dup_fk; + } + } + drop_fk[n_drop_fk++] = foreign; +dup_fk: continue; } DBUG_ASSERT(n_drop_fk > 0); DBUG_ASSERT(n_drop_fk - == ha_alter_info->alter_info->drop_list.elements); + <= ha_alter_info->alter_info->drop_list.elements); } else { drop_fk = NULL; } @@ -4635,7 +4642,6 @@ innobase_rename_column_try( pars_info_add_ull_literal(info, "tableid", user_table->id); pars_info_add_int4_literal(info, "nth", nth_col); - pars_info_add_str_literal(info, "old", from); pars_info_add_str_literal(info, "new", to); trx->op_info = "renaming column in SYS_COLUMNS"; @@ -4645,7 +4651,7 @@ innobase_rename_column_try( "PROCEDURE RENAME_SYS_COLUMNS_PROC () IS\n" "BEGIN\n" "UPDATE SYS_COLUMNS SET NAME=:new\n" - "WHERE TABLE_ID=:tableid AND NAME=:old\n" + "WHERE TABLE_ID=:tableid\n" "AND POS=:nth;\n" "END;\n", FALSE, trx); @@ -4668,35 +4674,40 @@ innobase_rename_column_try( index != NULL; index = dict_table_get_next_index(index)) { + bool has_prefixes = false; + for (size_t i = 0; i < dict_index_get_n_fields(index); i++) { + if (dict_index_get_nth_field(index, i)->prefix_len) { + has_prefixes = true; + break; + } + } + for (ulint i = 0; i < dict_index_get_n_fields(index); i++) { - if (strcmp(dict_index_get_nth_field(index, i)->name, - from)) { + const dict_field_t* field + = dict_index_get_nth_field(index, i); + if (my_strcasecmp(system_charset_info, field->name, + from)) { continue; } info = pars_info_create(); + ulint pos = i; + if (has_prefixes) { + pos = (pos << 16) + field->prefix_len; + } + pars_info_add_ull_literal(info, "indexid", index->id); - pars_info_add_int4_literal(info, "nth", i); - pars_info_add_str_literal(info, "old", from); + pars_info_add_int4_literal(info, "nth", pos); pars_info_add_str_literal(info, "new", to); error = que_eval_sql( info, "PROCEDURE RENAME_SYS_FIELDS_PROC () IS\n" "BEGIN\n" - "UPDATE SYS_FIELDS SET COL_NAME=:new\n" - "WHERE INDEX_ID=:indexid AND COL_NAME=:old\n" + "WHERE INDEX_ID=:indexid\n" "AND POS=:nth;\n" - - /* Try again, in case there is a prefix_len - encoded in SYS_FIELDS.POS */ - - "UPDATE SYS_FIELDS SET COL_NAME=:new\n" - "WHERE INDEX_ID=:indexid AND COL_NAME=:old\n" - "AND POS>=65536*:nth AND POS<65536*(:nth+1);\n" - "END;\n", FALSE, trx); @@ -4709,7 +4720,7 @@ innobase_rename_column_try( rename_foreign: trx->op_info = "renaming column in SYS_FOREIGN_COLS"; - std::list fk_evict; + std::set fk_evict; bool foreign_modified; for (dict_foreign_set::const_iterator it = user_table->foreign_set.begin(); @@ -4720,7 +4731,9 @@ innobase_rename_column_try( foreign_modified = false; for (unsigned i = 0; i < foreign->n_fields; i++) { - if (strcmp(foreign->foreign_col_names[i], from)) { + if (my_strcasecmp(system_charset_info, + foreign->foreign_col_names[i], + from)) { continue; } @@ -4728,7 +4741,6 @@ innobase_rename_column_try( pars_info_add_str_literal(info, "id", foreign->id); pars_info_add_int4_literal(info, "nth", i); - pars_info_add_str_literal(info, "old", from); pars_info_add_str_literal(info, "new", to); error = que_eval_sql( @@ -4737,8 +4749,7 @@ innobase_rename_column_try( "BEGIN\n" "UPDATE SYS_FOREIGN_COLS\n" "SET FOR_COL_NAME=:new\n" - "WHERE ID=:id AND POS=:nth\n" - "AND FOR_COL_NAME=:old;\n" + "WHERE ID=:id AND POS=:nth;\n" "END;\n", FALSE, trx); @@ -4749,7 +4760,7 @@ innobase_rename_column_try( } if (foreign_modified) { - fk_evict.push_back(foreign); + fk_evict.insert(foreign); } } @@ -4762,7 +4773,9 @@ innobase_rename_column_try( dict_foreign_t* foreign = *it; for (unsigned i = 0; i < foreign->n_fields; i++) { - if (strcmp(foreign->referenced_col_names[i], from)) { + if (my_strcasecmp(system_charset_info, + foreign->referenced_col_names[i], + from)) { continue; } @@ -4770,7 +4783,6 @@ innobase_rename_column_try( pars_info_add_str_literal(info, "id", foreign->id); pars_info_add_int4_literal(info, "nth", i); - pars_info_add_str_literal(info, "old", from); pars_info_add_str_literal(info, "new", to); error = que_eval_sql( @@ -4779,8 +4791,7 @@ innobase_rename_column_try( "BEGIN\n" "UPDATE SYS_FOREIGN_COLS\n" "SET REF_COL_NAME=:new\n" - "WHERE ID=:id AND POS=:nth\n" - "AND REF_COL_NAME=:old;\n" + "WHERE ID=:id AND POS=:nth;\n" "END;\n", FALSE, trx); @@ -4791,7 +4802,7 @@ innobase_rename_column_try( } if (foreign_modified) { - fk_evict.push_back(foreign); + fk_evict.insert(foreign); } } @@ -5187,7 +5198,7 @@ commit_try_rebuild( & Alter_inplace_info::DROP_FOREIGN_KEY) || ctx->num_to_drop_fk > 0); DBUG_ASSERT(ctx->num_to_drop_fk - == ha_alter_info->alter_info->drop_list.elements); + <= ha_alter_info->alter_info->drop_list.elements); for (dict_index_t* index = dict_table_get_first_index(rebuilt_table); index; @@ -5441,7 +5452,7 @@ commit_try_norebuild( & Alter_inplace_info::DROP_FOREIGN_KEY) || ctx->num_to_drop_fk > 0); DBUG_ASSERT(ctx->num_to_drop_fk - == ha_alter_info->alter_info->drop_list.elements); + <= ha_alter_info->alter_info->drop_list.elements); for (ulint i = 0; i < ctx->num_to_add_index; i++) { dict_index_t* index = ctx->add_index[i]; @@ -5762,7 +5773,6 @@ ha_innobase::commit_inplace_alter_table( Alter_inplace_info* ha_alter_info, bool commit) { - dberr_t error; ha_innobase_inplace_ctx* ctx0 = static_cast (ha_alter_info->handler_ctx); @@ -5842,7 +5852,7 @@ ha_innobase::commit_inplace_alter_table( transactions collected during crash recovery could be holding InnoDB locks only, not MySQL locks. */ - error = row_merge_lock_table( + dberr_t error = row_merge_lock_table( prebuilt->trx, ctx->old_table, LOCK_X); if (error != DB_SUCCESS) { @@ -6027,9 +6037,9 @@ ha_innobase::commit_inplace_alter_table( file operations that will be performed in commit_cache_rebuild(), and if none, generate the redo log for these operations. */ - error = fil_mtr_rename_log(ctx->old_table, - ctx->new_table, - ctx->tmp_name, &mtr); + dberr_t error = fil_mtr_rename_log( + ctx->old_table, ctx->new_table, ctx->tmp_name, + &mtr); if (error != DB_SUCCESS) { /* Out of memory or a problem will occur when renaming files. */ @@ -6154,39 +6164,30 @@ ha_innobase::commit_inplace_alter_table( /* Rename the tablespace files. */ commit_cache_rebuild(ctx); - error = innobase_update_foreign_cache(ctx, user_thd); - if (error != DB_SUCCESS) { - goto foreign_fail; + if (innobase_update_foreign_cache(ctx, user_thd) + != DB_SUCCESS + && prebuilt->trx->check_foreigns) { +foreign_fail: + push_warning_printf( + user_thd, + Sql_condition::WARN_LEVEL_WARN, + ER_ALTER_INFO, + "failed to load FOREIGN KEY" + " constraints"); } } else { - error = innobase_update_foreign_cache(ctx, user_thd); + bool fk_fail = innobase_update_foreign_cache( + ctx, user_thd) != DB_SUCCESS; - if (error != DB_SUCCESS) { -foreign_fail: - /* The data dictionary cache - should be corrupted now. The - best solution should be to - kill and restart the server, - but the *.frm file has not - been replaced yet. */ - my_error(ER_CANNOT_ADD_FOREIGN, - MYF(0)); - sql_print_error( - "InnoDB: dict_load_foreigns()" - " returned %u for %s", - (unsigned) error, - thd_query_string(user_thd) - ->str); - ut_ad(0); - } else { - if (!commit_cache_norebuild( - ctx, table, trx)) { - ut_a(!prebuilt->trx->check_foreigns); - } + if (!commit_cache_norebuild(ctx, table, trx)) { + fk_fail = true; + ut_ad(!prebuilt->trx->check_foreigns); + } - innobase_rename_columns_cache( - ha_alter_info, table, - ctx->new_table); + innobase_rename_columns_cache(ha_alter_info, table, + ctx->new_table); + if (fk_fail && prebuilt->trx->check_foreigns) { + goto foreign_fail; } } DBUG_INJECT_CRASH("ib_commit_inplace_crash", diff --git a/storage/xtradb/include/buf0buf.h b/storage/xtradb/include/buf0buf.h index b4ea4d56e..a618d925f 100644 --- a/storage/xtradb/include/buf0buf.h +++ b/storage/xtradb/include/buf0buf.h @@ -692,13 +692,6 @@ buf_page_is_corrupted( ulint zip_size, const fil_space_t* space) MY_ATTRIBUTE((warn_unused_result)); -/** Check if a page is all zeroes. -@param[in] read_buf database page -@param[in] zip_size ROW_FORMAT=COMPRESSED page size, or 0 -@return whether the page is all zeroes */ -UNIV_INTERN -bool -buf_page_is_zeroes(const byte* read_buf, ulint zip_size); #ifndef UNIV_HOTBACKUP /**********************************************************************//** Gets the space id, page offset, and byte offset within page of a @@ -1583,6 +1576,9 @@ struct buf_page_t{ ib_uint32_t space; /*!< tablespace id. */ ib_uint32_t offset; /*!< page number. */ + buf_page_t* hash; /*!< node used in chaining to + buf_pool->page_hash or + buf_pool->zip_hash */ /** count of how manyfold this block is currently bufferfixed */ #ifdef PAGE_ATOMIC_REF_COUNT ib_uint32_t buf_fix_count; @@ -1653,9 +1649,6 @@ struct buf_page_t{ used for encryption/compression or NULL */ #ifndef UNIV_HOTBACKUP - buf_page_t* hash; /*!< node used in chaining to - buf_pool->page_hash or - buf_pool->zip_hash */ #ifdef UNIV_DEBUG ibool in_page_hash; /*!< TRUE if in buf_pool->page_hash */ ibool in_zip_hash; /*!< TRUE if in buf_pool->zip_hash */ diff --git a/storage/xtradb/include/data0type.ic b/storage/xtradb/include/data0type.ic index 63a078574..a7e2eb068 100644 --- a/storage/xtradb/include/data0type.ic +++ b/storage/xtradb/include/data0type.ic @@ -525,7 +525,7 @@ dtype_get_fixed_size_low( return(0); } #endif /* UNIV_DEBUG */ - // fallthrough + /* fall through */ case DATA_CHAR: case DATA_FIXBINARY: case DATA_INT: @@ -603,7 +603,7 @@ dtype_get_min_size_low( return(0); } #endif /* UNIV_DEBUG */ - // fallthrough + /* fall through */ case DATA_CHAR: case DATA_FIXBINARY: case DATA_INT: diff --git a/storage/xtradb/include/dict0mem.h b/storage/xtradb/include/dict0mem.h index 4fdff9ba8..09eabf298 100644 --- a/storage/xtradb/include/dict0mem.h +++ b/storage/xtradb/include/dict0mem.h @@ -378,7 +378,8 @@ dict_mem_table_add_col( const char* name, /*!< in: column name, or NULL */ ulint mtype, /*!< in: main datatype */ ulint prtype, /*!< in: precise type */ - ulint len); /*!< in: precision */ + ulint len) /*!< in: precision */ + MY_ATTRIBUTE((nonnull(1))); /**********************************************************************//** Renames a column of a table in the data dictionary cache. */ UNIV_INTERN @@ -1049,8 +1050,10 @@ struct dict_table_t{ table_id_t id; /*!< id of the table */ + hash_node_t id_hash; /*!< hash chain node */ mem_heap_t* heap; /*!< memory heap */ char* name; /*!< table name */ + hash_node_t name_hash; /*!< hash chain node */ const char* dir_path_of_temp_table;/*!< NULL or the directory path where a TEMPORARY table that was explicitly created by a user should be placed if @@ -1108,8 +1111,6 @@ struct dict_table_t{ dictionary information and MySQL FRM information mismatch. */ #ifndef UNIV_HOTBACKUP - hash_node_t name_hash; /*!< hash chain node */ - hash_node_t id_hash; /*!< hash chain node */ UT_LIST_BASE_NODE_T(dict_index_t) indexes; /*!< list of indexes of the table */ diff --git a/storage/xtradb/include/fil0crypt.h b/storage/xtradb/include/fil0crypt.h index 228dfb895..199f5a637 100644 --- a/storage/xtradb/include/fil0crypt.h +++ b/storage/xtradb/include/fil0crypt.h @@ -409,16 +409,9 @@ encrypted, or corrupted. @param[in] page Page to verify @param[in] zip_size zip size -@param[in] space Tablespace -@param[in] pageno Page no -@return true if page is encrypted AND OK, false otherwise */ +@return whether the encrypted page is OK */ UNIV_INTERN -bool -fil_space_verify_crypt_checksum( - byte* page, - ulint zip_size, - const fil_space_t* space, - ulint pageno) +bool fil_space_verify_crypt_checksum(const byte* page, ulint zip_size) MY_ATTRIBUTE((warn_unused_result)); /********************************************************************* diff --git a/storage/xtradb/include/fil0fil.h b/storage/xtradb/include/fil0fil.h index 7b8339fec..7be4d0380 100644 --- a/storage/xtradb/include/fil0fil.h +++ b/storage/xtradb/include/fil0fil.h @@ -267,7 +267,9 @@ struct fil_node_t { struct fil_space_t { char* name; /*!< space name = the path to the first file in it */ + hash_node_t name_hash;/*!< hash chain the name_hash table */ ulint id; /*!< space id */ + hash_node_t hash; /*!< hash chain node */ ib_int64_t tablespace_version; /*!< in DISCARD/IMPORT this timestamp is used to check if we should ignore @@ -323,8 +325,6 @@ struct fil_space_t { Note that fil_node_t::n_pending tracks actual pending I/O requests. Protected by fil_system->mutex. */ ulint n_pending_ios; - hash_node_t hash; /*!< hash chain node */ - hash_node_t name_hash;/*!< hash chain the name_hash table */ #ifndef UNIV_HOTBACKUP prio_rw_lock_t latch; /*!< latch protecting the file space storage allocation */ diff --git a/storage/xtradb/include/page0page.h b/storage/xtradb/include/page0page.h index eefa0fa4c..26e71ff80 100644 --- a/storage/xtradb/include/page0page.h +++ b/storage/xtradb/include/page0page.h @@ -1,6 +1,7 @@ /***************************************************************************** Copyright (c) 1994, 2016, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 2013, 2018, MariaDB Corporation. 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 the Free Software @@ -1109,23 +1110,6 @@ const rec_t* page_find_rec_max_not_deleted( const page_t* page); -#endif /* #ifndef UNIV_INNOCHECKSUM */ - -/** Issue a warning when the checksum that is stored in the page is valid, -but different than the global setting innodb_checksum_algorithm. -@param[in] current_algo current checksum algorithm -@param[in] page_checksum page valid checksum -@param[in] space_id tablespace id -@param[in] page_no page number */ -void -page_warn_strict_checksum( - srv_checksum_algorithm_t curr_algo, - srv_checksum_algorithm_t page_checksum, - ulint space_id, - ulint page_no); - -#ifndef UNIV_INNOCHECKSUM - #ifdef UNIV_MATERIALIZE #undef UNIV_INLINE #define UNIV_INLINE UNIV_INLINE_ORIGINAL diff --git a/storage/xtradb/include/univ.i b/storage/xtradb/include/univ.i index 67e4d90d6..6d1520bc6 100644 --- a/storage/xtradb/include/univ.i +++ b/storage/xtradb/include/univ.i @@ -45,10 +45,10 @@ Created 1/20/1994 Heikki Tuuri #define INNODB_VERSION_MAJOR 5 #define INNODB_VERSION_MINOR 6 -#define INNODB_VERSION_BUGFIX 41 +#define INNODB_VERSION_BUGFIX 42 #ifndef PERCONA_INNODB_VERSION -#define PERCONA_INNODB_VERSION 84.1 +#define PERCONA_INNODB_VERSION 84.2 #endif /* Enable UNIV_LOG_ARCHIVE in XtraDB */ @@ -645,12 +645,14 @@ typedef void* os_thread_ret_t; #include "ut0dbg.h" #include "ut0ut.h" #include "db0err.h" +#include +/* define UNIV macros in terms of my_valgrind.h */ +#define UNIV_MEM_INVALID(addr, size) MEM_UNDEFINED(addr, size) +#define UNIV_MEM_FREE(addr, size) MEM_NOACCESS(addr, size) +#define UNIV_MEM_ALLOC(addr, size) UNIV_MEM_INVALID(addr, size) #ifdef UNIV_DEBUG_VALGRIND # include # define UNIV_MEM_VALID(addr, size) VALGRIND_MAKE_MEM_DEFINED(addr, size) -# define UNIV_MEM_INVALID(addr, size) VALGRIND_MAKE_MEM_UNDEFINED(addr, size) -# define UNIV_MEM_FREE(addr, size) VALGRIND_MAKE_MEM_NOACCESS(addr, size) -# define UNIV_MEM_ALLOC(addr, size) VALGRIND_MAKE_MEM_UNDEFINED(addr, size) # define UNIV_MEM_DESC(addr, size) VALGRIND_CREATE_BLOCK(addr, size, #addr) # define UNIV_MEM_UNDESC(b) VALGRIND_DISCARD(b) # define UNIV_MEM_ASSERT_RW_LOW(addr, size, should_abort) do { \ @@ -685,9 +687,6 @@ typedef void* os_thread_ret_t; } while (0) #else # define UNIV_MEM_VALID(addr, size) do {} while(0) -# define UNIV_MEM_INVALID(addr, size) do {} while(0) -# define UNIV_MEM_FREE(addr, size) do {} while(0) -# define UNIV_MEM_ALLOC(addr, size) do {} while(0) # define UNIV_MEM_DESC(addr, size) do {} while(0) # define UNIV_MEM_UNDESC(b) do {} while(0) # define UNIV_MEM_ASSERT_RW_LOW(addr, size, should_abort) do {} while(0) diff --git a/storage/xtradb/log/log0online.cc b/storage/xtradb/log/log0online.cc index 42e92ea6f..bc1667e1c 100644 --- a/storage/xtradb/log/log0online.cc +++ b/storage/xtradb/log/log0online.cc @@ -1864,6 +1864,8 @@ log_online_purge_changed_page_bitmaps( for (i = 0; i < bitmap_files.count; i++) { + char full_bmp_file_name[2 * FN_REFLEN + 2]; + /* We consider the end LSN of the current bitmap, derived from the start LSN of the subsequent bitmap file, to determine whether to remove the current bitmap. Note that bitmap_files @@ -1879,8 +1881,45 @@ log_online_purge_changed_page_bitmaps( break; } + + /* In some non-trivial cases the sequence of .xdb files may + have gaps. For instance: + ib_modified_log_1_0.xdb + ib_modified_log_2_.xdb + ib_modified_log_4_.xdb + Adding this check as a safety precaution. */ + if (bitmap_files.files[i].name[0] == '\0') + continue; + + /* If redo log tracking is enabled, reuse 'bmp_file_home' + from 'log_bmp_sys'. Otherwise, compose the full '.xdb' file + path from 'srv_data_home', adding a path separator if + necessary. */ + if (log_bmp_sys != NULL) { + ut_snprintf(full_bmp_file_name, + sizeof(full_bmp_file_name), + "%s%s", log_bmp_sys->bmp_file_home, + bitmap_files.files[i].name); + } + else { + char separator[2] = {0, 0}; + const size_t srv_data_home_len = + strlen(srv_data_home); + + ut_a(srv_data_home_len < FN_REFLEN); + if (srv_data_home_len != 0 && + srv_data_home[srv_data_home_len - 1] != + SRV_PATH_SEPARATOR) { + separator[0] = SRV_PATH_SEPARATOR; + } + ut_snprintf(full_bmp_file_name, + sizeof(full_bmp_file_name), "%s%s%s", + srv_data_home, separator, + bitmap_files.files[i].name); + } + if (!os_file_delete_if_exists(innodb_file_bmp_key, - bitmap_files.files[i].name)) { + full_bmp_file_name)) { os_file_get_last_error(TRUE); result = TRUE; diff --git a/storage/xtradb/os/os0proc.cc b/storage/xtradb/os/os0proc.cc index 6c9116e13..c64c37705 100644 --- a/storage/xtradb/os/os0proc.cc +++ b/storage/xtradb/os/os0proc.cc @@ -247,7 +247,6 @@ os_mem_free_large( ut_a(ut_total_allocated_memory >= size); ut_total_allocated_memory -= size; os_fast_mutex_unlock(&ut_list_mutex); - UNIV_MEM_FREE(ptr, size); return; } #endif /* HAVE_LARGE_PAGES && UNIV_LINUX */ @@ -263,7 +262,6 @@ os_mem_free_large( ut_a(ut_total_allocated_memory >= size); ut_total_allocated_memory -= size; os_fast_mutex_unlock(&ut_list_mutex); - UNIV_MEM_FREE(ptr, size); } #elif !defined OS_MAP_ANON ut_free(ptr); @@ -281,7 +279,6 @@ os_mem_free_large( ut_a(ut_total_allocated_memory >= size); ut_total_allocated_memory -= size; os_fast_mutex_unlock(&ut_list_mutex); - UNIV_MEM_FREE(ptr, size); } #endif } diff --git a/storage/xtradb/page/page0page.cc b/storage/xtradb/page/page0page.cc index e21880c2d..7b62fe756 100644 --- a/storage/xtradb/page/page0page.cc +++ b/storage/xtradb/page/page0page.cc @@ -2822,49 +2822,3 @@ page_find_rec_max_not_deleted( } #endif /* #ifndef UNIV_INNOCHECKSUM */ - -/** Issue a warning when the checksum that is stored in the page is valid, -but different than the global setting innodb_checksum_algorithm. -@param[in] current_algo current checksum algorithm -@param[in] page_checksum page valid checksum -@param[in] space_id tablespace id -@param[in] page_no page number */ -void -page_warn_strict_checksum( - srv_checksum_algorithm_t curr_algo, - srv_checksum_algorithm_t page_checksum, - ulint space_id, - ulint page_no) -{ - srv_checksum_algorithm_t curr_algo_nonstrict = srv_checksum_algorithm_t(); - switch (curr_algo) { - case SRV_CHECKSUM_ALGORITHM_STRICT_CRC32: - curr_algo_nonstrict = SRV_CHECKSUM_ALGORITHM_CRC32; - break; - case SRV_CHECKSUM_ALGORITHM_STRICT_INNODB: - curr_algo_nonstrict = SRV_CHECKSUM_ALGORITHM_INNODB; - break; - case SRV_CHECKSUM_ALGORITHM_STRICT_NONE: - curr_algo_nonstrict = SRV_CHECKSUM_ALGORITHM_NONE; - break; - default: - ut_error; - } - -#ifdef UNIV_INNOCHECKSUM - fprintf(stderr, -#else - ib_logf(IB_LOG_LEVEL_WARN, -#endif - "innodb_checksum_algorithm is set to \"%s\"" - " but the page [page id: space=" ULINTPF "," - " page number=" ULINTPF "] contains a valid checksum \"%s\"." - " Accepting the page as valid. Change innodb_checksum_algorithm" - " to \"%s\" to silently accept such pages or rewrite all pages" - " so that they contain \"%s\" checksum.", - buf_checksum_algorithm_name(curr_algo), - space_id, page_no, - buf_checksum_algorithm_name(page_checksum), - buf_checksum_algorithm_name(curr_algo_nonstrict), - buf_checksum_algorithm_name(curr_algo_nonstrict)); -} diff --git a/storage/xtradb/page/page0zip.cc b/storage/xtradb/page/page0zip.cc index bf7b4928e..90a1d0794 100644 --- a/storage/xtradb/page/page0zip.cc +++ b/storage/xtradb/page/page0zip.cc @@ -2,7 +2,7 @@ Copyright (c) 2005, 2016, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2012, Facebook Inc. -Copyright (c) 2014, 2017, MariaDB Corporation. +Copyright (c) 2014, 2018, MariaDB Corporation. 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 the Free Software @@ -4930,10 +4930,6 @@ page_zip_verify_checksum( stored = static_cast(mach_read_from_4( static_cast(data) + FIL_PAGE_SPACE_OR_CHKSUM)); - ulint page_no = mach_read_from_4(static_cast (data) + FIL_PAGE_OFFSET); - ulint space_id = mach_read_from_4(static_cast - (data) + FIL_PAGE_SPACE_ID); - #if FIL_PAGE_LSN % 8 #error "FIL_PAGE_LSN must be 64 bit aligned" #endif @@ -4944,8 +4940,7 @@ page_zip_verify_checksum( data) + FIL_PAGE_LSN) == 0) { /* make sure that the page is really empty */ - ulint i; - for (i = 0; i < size; i++) { + for (ulint i = 0; i < size; i++) { if (*((const char*) data + i) != 0) { return(FALSE); } @@ -4970,97 +4965,30 @@ page_zip_verify_checksum( switch (curr_algo) { case SRV_CHECKSUM_ALGORITHM_STRICT_CRC32: + case SRV_CHECKSUM_ALGORITHM_STRICT_INNODB: + case SRV_CHECKSUM_ALGORITHM_STRICT_NONE: + return stored == calc; case SRV_CHECKSUM_ALGORITHM_CRC32: - if (stored == BUF_NO_CHECKSUM_MAGIC) { - if (curr_algo - == SRV_CHECKSUM_ALGORITHM_STRICT_CRC32) { - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_NONE, - space_id, page_no); - } - return(TRUE); } + crc32 = calc; innodb = static_cast(page_zip_calc_checksum( data, size, SRV_CHECKSUM_ALGORITHM_INNODB)); - - if (stored == innodb) { - if (curr_algo - == SRV_CHECKSUM_ALGORITHM_STRICT_CRC32) { - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_INNODB, - space_id, page_no); - } - - return(TRUE); - } - break; - case SRV_CHECKSUM_ALGORITHM_STRICT_INNODB: case SRV_CHECKSUM_ALGORITHM_INNODB: - if (stored == BUF_NO_CHECKSUM_MAGIC) { - if (curr_algo - == SRV_CHECKSUM_ALGORITHM_STRICT_INNODB) { - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_NONE, - space_id, page_no); - } - - return(TRUE); - } - - crc32 = static_cast(page_zip_calc_checksum( - data, size, SRV_CHECKSUM_ALGORITHM_CRC32)); - - if (stored == crc32) { - if (curr_algo - == SRV_CHECKSUM_ALGORITHM_STRICT_INNODB) { - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_CRC32, - space_id, page_no); - } - - return(TRUE); + return TRUE; } - break; - case SRV_CHECKSUM_ALGORITHM_STRICT_NONE: - crc32 = static_cast(page_zip_calc_checksum( data, size, SRV_CHECKSUM_ALGORITHM_CRC32)); - - if (stored == crc32) { - page_warn_strict_checksum( - curr_algo, SRV_CHECKSUM_ALGORITHM_CRC32, - space_id, page_no); - - return(TRUE); - } - - innodb = static_cast(page_zip_calc_checksum( - data, size, SRV_CHECKSUM_ALGORITHM_INNODB)); - - if (stored == innodb) { - page_warn_strict_checksum( - curr_algo, - SRV_CHECKSUM_ALGORITHM_INNODB, - space_id, page_no); - return(TRUE); - } - + innodb = calc; break; case SRV_CHECKSUM_ALGORITHM_NONE: - ut_error; - /* no default so the compiler will emit a warning if new enum - is added and not handled here */ + return TRUE; } - return(FALSE); + return (stored == crc32 || stored == innodb); } diff --git a/storage/xtradb/row/row0ftsort.cc b/storage/xtradb/row/row0ftsort.cc index 7b7620c4a..deae270f7 100644 --- a/storage/xtradb/row/row0ftsort.cc +++ b/storage/xtradb/row/row0ftsort.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 2010, 2016, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2015, 2018, MariaDB Corporation. +Copyright (c) 2015, 2019, MariaDB Corporation. 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 the Free Software @@ -782,7 +782,7 @@ fts_parallel_tokenization( goto func_exit; } - UNIV_MEM_INVALID(block[t_ctx.buf_used][0], srv_sort_buf_size); + UNIV_MEM_INVALID(block[t_ctx.buf_used], srv_sort_buf_size); buf[t_ctx.buf_used] = row_merge_buf_empty(buf[t_ctx.buf_used]); mycount[t_ctx.buf_used] += t_ctx.rows_added[t_ctx.buf_used]; t_ctx.rows_added[t_ctx.buf_used] = 0; @@ -877,12 +877,11 @@ fts_parallel_tokenization( goto func_exit; } - UNIV_MEM_INVALID(block[i][0], - srv_sort_buf_size); + UNIV_MEM_INVALID(block[i], srv_sort_buf_size); if (crypt_block[i]) { - UNIV_MEM_INVALID(crypt_block[i][0], - srv_sort_buf_size); + UNIV_MEM_INVALID(crypt_block[i], + srv_sort_buf_size); } } diff --git a/storage/xtradb/row/row0import.cc b/storage/xtradb/row/row0import.cc index 2343e1bbf..a1b584141 100644 --- a/storage/xtradb/row/row0import.cc +++ b/storage/xtradb/row/row0import.cc @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2012, 2018, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 2012, 2016, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2015, 2018, MariaDB Corporation. This program is free software; you can redistribute it and/or modify it under @@ -1949,11 +1949,7 @@ PageConverter::update_index_page( return(DB_SUCCESS); } - if (!page_is_leaf(block->frame)) { - return (DB_SUCCESS); - } - - return(update_records(block)); + return page_is_leaf(block->frame) ? update_records(block) : DB_SUCCESS; } /** @@ -3541,8 +3537,7 @@ fil_iterate( } } else { if (!fil_space_verify_crypt_checksum( - src, callback.get_zip_size(), - NULL, block->page.offset)) { + src, callback.get_zip_size())) { goto page_corrupted; } @@ -4239,4 +4234,3 @@ row_import_for_mysql( return(row_import_cleanup(prebuilt, trx, err)); } - diff --git a/storage/xtradb/row/row0ins.cc b/storage/xtradb/row/row0ins.cc index 472be8ad8..476c18680 100644 --- a/storage/xtradb/row/row0ins.cc +++ b/storage/xtradb/row/row0ins.cc @@ -55,6 +55,12 @@ Created 4/20/1996 Heikki Tuuri #include "fts0types.h" #include "m_string.h" +#ifdef WITH_WSREP +#include +#include "../../../wsrep/wsrep_api.h" +#include "wsrep_mysqld_c.h" +#endif /* WITH_WSREP */ + /************************************************************************* IMPORTANT NOTE: Any operation that generates redo MUST check that there is enough space in the redo log before for that operation. This is @@ -939,11 +945,11 @@ row_ins_invalidate_query_cache( } #ifdef WITH_WSREP dberr_t wsrep_append_foreign_key(trx_t *trx, - dict_foreign_t* foreign, - const rec_t* clust_rec, - dict_index_t* clust_index, - ibool referenced, - ibool shared); + dict_foreign_t* foreign, + const rec_t* clust_rec, + dict_index_t* clust_index, + ibool referenced, + enum wsrep_key_type key_type); #endif /* WITH_WSREP */ /*********************************************************************//** @@ -1302,7 +1308,7 @@ row_ins_foreign_check_on_constraint( foreign, clust_rec, clust_index, - FALSE, FALSE); + FALSE, WSREP_KEY_EXCLUSIVE); if (err != DB_SUCCESS) { fprintf(stderr, "WSREP: foreign key append failed: %d\n", err); @@ -1652,13 +1658,31 @@ row_ins_check_foreign_constraint( if (check_ref) { err = DB_SUCCESS; #ifdef WITH_WSREP + if (!wsrep_on(trx->mysql_thd)) { + goto end_scan; + } + enum wsrep_key_type key_type; + if (upd_node != NULL) { + key_type = WSREP_KEY_SHARED; + } else { + switch (wsrep_certification_rules) { + default: + case WSREP_CERTIFICATION_RULES_STRICT: + key_type = WSREP_KEY_EXCLUSIVE; + break; + case WSREP_CERTIFICATION_RULES_OPTIMIZED: + key_type = WSREP_KEY_SEMI; + break; + } + } + err = wsrep_append_foreign_key( - thr_get_trx(thr), + trx, foreign, rec, check_index, check_ref, - (upd_node) ? TRUE : FALSE); + key_type); #endif /* WITH_WSREP */ goto end_scan; } else if (foreign->type != 0) { diff --git a/storage/xtradb/row/row0mysql.cc b/storage/xtradb/row/row0mysql.cc index 88ebe24f3..93a4db98e 100644 --- a/storage/xtradb/row/row0mysql.cc +++ b/storage/xtradb/row/row0mysql.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 2000, 2018, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2015, 2018, MariaDB Corporation. +Copyright (c) 2015, 2019, MariaDB Corporation. 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 the Free Software @@ -4234,9 +4234,12 @@ row_drop_table_for_mysql( calling btr_search_drop_page_hash_index() while we hold the InnoDB dictionary lock, we will drop any adaptive hash index entries upfront. */ + const bool is_temp = dict_table_is_temporary(table) + || strncmp(tablename_minus_db, tmp_file_prefix, + tmp_file_prefix_length) + || strncmp(tablename_minus_db, "FTS_", 4); while (buf_LRU_drop_page_hash_for_tablespace(table)) { - if ((!dict_table_is_temporary(table) - && trx_is_interrupted(trx)) + if ((!is_temp && trx_is_interrupted(trx)) || srv_shutdown_state != SRV_SHUTDOWN_NONE) { err = DB_INTERRUPTED; goto funct_exit; @@ -4480,7 +4483,8 @@ row_drop_table_for_mysql( char msg_tablename[MAX_FULL_NAME_LEN + 1]; innobase_format_name( - msg_tablename, sizeof(tablename), + msg_tablename, + sizeof msg_tablename, tablename, FALSE); ib_logf(IB_LOG_LEVEL_INFO, @@ -5128,18 +5132,6 @@ row_rename_table_for_mysql( goto funct_exit; } - /* Wait for background fts sync to finish */ - for (retry = 1; dict_fts_index_syncing(table); ++retry) { - DICT_BG_YIELD(trx); - if (retry % 100 == 0) { - ib_logf(IB_LOG_LEVEL_INFO, - "Unable to rename table %s to new name" - " %s because FTS sync is running on table." - " Retrying\n", - old_name, new_name); - } - } - /* We use the private SQL parser of Innobase to generate the query graphs needed in updating the dictionary data from system tables. */ diff --git a/storage/xtradb/row/row0sel.cc b/storage/xtradb/row/row0sel.cc index 264abed7c..b6b5d1078 100644 --- a/storage/xtradb/row/row0sel.cc +++ b/storage/xtradb/row/row0sel.cc @@ -2738,7 +2738,8 @@ row_sel_field_store_in_mysql_format_func( case DATA_SYS: /* These column types should never be shipped to MySQL. */ ut_ad(0); - break; + /* fall through */ + case DATA_CHAR: case DATA_FIXBINARY: case DATA_FLOAT: @@ -4729,7 +4730,7 @@ row_search_for_mysql( prebuilt->new_rec_locks = 1; } err = DB_SUCCESS; - break; + /* fall through */ case DB_SUCCESS: break; case DB_LOCK_WAIT: diff --git a/storage/xtradb/srv/srv0srv.cc b/storage/xtradb/srv/srv0srv.cc index 0133b17fa..c05b667dc 100644 --- a/storage/xtradb/srv/srv0srv.cc +++ b/storage/xtradb/srv/srv0srv.cc @@ -3,7 +3,7 @@ Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2008, 2009 Google Inc. Copyright (c) 2009, Percona Inc. -Copyright (c) 2013, 2017, MariaDB Corporation. +Copyright (c) 2013, 2019, MariaDB Corporation. Portions of this file contain modifications contributed and copyrighted by Google, Inc. Those modifications are gratefully acknowledged and are described @@ -1642,9 +1642,7 @@ srv_printf_innodb_monitor( ? (recv_sys->addr_hash->n_cells * sizeof(hash_cell_t)) : 0), recv_sys_subtotal); - - fprintf(file, "Dictionary memory allocated " ULINTPF "\n", - dict_sys ? dict_sys_get_size() : 0); + fprintf(file, "Dictionary memory allocated " ULINTPF "\n", dict_size); buf_print_io(file); diff --git a/storage/xtradb/srv/srv0start.cc b/storage/xtradb/srv/srv0start.cc index 75b664a05..2553d405a 100644 --- a/storage/xtradb/srv/srv0start.cc +++ b/storage/xtradb/srv/srv0start.cc @@ -2408,6 +2408,9 @@ innobase_start_or_create_for_mysql() break; } + if (stat_info.type != OS_FILE_TYPE_FILE) { + break; + } if (!srv_file_check_mode(logfilename)) { return(DB_ERROR); } diff --git a/storage/xtradb/trx/trx0trx.cc b/storage/xtradb/trx/trx0trx.cc index 6a033fbeb..17cba81da 100644 --- a/storage/xtradb/trx/trx0trx.cc +++ b/storage/xtradb/trx/trx0trx.cc @@ -2578,6 +2578,12 @@ trx_get_trx_by_xid_low( && memcmp(xid->data, trx->xid.data, xid->gtrid_length + xid->bqual_length) == 0) { +#ifdef WITH_WSREP + /* The commit of a prepared recovered Galera + transaction needs a valid trx->xid for + invoking trx_sys_update_wsrep_checkpoint(). */ + if (wsrep_is_wsrep_xid(&trx->xid)) break; +#endif /* Invalidate the XID, so that subsequent calls will not find it. */ trx->xid.null(); diff --git a/strings/ctype-simple.c b/strings/ctype-simple.c index 33a000ee5..825a653d0 100644 --- a/strings/ctype-simple.c +++ b/strings/ctype-simple.c @@ -461,7 +461,6 @@ ulong my_strntoul_8bit(CHARSET_INFO *cs, register uint cutlim; register uint32 i; register const char *s; - register uchar c; const char *save, *e; int overflow; @@ -496,8 +495,9 @@ ulong my_strntoul_8bit(CHARSET_INFO *cs, overflow = 0; i = 0; - for (c = *s; s != e; c = *++s) + for ( ; s != e; ++s) { + register uchar c= *s; if (c>='0' && c<='9') c -= '0'; else if (c>='A' && c<='Z') diff --git a/support-files/mysql.server.sh b/support-files/mysql.server.sh index 8536ded71..ed3240f12 100644 --- a/support-files/mysql.server.sh +++ b/support-files/mysql.server.sh @@ -185,7 +185,11 @@ fi user='@MYSQLD_USER@' su_kill() { - su - $user -s /bin/sh -c "kill $*" >/dev/null 2>&1 + if test "$USER" = "$user"; then + kill $* >/dev/null 2>&1 + else + su - $user -s /bin/sh -c "kill $*" >/dev/null 2>&1 + fi } # diff --git a/support-files/policy/apparmor/usr.sbin.mysqld b/support-files/policy/apparmor/usr.sbin.mysqld index 307872c0f..a362aa78c 100644 --- a/support-files/policy/apparmor/usr.sbin.mysqld +++ b/support-files/policy/apparmor/usr.sbin.mysqld @@ -106,6 +106,7 @@ /usr/bin/wsrep_sst* rix, /usr/bin/wsrep_sst_common r, /usr/bin/xtrabackup* rix, + /usr/bin/mariabackup* rix, /var/lib/mysql/ r, /var/lib/mysql/** rw, /var/lib/mysql/*.log w, diff --git a/support-files/policy/selinux/mariadb-server.fc b/support-files/policy/selinux/mariadb-server.fc index 409f72923..39ec152c1 100644 --- a/support-files/policy/selinux/mariadb-server.fc +++ b/support-files/policy/selinux/mariadb-server.fc @@ -7,4 +7,5 @@ /var/lib/mysql/.*\.pid -- gen_context(system_u:object_r:mysqld_var_run_t,s0) /var/lib/mysql/.*\.cnf -- gen_context(system_u:object_r:mysqld_etc_t,s0) /usr/bin/xtrabackup.* -- gen_context(system_u:object_r:mysqld_exec_t,s0) +/usr/bin/mariabackup.* -- gen_context(system_u:object_r:mysqld_exec_t,s0) /usr/bin/wsrep.* -- gen_context(system_u:object_r:mysqld_safe_exec_t,s0) diff --git a/unittest/mysys/lf-t.c b/unittest/mysys/lf-t.c index cb0c2853d..80f588569 100644 --- a/unittest/mysys/lf-t.c +++ b/unittest/mysys/lf-t.c @@ -48,9 +48,6 @@ pthread_handler_t test_lf_pinbox(void *arg) pins= lf_pinbox_get_pins(&lf_allocator.pinbox); } lf_pinbox_put_pins(pins); - pthread_mutex_lock(&mutex); - if (!--running_threads) pthread_cond_signal(&cond); - pthread_mutex_unlock(&mutex); if (with_my_thread_init) my_thread_end(); @@ -105,7 +102,6 @@ pthread_handler_t test_lf_alloc(void *arg) bad|= lf_allocator.mallocs - lf_alloc_pool_count(&lf_allocator); #endif } - if (!--running_threads) pthread_cond_signal(&cond); pthread_mutex_unlock(&mutex); if (with_my_thread_init) @@ -172,7 +168,6 @@ pthread_handler_t test_lf_hash(void *arg) lf_hash.size, inserts, scans); bad|= lf_hash.count; } - if (!--running_threads) pthread_cond_signal(&cond); pthread_mutex_unlock(&mutex); if (with_my_thread_init) my_thread_end(); diff --git a/unittest/mysys/my_atomic-t.c b/unittest/mysys/my_atomic-t.c index 0f21c3345..3198da683 100644 --- a/unittest/mysys/my_atomic-t.c +++ b/unittest/mysys/my_atomic-t.c @@ -29,9 +29,6 @@ pthread_handler_t test_atomic_add(void *arg) my_atomic_add32(&bad, x); my_atomic_add32(&bad, -x); } - pthread_mutex_lock(&mutex); - if (!--running_threads) pthread_cond_signal(&cond); - pthread_mutex_unlock(&mutex); return 0; } @@ -47,13 +44,6 @@ pthread_handler_t test_atomic_add64(void *arg) my_atomic_add64(&a64, x); my_atomic_add64(&a64, -x); } - pthread_mutex_lock(&mutex); - if (!--running_threads) - { - bad= (a64 != 0); - pthread_cond_signal(&cond); - } - pthread_mutex_unlock(&mutex); return 0; } @@ -83,9 +73,6 @@ pthread_handler_t test_atomic_fas(void *arg) my_atomic_add32(&bad, -x); - pthread_mutex_lock(&mutex); - if (!--running_threads) pthread_cond_signal(&cond); - pthread_mutex_unlock(&mutex); return 0; } @@ -109,9 +96,6 @@ pthread_handler_t test_atomic_cas(void *arg) ok= my_atomic_cas32(&bad, &y, y-x); } while (!ok) ; } - pthread_mutex_lock(&mutex); - if (!--running_threads) pthread_cond_signal(&cond); - pthread_mutex_unlock(&mutex); return 0; } @@ -146,4 +130,5 @@ void do_tests() } a64=0; test_concurrently("my_atomic_add64", test_atomic_add64, THREADS, CYCLES); + bad= (a64 != 0); } diff --git a/unittest/mysys/thr_template.c b/unittest/mysys/thr_template.c index 38999022d..38b8d2903 100644 --- a/unittest/mysys/thr_template.c +++ b/unittest/mysys/thr_template.c @@ -20,35 +20,34 @@ #include volatile uint32 bad; -pthread_attr_t thr_attr; pthread_mutex_t mutex; -pthread_cond_t cond; -uint running_threads; void do_tests(); void test_concurrently(const char *test, pthread_handler handler, int n, int m) { - pthread_t t; + pthread_t *threads= malloc(n * sizeof(pthread_t)); + int i; ulonglong now= my_interval_timer(); + assert(threads); bad= 0; diag("Testing %s with %d threads, %d iterations... ", test, n, m); - for (running_threads= n ; n ; n--) + for (i= 0; i < n; i++) { - if (pthread_create(&t, &thr_attr, handler, &m) != 0) + if (pthread_create(&threads[i], 0, handler, &m) != 0) { diag("Could not create thread"); abort(); } } - pthread_mutex_lock(&mutex); - while (running_threads) - pthread_cond_wait(&cond, &mutex); - pthread_mutex_unlock(&mutex); + + for (i= 0; i < n; i++) + pthread_join(threads[i], 0); now= my_interval_timer() - now; + free(threads); ok(!bad, "tested %s in %g secs (%d)", test, ((double)now)/1e9, bad); } @@ -60,9 +59,6 @@ int main(int argc __attribute__((unused)), char **argv) DBUG_SET_INITIAL(argv[1]); pthread_mutex_init(&mutex, 0); - pthread_cond_init(&cond, 0); - pthread_attr_init(&thr_attr); - pthread_attr_setdetachstate(&thr_attr,PTHREAD_CREATE_DETACHED); #define CYCLES 3000 #define THREADS 30 @@ -71,16 +67,7 @@ int main(int argc __attribute__((unused)), char **argv) do_tests(); - /* - workaround until we know why it crashes randomly on some machine - (BUG#22320). - */ -#ifdef NOT_USED - sleep(2); -#endif pthread_mutex_destroy(&mutex); - pthread_cond_destroy(&cond); - pthread_attr_destroy(&thr_attr); my_end(0); return exit_status(); } diff --git a/unittest/mysys/waiting_threads-t.c b/unittest/mysys/waiting_threads-t.c index 56b2f967c..ac481e0fe 100644 --- a/unittest/mysys/waiting_threads-t.c +++ b/unittest/mysys/waiting_threads-t.c @@ -136,10 +136,8 @@ pthread_handler_t test_wt(void *arg) pthread_mutex_unlock(&lock); pthread_mutex_unlock(& thds[id].lock); wt_thd_destroy(& thds[id].thd); - - if (!--running_threads) /* now, signal when everybody is done with deinit */ - pthread_cond_signal(&cond); pthread_mutex_unlock(&mutex); + DBUG_PRINT("wt", ("exiting")); my_thread_end(); return 0; diff --git a/unittest/sql/mf_iocache-t.cc b/unittest/sql/mf_iocache-t.cc index 95451d52f..fca5ec501 100644 --- a/unittest/sql/mf_iocache-t.cc +++ b/unittest/sql/mf_iocache-t.cc @@ -326,7 +326,7 @@ void mdev17133() MY_MIN(sizeof(buf_o), info.end_of_file + eof_block_size + // plus 25% of block for randomization to the average - (eof_block_size/4 - rand() % (eof_block_size/2))); + eof_block_size/4 - rand() % (eof_block_size/2)); // read a chunk by blocks of variable size read_iter times // the last block completes the current chunk @@ -370,10 +370,77 @@ void mdev17133() } +void mdev10963() +{ + int res; + uint n_checks= 8; + uchar buf[1024 * 512]; + uint n_frag= sizeof(buf)/(2 * CACHE_SIZE); + FILE *file; + myf my_flags= MYF(MY_WME); + const char *file_name="cache.log"; + + memset(buf, FILL, sizeof(buf)); + diag("MDEV-10963 Fragmented BINLOG query"); + + init_io_cache_encryption(); + srand((uint) time(NULL)); + + /* copying source */ + res= open_cached_file(&info, 0, 0, CACHE_SIZE, 0); + ok(res == 0, "open_cached_file" INFO_TAIL); + res= my_b_write(&info, buf, sizeof(buf)); + + ulong total_size= my_b_tell(&info); + ok(res == 0 && total_size == sizeof(buf), "cache is written"); + + /* destination */ + file= my_fopen(file_name, O_RDWR | O_TRUNC | O_CREAT, my_flags); + ok(my_fileno(file) > 0, "opened file fd = %d", my_fileno(file)); + + /* + For n_checks times verify a sequence of copying with random fragment + size ranging from zero to about the double of the cache read buffer size. + */ + for (; n_checks; n_checks--, rewind(file)) + { + // copied size is an estimate can be incremeneted to greater than total_size + ulong copied_size= 0; + + res= reinit_io_cache(&info, READ_CACHE, 0L, FALSE, FALSE); + ok(res == 0, "cache turned to read"); + + for (ulong i= 0, curr_size= 0; i < n_frag; i++, copied_size += curr_size) + { + curr_size= rand() % (2 * (total_size - copied_size) / (n_frag - i)); + + DBUG_ASSERT(curr_size <= total_size - copied_size || i == n_frag - 1); + + res= my_b_copy_to_file(&info, file, curr_size); + ok(res == 0, "%lu of the cache copied to file", curr_size); + } + /* + Regardless of total_size <> copied_size the function succeeds: + when total_size < copied_size the huge overflowed value of the last + argument is ignored because nothing already left uncopied in the cache. + */ + res= my_b_copy_to_file(&info, file, total_size - copied_size); + ok(res == 0, "%lu of the cache copied to file", total_size - copied_size); + ok(my_ftell(file, my_flags) == sizeof(buf), + "file written in %d fragments", n_frag+1); + + res= reinit_io_cache(&info, WRITE_CACHE, total_size, 0, 0); + ok(res == 0 && my_b_tell(&info) == sizeof(buf), "cache turned to write"); + } + close_cached_file(&info); + my_fclose(file, my_flags); + my_delete(file_name, MYF(MY_WME)); +} + int main(int argc __attribute__((unused)),char *argv[]) { MY_INIT(argv[0]); - plan(114); + plan(277); /* temp files with and without encryption */ encrypt_tmp_files= 1; @@ -391,6 +458,7 @@ int main(int argc __attribute__((unused)),char *argv[]) mdev14014(); mdev17133(); + mdev10963(); my_end(0); return exit_status(); diff --git a/win/packaging/heidisql.cmake b/win/packaging/heidisql.cmake index 569ae4d8e..897678f20 100644 --- a/win/packaging/heidisql.cmake +++ b/win/packaging/heidisql.cmake @@ -1,4 +1,4 @@ -SET(HEIDISQL_BASE_NAME "HeidiSQL_9.4_Portable") +SET(HEIDISQL_BASE_NAME "HeidiSQL_9.5_Portable") SET(HEIDISQL_ZIP "${HEIDISQL_BASE_NAME}.zip") SET(HEIDISQL_URL "http://www.heidisql.com/downloads/releases/${HEIDISQL_ZIP}") SET(HEIDISQL_DOWNLOAD_DIR ${THIRD_PARTY_DOWNLOAD_LOCATION}/${HEIDISQL_BASE_NAME}) -- GitLab