From: Christopher Powers Date: August 16 2010 4:52pm Subject: bzr push into mysql-next-mr-wl4896 branch (chris.powers:3164 to 3165) WL#4896 List-Archive: http://lists.mysql.com/commits/116296 Message-Id: <20100816165224.459751DB0318@xeno.mysql.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============3551788592884962791==" --===============3551788592884962791== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline 3165 Christopher Powers 2010-08-16 WL#4896 PERFORMANCE_SCHEMA Net IO - Update mysql-test-run test cases and results - Correct memory count assert in pfs_show_status() - Add pfs_max_socket* test cases added: mysql-test/suite/sys_vars/r/pfs_max_socket_classes_basic.result mysql-test/suite/sys_vars/r/pfs_max_sockets_basic.result mysql-test/suite/sys_vars/t/pfs_max_socket_classes_basic-master.opt mysql-test/suite/sys_vars/t/pfs_max_socket_classes_basic.test mysql-test/suite/sys_vars/t/pfs_max_sockets_basic-master.opt mysql-test/suite/sys_vars/t/pfs_max_sockets_basic.test modified: mysql-test/suite/perfschema/r/start_server_no_cond_class.result mysql-test/suite/perfschema/r/start_server_no_cond_inst.result mysql-test/suite/perfschema/r/start_server_no_file_class.result mysql-test/suite/perfschema/r/start_server_no_file_inst.result mysql-test/suite/perfschema/r/start_server_no_mutex_class.result mysql-test/suite/perfschema/r/start_server_no_mutex_inst.result mysql-test/suite/perfschema/r/start_server_no_rwlock_class.result mysql-test/suite/perfschema/r/start_server_nothing.result mysql-test/suite/perfschema/r/start_server_off.result storage/perfschema/pfs_engine_table.cc 3164 Christopher Powers 2010-08-14 merge bugfix modified: sql/mysqld.cc === modified file 'mysql-test/suite/perfschema/r/start_server_no_cond_class.result' --- a/mysql-test/suite/perfschema/r/start_server_no_cond_class.result 2010-05-07 12:14:13 +0000 +++ b/mysql-test/suite/perfschema/r/start_server_no_cond_class.result 2010-08-16 16:51:36 +0000 @@ -49,6 +49,8 @@ performance_schema_max_mutex_classes 200 performance_schema_max_mutex_instances 1000 performance_schema_max_rwlock_classes 20 performance_schema_max_rwlock_instances 1000 +performance_schema_max_socket_classes 50 +performance_schema_max_sockets 10000 performance_schema_max_table_handles 10000 performance_schema_max_table_instances 1000 performance_schema_max_thread_classes 50 === modified file 'mysql-test/suite/perfschema/r/start_server_no_cond_inst.result' --- a/mysql-test/suite/perfschema/r/start_server_no_cond_inst.result 2010-05-07 12:14:13 +0000 +++ b/mysql-test/suite/perfschema/r/start_server_no_cond_inst.result 2010-08-16 16:51:36 +0000 @@ -49,6 +49,8 @@ performance_schema_max_mutex_classes 200 performance_schema_max_mutex_instances 1000 performance_schema_max_rwlock_classes 20 performance_schema_max_rwlock_instances 1000 +performance_schema_max_socket_classes 50 +performance_schema_max_sockets 10000 performance_schema_max_table_handles 10000 performance_schema_max_table_instances 1000 performance_schema_max_thread_classes 50 === modified file 'mysql-test/suite/perfschema/r/start_server_no_file_class.result' --- a/mysql-test/suite/perfschema/r/start_server_no_file_class.result 2010-05-07 12:14:13 +0000 +++ b/mysql-test/suite/perfschema/r/start_server_no_file_class.result 2010-08-16 16:51:36 +0000 @@ -49,6 +49,8 @@ performance_schema_max_mutex_classes 200 performance_schema_max_mutex_instances 1000 performance_schema_max_rwlock_classes 20 performance_schema_max_rwlock_instances 1000 +performance_schema_max_socket_classes 50 +performance_schema_max_sockets 10000 performance_schema_max_table_handles 10000 performance_schema_max_table_instances 1000 performance_schema_max_thread_classes 50 === modified file 'mysql-test/suite/perfschema/r/start_server_no_file_inst.result' --- a/mysql-test/suite/perfschema/r/start_server_no_file_inst.result 2010-05-07 12:14:13 +0000 +++ b/mysql-test/suite/perfschema/r/start_server_no_file_inst.result 2010-08-16 16:51:36 +0000 @@ -49,6 +49,8 @@ performance_schema_max_mutex_classes 200 performance_schema_max_mutex_instances 1000 performance_schema_max_rwlock_classes 20 performance_schema_max_rwlock_instances 1000 +performance_schema_max_socket_classes 50 +performance_schema_max_sockets 10000 performance_schema_max_table_handles 10000 performance_schema_max_table_instances 1000 performance_schema_max_thread_classes 50 === modified file 'mysql-test/suite/perfschema/r/start_server_no_mutex_class.result' --- a/mysql-test/suite/perfschema/r/start_server_no_mutex_class.result 2010-05-07 12:14:13 +0000 +++ b/mysql-test/suite/perfschema/r/start_server_no_mutex_class.result 2010-08-16 16:51:36 +0000 @@ -49,6 +49,8 @@ performance_schema_max_mutex_classes 0 performance_schema_max_mutex_instances 1000 performance_schema_max_rwlock_classes 20 performance_schema_max_rwlock_instances 1000 +performance_schema_max_socket_classes 50 +performance_schema_max_sockets 10000 performance_schema_max_table_handles 10000 performance_schema_max_table_instances 1000 performance_schema_max_thread_classes 50 === modified file 'mysql-test/suite/perfschema/r/start_server_no_mutex_inst.result' --- a/mysql-test/suite/perfschema/r/start_server_no_mutex_inst.result 2010-05-07 12:14:13 +0000 +++ b/mysql-test/suite/perfschema/r/start_server_no_mutex_inst.result 2010-08-16 16:51:36 +0000 @@ -49,6 +49,8 @@ performance_schema_max_mutex_classes 200 performance_schema_max_mutex_instances 0 performance_schema_max_rwlock_classes 20 performance_schema_max_rwlock_instances 1000 +performance_schema_max_socket_classes 50 +performance_schema_max_sockets 10000 performance_schema_max_table_handles 10000 performance_schema_max_table_instances 1000 performance_schema_max_thread_classes 50 === modified file 'mysql-test/suite/perfschema/r/start_server_no_rwlock_class.result' --- a/mysql-test/suite/perfschema/r/start_server_no_rwlock_class.result 2010-05-07 12:14:13 +0000 +++ b/mysql-test/suite/perfschema/r/start_server_no_rwlock_class.result 2010-08-16 16:51:36 +0000 @@ -49,6 +49,8 @@ performance_schema_max_mutex_classes 200 performance_schema_max_mutex_instances 1000 performance_schema_max_rwlock_classes 0 performance_schema_max_rwlock_instances 1000 +performance_schema_max_socket_classes 50 +performance_schema_max_sockets 10000 performance_schema_max_table_handles 10000 performance_schema_max_table_instances 1000 performance_schema_max_thread_classes 50 === modified file 'mysql-test/suite/perfschema/r/start_server_nothing.result' --- a/mysql-test/suite/perfschema/r/start_server_nothing.result 2010-05-17 10:05:47 +0000 +++ b/mysql-test/suite/perfschema/r/start_server_nothing.result 2010-08-16 16:51:36 +0000 @@ -13,7 +13,7 @@ count(*) 8 select count(*) > 1 from performance_schema.SETUP_INSTRUMENTS; count(*) > 1 -0 +1 select count(*) from performance_schema.SETUP_TIMERS; count(*) 1 @@ -49,6 +49,8 @@ performance_schema_max_mutex_classes 0 performance_schema_max_mutex_instances 0 performance_schema_max_rwlock_classes 0 performance_schema_max_rwlock_instances 0 +performance_schema_max_socket_classes 50 +performance_schema_max_sockets 10000 performance_schema_max_table_handles 0 performance_schema_max_table_instances 0 performance_schema_max_thread_classes 0 @@ -69,6 +71,8 @@ performance_schema_max_mutex_classes 0 performance_schema_max_mutex_instances 0 performance_schema_max_rwlock_classes 0 performance_schema_max_rwlock_instances 0 +performance_schema_max_socket_classes 50 +performance_schema_max_sockets 10000 performance_schema_max_table_handles 0 performance_schema_max_table_instances 0 performance_schema_max_thread_classes 0 @@ -76,6 +80,8 @@ performance_schema_max_thread_instances select * from performance_schema.SETUP_INSTRUMENTS; NAME ENABLED TIMED wait/io/table/sql/handler YES YES +wait/io/socket/sql/network_init YES YES +wait/io/socket/sql/handle_connection YES YES select TIMER_NAME from performance_schema.PERFORMANCE_TIMERS; TIMER_NAME CYCLE @@ -106,6 +112,8 @@ select * from performance_schema.EVENTS_ THREAD_ID EVENT_ID EVENT_NAME SOURCE TIMER_START TIMER_END TIMER_WAIT SPINS OBJECT_SCHEMA OBJECT_NAME OBJECT_TYPE OBJECT_INSTANCE_BEGIN NESTING_EVENT_ID OPERATION NUMBER_OF_BYTES FLAGS select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_EVENT_NAME; EVENT_NAME COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT +wait/io/socket/sql/network_init 0 0 0 0 0 +wait/io/socket/sql/handle_connection 0 0 0 0 0 select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_INSTANCE; EVENT_NAME OBJECT_INSTANCE_BEGIN COUNT_STAR SUM_TIMER_WAIT MIN_TIMER_WAIT AVG_TIMER_WAIT MAX_TIMER_WAIT select * from performance_schema.EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME; === modified file 'mysql-test/suite/perfschema/r/start_server_off.result' --- a/mysql-test/suite/perfschema/r/start_server_off.result 2010-05-07 12:14:13 +0000 +++ b/mysql-test/suite/perfschema/r/start_server_off.result 2010-08-16 16:51:36 +0000 @@ -49,6 +49,8 @@ performance_schema_max_mutex_classes 200 performance_schema_max_mutex_instances 1000 performance_schema_max_rwlock_classes 20 performance_schema_max_rwlock_instances 1000 +performance_schema_max_socket_classes 50 +performance_schema_max_sockets 10000 performance_schema_max_table_handles 10000 performance_schema_max_table_instances 1000 performance_schema_max_thread_classes 50 @@ -67,6 +69,7 @@ Performance_schema_mutex_classes_lost 0 Performance_schema_mutex_instances_lost 0 Performance_schema_rwlock_classes_lost 0 Performance_schema_rwlock_instances_lost 0 +Performance_schema_socket_instances_lost 0 Performance_schema_table_handles_lost 0 Performance_schema_table_instances_lost 0 Performance_schema_thread_classes_lost 0 === added file 'mysql-test/suite/sys_vars/r/pfs_max_socket_classes_basic.result' --- a/mysql-test/suite/sys_vars/r/pfs_max_socket_classes_basic.result 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/sys_vars/r/pfs_max_socket_classes_basic.result 2010-08-16 16:51:36 +0000 @@ -0,0 +1,23 @@ +select @@global.performance_schema_max_socket_classes; +@@global.performance_schema_max_socket_classes +123 +select @@session.performance_schema_max_socket_classes; +ERROR HY000: Variable 'performance_schema_max_socket_classes' is a GLOBAL variable +show global variables like 'performance_schema_max_socket_classes'; +Variable_name Value +performance_schema_max_socket_classes 123 +show session variables like 'performance_schema_max_socket_classes'; +Variable_name Value +performance_schema_max_socket_classes 123 +select * from information_schema.global_variables +where variable_name='performance_schema_max_socket_classes'; +VARIABLE_NAME VARIABLE_VALUE +PERFORMANCE_SCHEMA_MAX_SOCKET_CLASSES 123 +select * from information_schema.session_variables +where variable_name='performance_schema_max_socket_classes'; +VARIABLE_NAME VARIABLE_VALUE +PERFORMANCE_SCHEMA_MAX_SOCKET_CLASSES 123 +set global performance_schema_max_socket_classes=1; +ERROR HY000: Variable 'performance_schema_max_socket_classes' is a read only variable +set session performance_schema_max_socket_classes=1; +ERROR HY000: Variable 'performance_schema_max_socket_classes' is a read only variable === added file 'mysql-test/suite/sys_vars/r/pfs_max_sockets_basic.result' --- a/mysql-test/suite/sys_vars/r/pfs_max_sockets_basic.result 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/sys_vars/r/pfs_max_sockets_basic.result 2010-08-16 16:51:36 +0000 @@ -0,0 +1,23 @@ +select @@global.performance_schema_max_sockets; +@@global.performance_schema_max_sockets +123 +select @@session.performance_schema_max_sockets; +ERROR HY000: Variable 'performance_schema_max_sockets' is a GLOBAL variable +show global variables like 'performance_schema_max_sockets'; +Variable_name Value +performance_schema_max_sockets 123 +show session variables like 'performance_schema_max_sockets'; +Variable_name Value +performance_schema_max_sockets 123 +select * from information_schema.global_variables +where variable_name='performance_schema_max_sockets'; +VARIABLE_NAME VARIABLE_VALUE +PERFORMANCE_SCHEMA_MAX_SOCKETS 123 +select * from information_schema.session_variables +where variable_name='performance_schema_max_sockets'; +VARIABLE_NAME VARIABLE_VALUE +PERFORMANCE_SCHEMA_MAX_SOCKETS 123 +set global performance_schema_max_sockets=1; +ERROR HY000: Variable 'performance_schema_max_sockets' is a read only variable +set session performance_schema_max_sockets=1; +ERROR HY000: Variable 'performance_schema_max_sockets' is a read only variable === added file 'mysql-test/suite/sys_vars/t/pfs_max_socket_classes_basic-master.opt' --- a/mysql-test/suite/sys_vars/t/pfs_max_socket_classes_basic-master.opt 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/sys_vars/t/pfs_max_socket_classes_basic-master.opt 2010-08-16 16:51:36 +0000 @@ -0,0 +1 @@ +--loose-enable-performance-schema --loose-performance-schema-max-socket-classes=123 === added file 'mysql-test/suite/sys_vars/t/pfs_max_socket_classes_basic.test' --- a/mysql-test/suite/sys_vars/t/pfs_max_socket_classes_basic.test 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/sys_vars/t/pfs_max_socket_classes_basic.test 2010-08-16 16:51:36 +0000 @@ -0,0 +1,47 @@ +# Copyright (C) 2010 Sun Microsystems, Inc. +# +# 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 + +--source include/not_embedded.inc +--source include/have_perfschema.inc + +# +# Only global +# + +select @@global.performance_schema_max_socket_classes; + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +select @@session.performance_schema_max_socket_classes; + +show global variables like 'performance_schema_max_socket_classes'; + +show session variables like 'performance_schema_max_socket_classes'; + +select * from information_schema.global_variables + where variable_name='performance_schema_max_socket_classes'; + +select * from information_schema.session_variables + where variable_name='performance_schema_max_socket_classes'; + +# +# Read-only +# + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +set global performance_schema_max_socket_classes=1; + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +set session performance_schema_max_socket_classes=1; + === added file 'mysql-test/suite/sys_vars/t/pfs_max_sockets_basic-master.opt' --- a/mysql-test/suite/sys_vars/t/pfs_max_sockets_basic-master.opt 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/sys_vars/t/pfs_max_sockets_basic-master.opt 2010-08-16 16:51:36 +0000 @@ -0,0 +1 @@ +--loose-enable-performance-schema --loose-performance-schema-max-sockets=123 === added file 'mysql-test/suite/sys_vars/t/pfs_max_sockets_basic.test' --- a/mysql-test/suite/sys_vars/t/pfs_max_sockets_basic.test 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/sys_vars/t/pfs_max_sockets_basic.test 2010-08-16 16:51:36 +0000 @@ -0,0 +1,47 @@ +# Copyright (C) 2010 Sun Microsystems, Inc. +# +# 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 + +--source include/not_embedded.inc +--source include/have_perfschema.inc + +# +# Only global +# + +select @@global.performance_schema_max_sockets; + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +select @@session.performance_schema_max_sockets; + +show global variables like 'performance_schema_max_sockets'; + +show session variables like 'performance_schema_max_sockets'; + +select * from information_schema.global_variables + where variable_name='performance_schema_max_sockets'; + +select * from information_schema.session_variables + where variable_name='performance_schema_max_sockets'; + +# +# Read-only +# + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +set global performance_schema_max_sockets=1; + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +set session performance_schema_max_sockets=1; + === modified file 'storage/perfschema/pfs_engine_table.cc' --- a/storage/perfschema/pfs_engine_table.cc 2010-08-04 03:19:48 +0000 +++ b/storage/perfschema/pfs_engine_table.cc 2010-08-16 16:51:36 +0000 @@ -628,131 +628,144 @@ bool pfs_show_status(handlerton *hton, T total_memory+= size; break; case 23: + name= "(PFS_SOCKET_CLASS).ROW_SIZE"; + size= sizeof(PFS_socket_class); + break; + case 24: + name= "(PFS_SOCKET_CLASS).ROW_COUNT"; + size= socket_class_max; + break; + case 25: + name= "(PFS_SOCKET_CLASS).MEMORY"; + size= socket_class_max * sizeof(PFS_socket_class); + total_memory+= size; + break; + case 26: name= "MUTEX_INSTANCES.ROW_SIZE"; size= sizeof(PFS_mutex); break; - case 24: + case 27: name= "MUTEX_INSTANCES.ROW_COUNT"; size= mutex_max; break; - case 25: + case 28: name= "MUTEX_INSTANCES.MEMORY"; size= mutex_max * sizeof(PFS_mutex); total_memory+= size; break; - case 26: + case 29: name= "RWLOCK_INSTANCES.ROW_SIZE"; size= sizeof(PFS_rwlock); break; - case 27: + case 30: name= "RWLOCK_INSTANCES.ROW_COUNT"; size= rwlock_max; break; - case 28: + case 31: name= "RWLOCK_INSTANCES.MEMORY"; size= rwlock_max * sizeof(PFS_rwlock); total_memory+= size; break; - case 29: + case 32: name= "COND_INSTANCES.ROW_SIZE"; size= sizeof(PFS_cond); break; - case 30: + case 33: name= "COND_INSTANCES.ROW_COUNT"; size= cond_max; break; - case 31: + case 34: name= "COND_INSTANCES.MEMORY"; size= cond_max * sizeof(PFS_cond); total_memory+= size; break; - case 32: + case 35: name= "PROCESSLIST.ROW_SIZE"; size= sizeof(PFS_thread); break; - case 33: + case 36: name= "PROCESSLIST.ROW_COUNT"; size= thread_max; break; - case 34: + case 37: name= "PROCESSLIST.MEMORY"; size= thread_max * sizeof(PFS_thread); total_memory+= size; break; - case 35: + case 38: name= "FILE_INSTANCES.ROW_SIZE"; size= sizeof(PFS_file); break; - case 36: + case 39: name= "FILE_INSTANCES.ROW_COUNT"; size= file_max; break; - case 37: + case 40: name= "FILE_INSTANCES.MEMORY"; size= file_max * sizeof(PFS_file); total_memory+= size; break; - case 38: + case 41: name= "(PFS_FILE_HANDLE).ROW_SIZE"; size= sizeof(PFS_file*); break; - case 39: + case 42: name= "(PFS_FILE_HANDLE).ROW_COUNT"; size= file_handle_max; break; - case 40: + case 43: name= "(PFS_FILE_HANDLE).MEMORY"; size= file_handle_max * sizeof(PFS_file*); total_memory+= size; break; - case 41: + case 44: name= "EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME.ROW_SIZE"; size= sizeof(PFS_single_stat_chain); break; - case 42: + case 45: name= "EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME.ROW_COUNT"; size= thread_max * instr_class_per_thread; break; - case 43: + case 46: name= "EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME.MEMORY"; size= thread_max * instr_class_per_thread * sizeof(PFS_single_stat_chain); total_memory+= size; break; - case 44: + case 47: name= "(PFS_TABLE_SHARE).ROW_SIZE"; size= sizeof(PFS_table_share); break; - case 45: + case 48: name= "(PFS_TABLE_SHARE).ROW_COUNT"; size= table_share_max; break; - case 46: + case 49: name= "(PFS_TABLE_SHARE).MEMORY"; size= table_share_max * sizeof(PFS_table_share); total_memory+= size; break; - case 47: + case 50: name= "(PFS_TABLE).ROW_SIZE"; size= sizeof(PFS_table); break; - case 48: + case 51: name= "(PFS_TABLE).ROW_COUNT"; size= table_max; break; - case 49: + case 52: name= "(PFS_TABLE).MEMORY"; size= table_max * sizeof(PFS_table); total_memory+= size; break; - case 50: + case 53: name= "SOCKET_INSTANCES.ROW_SIZE"; size= sizeof(PFS_socket); break; - case 51: + case 54: name= "SOCKET_INSTANCES.ROW_COUNT"; size= socket_instances_max; break; - case 52: + case 55: name= "SOCKET_INSTANCES.MEMORY"; size= socket_instances_max * sizeof(PFS_socket); total_memory+= size; @@ -761,7 +774,7 @@ bool pfs_show_status(handlerton *hton, T This case must be last, for aggregation in total_memory. */ - case 53: + case 56: name= "PERFORMANCE_SCHEMA.MEMORY"; size= total_memory; /* This will fail if something is not advertised here */ --===============3551788592884962791== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/chris.powers@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: chris.powers@stripped # target_branch: file:///home/cpowers/work/dev/dev-wl4896/mysql/ # testament_sha1: bac8b77b7e3bd4d190a89dfd06d1c0ca237fa409 # timestamp: 2010-08-16 11:52:24 -0500 # base_revision_id: chris.powers@stripped\ # rm2d0oblfx96kv1q # # Begin bundle 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 --===============3551788592884962791==--