List:Commits« Previous MessageNext Message »
From:Jonas Oreland Date:April 7 2009 8:07pm
Subject:bzr push into mysql-5.1-telco-7.0 branch (jonas:2942 to 2943)
View as plain text  
 2943 Jonas Oreland	2009-04-07 [merge]
      merge 64-main
removed:
  mysql-test/ndb/
  storage/ndb/test/run-test/db.sql
added:
  mysql-test/suite/ndb/include/
  mysql-test/suite/ndb/include/add_six_nodes.inc
  mysql-test/suite/ndb/include/add_two_nodes.inc
  mysql-test/suite/ndb/include/ndb_add_node.cnf
  mysql-test/suite/ndb/include/ndb_add_node_mysqld.cnf
  mysql-test/suite/ndb/include/reload_ndb_mgmd.inc
  mysql-test/suite/ndb/r/add_node01.result
  mysql-test/suite/ndb/r/add_node02.result
  mysql-test/suite/ndb/r/add_node03.result
  mysql-test/suite/ndb/r/ndb_bug31754.result
  mysql-test/suite/ndb/std_data/
  mysql-test/suite/ndb/std_data/table_data10000.dat
  mysql-test/suite/ndb/std_data/table_data100000.dat
  mysql-test/suite/ndb/t/add_node01.test
  mysql-test/suite/ndb/t/add_node02.test
  mysql-test/suite/ndb/t/add_node03.test
  mysql-test/suite/ndb/t/ndb_bug31754.test
  storage/ndb/test/run-test/create_mtr_suites.pl
  storage/ndb/test/run-test/mtr.cnf
modified:
  client/mysqltest.cc
  configure.in
  mysql-test/Makefile.am
  mysql-test/include/mtr_check.sql
  mysql-test/include/restart_mysqld.inc
  mysql-test/mysql-test-run.pl
  mysql-test/r/mysqltest.result
  mysql-test/suite/ndb/r/ndb_config.result
  mysql-test/suite/ndb/r/ndb_load.result
  mysql-test/suite/ndb/t/disabled.def
  mysql-test/suite/ndb/t/ndb_config.test
  mysql-test/suite/ndb/t/ndb_load.test
  mysql-test/suite/ndb_team/t/ndb_autodiscover3.test
  mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result
  mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test
  mysql-test/t/disabled.def
  mysql-test/t/mysqltest.test
  sql/ha_ndbcluster.cc
  storage/ndb/include/kernel/signaldata/SumaImpl.hpp
  storage/ndb/include/mgmapi/mgmapi_error.h
  storage/ndb/include/mgmcommon/ConfigRetriever.hpp
  storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp
  storage/ndb/src/common/portlib/my_daemon.cc
  storage/ndb/src/kernel/blocks/backup/Backup.cpp
  storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp
  storage/ndb/src/kernel/blocks/dbacc/Dbacc.hpp
  storage/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp
  storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp
  storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp
  storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp
  storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp
  storage/ndb/src/kernel/blocks/dblqh/DblqhInit.cpp
  storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
  storage/ndb/src/kernel/blocks/dblqh/DblqhProxy.cpp
  storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp
  storage/ndb/src/kernel/blocks/dbtc/DbtcInit.cpp
  storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
  storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp
  storage/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp
  storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp
  storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp
  storage/ndb/src/kernel/blocks/dbtup/DbtupProxy.cpp
  storage/ndb/src/kernel/blocks/lgman.cpp
  storage/ndb/src/kernel/blocks/lgman.hpp
  storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp
  storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp
  storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp
  storage/ndb/src/kernel/blocks/suma/Suma.cpp
  storage/ndb/src/kernel/main.cpp
  storage/ndb/src/kernel/ndbd.cpp
  storage/ndb/src/kernel/vm/Configuration.cpp
  storage/ndb/src/kernel/vm/Configuration.hpp
  storage/ndb/src/kernel/vm/LongSignal.cpp
  storage/ndb/src/kernel/vm/TransporterCallback.cpp
  storage/ndb/src/mgmapi/mgmapi.cpp
  storage/ndb/src/mgmapi/mgmapi_error.c
  storage/ndb/src/mgmapi/mgmapi_internal.h
  storage/ndb/src/mgmclient/CommandInterpreter.cpp
  storage/ndb/src/mgmsrv/Config.cpp
  storage/ndb/src/mgmsrv/Config.hpp
  storage/ndb/src/mgmsrv/ConfigInfo.cpp
  storage/ndb/src/mgmsrv/ConfigInfo.hpp
  storage/ndb/src/mgmsrv/ConfigManager.cpp
  storage/ndb/src/mgmsrv/ConfigManager.hpp
  storage/ndb/src/mgmsrv/MgmtSrvr.cpp
  storage/ndb/src/mgmsrv/MgmtSrvr.hpp
  storage/ndb/src/mgmsrv/Services.cpp
  storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp
  storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp
  storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp
  storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp
  storage/ndb/src/ndbapi/NdbOperationExec.cpp
  storage/ndb/src/ndbapi/NdbReceiver.cpp
  storage/ndb/src/ndbapi/SignalSender.cpp
  storage/ndb/src/ndbapi/SignalSender.hpp
  storage/ndb/src/ndbapi/ndb_cluster_connection.cpp
  storage/ndb/test/ndbapi/testBackup.cpp
  storage/ndb/test/ndbapi/testBlobs.cpp
  storage/ndb/test/ndbapi/testDict.cpp
  storage/ndb/test/ndbapi/testIndex.cpp
  storage/ndb/test/ndbapi/testLimits.cpp
  storage/ndb/test/ndbapi/testMgm.cpp
  storage/ndb/test/ndbapi/testNdbApi.cpp
  storage/ndb/test/ndbapi/testNodeRestart.cpp
  storage/ndb/test/ndbapi/testPartitioning.cpp
  storage/ndb/test/ndbapi/testSystemRestart.cpp
  storage/ndb/test/ndbapi/testTimeout.cpp
  storage/ndb/test/ndbapi/testTransactions.cpp
  storage/ndb/test/ndbapi/test_event.cpp
  storage/ndb/test/run-test/Makefile.am
  storage/ndb/test/run-test/check-tests.sh
  storage/ndb/test/run-test/daily-basic-tests.txt
  storage/ndb/test/run-test/daily-devel-tests.txt
  storage/ndb/test/run-test/db.cpp
  storage/ndb/test/run-test/files.cpp
  storage/ndb/tools/ndb_config.cpp
  storage/ndb/tools/restore/Restore.cpp
  storage/ndb/tools/restore/Restore.hpp

 2942 Jan Wedvik	2009-03-17 [merge]
      Merged with bk-internal:/bzrroot/server/mysql-5.1-telco-7.0 .
modified:
  storage/ndb/src/ndbapi/NdbScanOperation.cpp

=== modified file 'client/mysqltest.cc'
--- a/client/mysqltest.cc	2009-03-03 14:30:41 +0000
+++ b/client/mysqltest.cc	2009-03-13 15:10:20 +0000
@@ -2720,7 +2720,8 @@ void do_exec(struct st_command *command)
       log_msg("exec of '%s' failed, error: %d, status: %d, errno: %d",
               ds_cmd.str, error, status, errno);
       dynstr_free(&ds_cmd);
-      die("command \"%s\" failed", command->first_argument);
+      die("command \"%s\" failed\n\nOutput from before failure:\n%s\n",
+          command->first_argument, ds_res.str);
     }
 
     DBUG_PRINT("info",

=== modified file 'configure.in'
--- a/configure.in	2009-03-16 14:32:03 +0000
+++ b/configure.in	2009-04-07 20:06:42 +0000
@@ -10,12 +10,12 @@ AC_CANONICAL_SYSTEM
 #
 # When changing major version number please also check switch statement
 # in mysqlbinlog::check_master_version().
-AM_INIT_AUTOMAKE(mysql, 5.1.32-ndb-7.0.4)
+AM_INIT_AUTOMAKE(mysql, 5.1.32-ndb-7.0.5)
 AM_CONFIG_HEADER([include/config.h:config.h.in])
 
 NDB_VERSION_MAJOR=7
 NDB_VERSION_MINOR=0
-NDB_VERSION_BUILD=4
+NDB_VERSION_BUILD=5
 NDB_VERSION_STATUS="-beta"
 
 PROTOCOL_VERSION=10

=== modified file 'mysql-test/Makefile.am'
--- a/mysql-test/Makefile.am	2009-02-16 08:36:46 +0000
+++ b/mysql-test/Makefile.am	2009-03-31 18:51:13 +0000
@@ -96,11 +96,10 @@ TEST_DIRS = t r include std_data std_dat
 	suite/funcs_2/t \
 	suite/jp suite/jp/t suite/jp/r suite/jp/std_data suite/jp/include \
 	suite/manual/t suite/manual/r \
-	suite/ndb_team suite/ndb_team/t suite/ndb_team/r \
 	suite/rpl suite/rpl/data suite/rpl/include suite/rpl/r \
 	suite/rpl/t \
 	suite/stress/include suite/stress/t suite/stress/r \
-	suite/ndb suite/ndb/t suite/ndb/r \
+	suite/ndb suite/ndb/t suite/ndb/r suite/ndb/include suite/ndb/std_data \
 	suite/ndb_binlog suite/ndb_binlog/t suite/ndb_binlog/r \
 	suite/ndb_team suite/ndb_team/t suite/ndb_team/r \
 	suite/rpl_ndb suite/rpl_ndb/t suite/rpl_ndb/r \

=== modified file 'mysql-test/include/mtr_check.sql'
--- a/mysql-test/include/mtr_check.sql	2009-02-01 09:18:09 +0000
+++ b/mysql-test/include/mtr_check.sql	2009-03-31 13:39:40 +0000
@@ -57,3 +57,13 @@ BEGIN
     mysql.user;
 
 END||
+
+--
+-- Procedure used by test case used to force all
+-- servers to restart after testcase and thus skipping
+-- check test case after test
+--
+CREATE DEFINER=root@localhost PROCEDURE force_restart()
+BEGIN
+  SELECT 1 INTO OUTFILE 'force_restart';
+END||

=== modified file 'mysql-test/include/restart_mysqld.inc'
--- a/mysql-test/include/restart_mysqld.inc	2008-12-25 09:53:24 +0000
+++ b/mysql-test/include/restart_mysqld.inc	2009-04-06 07:44:28 +0000
@@ -1,7 +1,11 @@
+if (!`SELECT LENGTH("$mysqld_name")`)
+{
+  let $mysqld_name=mysqld.1;
+}
 
 # Write file to make mysql-test-run.pl expect the "crash", but don't start
 # it until it's told to
---write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
+--write_file $MYSQLTEST_VARDIR/tmp/$mysqld_name.expect
 wait
 EOF
 
@@ -10,7 +14,7 @@ EOF
 shutdown_server 10;
 
 # Write file to make mysql-test-run.pl start up the server again
---append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
+--append_file $MYSQLTEST_VARDIR/tmp/$mysqld_name.expect
 restart
 EOF
 
@@ -22,4 +26,3 @@ EOF
 
 # Turn off reconnect again
 --disable_reconnect
-

=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl	2009-03-16 14:32:03 +0000
+++ b/mysql-test/mysql-test-run.pl	2009-04-07 20:06:42 +0000
@@ -1783,6 +1783,8 @@ sub environment_setup {
   # ----------------------------------------------------
   if ( ! $opt_skip_ndbcluster )
   {
+    $ENV{'NDB_NDBD'}=$exe_ndbd;
+
     $ENV{'NDB_MGM'}=
       native_path(my_find_bin($basedir,
 		  ["storage/ndb/src/mgmclient", "bin"],
@@ -3131,6 +3133,26 @@ sub find_analyze_request
 }
 
 
+# The test can leave a file in var/tmp/ to signal
+# that all servers should be restarted
+sub restart_forced_by_test
+{
+  my $restart = 0;
+  foreach my $mysqld ( mysqlds() )
+  {
+    my $datadir = $mysqld->value('datadir');
+    my $force_restart_file = "$datadir/mtr/force_restart";
+    if ( -f $force_restart_file )
+    {
+      mtr_verbose("Restart of servers forced by test");
+      $restart = 1;
+      last;
+    }
+  }
+  return $restart;
+}
+
+
 # Return timezone value of tinfo or default value
 sub timezone {
   my ($tinfo)= @_;
@@ -3299,7 +3321,11 @@ sub run_testcase ($) {
       if ( $res == 0 )
       {
 	my $check_res;
-	if ( $opt_check_testcases and
+	if ( restart_forced_by_test() )
+	{
+	  stop_all_servers();
+	}
+	elsif ( $opt_check_testcases and
 	     $check_res= check_testcase($tinfo, "after"))
 	{
 	  if ($check_res == 1) {

=== removed directory 'mysql-test/ndb'
=== modified file 'mysql-test/r/mysqltest.result'
--- a/mysql-test/r/mysqltest.result	2009-01-15 08:05:51 +0000
+++ b/mysql-test/r/mysqltest.result	2009-03-19 13:42:51 +0000
@@ -215,7 +215,6 @@ source database
 "MySQL: The world's most popular ;open source database"
 echo message echo message
 
-mysqltest: At line 1: command "false" failed
 mysqltest: At line 1: Missing argument in exec
 MySQL
 "MySQL"

=== added directory 'mysql-test/suite/ndb/include'
=== added file 'mysql-test/suite/ndb/include/add_six_nodes.inc'
--- a/mysql-test/suite/ndb/include/add_six_nodes.inc	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb/include/add_six_nodes.inc	2009-03-26 08:21:55 +0000
@@ -0,0 +1,64 @@
+--perl
+
+my $vardir = $ENV{MYSQLTEST_VARDIR} or die "Need MYSQLTEST_VARDIR";
+my $file ="$vardir/my.cnf";
+my $file_new = "$vardir/my.cnf.new";
+
+open (IN, "$file") || die $!;
+open (OUT, ">$file_new") || die $!;
+
+while ($_ = <IN> ) {
+  if ($_ =~ /ndbd=localhost,localhost/i) 
+  {
+    # Replace text, all instances on a line (/g), case insensitive (/i)
+    $_ =~ s/ndbd=localhost,localhost/ndbd=localhost,localhost,localhost,localhost,localhost,localhost,localhost,localhost/gi;
+  }
+  print OUT "$_";
+  if ($_=~ /cluster_config.ndb_mgmd.1.1/i) 
+  {
+    print OUT "NodeId=3\n";
+  }
+}
+
+close IN;
+close OUT;
+
+open (OUT, ">>$file_new") || die $!;
+print OUT "[cluster_config.ndbd.3.1]\n";
+print OUT "Id=40\n";
+print OUT "DataDir=$vardir/mysql_cluster.1/ndbd.1\n";
+print OUT "BackupDataDir=$vardir/mysql_cluster.1/ndbd.1/uf\n";
+print OUT "FileSystemPathDataFiles=$vardir/mysql_cluster.1/ndbd.1/uf\n";
+print OUT "\n";
+print OUT "[cluster_config.ndbd.4.1]\n";
+print OUT "Id=41\n";
+print OUT "DataDir=$vardir/mysql_cluster.1/ndbd.2\n";
+print OUT "BackupDataDir=$vardir/mysql_cluster.1/ndbd.2/uf\n";
+print OUT "FileSystemPathDataFiles=$vardir/mysql_cluster.1/ndbd.2/uf\n";
+print OUT "\n";
+print OUT "[cluster_config.ndbd.5.1]\n";
+print OUT "Id=42\n";
+print OUT "DataDir=$vardir/mysql_cluster.1/ndbd.1\n";
+print OUT "BackupDataDir=$vardir/mysql_cluster.1/ndbd.1/uf\n";
+print OUT "FileSystemPathDataFiles=$vardir/mysql_cluster.1/ndbd.1/uf\n";
+print OUT "\n";
+print OUT "[cluster_config.ndbd.6.1]\n";
+print OUT "Id=43\n";
+print OUT "DataDir=$vardir/mysql_cluster.1/ndbd.2\n";
+print OUT "BackupDataDir=$vardir/mysql_cluster.1/ndbd.2/uf\n";
+print OUT "FileSystemPathDataFiles=$vardir/mysql_cluster.1/ndbd.2/uf\n";
+print OUT "\n";
+print OUT "[cluster_config.ndbd.7.1]\n";
+print OUT "Id=44\n";
+print OUT "DataDir=$vardir/mysql_cluster.1/ndbd.1\n";
+print OUT "BackupDataDir=$vardir/mysql_cluster.1/ndbd.1/uf\n";
+print OUT "FileSystemPathDataFiles=$vardir/mysql_cluster.1/ndbd.1/uf\n";
+print OUT "\n";
+print OUT "[cluster_config.ndbd.8.1]\n";
+print OUT "Id=45\n";
+print OUT "DataDir=$vardir/mysql_cluster.1/ndbd.2\n";
+print OUT "BackupDataDir=$vardir/mysql_cluster.1/ndbd.2/uf\n";
+print OUT "FileSystemPathDataFiles=$vardir/mysql_cluster.1/ndbd.2/uf\n";
+
+close OUT;
+EOF
\ No newline at end of file

=== added file 'mysql-test/suite/ndb/include/add_two_nodes.inc'
--- a/mysql-test/suite/ndb/include/add_two_nodes.inc	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb/include/add_two_nodes.inc	2009-03-26 08:21:55 +0000
@@ -0,0 +1,39 @@
+--perl
+
+my $vardir = $ENV{MYSQLTEST_VARDIR} or die "Need MYSQLTEST_VARDIR";
+my $file ="$vardir/my.cnf";
+my $file_new = "$vardir/my.cnf.new";
+
+open (IN, "$file") || die $!;
+open (OUT, ">$file_new") || die $!;
+
+while ($_ = <IN> ) {
+  if ($_ =~ /ndbd=localhost,localhost/i) 
+  {
+    # Replace text, all instances on a line (/g), case insensitive (/i)
+    $_ =~ s/ndbd=localhost,localhost/ndbd=localhost,localhost,localhost,localhost/gi;
+  }
+  print OUT "$_";
+  if ($_=~ /cluster_config.ndb_mgmd.1.1/i) 
+  {
+    print OUT "NodeId=3\n";
+  }
+}
+
+close IN;
+close OUT;
+
+open (OUT, ">>$file_new") || die $!;
+print OUT "[cluster_config.ndbd.3.1]\n";
+print OUT "Id=40\n";
+print OUT "DataDir=$vardir/mysql_cluster.1/ndbd.1\n";
+print OUT "BackupDataDir=$vardir/mysql_cluster.1/ndbd.1/uf\n";
+print OUT "FileSystemPathDataFiles=$vardir/mysql_cluster.1/ndbd.1/uf\n";
+print OUT "\n";
+print OUT "[cluster_config.ndbd.4.1]\n";
+print OUT "Id=41\n";
+print OUT "DataDir=$vardir/mysql_cluster.1/ndbd.2\n";
+print OUT "BackupDataDir=$vardir/mysql_cluster.1/ndbd.2/uf\n";
+print OUT "FileSystemPathDataFiles=$vardir/mysql_cluster.1/ndbd.2/uf\n";
+close OUT;
+EOF
\ No newline at end of file

=== added file 'mysql-test/suite/ndb/include/ndb_add_node.cnf'
--- a/mysql-test/suite/ndb/include/ndb_add_node.cnf	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb/include/ndb_add_node.cnf	2009-03-26 08:21:55 +0000
@@ -0,0 +1,33 @@
+
+[cluster_config]
+MaxNoOfSavedMessages=          1000
+MaxNoOfConcurrentTransactions= 6000
+MaxNoOfConcurrentOperations=   40000
+DataMemory=                    100M
+IndexMemory=                   50M
+Diskless=                      0
+TimeBetweenWatchDogCheck=      30000
+MaxNoOfOrderedIndexes=         32
+MaxNoOfAttributes=             2048
+RedoBuffer=                    48M
+TimeBetweenGlobalCheckpoints=  3000
+TimeBetweenLocalCheckpoints=   20
+TimeBetweenEpochs=             100
+NoOfFragmentLogFiles=          4
+FragmentLogFileSize=           32M
+DiskPageBufferMemory=          20M
+
+# O_DIRECT has issues on 2.4 whach have not been handled, Bug #29612
+ODirect= 1
+CompressedLCP= 1
+CompressedBackup= 1
+# the following parametes just function as a small regression
+# test that the parameter exists
+InitialNoOfOpenFiles= 27
+
+# Increase timeouts for slow test-machines
+HeartbeatIntervalDbDb=         30000
+HeartbeatIntervalDbApi=        30000
+
+#TransactionDeadlockDetectionTimeout= 7500
+DiskIOThreadPool=1

=== added file 'mysql-test/suite/ndb/include/ndb_add_node_mysqld.cnf'
--- a/mysql-test/suite/ndb/include/ndb_add_node_mysqld.cnf	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb/include/ndb_add_node_mysqld.cnf	2009-03-26 08:21:55 +0000
@@ -0,0 +1,20 @@
+# Default values that applies to all MySQL Servers
+[mysqld]
+open-files-limit=           1024
+local-infile
+default-character-set=      latin1
+
+# Increase default connect_timeout to avoid intermittent
+# disconnects when test servers are put under load see BUG#28359
+connect-timeout=            60
+
+log-bin-trust-function-creators=1
+key_buffer_size=            1M
+sort_buffer=                256K
+max_heap_table_size=        1M
+
+loose-innodb_data_file_path=      ibdata1:10M:autoextend
+
+slave-net-timeout=120
+
+log-bin=mysqld-bin

=== added file 'mysql-test/suite/ndb/include/reload_ndb_mgmd.inc'
--- a/mysql-test/suite/ndb/include/reload_ndb_mgmd.inc	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb/include/reload_ndb_mgmd.inc	2009-03-26 08:21:55 +0000
@@ -0,0 +1,37 @@
+--perl
+
+use strict;
+use IO::Socket::INET;
+
+use lib "lib/";
+use My::Config;
+
+my $vardir = $ENV{MYSQLTEST_VARDIR} or die "Need MYSQLTEST_VARDIR";
+my $config= My::Config->new("$vardir/my.cnf");
+my $mgmd = $config->group("cluster_config.ndb_mgmd.1.1");
+my $server_port = $mgmd->value("PortNumber");
+#print "server_port: $server_port\n";
+
+my $server = new IO::Socket::INET
+(
+ PeerAddr => 'localhost',
+ PeerPort => $server_port,
+ Proto    => 'tcp'
+);
+
+print $server "reload config\n";
+print $server "mycnf: 1\n";
+print $server "\n";
+
+my $result = "unkown error";
+while(my $line= <$server>){
+  if ($line =~ /result: (.*)/)
+  {
+    $result = $1;
+  }
+  last if ($line eq "\n");
+}
+die "reload failed, result: '$result'"
+    unless $result eq "Ok";
+
+EOF
\ No newline at end of file

=== added file 'mysql-test/suite/ndb/r/add_node01.result'
--- a/mysql-test/suite/ndb/r/add_node01.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb/r/add_node01.result	2009-04-06 07:44:28 +0000
@@ -0,0 +1,238 @@
+result_format: 2
+## Make mtr.pl restart all servers after this test
+call mtr.force_restart();
+
+## Show cluster is started with one ndb_mgmd and two ndbd nodes
+Connected to Management Server at: localhost
+Cluster Configuration
+---------------------
+[ndbd(NDB)]	2 node(s)
+id=1	@127.0.0.1  (mysql ndb, Nodegroup: 0, Master)
+id=2	@127.0.0.1  (mysql ndb, Nodegroup: 0)
+
+[ndb_mgmd(MGM)]	1 node(s)
+id=3	@127.0.0.1  (mysql ndb)
+
+[mysqld(API)]	14 node(s)
+id=4	@127.0.0.1  (mysql ndb)
+id=5	@127.0.0.1  (mysql ndb)
+id=6	@127.0.0.1  (mysql ndb)
+id=7	@127.0.0.1  (mysql ndb)
+id=8	@127.0.0.1  (mysql ndb)
+id=9	@127.0.0.1  (mysql ndb)
+id=10 (not connected, accepting connect from localhost)
+id=11 (not connected, accepting connect from localhost)
+id=12 (not connected, accepting connect from localhost)
+id=63 (not connected, accepting connect from localhost)
+id=127 (not connected, accepting connect from localhost)
+id=192 (not connected, accepting connect from localhost)
+id=228 (not connected, accepting connect from localhost)
+id=255 (not connected, accepting connect from localhost)
+
+drop database if exists DB1;
+CREATE LOGFILE GROUP lg_1
+    ADD UNDOFILE 'undo_1.dat'
+    INITIAL_SIZE 16M
+    UNDO_BUFFER_SIZE 2M
+    ENGINE NDB;
+
+ALTER LOGFILE GROUP lg_1
+    ADD UNDOFILE 'undo_2.dat'
+    INITIAL_SIZE 12M
+    ENGINE NDB;
+
+CREATE TABLESPACE ts_1
+    ADD DATAFILE 'data_1.dat'
+    USE LOGFILE GROUP lg_1
+    INITIAL_SIZE 32M
+    ENGINE NDB;
+
+CREATE TABLESPACE ts_2
+    ADD DATAFILE 'data_2.dat'
+    USE LOGFILE GROUP lg_1
+    INITIAL_SIZE 32M
+    ENGINE NDB;
+
+create database DB1;
+use DB1;
+create table old_table1(id int NOT NULL PRIMARY KEY, data char(8)) engine=ndb;
+create table old_table2(id int NOT NULL PRIMARY KEY, data char(8)) engine=ndb;
+create table old_table3(id int NOT NULL PRIMARY KEY, data char(8))
+TABLESPACE ts_1 STORAGE DISK
+engine=ndb;
+create table old_table4(id int NOT NULL PRIMARY KEY, data char(8))
+TABLESPACE ts_2 STORAGE DISK
+engine=ndb;
+
+load data local infile 'suite/ndb/std_data/table_data10000.dat' into table old_table1 fields terminated by ' ' lines terminated by '\n';
+load data local infile 'suite/ndb/std_data/table_data10000.dat' into table old_table2 fields terminated by ' ' lines terminated by '\n';
+load data local infile 'suite/ndb/std_data/table_data10000.dat' into table old_table3 fields terminated by ' ' lines terminated by '\n';
+load data local infile 'suite/ndb/std_data/table_data10000.dat' into table old_table4 fields terminated by ' ' lines terminated by '\n';
+
+## Add two nodes to my.cnf
+## Reload ndb_mgmd
+## Restart the "old" ndbd nodes
+## Restart mysqld nodes
+
+
+
+
+
+## Initial start of "new" data nodes
+## Wait for added nodes started
+## Create nodegroup for "new" nodes
+Connected to Management Server at: localhost
+Cluster Configuration
+---------------------
+[ndbd(NDB)]	4 node(s)
+id=1	@127.0.0.1  (mysql ndb, Nodegroup: 0, Master)
+id=2	@127.0.0.1  (mysql ndb, Nodegroup: 0)
+id=40	@127.0.0.1  (mysql ndb, Nodegroup: 1)
+id=41	@127.0.0.1  (mysql ndb, Nodegroup: 1)
+
+[ndb_mgmd(MGM)]	1 node(s)
+id=3	@127.0.0.1  (mysql ndb)
+
+[mysqld(API)]	14 node(s)
+id=4	@127.0.0.1  (mysql ndb)
+id=5	@127.0.0.1  (mysql ndb)
+id=6	@127.0.0.1  (mysql ndb)
+id=7	@127.0.0.1  (mysql ndb)
+id=8	@127.0.0.1  (mysql ndb)
+id=9	@127.0.0.1  (mysql ndb)
+id=10 (not connected, accepting connect from localhost)
+id=11 (not connected, accepting connect from localhost)
+id=12 (not connected, accepting connect from localhost)
+id=63 (not connected, accepting connect from localhost)
+id=127 (not connected, accepting connect from localhost)
+id=192 (not connected, accepting connect from localhost)
+id=228 (not connected, accepting connect from localhost)
+id=255 (not connected, accepting connect from localhost)
+
+use DB1;
+create table new_table1(id int NOT NULL PRIMARY KEY, data char(8)) engine=ndb;
+create table new_table2(id int NOT NULL PRIMARY KEY, data char(8))
+TABLESPACE ts_1 STORAGE DISK
+engine=ndb;
+insert into new_table1(id, data) VALUES(1,'new'), (2,'new'),(3,'new'),(4,'new'),(5,'new'),(6,'new'),(7,'new'),(8,'new'),(9,'new'),(10,'new');
+insert into new_table2(id, data) VALUES(1,'new'), (2,'new'),(3,'new'),(4,'new'),(5,'new'),(6,'new'),(7,'new'),(8,'new'),(9,'new'),(10,'new');
+
+## ndb_mgm dump shows old data resides only on "old" nodes and new data resides on all nodes in cluster log 
+alter online table old_table1 reorganize partition;
+alter online table old_table2 reorganize partition;
+alter online table old_table3 reorganize partition;
+alter online table old_table4 reorganize partition;
+
+select LOGFILE_GROUP_NAME,FILE_TYPE,EXTRA from INFORMATION_SCHEMA.FILES where FILE_NAME='undo_1.dat';
+LOGFILE_GROUP_NAME	FILE_TYPE	EXTRA
+lg_1	UNDO LOG	CLUSTER_NODE=1;UNDO_BUFFER_SIZE=2097152
+lg_1	UNDO LOG	CLUSTER_NODE=2;UNDO_BUFFER_SIZE=2097152
+lg_1	UNDO LOG	CLUSTER_NODE=40;UNDO_BUFFER_SIZE=2097152
+lg_1	UNDO LOG	CLUSTER_NODE=41;UNDO_BUFFER_SIZE=2097152
+select LOGFILE_GROUP_NAME,FILE_TYPE,EXTRA from INFORMATION_SCHEMA.FILES where FILE_NAME='undo_2.dat';
+LOGFILE_GROUP_NAME	FILE_TYPE	EXTRA
+lg_1	UNDO LOG	CLUSTER_NODE=1;UNDO_BUFFER_SIZE=2097152
+lg_1	UNDO LOG	CLUSTER_NODE=2;UNDO_BUFFER_SIZE=2097152
+lg_1	UNDO LOG	CLUSTER_NODE=40;UNDO_BUFFER_SIZE=2097152
+lg_1	UNDO LOG	CLUSTER_NODE=41;UNDO_BUFFER_SIZE=2097152
+select LOGFILE_GROUP_NAME,FILE_TYPE,TABLESPACE_NAME,EXTRA from INFORMATION_SCHEMA.FILES where FILE_NAME='data_1.dat';
+LOGFILE_GROUP_NAME	FILE_TYPE	TABLESPACE_NAME	EXTRA
+lg_1	DATAFILE	ts_1	CLUSTER_NODE=1
+lg_1	DATAFILE	ts_1	CLUSTER_NODE=2
+lg_1	DATAFILE	ts_1	CLUSTER_NODE=40
+lg_1	DATAFILE	ts_1	CLUSTER_NODE=41
+select LOGFILE_GROUP_NAME,FILE_TYPE,TABLESPACE_NAME,EXTRA from INFORMATION_SCHEMA.FILES where FILE_NAME='data_2.dat';
+LOGFILE_GROUP_NAME	FILE_TYPE	TABLESPACE_NAME	EXTRA
+lg_1	DATAFILE	ts_2	CLUSTER_NODE=1
+lg_1	DATAFILE	ts_2	CLUSTER_NODE=2
+lg_1	DATAFILE	ts_2	CLUSTER_NODE=40
+lg_1	DATAFILE	ts_2	CLUSTER_NODE=41
+
+## Drop nodegroup with "new" nodes is not allowed with data one those nodes
+## Nodegroup with "new" nodes still exist after dropping it as shown:
+Connected to Management Server at: localhost
+Cluster Configuration
+---------------------
+[ndbd(NDB)]	4 node(s)
+id=1	@127.0.0.1  (mysql ndb, Nodegroup: 0, Master)
+id=2	@127.0.0.1  (mysql ndb, Nodegroup: 0)
+id=40	@127.0.0.1  (mysql ndb, Nodegroup: 1)
+id=41	@127.0.0.1  (mysql ndb, Nodegroup: 1)
+
+[ndb_mgmd(MGM)]	1 node(s)
+id=3	@127.0.0.1  (mysql ndb)
+
+[mysqld(API)]	14 node(s)
+id=4	@127.0.0.1  (mysql ndb)
+id=5	@127.0.0.1  (mysql ndb)
+id=6	@127.0.0.1  (mysql ndb)
+id=7	@127.0.0.1  (mysql ndb)
+id=8	@127.0.0.1  (mysql ndb)
+id=9	@127.0.0.1  (mysql ndb)
+id=10 (not connected, accepting connect from localhost)
+id=11 (not connected, accepting connect from localhost)
+id=12 (not connected, accepting connect from localhost)
+id=63 (not connected, accepting connect from localhost)
+id=127 (not connected, accepting connect from localhost)
+id=192 (not connected, accepting connect from localhost)
+id=228 (not connected, accepting connect from localhost)
+id=255 (not connected, accepting connect from localhost)
+
+show databases;
+Database
+information_schema
+DB1
+mtr
+mysql
+test
+drop table old_table1,old_table2,old_table3,old_table4,new_table1,new_table2;
+drop database DB1;
+show databases;
+Database
+information_schema
+mtr
+mysql
+test
+
+## Drop nodegroup with "new" nodes
+## Nodegroup with "new" nodes still exists after dropping it as shown:
+Connected to Management Server at: localhost
+Cluster Configuration
+---------------------
+[ndbd(NDB)]	4 node(s)
+id=1	@127.0.0.1  (mysql ndb, Nodegroup: 0, Master)
+id=2	@127.0.0.1  (mysql ndb, Nodegroup: 0)
+id=40	@127.0.0.1  (mysql ndb, no nodegroup)
+id=41	@127.0.0.1  (mysql ndb, no nodegroup)
+
+[ndb_mgmd(MGM)]	1 node(s)
+id=3	@127.0.0.1  (mysql ndb)
+
+[mysqld(API)]	14 node(s)
+id=4	@127.0.0.1  (mysql ndb)
+id=5	@127.0.0.1  (mysql ndb)
+id=6	@127.0.0.1  (mysql ndb)
+id=7	@127.0.0.1  (mysql ndb)
+id=8	@127.0.0.1  (mysql ndb)
+id=9	@127.0.0.1  (mysql ndb)
+id=10 (not connected, accepting connect from localhost)
+id=11 (not connected, accepting connect from localhost)
+id=12 (not connected, accepting connect from localhost)
+id=63 (not connected, accepting connect from localhost)
+id=127 (not connected, accepting connect from localhost)
+id=192 (not connected, accepting connect from localhost)
+id=228 (not connected, accepting connect from localhost)
+id=255 (not connected, accepting connect from localhost)
+
+ALTER TABLESPACE ts_1
+    DROP DATAFILE 'data_1.dat'
+    ENGINE NDB;
+
+ALTER TABLESPACE ts_2
+    DROP DATAFILE 'data_2.dat'
+    ENGINE NDB;
+
+drop TABLESPACE ts_1 ENGINE NDB;
+drop TABLESPACE ts_2 ENGINE NDB;
+
+drop LOGFILE GROUP lg_1 ENGINE NDB;

=== added file 'mysql-test/suite/ndb/r/add_node02.result'
--- a/mysql-test/suite/ndb/r/add_node02.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb/r/add_node02.result	2009-04-06 07:44:28 +0000
@@ -0,0 +1,143 @@
+result_format: 2
+## Make mtr.pl restart all servers after this test
+call mtr.force_restart();
+
+## Show cluster is started with one ndb_mgmd and two ndbd nodes
+Connected to Management Server at: localhost
+Cluster Configuration
+---------------------
+[ndbd(NDB)]	2 node(s)
+id=1	@127.0.0.1  (mysql ndb, Nodegroup: 0, Master)
+id=2	@127.0.0.1  (mysql ndb, Nodegroup: 0)
+
+[ndb_mgmd(MGM)]	1 node(s)
+id=3	@127.0.0.1  (mysql ndb)
+
+[mysqld(API)]	14 node(s)
+id=4	@127.0.0.1  (mysql ndb)
+id=5	@127.0.0.1  (mysql ndb)
+id=6	@127.0.0.1  (mysql ndb)
+id=7	@127.0.0.1  (mysql ndb)
+id=8	@127.0.0.1  (mysql ndb)
+id=9	@127.0.0.1  (mysql ndb)
+id=10 (not connected, accepting connect from localhost)
+id=11 (not connected, accepting connect from localhost)
+id=12 (not connected, accepting connect from localhost)
+id=63 (not connected, accepting connect from localhost)
+id=127 (not connected, accepting connect from localhost)
+id=192 (not connected, accepting connect from localhost)
+id=228 (not connected, accepting connect from localhost)
+id=255 (not connected, accepting connect from localhost)
+
+drop database if exists DB1;
+CREATE LOGFILE GROUP lg_1
+    ADD UNDOFILE 'undo_1.dat'
+    INITIAL_SIZE 16M
+    UNDO_BUFFER_SIZE 2M
+    ENGINE NDB;
+
+ALTER LOGFILE GROUP lg_1
+    ADD UNDOFILE 'undo_2.dat'
+    INITIAL_SIZE 12M
+    ENGINE NDB;
+
+CREATE TABLESPACE ts_1
+    ADD DATAFILE 'data_1.dat'
+    USE LOGFILE GROUP lg_1
+    INITIAL_SIZE 32M
+    ENGINE NDB;
+
+CREATE TABLESPACE ts_2
+    ADD DATAFILE 'data_2.dat'
+    USE LOGFILE GROUP lg_1
+    INITIAL_SIZE 32M
+    ENGINE NDB;
+
+create database DB1;
+use DB1;
+create table old_table1(id int NOT NULL PRIMARY KEY, data char(8)) engine=ndb;
+create table old_table2(id int NOT NULL PRIMARY KEY, data char(8)) engine=ndb;
+create table old_table3(id int NOT NULL PRIMARY KEY, data char(8))
+TABLESPACE ts_1 STORAGE DISK
+engine=ndb;
+create table old_table4(id int NOT NULL PRIMARY KEY, data char(8))
+TABLESPACE ts_2 STORAGE DISK
+engine=ndb;
+load data local infile 'suite/ndb/std_data/table_data10000.dat' into table old_table1 fields terminated by ' ' lines terminated by '\n';
+load data local infile 'suite/ndb/std_data/table_data10000.dat' into table old_table2 fields terminated by ' ' lines terminated by '\n';
+load data local infile 'suite/ndb/std_data/table_data10000.dat' into table old_table3 fields terminated by ' ' lines terminated by '\n';
+load data local infile 'suite/ndb/std_data/table_data10000.dat' into table old_table4 fields terminated by ' ' lines terminated by '\n';
+
+## Add two nodes to my.cnf
+## Reload ndb_mgmd
+## Restart the "old" ndbd nodes
+## Restart mysqld nodes
+
+
+
+
+
+## Initial start of "new" data nodes
+## Wait for added nodes started
+## Create nodegroup for "new" nodes
+## Cluster running after adding two ndbd nodes
+Connected to Management Server at: localhost
+Cluster Configuration
+---------------------
+[ndbd(NDB)]	4 node(s)
+id=1	@127.0.0.1  (mysql ndb, Nodegroup: 0, Master)
+id=2	@127.0.0.1  (mysql ndb, Nodegroup: 0)
+id=40	@127.0.0.1  (mysql ndb, Nodegroup: 1)
+id=41	@127.0.0.1  (mysql ndb, Nodegroup: 1)
+
+[ndb_mgmd(MGM)]	1 node(s)
+id=3	@127.0.0.1  (mysql ndb)
+
+[mysqld(API)]	14 node(s)
+id=4	@127.0.0.1  (mysql ndb)
+id=5	@127.0.0.1  (mysql ndb)
+id=6	@127.0.0.1  (mysql ndb)
+id=7	@127.0.0.1  (mysql ndb)
+id=8	@127.0.0.1  (mysql ndb)
+id=9	@127.0.0.1  (mysql ndb)
+id=10 (not connected, accepting connect from localhost)
+id=11 (not connected, accepting connect from localhost)
+id=12 (not connected, accepting connect from localhost)
+id=63 (not connected, accepting connect from localhost)
+id=127 (not connected, accepting connect from localhost)
+id=192 (not connected, accepting connect from localhost)
+id=228 (not connected, accepting connect from localhost)
+id=255 (not connected, accepting connect from localhost)
+
+######################################################
+######################################################
+CREATE TEMPORARY TABLE test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
+
+LOAD DATA INFILE 'DUMP_FILE' INTO TABLE test.backup_info FIELDS TERMINATED BY ',';
+
+DROP TABLE test.backup_info;
+
+use DB1;
+drop table old_table1, old_table2, old_table3, old_table4;
+ALTER TABLESPACE ts_1
+    DROP DATAFILE 'data_1.dat'
+    ENGINE NDB;
+ALTER TABLESPACE ts_2
+    DROP DATAFILE 'data_2.dat'
+    ENGINE NDB;
+drop TABLESPACE ts_1 ENGINE NDB;
+drop TABLESPACE ts_2 ENGINE NDB;
+drop LOGFILE GROUP lg_1 ENGINE NDB;
+
+use DB1;
+drop table old_table1, old_table2, old_table3, old_table4;
+ALTER TABLESPACE ts_1
+    DROP DATAFILE 'data_1.dat'
+    ENGINE NDB;
+ALTER TABLESPACE ts_2
+    DROP DATAFILE 'data_2.dat'
+    ENGINE NDB;
+drop TABLESPACE ts_1 ENGINE NDB;
+drop TABLESPACE ts_2 ENGINE NDB;
+drop LOGFILE GROUP lg_1 ENGINE NDB;
+drop database DB1;

=== added file 'mysql-test/suite/ndb/r/add_node03.result'
--- a/mysql-test/suite/ndb/r/add_node03.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb/r/add_node03.result	2009-04-06 07:44:28 +0000
@@ -0,0 +1,76 @@
+result_format: 2
+## Make mtr.pl restart all servers after this test
+call mtr.force_restart();
+
+## Show cluster is started with one ndb_mgmd and two ndbd nodes
+Connected to Management Server at: localhost
+Cluster Configuration
+---------------------
+[ndbd(NDB)]	2 node(s)
+id=1	@127.0.0.1  (mysql ndb, Nodegroup: 0, Master)
+id=2	@127.0.0.1  (mysql ndb, Nodegroup: 0)
+
+[ndb_mgmd(MGM)]	1 node(s)
+id=3	@127.0.0.1  (mysql ndb)
+
+[mysqld(API)]	14 node(s)
+id=4	@127.0.0.1  (mysql ndb)
+id=5	@127.0.0.1  (mysql ndb)
+id=6	@127.0.0.1  (mysql ndb)
+id=7	@127.0.0.1  (mysql ndb)
+id=8	@127.0.0.1  (mysql ndb)
+id=9	@127.0.0.1  (mysql ndb)
+id=10 (not connected, accepting connect from localhost)
+id=11 (not connected, accepting connect from localhost)
+id=12 (not connected, accepting connect from localhost)
+id=63 (not connected, accepting connect from localhost)
+id=127 (not connected, accepting connect from localhost)
+id=192 (not connected, accepting connect from localhost)
+id=228 (not connected, accepting connect from localhost)
+id=255 (not connected, accepting connect from localhost)
+
+## Add six nodes to my.cnf
+## Reload ndb_mgmd
+## Restart the "old" ndbd nodes
+## Restart mysqld nodes
+
+
+
+
+
+## Initial start of "new" data nodes
+## Wait for added nodes started
+## Create nodegroup for "new" nodes
+## Cluster running after adding six ndbd nodes:
+Connected to Management Server at: localhost
+Cluster Configuration
+---------------------
+[ndbd(NDB)]	8 node(s)
+id=1	@127.0.0.1  (mysql ndb, Nodegroup: 0, Master)
+id=2	@127.0.0.1  (mysql ndb, Nodegroup: 0)
+id=40	@127.0.0.1  (mysql ndb, Nodegroup: 1)
+id=41	@127.0.0.1  (mysql ndb, Nodegroup: 1)
+id=42	@127.0.0.1  (mysql ndb, Nodegroup: 2)
+id=43	@127.0.0.1  (mysql ndb, Nodegroup: 2)
+id=44	@127.0.0.1  (mysql ndb, Nodegroup: 3)
+id=45	@127.0.0.1  (mysql ndb, Nodegroup: 3)
+
+[ndb_mgmd(MGM)]	1 node(s)
+id=3	@127.0.0.1  (mysql ndb)
+
+[mysqld(API)]	14 node(s)
+id=4	@127.0.0.1  (mysql ndb)
+id=5	@127.0.0.1  (mysql ndb)
+id=6	@127.0.0.1  (mysql ndb)
+id=7	@127.0.0.1  (mysql ndb)
+id=8	@127.0.0.1  (mysql ndb)
+id=9	@127.0.0.1  (mysql ndb)
+id=10 (not connected, accepting connect from localhost)
+id=11 (not connected, accepting connect from localhost)
+id=12 (not connected, accepting connect from localhost)
+id=63 (not connected, accepting connect from localhost)
+id=127 (not connected, accepting connect from localhost)
+id=192 (not connected, accepting connect from localhost)
+id=228 (not connected, accepting connect from localhost)
+id=255 (not connected, accepting connect from localhost)
+

=== added file 'mysql-test/suite/ndb/r/ndb_bug31754.result'
--- a/mysql-test/suite/ndb/r/ndb_bug31754.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb/r/ndb_bug31754.result	2009-03-31 09:04:22 +0000
@@ -0,0 +1,7 @@
+Connected to Management Server at: localhost:x
+Waiting for started, this may take several minutes
+Node x: Backup x started from node x
+Node x: Backup x started from node x completed
+ StartGCP: x StopGCP: x
+ #Records: x #LogRecords: x
+ Data: x bytes Log: x bytes

=== modified file 'mysql-test/suite/ndb/r/ndb_config.result'
--- a/mysql-test/suite/ndb/r/ndb_config.result	2009-02-26 14:52:41 +0000
+++ b/mysql-test/suite/ndb/r/ndb_config.result	2009-03-20 09:57:27 +0000
@@ -25,3 +25,5 @@ tcp,3,4,55,3 tcp,3,5,55,3 tcp,3,6,55,3 t
 
 == 13 ==
 3 1 2
+== 14 == ndb_config --configinfo
+== 15 == ndb_config --configinfo --xml

=== modified file 'mysql-test/suite/ndb/r/ndb_load.result'
--- a/mysql-test/suite/ndb/r/ndb_load.result	2007-12-12 17:19:24 +0000
+++ b/mysql-test/suite/ndb/r/ndb_load.result	2009-04-06 10:37:55 +0000
@@ -78,3 +78,70 @@ Abernathy
 aberrant
 aberration
 DROP TABLE t1;
+Test single statement load from MyISAM table with and
+without ndb_use_transactions
+(Bug#43236)
+ndb_use_transactions = 0 should allow bulk inserts to 
+succeed by automatically splitting into smaller 
+transactions.
+CREATE TABLE t1 (a int) engine=MyIsam;
+show tables;
+Tables_in_test
+t1
+CREATE PROCEDURE bulkinsert (in num int)
+BEGIN
+set @total= num;
+repeat
+insert into t1 values (@total);
+set @total= @total -1;
+until @total = 0 end repeat;
+end %
+Insert 15000 rows which should exceed default number
+of concurrent operations (include/default_ndbd.cnf)
+when trying to move over to ndb.
+CALL bulkinsert(15000);
+show tables;
+Tables_in_test
+t1
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+15000
+SET ndb_use_transactions= 1;
+CREATE TABLE t2 (a int) engine=Ndb;
+Will fail with too many concurrent operations error
+INSERT INTO t2 SELECT * FROM t1;
+ERROR HY000: Got temporary error 233 'Out of operation records in transaction coordinator (increase MaxNoOfConcurrentOperations)' from NDBCLUSTER
+SELECT COUNT(*) FROM t2;
+COUNT(*)
+0
+SET ndb_use_transactions= 0;
+Should pass as insert is split
+into multiple transactions
+INSERT INTO t2 SELECT * FROM t1;
+SELECT COUNT(*) FROM t2;
+COUNT(*)
+15000
+DROP PROCEDURE bulkinsert;
+DROP TABLE t2;
+Now check bulk insert using create .. as select.
+SHOW VARIABLES LIKE '%storage_engine%';
+Variable_name	Value
+storage_engine	MyISAM
+SET storage_engine="ndb";
+CREATE TABLE t2 AS SELECT * FROM t1;
+SELECT COUNT(*) FROM t2;
+COUNT(*)
+15000
+DROP TABLE t2;
+SET storage_engine="MyIsam";
+Now check Alter table to Ndb
+ALTER TABLE t1 ENGINE= Ndb;
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+15000
+Now check Alter table within Ndb
+ALTER TABLE t1 ADD COLUMN extra int default 6;
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+15000
+DROP TABLE t1;

=== added directory 'mysql-test/suite/ndb/std_data'
=== added file 'mysql-test/suite/ndb/std_data/table_data10000.dat'
--- a/mysql-test/suite/ndb/std_data/table_data10000.dat	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb/std_data/table_data10000.dat	2009-04-06 07:44:28 +0000
@@ -0,0 +1,10000 @@
+1 old
+2 old
+3 old
+4 old
+5 old
+6 old
+7 old
+8 old
+9 old
+10 old
+11 old
+12 old
+13 old
+14 old
+15 old
+16 old
+17 old
+18 old
+19 old
+20 old
+21 old
+22 old
+23 old
+24 old
+25 old
+26 old
+27 old
+28 old
+29 old
+30 old
+31 old
+32 old
+33 old
+34 old
+35 old
+36 old
+37 old
+38 old
+39 old
+40 old
+41 old
+42 old
+43 old
+44 old
+45 old
+46 old
+47 old
+48 old
+49 old
+50 old
+51 old
+52 old
+53 old
+54 old
+55 old
+56 old
+57 old
+58 old
+59 old
+60 old
+61 old
+62 old
+63 old
+64 old
+65 old
+66 old
+67 old
+68 old
+69 old
+70 old
+71 old
+72 old
+73 old
+74 old
+75 old
+76 old
+77 old
+78 old
+79 old
+80 old
+81 old
+82 old
+83 old
+84 old
+85 old
+86 old
+87 old
+88 old
+89 old
+90 old
+91 old
+92 old
+93 old
+94 old
+95 old
+96 old
+97 old
+98 old
+99 old
+100 old
+101 old
+102 old
+103 old
+104 old
+105 old
+106 old
+107 old
+108 old
+109 old
+110 old
+111 old
+112 old
+113 old
+114 old
+115 old
+116 old
+117 old
+118 old
+119 old
+120 old
+121 old
+122 old
+123 old
+124 old
+125 old
+126 old
+127 old
+128 old
+129 old
+130 old
+131 old
+132 old
+133 old
+134 old
+135 old
+136 old
+137 old
+138 old
+139 old
+140 old
+141 old
+142 old
+143 old
+144 old
+145 old
+146 old
+147 old
+148 old
+149 old
+150 old
+151 old
+152 old
+153 old
+154 old
+155 old
+156 old
+157 old
+158 old
+159 old
+160 old
+161 old
+162 old
+163 old
+164 old
+165 old
+166 old
+167 old
+168 old
+169 old
+170 old
+171 old
+172 old
+173 old
+174 old
+175 old
+176 old
+177 old
+178 old
+179 old
+180 old
+181 old
+182 old
+183 old
+184 old
+185 old
+186 old
+187 old
+188 old
+189 old
+190 old
+191 old
+192 old
+193 old
+194 old
+195 old
+196 old
+197 old
+198 old
+199 old
+200 old
+201 old
+202 old
+203 old
+204 old
+205 old
+206 old
+207 old
+208 old
+209 old
+210 old
+211 old
+212 old
+213 old
+214 old
+215 old
+216 old
+217 old
+218 old
+219 old
+220 old
+221 old
+222 old
+223 old
+224 old
+225 old
+226 old
+227 old
+228 old
+229 old
+230 old
+231 old
+232 old
+233 old
+234 old
+235 old
+236 old
+237 old
+238 old
+239 old
+240 old
+241 old
+242 old
+243 old
+244 old
+245 old
+246 old
+247 old
+248 old
+249 old
+250 old
+251 old
+252 old
+253 old
+254 old
+255 old
+256 old
+257 old
+258 old
+259 old
+260 old
+261 old
+262 old
+263 old
+264 old
+265 old
+266 old
+267 old
+268 old
+269 old
+270 old
+271 old
+272 old
+273 old
+274 old
+275 old
+276 old
+277 old
+278 old
+279 old
+280 old
+281 old
+282 old
+283 old
+284 old
+285 old
+286 old
+287 old
+288 old
+289 old
+290 old
+291 old
+292 old
+293 old
+294 old
+295 old
+296 old
+297 old
+298 old
+299 old
+300 old
+301 old
+302 old
+303 old
+304 old
+305 old
+306 old
+307 old
+308 old
+309 old
+310 old
+311 old
+312 old
+313 old
+314 old
+315 old
+316 old
+317 old
+318 old
+319 old
+320 old
+321 old
+322 old
+323 old
+324 old
+325 old
+326 old
+327 old
+328 old
+329 old
+330 old
+331 old
+332 old
+333 old
+334 old
+335 old
+336 old
+337 old
+338 old
+339 old
+340 old
+341 old
+342 old
+343 old
+344 old
+345 old
+346 old
+347 old
+348 old
+349 old
+350 old
+351 old
+352 old
+353 old
+354 old
+355 old
+356 old
+357 old
+358 old
+359 old
+360 old
+361 old
+362 old
+363 old
+364 old
+365 old
+366 old
+367 old
+368 old
+369 old
+370 old
+371 old
+372 old
+373 old
+374 old
+375 old
+376 old
+377 old
+378 old
+379 old
+380 old
+381 old
+382 old
+383 old
+384 old
+385 old
+386 old
+387 old
+388 old
+389 old
+390 old
+391 old
+392 old
+393 old
+394 old
+395 old
+396 old
+397 old
+398 old
+399 old
+400 old
+401 old
+402 old
+403 old
+404 old
+405 old
+406 old
+407 old
+408 old
+409 old
+410 old
+411 old
+412 old
+413 old
+414 old
+415 old
+416 old
+417 old
+418 old
+419 old
+420 old
+421 old
+422 old
+423 old
+424 old
+425 old
+426 old
+427 old
+428 old
+429 old
+430 old
+431 old
+432 old
+433 old
+434 old
+435 old
+436 old
+437 old
+438 old
+439 old
+440 old
+441 old
+442 old
+443 old
+444 old
+445 old
+446 old
+447 old
+448 old
+449 old
+450 old
+451 old
+452 old
+453 old
+454 old
+455 old
+456 old
+457 old
+458 old
+459 old
+460 old
+461 old
+462 old
+463 old
+464 old
+465 old
+466 old
+467 old
+468 old
+469 old
+470 old
+471 old
+472 old
+473 old
+474 old
+475 old
+476 old
+477 old
+478 old
+479 old
+480 old
+481 old
+482 old
+483 old
+484 old
+485 old
+486 old
+487 old
+488 old
+489 old
+490 old
+491 old
+492 old
+493 old
+494 old
+495 old
+496 old
+497 old
+498 old
+499 old
+500 old
+501 old
+502 old
+503 old
+504 old
+505 old
+506 old
+507 old
+508 old
+509 old
+510 old
+511 old
+512 old
+513 old
+514 old
+515 old
+516 old
+517 old
+518 old
+519 old
+520 old
+521 old
+522 old
+523 old
+524 old
+525 old
+526 old
+527 old
+528 old
+529 old
+530 old
+531 old
+532 old
+533 old
+534 old
+535 old
+536 old
+537 old
+538 old
+539 old
+540 old
+541 old
+542 old
+543 old
+544 old
+545 old
+546 old
+547 old
+548 old
+549 old
+550 old
+551 old
+552 old
+553 old
+554 old
+555 old
+556 old
+557 old
+558 old
+559 old
+560 old
+561 old
+562 old
+563 old
+564 old
+565 old
+566 old
+567 old
+568 old
+569 old
+570 old
+571 old
+572 old
+573 old
+574 old
+575 old
+576 old
+577 old
+578 old
+579 old
+580 old
+581 old
+582 old
+583 old
+584 old
+585 old
+586 old
+587 old
+588 old
+589 old
+590 old
+591 old
+592 old
+593 old
+594 old
+595 old
+596 old
+597 old
+598 old
+599 old
+600 old
+601 old
+602 old
+603 old
+604 old
+605 old
+606 old
+607 old
+608 old
+609 old
+610 old
+611 old
+612 old
+613 old
+614 old
+615 old
+616 old
+617 old
+618 old
+619 old
+620 old
+621 old
+622 old
+623 old
+624 old
+625 old
+626 old
+627 old
+628 old
+629 old
+630 old
+631 old
+632 old
+633 old
+634 old
+635 old
+636 old
+637 old
+638 old
+639 old
+640 old
+641 old
+642 old
+643 old
+644 old
+645 old
+646 old
+647 old
+648 old
+649 old
+650 old
+651 old
+652 old
+653 old
+654 old
+655 old
+656 old
+657 old
+658 old
+659 old
+660 old
+661 old
+662 old
+663 old
+664 old
+665 old
+666 old
+667 old
+668 old
+669 old
+670 old
+671 old
+672 old
+673 old
+674 old
+675 old
+676 old
+677 old
+678 old
+679 old
+680 old
+681 old
+682 old
+683 old
+684 old
+685 old
+686 old
+687 old
+688 old
+689 old
+690 old
+691 old
+692 old
+693 old
+694 old
+695 old
+696 old
+697 old
+698 old
+699 old
+700 old
+701 old
+702 old
+703 old
+704 old
+705 old
+706 old
+707 old
+708 old
+709 old
+710 old
+711 old
+712 old
+713 old
+714 old
+715 old
+716 old
+717 old
+718 old
+719 old
+720 old
+721 old
+722 old
+723 old
+724 old
+725 old
+726 old
+727 old
+728 old
+729 old
+730 old
+731 old
+732 old
+733 old
+734 old
+735 old
+736 old
+737 old
+738 old
+739 old
+740 old
+741 old
+742 old
+743 old
+744 old
+745 old
+746 old
+747 old
+748 old
+749 old
+750 old
+751 old
+752 old
+753 old
+754 old
+755 old
+756 old
+757 old
+758 old
+759 old
+760 old
+761 old
+762 old
+763 old
+764 old
+765 old
+766 old
+767 old
+768 old
+769 old
+770 old
+771 old
+772 old
+773 old
+774 old
+775 old
+776 old
+777 old
+778 old
+779 old
+780 old
+781 old
+782 old
+783 old
+784 old
+785 old
+786 old
+787 old
+788 old
+789 old
+790 old
+791 old
+792 old
+793 old
+794 old
+795 old
+796 old
+797 old
+798 old
+799 old
+800 old
+801 old
+802 old
+803 old
+804 old
+805 old
+806 old
+807 old
+808 old
+809 old
+810 old
+811 old
+812 old
+813 old
+814 old
+815 old
+816 old
+817 old
+818 old
+819 old
+820 old
+821 old
+822 old
+823 old
+824 old
+825 old
+826 old
+827 old
+828 old
+829 old
+830 old
+831 old
+832 old
+833 old
+834 old
+835 old
+836 old
+837 old
+838 old
+839 old
+840 old
+841 old
+842 old
+843 old
+844 old
+845 old
+846 old
+847 old
+848 old
+849 old
+850 old
+851 old
+852 old
+853 old
+854 old
+855 old
+856 old
+857 old
+858 old
+859 old
+860 old
+861 old
+862 old
+863 old
+864 old
+865 old
+866 old
+867 old
+868 old
+869 old
+870 old
+871 old
+872 old
+873 old
+874 old
+875 old
+876 old
+877 old
+878 old
+879 old
+880 old
+881 old
+882 old
+883 old
+884 old
+885 old
+886 old
+887 old
+888 old
+889 old
+890 old
+891 old
+892 old
+893 old
+894 old
+895 old
+896 old
+897 old
+898 old
+899 old
+900 old
+901 old
+902 old
+903 old
+904 old
+905 old
+906 old
+907 old
+908 old
+909 old
+910 old
+911 old
+912 old
+913 old
+914 old
+915 old
+916 old
+917 old
+918 old
+919 old
+920 old
+921 old
+922 old
+923 old
+924 old
+925 old
+926 old
+927 old
+928 old
+929 old
+930 old
+931 old
+932 old
+933 old
+934 old
+935 old
+936 old
+937 old
+938 old
+939 old
+940 old
+941 old
+942 old
+943 old
+944 old
+945 old
+946 old
+947 old
+948 old
+949 old
+950 old
+951 old
+952 old
+953 old
+954 old
+955 old
+956 old
+957 old
+958 old
+959 old
+960 old
+961 old
+962 old
+963 old
+964 old
+965 old
+966 old
+967 old
+968 old
+969 old
+970 old
+971 old
+972 old
+973 old
+974 old
+975 old
+976 old
+977 old
+978 old
+979 old
+980 old
+981 old
+982 old
+983 old
+984 old
+985 old
+986 old
+987 old
+988 old
+989 old
+990 old
+991 old
+992 old
+993 old
+994 old
+995 old
+996 old
+997 old
+998 old
+999 old
+1000 old
+1001 old
+1002 old
+1003 old
+1004 old
+1005 old
+1006 old
+1007 old
+1008 old
+1009 old
+1010 old
+1011 old
+1012 old
+1013 old
+1014 old
+1015 old
+1016 old
+1017 old
+1018 old
+1019 old
+1020 old
+1021 old
+1022 old
+1023 old
+1024 old
+1025 old
+1026 old
+1027 old
+1028 old
+1029 old
+1030 old
+1031 old
+1032 old
+1033 old
+1034 old
+1035 old
+1036 old
+1037 old
+1038 old
+1039 old
+1040 old
+1041 old
+1042 old
+1043 old
+1044 old
+1045 old
+1046 old
+1047 old
+1048 old
+1049 old
+1050 old
+1051 old
+1052 old
+1053 old
+1054 old
+1055 old
+1056 old
+1057 old
+1058 old
+1059 old
+1060 old
+1061 old
+1062 old
+1063 old
+1064 old
+1065 old
+1066 old
+1067 old
+1068 old
+1069 old
+1070 old
+1071 old
+1072 old
+1073 old
+1074 old
+1075 old
+1076 old
+1077 old
+1078 old
+1079 old
+1080 old
+1081 old
+1082 old
+1083 old
+1084 old
+1085 old
+1086 old
+1087 old
+1088 old
+1089 old
+1090 old
+1091 old
+1092 old
+1093 old
+1094 old
+1095 old
+1096 old
+1097 old
+1098 old
+1099 old
+1100 old
+1101 old
+1102 old
+1103 old
+1104 old
+1105 old
+1106 old
+1107 old
+1108 old
+1109 old
+1110 old
+1111 old
+1112 old
+1113 old
+1114 old
+1115 old
+1116 old
+1117 old
+1118 old
+1119 old
+1120 old
+1121 old
+1122 old
+1123 old
+1124 old
+1125 old
+1126 old
+1127 old
+1128 old
+1129 old
+1130 old
+1131 old
+1132 old
+1133 old
+1134 old
+1135 old
+1136 old
+1137 old
+1138 old
+1139 old
+1140 old
+1141 old
+1142 old
+1143 old
+1144 old
+1145 old
+1146 old
+1147 old
+1148 old
+1149 old
+1150 old
+1151 old
+1152 old
+1153 old
+1154 old
+1155 old
+1156 old
+1157 old
+1158 old
+1159 old
+1160 old
+1161 old
+1162 old
+1163 old
+1164 old
+1165 old
+1166 old
+1167 old
+1168 old
+1169 old
+1170 old
+1171 old
+1172 old
+1173 old
+1174 old
+1175 old
+1176 old
+1177 old
+1178 old
+1179 old
+1180 old
+1181 old
+1182 old
+1183 old
+1184 old
+1185 old
+1186 old
+1187 old
+1188 old
+1189 old
+1190 old
+1191 old
+1192 old
+1193 old
+1194 old
+1195 old
+1196 old
+1197 old
+1198 old
+1199 old
+1200 old
+1201 old
+1202 old
+1203 old
+1204 old
+1205 old
+1206 old
+1207 old
+1208 old
+1209 old
+1210 old
+1211 old
+1212 old
+1213 old
+1214 old
+1215 old
+1216 old
+1217 old
+1218 old
+1219 old
+1220 old
+1221 old
+1222 old
+1223 old
+1224 old
+1225 old
+1226 old
+1227 old
+1228 old
+1229 old
+1230 old
+1231 old
+1232 old
+1233 old
+1234 old
+1235 old
+1236 old
+1237 old
+1238 old
+1239 old
+1240 old
+1241 old
+1242 old
+1243 old
+1244 old
+1245 old
+1246 old
+1247 old
+1248 old
+1249 old
+1250 old
+1251 old
+1252 old
+1253 old
+1254 old
+1255 old
+1256 old
+1257 old
+1258 old
+1259 old
+1260 old
+1261 old
+1262 old
+1263 old
+1264 old
+1265 old
+1266 old
+1267 old
+1268 old
+1269 old
+1270 old
+1271 old
+1272 old
+1273 old
+1274 old
+1275 old
+1276 old
+1277 old
+1278 old
+1279 old
+1280 old
+1281 old
+1282 old
+1283 old
+1284 old
+1285 old
+1286 old
+1287 old
+1288 old
+1289 old
+1290 old
+1291 old
+1292 old
+1293 old
+1294 old
+1295 old
+1296 old
+1297 old
+1298 old
+1299 old
+1300 old
+1301 old
+1302 old
+1303 old
+1304 old
+1305 old
+1306 old
+1307 old
+1308 old
+1309 old
+1310 old
+1311 old
+1312 old
+1313 old
+1314 old
+1315 old
+1316 old
+1317 old
+1318 old
+1319 old
+1320 old
+1321 old
+1322 old
+1323 old
+1324 old
+1325 old
+1326 old
+1327 old
+1328 old
+1329 old
+1330 old
+1331 old
+1332 old
+1333 old
+1334 old
+1335 old
+1336 old
+1337 old
+1338 old
+1339 old
+1340 old
+1341 old
+1342 old
+1343 old
+1344 old
+1345 old
+1346 old
+1347 old
+1348 old
+1349 old
+1350 old
+1351 old
+1352 old
+1353 old
+1354 old
+1355 old
+1356 old
+1357 old
+1358 old
+1359 old
+1360 old
+1361 old
+1362 old
+1363 old
+1364 old
+1365 old
+1366 old
+1367 old
+1368 old
+1369 old
+1370 old
+1371 old
+1372 old
+1373 old
+1374 old
+1375 old
+1376 old
+1377 old
+1378 old
+1379 old
+1380 old
+1381 old
+1382 old
+1383 old
+1384 old
+1385 old
+1386 old
+1387 old
+1388 old
+1389 old
+1390 old
+1391 old
+1392 old
+1393 old
+1394 old
+1395 old
+1396 old
+1397 old
+1398 old
+1399 old
+1400 old
+1401 old
+1402 old
+1403 old
+1404 old
+1405 old
+1406 old
+1407 old
+1408 old
+1409 old
+1410 old
+1411 old
+1412 old
+1413 old
+1414 old
+1415 old
+1416 old
+1417 old
+1418 old
+1419 old
+1420 old
+1421 old
+1422 old
+1423 old
+1424 old
+1425 old
+1426 old
+1427 old
+1428 old
+1429 old
+1430 old
+1431 old
+1432 old
+1433 old
+1434 old
+1435 old
+1436 old
+1437 old
+1438 old
+1439 old
+1440 old
+1441 old
+1442 old
+1443 old
+1444 old
+1445 old
+1446 old
+1447 old
+1448 old
+1449 old
+1450 old
+1451 old
+1452 old
+1453 old
+1454 old
+1455 old
+1456 old
+1457 old
+1458 old
+1459 old
+1460 old
+1461 old
+1462 old
+1463 old
+1464 old
+1465 old
+1466 old
+1467 old
+1468 old
+1469 old
+1470 old
+1471 old
+1472 old
+1473 old
+1474 old
+1475 old
+1476 old
+1477 old
+1478 old
+1479 old
+1480 old
+1481 old
+1482 old
+1483 old
+1484 old
+1485 old
+1486 old
+1487 old
+1488 old
+1489 old
+1490 old
+1491 old
+1492 old
+1493 old
+1494 old
+1495 old
+1496 old
+1497 old
+1498 old
+1499 old
+1500 old
+1501 old
+1502 old
+1503 old
+1504 old
+1505 old
+1506 old
+1507 old
+1508 old
+1509 old
+1510 old
+1511 old
+1512 old
+1513 old
+1514 old
+1515 old
+1516 old
+1517 old
+1518 old
+1519 old
+1520 old
+1521 old
+1522 old
+1523 old
+1524 old
+1525 old
+1526 old
+1527 old
+1528 old
+1529 old
+1530 old
+1531 old
+1532 old
+1533 old
+1534 old
+1535 old
+1536 old
+1537 old
+1538 old
+1539 old
+1540 old
+1541 old
+1542 old
+1543 old
+1544 old
+1545 old
+1546 old
+1547 old
+1548 old
+1549 old
+1550 old
+1551 old
+1552 old
+1553 old
+1554 old
+1555 old
+1556 old
+1557 old
+1558 old
+1559 old
+1560 old
+1561 old
+1562 old
+1563 old
+1564 old
+1565 old
+1566 old
+1567 old
+1568 old
+1569 old
+1570 old
+1571 old
+1572 old
+1573 old
+1574 old
+1575 old
+1576 old
+1577 old
+1578 old
+1579 old
+1580 old
+1581 old
+1582 old
+1583 old
+1584 old
+1585 old
+1586 old
+1587 old
+1588 old
+1589 old
+1590 old
+1591 old
+1592 old
+1593 old
+1594 old
+1595 old
+1596 old
+1597 old
+1598 old
+1599 old
+1600 old
+1601 old
+1602 old
+1603 old
+1604 old
+1605 old
+1606 old
+1607 old
+1608 old
+1609 old
+1610 old
+1611 old
+1612 old
+1613 old
+1614 old
+1615 old
+1616 old
+1617 old
+1618 old
+1619 old
+1620 old
+1621 old
+1622 old
+1623 old
+1624 old
+1625 old
+1626 old
+1627 old
+1628 old
+1629 old
+1630 old
+1631 old
+1632 old
+1633 old
+1634 old
+1635 old
+1636 old
+1637 old
+1638 old
+1639 old
+1640 old
+1641 old
+1642 old
+1643 old
+1644 old
+1645 old
+1646 old
+1647 old
+1648 old
+1649 old
+1650 old
+1651 old
+1652 old
+1653 old
+1654 old
+1655 old
+1656 old
+1657 old
+1658 old
+1659 old
+1660 old
+1661 old
+1662 old
+1663 old
+1664 old
+1665 old
+1666 old
+1667 old
+1668 old
+1669 old
+1670 old
+1671 old
+1672 old
+1673 old
+1674 old
+1675 old
+1676 old
+1677 old
+1678 old
+1679 old
+1680 old
+1681 old
+1682 old
+1683 old
+1684 old
+1685 old
+1686 old
+1687 old
+1688 old
+1689 old
+1690 old
+1691 old
+1692 old
+1693 old
+1694 old
+1695 old
+1696 old
+1697 old
+1698 old
+1699 old
+1700 old
+1701 old
+1702 old
+1703 old
+1704 old
+1705 old
+1706 old
+1707 old
+1708 old
+1709 old
+1710 old
+1711 old
+1712 old
+1713 old
+1714 old
+1715 old
+1716 old
+1717 old
+1718 old
+1719 old
+1720 old
+1721 old
+1722 old
+1723 old
+1724 old
+1725 old
+1726 old
+1727 old
+1728 old
+1729 old
+1730 old
+1731 old
+1732 old
+1733 old
+1734 old
+1735 old
+1736 old
+1737 old
+1738 old
+1739 old
+1740 old
+1741 old
+1742 old
+1743 old
+1744 old
+1745 old
+1746 old
+1747 old
+1748 old
+1749 old
+1750 old
+1751 old
+1752 old
+1753 old
+1754 old
+1755 old
+1756 old
+1757 old
+1758 old
+1759 old
+1760 old
+1761 old
+1762 old
+1763 old
+1764 old
+1765 old
+1766 old
+1767 old
+1768 old
+1769 old
+1770 old
+1771 old
+1772 old
+1773 old
+1774 old
+1775 old
+1776 old
+1777 old
+1778 old
+1779 old
+1780 old
+1781 old
+1782 old
+1783 old
+1784 old
+1785 old
+1786 old
+1787 old
+1788 old
+1789 old
+1790 old
+1791 old
+1792 old
+1793 old
+1794 old
+1795 old
+1796 old
+1797 old
+1798 old
+1799 old
+1800 old
+1801 old
+1802 old
+1803 old
+1804 old
+1805 old
+1806 old
+1807 old
+1808 old
+1809 old
+1810 old
+1811 old
+1812 old
+1813 old
+1814 old
+1815 old
+1816 old
+1817 old
+1818 old
+1819 old
+1820 old
+1821 old
+1822 old
+1823 old
+1824 old
+1825 old
+1826 old
+1827 old
+1828 old
+1829 old
+1830 old
+1831 old
+1832 old
+1833 old
+1834 old
+1835 old
+1836 old
+1837 old
+1838 old
+1839 old
+1840 old
+1841 old
+1842 old
+1843 old
+1844 old
+1845 old
+1846 old
+1847 old
+1848 old
+1849 old
+1850 old
+1851 old
+1852 old
+1853 old
+1854 old
+1855 old
+1856 old
+1857 old
+1858 old
+1859 old
+1860 old
+1861 old
+1862 old
+1863 old
+1864 old
+1865 old
+1866 old
+1867 old
+1868 old
+1869 old
+1870 old
+1871 old
+1872 old
+1873 old
+1874 old
+1875 old
+1876 old
+1877 old
+1878 old
+1879 old
+1880 old
+1881 old
+1882 old
+1883 old
+1884 old
+1885 old
+1886 old
+1887 old
+1888 old
+1889 old
+1890 old
+1891 old
+1892 old
+1893 old
+1894 old
+1895 old
+1896 old
+1897 old
+1898 old
+1899 old
+1900 old
+1901 old
+1902 old
+1903 old
+1904 old
+1905 old
+1906 old
+1907 old
+1908 old
+1909 old
+1910 old
+1911 old
+1912 old
+1913 old
+1914 old
+1915 old
+1916 old
+1917 old
+1918 old
+1919 old
+1920 old
+1921 old
+1922 old
+1923 old
+1924 old
+1925 old
+1926 old
+1927 old
+1928 old
+1929 old
+1930 old
+1931 old
+1932 old
+1933 old
+1934 old
+1935 old
+1936 old
+1937 old
+1938 old
+1939 old
+1940 old
+1941 old
+1942 old
+1943 old
+1944 old
+1945 old
+1946 old
+1947 old
+1948 old
+1949 old
+1950 old
+1951 old
+1952 old
+1953 old
+1954 old
+1955 old
+1956 old
+1957 old
+1958 old
+1959 old
+1960 old
+1961 old
+1962 old
+1963 old
+1964 old
+1965 old
+1966 old
+1967 old
+1968 old
+1969 old
+1970 old
+1971 old
+1972 old
+1973 old
+1974 old
+1975 old
+1976 old
+1977 old
+1978 old
+1979 old
+1980 old
+1981 old
+1982 old
+1983 old
+1984 old
+1985 old
+1986 old
+1987 old
+1988 old
+1989 old
+1990 old
+1991 old
+1992 old
+1993 old
+1994 old
+1995 old
+1996 old
+1997 old
+1998 old
+1999 old
+2000 old
+2001 old
+2002 old
+2003 old
+2004 old
+2005 old
+2006 old
+2007 old
+2008 old
+2009 old
+2010 old
+2011 old
+2012 old
+2013 old
+2014 old
+2015 old
+2016 old
+2017 old
+2018 old
+2019 old
+2020 old
+2021 old
+2022 old
+2023 old
+2024 old
+2025 old
+2026 old
+2027 old
+2028 old
+2029 old
+2030 old
+2031 old
+2032 old
+2033 old
+2034 old
+2035 old
+2036 old
+2037 old
+2038 old
+2039 old
+2040 old
+2041 old
+2042 old
+2043 old
+2044 old
+2045 old
+2046 old
+2047 old
+2048 old
+2049 old
+2050 old
+2051 old
+2052 old
+2053 old
+2054 old
+2055 old
+2056 old
+2057 old
+2058 old
+2059 old
+2060 old
+2061 old
+2062 old
+2063 old
+2064 old
+2065 old
+2066 old
+2067 old
+2068 old
+2069 old
+2070 old
+2071 old
+2072 old
+2073 old
+2074 old
+2075 old
+2076 old
+2077 old
+2078 old
+2079 old
+2080 old
+2081 old
+2082 old
+2083 old
+2084 old
+2085 old
+2086 old
+2087 old
+2088 old
+2089 old
+2090 old
+2091 old
+2092 old
+2093 old
+2094 old
+2095 old
+2096 old
+2097 old
+2098 old
+2099 old
+2100 old
+2101 old
+2102 old
+2103 old
+2104 old
+2105 old
+2106 old
+2107 old
+2108 old
+2109 old
+2110 old
+2111 old
+2112 old
+2113 old
+2114 old
+2115 old
+2116 old
+2117 old
+2118 old
+2119 old
+2120 old
+2121 old
+2122 old
+2123 old
+2124 old
+2125 old
+2126 old
+2127 old
+2128 old
+2129 old
+2130 old
+2131 old
+2132 old
+2133 old
+2134 old
+2135 old
+2136 old
+2137 old
+2138 old
+2139 old
+2140 old
+2141 old
+2142 old
+2143 old
+2144 old
+2145 old
+2146 old
+2147 old
+2148 old
+2149 old
+2150 old
+2151 old
+2152 old
+2153 old
+2154 old
+2155 old
+2156 old
+2157 old
+2158 old
+2159 old
+2160 old
+2161 old
+2162 old
+2163 old
+2164 old
+2165 old
+2166 old
+2167 old
+2168 old
+2169 old
+2170 old
+2171 old
+2172 old
+2173 old
+2174 old
+2175 old
+2176 old
+2177 old
+2178 old
+2179 old
+2180 old
+2181 old
+2182 old
+2183 old
+2184 old
+2185 old
+2186 old
+2187 old
+2188 old
+2189 old
+2190 old
+2191 old
+2192 old
+2193 old
+2194 old
+2195 old
+2196 old
+2197 old
+2198 old
+2199 old
+2200 old
+2201 old
+2202 old
+2203 old
+2204 old
+2205 old
+2206 old
+2207 old
+2208 old
+2209 old
+2210 old
+2211 old
+2212 old
+2213 old
+2214 old
+2215 old
+2216 old
+2217 old
+2218 old
+2219 old
+2220 old
+2221 old
+2222 old
+2223 old
+2224 old
+2225 old
+2226 old
+2227 old
+2228 old
+2229 old
+2230 old
+2231 old
+2232 old
+2233 old
+2234 old
+2235 old
+2236 old
+2237 old
+2238 old
+2239 old
+2240 old
+2241 old
+2242 old
+2243 old
+2244 old
+2245 old
+2246 old
+2247 old
+2248 old
+2249 old
+2250 old
+2251 old
+2252 old
+2253 old
+2254 old
+2255 old
+2256 old
+2257 old
+2258 old
+2259 old
+2260 old
+2261 old
+2262 old
+2263 old
+2264 old
+2265 old
+2266 old
+2267 old
+2268 old
+2269 old
+2270 old
+2271 old
+2272 old
+2273 old
+2274 old
+2275 old
+2276 old
+2277 old
+2278 old
+2279 old
+2280 old
+2281 old
+2282 old
+2283 old
+2284 old
+2285 old
+2286 old
+2287 old
+2288 old
+2289 old
+2290 old
+2291 old
+2292 old
+2293 old
+2294 old
+2295 old
+2296 old
+2297 old
+2298 old
+2299 old
+2300 old
+2301 old
+2302 old
+2303 old
+2304 old
+2305 old
+2306 old
+2307 old
+2308 old
+2309 old
+2310 old
+2311 old
+2312 old
+2313 old
+2314 old
+2315 old
+2316 old
+2317 old
+2318 old
+2319 old
+2320 old
+2321 old
+2322 old
+2323 old
+2324 old
+2325 old
+2326 old
+2327 old
+2328 old
+2329 old
+2330 old
+2331 old
+2332 old
+2333 old
+2334 old
+2335 old
+2336 old
+2337 old
+2338 old
+2339 old
+2340 old
+2341 old
+2342 old
+2343 old
+2344 old
+2345 old
+2346 old
+2347 old
+2348 old
+2349 old
+2350 old
+2351 old
+2352 old
+2353 old
+2354 old
+2355 old
+2356 old
+2357 old
+2358 old
+2359 old
+2360 old
+2361 old
+2362 old
+2363 old
+2364 old
+2365 old
+2366 old
+2367 old
+2368 old
+2369 old
+2370 old
+2371 old
+2372 old
+2373 old
+2374 old
+2375 old
+2376 old
+2377 old
+2378 old
+2379 old
+2380 old
+2381 old
+2382 old
+2383 old
+2384 old
+2385 old
+2386 old
+2387 old
+2388 old
+2389 old
+2390 old
+2391 old
+2392 old
+2393 old
+2394 old
+2395 old
+2396 old
+2397 old
+2398 old
+2399 old
+2400 old
+2401 old
+2402 old
+2403 old
+2404 old
+2405 old
+2406 old
+2407 old
+2408 old
+2409 old
+2410 old
+2411 old
+2412 old
+2413 old
+2414 old
+2415 old
+2416 old
+2417 old
+2418 old
+2419 old
+2420 old
+2421 old
+2422 old
+2423 old
+2424 old
+2425 old
+2426 old
+2427 old
+2428 old
+2429 old
+2430 old
+2431 old
+2432 old
+2433 old
+2434 old
+2435 old
+2436 old
+2437 old
+2438 old
+2439 old
+2440 old
+2441 old
+2442 old
+2443 old
+2444 old
+2445 old
+2446 old
+2447 old
+2448 old
+2449 old
+2450 old
+2451 old
+2452 old
+2453 old
+2454 old
+2455 old
+2456 old
+2457 old
+2458 old
+2459 old
+2460 old
+2461 old
+2462 old
+2463 old
+2464 old
+2465 old
+2466 old
+2467 old
+2468 old
+2469 old
+2470 old
+2471 old
+2472 old
+2473 old
+2474 old
+2475 old
+2476 old
+2477 old
+2478 old
+2479 old
+2480 old
+2481 old
+2482 old
+2483 old
+2484 old
+2485 old
+2486 old
+2487 old
+2488 old
+2489 old
+2490 old
+2491 old
+2492 old
+2493 old
+2494 old
+2495 old
+2496 old
+2497 old
+2498 old
+2499 old
+2500 old
+2501 old
+2502 old
+2503 old
+2504 old
+2505 old
+2506 old
+2507 old
+2508 old
+2509 old
+2510 old
+2511 old
+2512 old
+2513 old
+2514 old
+2515 old
+2516 old
+2517 old
+2518 old
+2519 old
+2520 old
+2521 old
+2522 old
+2523 old
+2524 old
+2525 old
+2526 old
+2527 old
+2528 old
+2529 old
+2530 old
+2531 old
+2532 old
+2533 old
+2534 old
+2535 old
+2536 old
+2537 old
+2538 old
+2539 old
+2540 old
+2541 old
+2542 old
+2543 old
+2544 old
+2545 old
+2546 old
+2547 old
+2548 old
+2549 old
+2550 old
+2551 old
+2552 old
+2553 old
+2554 old
+2555 old
+2556 old
+2557 old
+2558 old
+2559 old
+2560 old
+2561 old
+2562 old
+2563 old
+2564 old
+2565 old
+2566 old
+2567 old
+2568 old
+2569 old
+2570 old
+2571 old
+2572 old
+2573 old
+2574 old
+2575 old
+2576 old
+2577 old
+2578 old
+2579 old
+2580 old
+2581 old
+2582 old
+2583 old
+2584 old
+2585 old
+2586 old
+2587 old
+2588 old
+2589 old
+2590 old
+2591 old
+2592 old
+2593 old
+2594 old
+2595 old
+2596 old
+2597 old
+2598 old
+2599 old
+2600 old
+2601 old
+2602 old
+2603 old
+2604 old
+2605 old
+2606 old
+2607 old
+2608 old
+2609 old
+2610 old
+2611 old
+2612 old
+2613 old
+2614 old
+2615 old
+2616 old
+2617 old
+2618 old
+2619 old
+2620 old
+2621 old
+2622 old
+2623 old
+2624 old
+2625 old
+2626 old
+2627 old
+2628 old
+2629 old
+2630 old
+2631 old
+2632 old
+2633 old
+2634 old
+2635 old
+2636 old
+2637 old
+2638 old
+2639 old
+2640 old
+2641 old
+2642 old
+2643 old
+2644 old
+2645 old
+2646 old
+2647 old
+2648 old
+2649 old
+2650 old
+2651 old
+2652 old
+2653 old
+2654 old
+2655 old
+2656 old
+2657 old
+2658 old
+2659 old
+2660 old
+2661 old
+2662 old
+2663 old
+2664 old
+2665 old
+2666 old
+2667 old
+2668 old
+2669 old
+2670 old
+2671 old
+2672 old
+2673 old
+2674 old
+2675 old
+2676 old
+2677 old
+2678 old
+2679 old
+2680 old
+2681 old
+2682 old
+2683 old
+2684 old
+2685 old
+2686 old
+2687 old
+2688 old
+2689 old
+2690 old
+2691 old
+2692 old
+2693 old
+2694 old
+2695 old
+2696 old
+2697 old
+2698 old
+2699 old
+2700 old
+2701 old
+2702 old
+2703 old
+2704 old
+2705 old
+2706 old
+2707 old
+2708 old
+2709 old
+2710 old
+2711 old
+2712 old
+2713 old
+2714 old
+2715 old
+2716 old
+2717 old
+2718 old
+2719 old
+2720 old
+2721 old
+2722 old
+2723 old
+2724 old
+2725 old
+2726 old
+2727 old
+2728 old
+2729 old
+2730 old
+2731 old
+2732 old
+2733 old
+2734 old
+2735 old
+2736 old
+2737 old
+2738 old
+2739 old
+2740 old
+2741 old
+2742 old
+2743 old
+2744 old
+2745 old
+2746 old
+2747 old
+2748 old
+2749 old
+2750 old
+2751 old
+2752 old
+2753 old
+2754 old
+2755 old
+2756 old
+2757 old
+2758 old
+2759 old
+2760 old
+2761 old
+2762 old
+2763 old
+2764 old
+2765 old
+2766 old
+2767 old
+2768 old
+2769 old
+2770 old
+2771 old
+2772 old
+2773 old
+2774 old
+2775 old
+2776 old
+2777 old
+2778 old
+2779 old
+2780 old
+2781 old
+2782 old
+2783 old
+2784 old
+2785 old
+2786 old
+2787 old
+2788 old
+2789 old
+2790 old
+2791 old
+2792 old
+2793 old
+2794 old
+2795 old
+2796 old
+2797 old
+2798 old
+2799 old
+2800 old
+2801 old
+2802 old
+2803 old
+2804 old
+2805 old
+2806 old
+2807 old
+2808 old
+2809 old
+2810 old
+2811 old
+2812 old
+2813 old
+2814 old
+2815 old
+2816 old
+2817 old
+2818 old
+2819 old
+2820 old
+2821 old
+2822 old
+2823 old
+2824 old
+2825 old
+2826 old
+2827 old
+2828 old
+2829 old
+2830 old
+2831 old
+2832 old
+2833 old
+2834 old
+2835 old
+2836 old
+2837 old
+2838 old
+2839 old
+2840 old
+2841 old
+2842 old
+2843 old
+2844 old
+2845 old
+2846 old
+2847 old
+2848 old
+2849 old
+2850 old
+2851 old
+2852 old
+2853 old
+2854 old
+2855 old
+2856 old
+2857 old
+2858 old
+2859 old
+2860 old
+2861 old
+2862 old
+2863 old
+2864 old
+2865 old
+2866 old
+2867 old
+2868 old
+2869 old
+2870 old
+2871 old
+2872 old
+2873 old
+2874 old
+2875 old
+2876 old
+2877 old
+2878 old
+2879 old
+2880 old
+2881 old
+2882 old
+2883 old
+2884 old
+2885 old
+2886 old
+2887 old
+2888 old
+2889 old
+2890 old
+2891 old
+2892 old
+2893 old
+2894 old
+2895 old
+2896 old
+2897 old
+2898 old
+2899 old
+2900 old
+2901 old
+2902 old
+2903 old
+2904 old
+2905 old
+2906 old
+2907 old
+2908 old
+2909 old
+2910 old
+2911 old
+2912 old
+2913 old
+2914 old
+2915 old
+2916 old
+2917 old
+2918 old
+2919 old
+2920 old
+2921 old
+2922 old
+2923 old
+2924 old
+2925 old
+2926 old
+2927 old
+2928 old
+2929 old
+2930 old
+2931 old
+2932 old
+2933 old
+2934 old
+2935 old
+2936 old
+2937 old
+2938 old
+2939 old
+2940 old
+2941 old
+2942 old
+2943 old
+2944 old
+2945 old
+2946 old
+2947 old
+2948 old
+2949 old
+2950 old
+2951 old
+2952 old
+2953 old
+2954 old
+2955 old
+2956 old
+2957 old
+2958 old
+2959 old
+2960 old
+2961 old
+2962 old
+2963 old
+2964 old
+2965 old
+2966 old
+2967 old
+2968 old
+2969 old
+2970 old
+2971 old
+2972 old
+2973 old
+2974 old
+2975 old
+2976 old
+2977 old
+2978 old
+2979 old
+2980 old
+2981 old
+2982 old
+2983 old
+2984 old
+2985 old
+2986 old
+2987 old
+2988 old
+2989 old
+2990 old
+2991 old
+2992 old
+2993 old
+2994 old
+2995 old
+2996 old
+2997 old
+2998 old
+2999 old
+3000 old
+3001 old
+3002 old
+3003 old
+3004 old
+3005 old
+3006 old
+3007 old
+3008 old
+3009 old
+3010 old
+3011 old
+3012 old
+3013 old
+3014 old
+3015 old
+3016 old
+3017 old
+3018 old
+3019 old
+3020 old
+3021 old
+3022 old
+3023 old
+3024 old
+3025 old
+3026 old
+3027 old
+3028 old
+3029 old
+3030 old
+3031 old
+3032 old
+3033 old
+3034 old
+3035 old
+3036 old
+3037 old
+3038 old
+3039 old
+3040 old
+3041 old
+3042 old
+3043 old
+3044 old
+3045 old
+3046 old
+3047 old
+3048 old
+3049 old
+3050 old
+3051 old
+3052 old
+3053 old
+3054 old
+3055 old
+3056 old
+3057 old
+3058 old
+3059 old
+3060 old
+3061 old
+3062 old
+3063 old
+3064 old
+3065 old
+3066 old
+3067 old
+3068 old
+3069 old
+3070 old
+3071 old
+3072 old
+3073 old
+3074 old
+3075 old
+3076 old
+3077 old
+3078 old
+3079 old
+3080 old
+3081 old
+3082 old
+3083 old
+3084 old
+3085 old
+3086 old
+3087 old
+3088 old
+3089 old
+3090 old
+3091 old
+3092 old
+3093 old
+3094 old
+3095 old
+3096 old
+3097 old
+3098 old
+3099 old
+3100 old
+3101 old
+3102 old
+3103 old
+3104 old
+3105 old
+3106 old
+3107 old
+3108 old
+3109 old
+3110 old
+3111 old
+3112 old
+3113 old
+3114 old
+3115 old
+3116 old
+3117 old
+3118 old
+3119 old
+3120 old
+3121 old
+3122 old
+3123 old
+3124 old
+3125 old
+3126 old
+3127 old
+3128 old
+3129 old
+3130 old
+3131 old
+3132 old
+3133 old
+3134 old
+3135 old
+3136 old
+3137 old
+3138 old
+3139 old
+3140 old
+3141 old
+3142 old
+3143 old
+3144 old
+3145 old
+3146 old
+3147 old
+3148 old
+3149 old
+3150 old
+3151 old
+3152 old
+3153 old
+3154 old
+3155 old
+3156 old
+3157 old
+3158 old
+3159 old
+3160 old
+3161 old
+3162 old
+3163 old
+3164 old
+3165 old
+3166 old
+3167 old
+3168 old
+3169 old
+3170 old
+3171 old
+3172 old
+3173 old
+3174 old
+3175 old
+3176 old
+3177 old
+3178 old
+3179 old
+3180 old
+3181 old
+3182 old
+3183 old
+3184 old
+3185 old
+3186 old
+3187 old
+3188 old
+3189 old
+3190 old
+3191 old
+3192 old
+3193 old
+3194 old
+3195 old
+3196 old
+3197 old
+3198 old
+3199 old
+3200 old
+3201 old
+3202 old
+3203 old
+3204 old
+3205 old
+3206 old
+3207 old
+3208 old
+3209 old
+3210 old
+3211 old
+3212 old
+3213 old
+3214 old
+3215 old
+3216 old
+3217 old
+3218 old
+3219 old
+3220 old
+3221 old
+3222 old
+3223 old
+3224 old
+3225 old
+3226 old
+3227 old
+3228 old
+3229 old
+3230 old
+3231 old
+3232 old
+3233 old
+3234 old
+3235 old
+3236 old
+3237 old
+3238 old
+3239 old
+3240 old
+3241 old
+3242 old
+3243 old
+3244 old
+3245 old
+3246 old
+3247 old
+3248 old
+3249 old
+3250 old
+3251 old
+3252 old
+3253 old
+3254 old
+3255 old
+3256 old
+3257 old
+3258 old
+3259 old
+3260 old
+3261 old
+3262 old
+3263 old
+3264 old
+3265 old
+3266 old
+3267 old
+3268 old
+3269 old
+3270 old
+3271 old
+3272 old
+3273 old
+3274 old
+3275 old
+3276 old
+3277 old
+3278 old
+3279 old
+3280 old
+3281 old
+3282 old
+3283 old
+3284 old
+3285 old
+3286 old
+3287 old
+3288 old
+3289 old
+3290 old
+3291 old
+3292 old
+3293 old
+3294 old
+3295 old
+3296 old
+3297 old
+3298 old
+3299 old
+3300 old
+3301 old
+3302 old
+3303 old
+3304 old
+3305 old
+3306 old
+3307 old
+3308 old
+3309 old
+3310 old
+3311 old
+3312 old
+3313 old
+3314 old
+3315 old
+3316 old
+3317 old
+3318 old
+3319 old
+3320 old
+3321 old
+3322 old
+3323 old
+3324 old
+3325 old
+3326 old
+3327 old
+3328 old
+3329 old
+3330 old
+3331 old
+3332 old
+3333 old
+3334 old
+3335 old
+3336 old
+3337 old
+3338 old
+3339 old
+3340 old
+3341 old
+3342 old
+3343 old
+3344 old
+3345 old
+3346 old
+3347 old
+3348 old
+3349 old
+3350 old
+3351 old
+3352 old
+3353 old
+3354 old
+3355 old
+3356 old
+3357 old
+3358 old
+3359 old
+3360 old
+3361 old
+3362 old
+3363 old
+3364 old
+3365 old
+3366 old
+3367 old
+3368 old
+3369 old
+3370 old
+3371 old
+3372 old
+3373 old
+3374 old
+3375 old
+3376 old
+3377 old
+3378 old
+3379 old
+3380 old
+3381 old
+3382 old
+3383 old
+3384 old
+3385 old
+3386 old
+3387 old
+3388 old
+3389 old
+3390 old
+3391 old
+3392 old
+3393 old
+3394 old
+3395 old
+3396 old
+3397 old
+3398 old
+3399 old
+3400 old
+3401 old
+3402 old
+3403 old
+3404 old
+3405 old
+3406 old
+3407 old
+3408 old
+3409 old
+3410 old
+3411 old
+3412 old
+3413 old
+3414 old
+3415 old
+3416 old
+3417 old
+3418 old
+3419 old
+3420 old
+3421 old
+3422 old
+3423 old
+3424 old
+3425 old
+3426 old
+3427 old
+3428 old
+3429 old
+3430 old
+3431 old
+3432 old
+3433 old
+3434 old
+3435 old
+3436 old
+3437 old
+3438 old
+3439 old
+3440 old
+3441 old
+3442 old
+3443 old
+3444 old
+3445 old
+3446 old
+3447 old
+3448 old
+3449 old
+3450 old
+3451 old
+3452 old
+3453 old
+3454 old
+3455 old
+3456 old
+3457 old
+3458 old
+3459 old
+3460 old
+3461 old
+3462 old
+3463 old
+3464 old
+3465 old
+3466 old
+3467 old
+3468 old
+3469 old
+3470 old
+3471 old
+3472 old
+3473 old
+3474 old
+3475 old
+3476 old
+3477 old
+3478 old
+3479 old
+3480 old
+3481 old
+3482 old
+3483 old
+3484 old
+3485 old
+3486 old
+3487 old
+3488 old
+3489 old
+3490 old
+3491 old
+3492 old
+3493 old
+3494 old
+3495 old
+3496 old
+3497 old
+3498 old
+3499 old
+3500 old
+3501 old
+3502 old
+3503 old
+3504 old
+3505 old
+3506 old
+3507 old
+3508 old
+3509 old
+3510 old
+3511 old
+3512 old
+3513 old
+3514 old
+3515 old
+3516 old
+3517 old
+3518 old
+3519 old
+3520 old
+3521 old
+3522 old
+3523 old
+3524 old
+3525 old
+3526 old
+3527 old
+3528 old
+3529 old
+3530 old
+3531 old
+3532 old
+3533 old
+3534 old
+3535 old
+3536 old
+3537 old
+3538 old
+3539 old
+3540 old
+3541 old
+3542 old
+3543 old
+3544 old
+3545 old
+3546 old
+3547 old
+3548 old
+3549 old
+3550 old
+3551 old
+3552 old
+3553 old
+3554 old
+3555 old
+3556 old
+3557 old
+3558 old
+3559 old
+3560 old
+3561 old
+3562 old
+3563 old
+3564 old
+3565 old
+3566 old
+3567 old
+3568 old
+3569 old
+3570 old
+3571 old
+3572 old
+3573 old
+3574 old
+3575 old
+3576 old
+3577 old
+3578 old
+3579 old
+3580 old
+3581 old
+3582 old
+3583 old
+3584 old
+3585 old
+3586 old
+3587 old
+3588 old
+3589 old
+3590 old
+3591 old
+3592 old
+3593 old
+3594 old
+3595 old
+3596 old
+3597 old
+3598 old
+3599 old
+3600 old
+3601 old
+3602 old
+3603 old
+3604 old
+3605 old
+3606 old
+3607 old
+3608 old
+3609 old
+3610 old
+3611 old
+3612 old
+3613 old
+3614 old
+3615 old
+3616 old
+3617 old
+3618 old
+3619 old
+3620 old
+3621 old
+3622 old
+3623 old
+3624 old
+3625 old
+3626 old
+3627 old
+3628 old
+3629 old
+3630 old
+3631 old
+3632 old
+3633 old
+3634 old
+3635 old
+3636 old
+3637 old
+3638 old
+3639 old
+3640 old
+3641 old
+3642 old
+3643 old
+3644 old
+3645 old
+3646 old
+3647 old
+3648 old
+3649 old
+3650 old
+3651 old
+3652 old
+3653 old
+3654 old
+3655 old
+3656 old
+3657 old
+3658 old
+3659 old
+3660 old
+3661 old
+3662 old
+3663 old
+3664 old
+3665 old
+3666 old
+3667 old
+3668 old
+3669 old
+3670 old
+3671 old
+3672 old
+3673 old
+3674 old
+3675 old
+3676 old
+3677 old
+3678 old
+3679 old
+3680 old
+3681 old
+3682 old
+3683 old
+3684 old
+3685 old
+3686 old
+3687 old
+3688 old
+3689 old
+3690 old
+3691 old
+3692 old
+3693 old
+3694 old
+3695 old
+3696 old
+3697 old
+3698 old
+3699 old
+3700 old
+3701 old
+3702 old
+3703 old
+3704 old
+3705 old
+3706 old
+3707 old
+3708 old
+3709 old
+3710 old
+3711 old
+3712 old
+3713 old
+3714 old
+3715 old
+3716 old
+3717 old
+3718 old
+3719 old
+3720 old
+3721 old
+3722 old
+3723 old
+3724 old
+3725 old
+3726 old
+3727 old
+3728 old
+3729 old
+3730 old
+3731 old
+3732 old
+3733 old
+3734 old
+3735 old
+3736 old
+3737 old
+3738 old
+3739 old
+3740 old
+3741 old
+3742 old
+3743 old
+3744 old
+3745 old
+3746 old
+3747 old
+3748 old
+3749 old
+3750 old
+3751 old
+3752 old
+3753 old
+3754 old
+3755 old
+3756 old
+3757 old
+3758 old
+3759 old
+3760 old
+3761 old
+3762 old
+3763 old
+3764 old
+3765 old
+3766 old
+3767 old
+3768 old
+3769 old
+3770 old
+3771 old
+3772 old
+3773 old
+3774 old
+3775 old
+3776 old
+3777 old
+3778 old
+3779 old
+3780 old
+3781 old
+3782 old
+3783 old
+3784 old
+3785 old
+3786 old
+3787 old
+3788 old
+3789 old
+3790 old
+3791 old
+3792 old
+3793 old
+3794 old
+3795 old
+3796 old
+3797 old
+3798 old
+3799 old
+3800 old
+3801 old
+3802 old
+3803 old
+3804 old
+3805 old
+3806 old
+3807 old
+3808 old
+3809 old
+3810 old
+3811 old
+3812 old
+3813 old
+3814 old
+3815 old
+3816 old
+3817 old
+3818 old
+3819 old
+3820 old
+3821 old
+3822 old
+3823 old
+3824 old
+3825 old
+3826 old
+3827 old
+3828 old
+3829 old
+3830 old
+3831 old
+3832 old
+3833 old
+3834 old
+3835 old
+3836 old
+3837 old
+3838 old
+3839 old
+3840 old
+3841 old
+3842 old
+3843 old
+3844 old
+3845 old
+3846 old
+3847 old
+3848 old
+3849 old
+3850 old
+3851 old
+3852 old
+3853 old
+3854 old
+3855 old
+3856 old
+3857 old
+3858 old
+3859 old
+3860 old
+3861 old
+3862 old
+3863 old
+3864 old
+3865 old
+3866 old
+3867 old
+3868 old
+3869 old
+3870 old
+3871 old
+3872 old
+3873 old
+3874 old
+3875 old
+3876 old
+3877 old
+3878 old
+3879 old
+3880 old
+3881 old
+3882 old
+3883 old
+3884 old
+3885 old
+3886 old
+3887 old
+3888 old
+3889 old
+3890 old
+3891 old
+3892 old
+3893 old
+3894 old
+3895 old
+3896 old
+3897 old
+3898 old
+3899 old
+3900 old
+3901 old
+3902 old
+3903 old
+3904 old
+3905 old
+3906 old
+3907 old
+3908 old
+3909 old
+3910 old
+3911 old
+3912 old
+3913 old
+3914 old
+3915 old
+3916 old
+3917 old
+3918 old
+3919 old
+3920 old
+3921 old
+3922 old
+3923 old
+3924 old
+3925 old
+3926 old
+3927 old
+3928 old
+3929 old
+3930 old
+3931 old
+3932 old
+3933 old
+3934 old
+3935 old
+3936 old
+3937 old
+3938 old
+3939 old
+3940 old
+3941 old
+3942 old
+3943 old
+3944 old
+3945 old
+3946 old
+3947 old
+3948 old
+3949 old
+3950 old
+3951 old
+3952 old
+3953 old
+3954 old
+3955 old
+3956 old
+3957 old
+3958 old
+3959 old
+3960 old
+3961 old
+3962 old
+3963 old
+3964 old
+3965 old
+3966 old
+3967 old
+3968 old
+3969 old
+3970 old
+3971 old
+3972 old
+3973 old
+3974 old
+3975 old
+3976 old
+3977 old
+3978 old
+3979 old
+3980 old
+3981 old
+3982 old
+3983 old
+3984 old
+3985 old
+3986 old
+3987 old
+3988 old
+3989 old
+3990 old
+3991 old
+3992 old
+3993 old
+3994 old
+3995 old
+3996 old
+3997 old
+3998 old
+3999 old
+4000 old
+4001 old
+4002 old
+4003 old
+4004 old
+4005 old
+4006 old
+4007 old
+4008 old
+4009 old
+4010 old
+4011 old
+4012 old
+4013 old
+4014 old
+4015 old
+4016 old
+4017 old
+4018 old
+4019 old
+4020 old
+4021 old
+4022 old
+4023 old
+4024 old
+4025 old
+4026 old
+4027 old
+4028 old
+4029 old
+4030 old
+4031 old
+4032 old
+4033 old
+4034 old
+4035 old
+4036 old
+4037 old
+4038 old
+4039 old
+4040 old
+4041 old
+4042 old
+4043 old
+4044 old
+4045 old
+4046 old
+4047 old
+4048 old
+4049 old
+4050 old
+4051 old
+4052 old
+4053 old
+4054 old
+4055 old
+4056 old
+4057 old
+4058 old
+4059 old
+4060 old
+4061 old
+4062 old
+4063 old
+4064 old
+4065 old
+4066 old
+4067 old
+4068 old
+4069 old
+4070 old
+4071 old
+4072 old
+4073 old
+4074 old
+4075 old
+4076 old
+4077 old
+4078 old
+4079 old
+4080 old
+4081 old
+4082 old
+4083 old
+4084 old
+4085 old
+4086 old
+4087 old
+4088 old
+4089 old
+4090 old
+4091 old
+4092 old
+4093 old
+4094 old
+4095 old
+4096 old
+4097 old
+4098 old
+4099 old
+4100 old
+4101 old
+4102 old
+4103 old
+4104 old
+4105 old
+4106 old
+4107 old
+4108 old
+4109 old
+4110 old
+4111 old
+4112 old
+4113 old
+4114 old
+4115 old
+4116 old
+4117 old
+4118 old
+4119 old
+4120 old
+4121 old
+4122 old
+4123 old
+4124 old
+4125 old
+4126 old
+4127 old
+4128 old
+4129 old
+4130 old
+4131 old
+4132 old
+4133 old
+4134 old
+4135 old
+4136 old
+4137 old
+4138 old
+4139 old
+4140 old
+4141 old
+4142 old
+4143 old
+4144 old
+4145 old
+4146 old
+4147 old
+4148 old
+4149 old
+4150 old
+4151 old
+4152 old
+4153 old
+4154 old
+4155 old
+4156 old
+4157 old
+4158 old
+4159 old
+4160 old
+4161 old
+4162 old
+4163 old
+4164 old
+4165 old
+4166 old
+4167 old
+4168 old
+4169 old
+4170 old
+4171 old
+4172 old
+4173 old
+4174 old
+4175 old
+4176 old
+4177 old
+4178 old
+4179 old
+4180 old
+4181 old
+4182 old
+4183 old
+4184 old
+4185 old
+4186 old
+4187 old
+4188 old
+4189 old
+4190 old
+4191 old
+4192 old
+4193 old
+4194 old
+4195 old
+4196 old
+4197 old
+4198 old
+4199 old
+4200 old
+4201 old
+4202 old
+4203 old
+4204 old
+4205 old
+4206 old
+4207 old
+4208 old
+4209 old
+4210 old
+4211 old
+4212 old
+4213 old
+4214 old
+4215 old
+4216 old
+4217 old
+4218 old
+4219 old
+4220 old
+4221 old
+4222 old
+4223 old
+4224 old
+4225 old
+4226 old
+4227 old
+4228 old
+4229 old
+4230 old
+4231 old
+4232 old
+4233 old
+4234 old
+4235 old
+4236 old
+4237 old
+4238 old
+4239 old
+4240 old
+4241 old
+4242 old
+4243 old
+4244 old
+4245 old
+4246 old
+4247 old
+4248 old
+4249 old
+4250 old
+4251 old
+4252 old
+4253 old
+4254 old
+4255 old
+4256 old
+4257 old
+4258 old
+4259 old
+4260 old
+4261 old
+4262 old
+4263 old
+4264 old
+4265 old
+4266 old
+4267 old
+4268 old
+4269 old
+4270 old
+4271 old
+4272 old
+4273 old
+4274 old
+4275 old
+4276 old
+4277 old
+4278 old
+4279 old
+4280 old
+4281 old
+4282 old
+4283 old
+4284 old
+4285 old
+4286 old
+4287 old
+4288 old
+4289 old
+4290 old
+4291 old
+4292 old
+4293 old
+4294 old
+4295 old
+4296 old
+4297 old
+4298 old
+4299 old
+4300 old
+4301 old
+4302 old
+4303 old
+4304 old
+4305 old
+4306 old
+4307 old
+4308 old
+4309 old
+4310 old
+4311 old
+4312 old
+4313 old
+4314 old
+4315 old
+4316 old
+4317 old
+4318 old
+4319 old
+4320 old
+4321 old
+4322 old
+4323 old
+4324 old
+4325 old
+4326 old
+4327 old
+4328 old
+4329 old
+4330 old
+4331 old
+4332 old
+4333 old
+4334 old
+4335 old
+4336 old
+4337 old
+4338 old
+4339 old
+4340 old
+4341 old
+4342 old
+4343 old
+4344 old
+4345 old
+4346 old
+4347 old
+4348 old
+4349 old
+4350 old
+4351 old
+4352 old
+4353 old
+4354 old
+4355 old
+4356 old
+4357 old
+4358 old
+4359 old
+4360 old
+4361 old
+4362 old
+4363 old
+4364 old
+4365 old
+4366 old
+4367 old
+4368 old
+4369 old
+4370 old
+4371 old
+4372 old
+4373 old
+4374 old
+4375 old
+4376 old
+4377 old
+4378 old
+4379 old
+4380 old
+4381 old
+4382 old
+4383 old
+4384 old
+4385 old
+4386 old
+4387 old
+4388 old
+4389 old
+4390 old
+4391 old
+4392 old
+4393 old
+4394 old
+4395 old
+4396 old
+4397 old
+4398 old
+4399 old
+4400 old
+4401 old
+4402 old
+4403 old
+4404 old
+4405 old
+4406 old
+4407 old
+4408 old
+4409 old
+4410 old
+4411 old
+4412 old
+4413 old
+4414 old
+4415 old
+4416 old
+4417 old
+4418 old
+4419 old
+4420 old
+4421 old
+4422 old
+4423 old
+4424 old
+4425 old
+4426 old
+4427 old
+4428 old
+4429 old
+4430 old
+4431 old
+4432 old
+4433 old
+4434 old
+4435 old
+4436 old
+4437 old
+4438 old
+4439 old
+4440 old
+4441 old
+4442 old
+4443 old
+4444 old
+4445 old
+4446 old
+4447 old
+4448 old
+4449 old
+4450 old
+4451 old
+4452 old
+4453 old
+4454 old
+4455 old
+4456 old
+4457 old
+4458 old
+4459 old
+4460 old
+4461 old
+4462 old
+4463 old
+4464 old
+4465 old
+4466 old
+4467 old
+4468 old
+4469 old
+4470 old
+4471 old
+4472 old
+4473 old
+4474 old
+4475 old
+4476 old
+4477 old
+4478 old
+4479 old
+4480 old
+4481 old
+4482 old
+4483 old
+4484 old
+4485 old
+4486 old
+4487 old
+4488 old
+4489 old
+4490 old
+4491 old
+4492 old
+4493 old
+4494 old
+4495 old
+4496 old
+4497 old
+4498 old
+4499 old
+4500 old
+4501 old
+4502 old
+4503 old
+4504 old
+4505 old
+4506 old
+4507 old
+4508 old
+4509 old
+4510 old
+4511 old
+4512 old
+4513 old
+4514 old
+4515 old
+4516 old
+4517 old
+4518 old
+4519 old
+4520 old
+4521 old
+4522 old
+4523 old
+4524 old
+4525 old
+4526 old
+4527 old
+4528 old
+4529 old
+4530 old
+4531 old
+4532 old
+4533 old
+4534 old
+4535 old
+4536 old
+4537 old
+4538 old
+4539 old
+4540 old
+4541 old
+4542 old
+4543 old
+4544 old
+4545 old
+4546 old
+4547 old
+4548 old
+4549 old
+4550 old
+4551 old
+4552 old
+4553 old
+4554 old
+4555 old
+4556 old
+4557 old
+4558 old
+4559 old
+4560 old
+4561 old
+4562 old
+4563 old
+4564 old
+4565 old
+4566 old
+4567 old
+4568 old
+4569 old
+4570 old
+4571 old
+4572 old
+4573 old
+4574 old
+4575 old
+4576 old
+4577 old
+4578 old
+4579 old
+4580 old
+4581 old
+4582 old
+4583 old
+4584 old
+4585 old
+4586 old
+4587 old
+4588 old
+4589 old
+4590 old
+4591 old
+4592 old
+4593 old
+4594 old
+4595 old
+4596 old
+4597 old
+4598 old
+4599 old
+4600 old
+4601 old
+4602 old
+4603 old
+4604 old
+4605 old
+4606 old
+4607 old
+4608 old
+4609 old
+4610 old
+4611 old
+4612 old
+4613 old
+4614 old
+4615 old
+4616 old
+4617 old
+4618 old
+4619 old
+4620 old
+4621 old
+4622 old
+4623 old
+4624 old
+4625 old
+4626 old
+4627 old
+4628 old
+4629 old
+4630 old
+4631 old
+4632 old
+4633 old
+4634 old
+4635 old
+4636 old
+4637 old
+4638 old
+4639 old
+4640 old
+4641 old
+4642 old
+4643 old
+4644 old
+4645 old
+4646 old
+4647 old
+4648 old
+4649 old
+4650 old
+4651 old
+4652 old
+4653 old
+4654 old
+4655 old
+4656 old
+4657 old
+4658 old
+4659 old
+4660 old
+4661 old
+4662 old
+4663 old
+4664 old
+4665 old
+4666 old
+4667 old
+4668 old
+4669 old
+4670 old
+4671 old
+4672 old
+4673 old
+4674 old
+4675 old
+4676 old
+4677 old
+4678 old
+4679 old
+4680 old
+4681 old
+4682 old
+4683 old
+4684 old
+4685 old
+4686 old
+4687 old
+4688 old
+4689 old
+4690 old
+4691 old
+4692 old
+4693 old
+4694 old
+4695 old
+4696 old
+4697 old
+4698 old
+4699 old
+4700 old
+4701 old
+4702 old
+4703 old
+4704 old
+4705 old
+4706 old
+4707 old
+4708 old
+4709 old
+4710 old
+4711 old
+4712 old
+4713 old
+4714 old
+4715 old
+4716 old
+4717 old
+4718 old
+4719 old
+4720 old
+4721 old
+4722 old
+4723 old
+4724 old
+4725 old
+4726 old
+4727 old
+4728 old
+4729 old
+4730 old
+4731 old
+4732 old
+4733 old
+4734 old
+4735 old
+4736 old
+4737 old
+4738 old
+4739 old
+4740 old
+4741 old
+4742 old
+4743 old
+4744 old
+4745 old
+4746 old
+4747 old
+4748 old
+4749 old
+4750 old
+4751 old
+4752 old
+4753 old
+4754 old
+4755 old
+4756 old
+4757 old
+4758 old
+4759 old
+4760 old
+4761 old
+4762 old
+4763 old
+4764 old
+4765 old
+4766 old
+4767 old
+4768 old
+4769 old
+4770 old
+4771 old
+4772 old
+4773 old
+4774 old
+4775 old
+4776 old
+4777 old
+4778 old
+4779 old
+4780 old
+4781 old
+4782 old
+4783 old
+4784 old
+4785 old
+4786 old
+4787 old
+4788 old
+4789 old
+4790 old
+4791 old
+4792 old
+4793 old
+4794 old
+4795 old
+4796 old
+4797 old
+4798 old
+4799 old
+4800 old
+4801 old
+4802 old
+4803 old
+4804 old
+4805 old
+4806 old
+4807 old
+4808 old
+4809 old
+4810 old
+4811 old
+4812 old
+4813 old
+4814 old
+4815 old
+4816 old
+4817 old
+4818 old
+4819 old
+4820 old
+4821 old
+4822 old
+4823 old
+4824 old
+4825 old
+4826 old
+4827 old
+4828 old
+4829 old
+4830 old
+4831 old
+4832 old
+4833 old
+4834 old
+4835 old
+4836 old
+4837 old
+4838 old
+4839 old
+4840 old
+4841 old
+4842 old
+4843 old
+4844 old
+4845 old
+4846 old
+4847 old
+4848 old
+4849 old
+4850 old
+4851 old
+4852 old
+4853 old
+4854 old
+4855 old
+4856 old
+4857 old
+4858 old
+4859 old
+4860 old
+4861 old
+4862 old
+4863 old
+4864 old
+4865 old
+4866 old
+4867 old
+4868 old
+4869 old
+4870 old
+4871 old
+4872 old
+4873 old
+4874 old
+4875 old
+4876 old
+4877 old
+4878 old
+4879 old
+4880 old
+4881 old
+4882 old
+4883 old
+4884 old
+4885 old
+4886 old
+4887 old
+4888 old
+4889 old
+4890 old
+4891 old
+4892 old
+4893 old
+4894 old
+4895 old
+4896 old
+4897 old
+4898 old
+4899 old
+4900 old
+4901 old
+4902 old
+4903 old
+4904 old
+4905 old
+4906 old
+4907 old
+4908 old
+4909 old
+4910 old
+4911 old
+4912 old
+4913 old
+4914 old
+4915 old
+4916 old
+4917 old
+4918 old
+4919 old
+4920 old
+4921 old
+4922 old
+4923 old
+4924 old
+4925 old
+4926 old
+4927 old
+4928 old
+4929 old
+4930 old
+4931 old
+4932 old
+4933 old
+4934 old
+4935 old
+4936 old
+4937 old
+4938 old
+4939 old
+4940 old
+4941 old
+4942 old
+4943 old
+4944 old
+4945 old
+4946 old
+4947 old
+4948 old
+4949 old
+4950 old
+4951 old
+4952 old
+4953 old
+4954 old
+4955 old
+4956 old
+4957 old
+4958 old
+4959 old
+4960 old
+4961 old
+4962 old
+4963 old
+4964 old
+4965 old
+4966 old
+4967 old
+4968 old
+4969 old
+4970 old
+4971 old
+4972 old
+4973 old
+4974 old
+4975 old
+4976 old
+4977 old
+4978 old
+4979 old
+4980 old
+4981 old
+4982 old
+4983 old
+4984 old
+4985 old
+4986 old
+4987 old
+4988 old
+4989 old
+4990 old
+4991 old
+4992 old
+4993 old
+4994 old
+4995 old
+4996 old
+4997 old
+4998 old
+4999 old
+5000 old
+5001 old
+5002 old
+5003 old
+5004 old
+5005 old
+5006 old
+5007 old
+5008 old
+5009 old
+5010 old
+5011 old
+5012 old
+5013 old
+5014 old
+5015 old
+5016 old
+5017 old
+5018 old
+5019 old
+5020 old
+5021 old
+5022 old
+5023 old
+5024 old
+5025 old
+5026 old
+5027 old
+5028 old
+5029 old
+5030 old
+5031 old
+5032 old
+5033 old
+5034 old
+5035 old
+5036 old
+5037 old
+5038 old
+5039 old
+5040 old
+5041 old
+5042 old
+5043 old
+5044 old
+5045 old
+5046 old
+5047 old
+5048 old
+5049 old
+5050 old
+5051 old
+5052 old
+5053 old
+5054 old
+5055 old
+5056 old
+5057 old
+5058 old
+5059 old
+5060 old
+5061 old
+5062 old
+5063 old
+5064 old
+5065 old
+5066 old
+5067 old
+5068 old
+5069 old
+5070 old
+5071 old
+5072 old
+5073 old
+5074 old
+5075 old
+5076 old
+5077 old
+5078 old
+5079 old
+5080 old
+5081 old
+5082 old
+5083 old
+5084 old
+5085 old
+5086 old
+5087 old
+5088 old
+5089 old
+5090 old
+5091 old
+5092 old
+5093 old
+5094 old
+5095 old
+5096 old
+5097 old
+5098 old
+5099 old
+5100 old
+5101 old
+5102 old
+5103 old
+5104 old
+5105 old
+5106 old
+5107 old
+5108 old
+5109 old
+5110 old
+5111 old
+5112 old
+5113 old
+5114 old
+5115 old
+5116 old
+5117 old
+5118 old
+5119 old
+5120 old
+5121 old
+5122 old
+5123 old
+5124 old
+5125 old
+5126 old
+5127 old
+5128 old
+5129 old
+5130 old
+5131 old
+5132 old
+5133 old
+5134 old
+5135 old
+5136 old
+5137 old
+5138 old
+5139 old
+5140 old
+5141 old
+5142 old
+5143 old
+5144 old
+5145 old
+5146 old
+5147 old
+5148 old
+5149 old
+5150 old
+5151 old
+5152 old
+5153 old
+5154 old
+5155 old
+5156 old
+5157 old
+5158 old
+5159 old
+5160 old
+5161 old
+5162 old
+5163 old
+5164 old
+5165 old
+5166 old
+5167 old
+5168 old
+5169 old
+5170 old
+5171 old
+5172 old
+5173 old
+5174 old
+5175 old
+5176 old
+5177 old
+5178 old
+5179 old
+5180 old
+5181 old
+5182 old
+5183 old
+5184 old
+5185 old
+5186 old
+5187 old
+5188 old
+5189 old
+5190 old
+5191 old
+5192 old
+5193 old
+5194 old
+5195 old
+5196 old
+5197 old
+5198 old
+5199 old
+5200 old
+5201 old
+5202 old
+5203 old
+5204 old
+5205 old
+5206 old
+5207 old
+5208 old
+5209 old
+5210 old
+5211 old
+5212 old
+5213 old
+5214 old
+5215 old
+5216 old
+5217 old
+5218 old
+5219 old
+5220 old
+5221 old
+5222 old
+5223 old
+5224 old
+5225 old
+5226 old
+5227 old
+5228 old
+5229 old
+5230 old
+5231 old
+5232 old
+5233 old
+5234 old
+5235 old
+5236 old
+5237 old
+5238 old
+5239 old
+5240 old
+5241 old
+5242 old
+5243 old
+5244 old
+5245 old
+5246 old
+5247 old
+5248 old
+5249 old
+5250 old
+5251 old
+5252 old
+5253 old
+5254 old
+5255 old
+5256 old
+5257 old
+5258 old
+5259 old
+5260 old
+5261 old
+5262 old
+5263 old
+5264 old
+5265 old
+5266 old
+5267 old
+5268 old
+5269 old
+5270 old
+5271 old
+5272 old
+5273 old
+5274 old
+5275 old
+5276 old
+5277 old
+5278 old
+5279 old
+5280 old
+5281 old
+5282 old
+5283 old
+5284 old
+5285 old
+5286 old
+5287 old
+5288 old
+5289 old
+5290 old
+5291 old
+5292 old
+5293 old
+5294 old
+5295 old
+5296 old
+5297 old
+5298 old
+5299 old
+5300 old
+5301 old
+5302 old
+5303 old
+5304 old
+5305 old
+5306 old
+5307 old
+5308 old
+5309 old
+5310 old
+5311 old
+5312 old
+5313 old
+5314 old
+5315 old
+5316 old
+5317 old
+5318 old
+5319 old
+5320 old
+5321 old
+5322 old
+5323 old
+5324 old
+5325 old
+5326 old
+5327 old
+5328 old
+5329 old
+5330 old
+5331 old
+5332 old
+5333 old
+5334 old
+5335 old
+5336 old
+5337 old
+5338 old
+5339 old
+5340 old
+5341 old
+5342 old
+5343 old
+5344 old
+5345 old
+5346 old
+5347 old
+5348 old
+5349 old
+5350 old
+5351 old
+5352 old
+5353 old
+5354 old
+5355 old
+5356 old
+5357 old
+5358 old
+5359 old
+5360 old
+5361 old
+5362 old
+5363 old
+5364 old
+5365 old
+5366 old
+5367 old
+5368 old
+5369 old
+5370 old
+5371 old
+5372 old
+5373 old
+5374 old
+5375 old
+5376 old
+5377 old
+5378 old
+5379 old
+5380 old
+5381 old
+5382 old
+5383 old
+5384 old
+5385 old
+5386 old
+5387 old
+5388 old
+5389 old
+5390 old
+5391 old
+5392 old
+5393 old
+5394 old
+5395 old
+5396 old
+5397 old
+5398 old
+5399 old
+5400 old
+5401 old
+5402 old
+5403 old
+5404 old
+5405 old
+5406 old
+5407 old
+5408 old
+5409 old
+5410 old
+5411 old
+5412 old
+5413 old
+5414 old
+5415 old
+5416 old
+5417 old
+5418 old
+5419 old
+5420 old
+5421 old
+5422 old
+5423 old
+5424 old
+5425 old
+5426 old
+5427 old
+5428 old
+5429 old
+5430 old
+5431 old
+5432 old
+5433 old
+5434 old
+5435 old
+5436 old
+5437 old
+5438 old
+5439 old
+5440 old
+5441 old
+5442 old
+5443 old
+5444 old
+5445 old
+5446 old
+5447 old
+5448 old
+5449 old
+5450 old
+5451 old
+5452 old
+5453 old
+5454 old
+5455 old
+5456 old
+5457 old
+5458 old
+5459 old
+5460 old
+5461 old
+5462 old
+5463 old
+5464 old
+5465 old
+5466 old
+5467 old
+5468 old
+5469 old
+5470 old
+5471 old
+5472 old
+5473 old
+5474 old
+5475 old
+5476 old
+5477 old
+5478 old
+5479 old
+5480 old
+5481 old
+5482 old
+5483 old
+5484 old
+5485 old
+5486 old
+5487 old
+5488 old
+5489 old
+5490 old
+5491 old
+5492 old
+5493 old
+5494 old
+5495 old
+5496 old
+5497 old
+5498 old
+5499 old
+5500 old
+5501 old
+5502 old
+5503 old
+5504 old
+5505 old
+5506 old
+5507 old
+5508 old
+5509 old
+5510 old
+5511 old
+5512 old
+5513 old
+5514 old
+5515 old
+5516 old
+5517 old
+5518 old
+5519 old
+5520 old
+5521 old
+5522 old
+5523 old
+5524 old
+5525 old
+5526 old
+5527 old
+5528 old
+5529 old
+5530 old
+5531 old
+5532 old
+5533 old
+5534 old
+5535 old
+5536 old
+5537 old
+5538 old
+5539 old
+5540 old
+5541 old
+5542 old
+5543 old
+5544 old
+5545 old
+5546 old
+5547 old
+5548 old
+5549 old
+5550 old
+5551 old
+5552 old
+5553 old
+5554 old
+5555 old
+5556 old
+5557 old
+5558 old
+5559 old
+5560 old
+5561 old
+5562 old
+5563 old
+5564 old
+5565 old
+5566 old
+5567 old
+5568 old
+5569 old
+5570 old
+5571 old
+5572 old
+5573 old
+5574 old
+5575 old
+5576 old
+5577 old
+5578 old
+5579 old
+5580 old
+5581 old
+5582 old
+5583 old
+5584 old
+5585 old
+5586 old
+5587 old
+5588 old
+5589 old
+5590 old
+5591 old
+5592 old
+5593 old
+5594 old
+5595 old
+5596 old
+5597 old
+5598 old
+5599 old
+5600 old
+5601 old
+5602 old
+5603 old
+5604 old
+5605 old
+5606 old
+5607 old
+5608 old
+5609 old
+5610 old
+5611 old
+5612 old
+5613 old
+5614 old
+5615 old
+5616 old
+5617 old
+5618 old
+5619 old
+5620 old
+5621 old
+5622 old
+5623 old
+5624 old
+5625 old
+5626 old
+5627 old
+5628 old
+5629 old
+5630 old
+5631 old
+5632 old
+5633 old
+5634 old
+5635 old
+5636 old
+5637 old
+5638 old
+5639 old
+5640 old
+5641 old
+5642 old
+5643 old
+5644 old
+5645 old
+5646 old
+5647 old
+5648 old
+5649 old
+5650 old
+5651 old
+5652 old
+5653 old
+5654 old
+5655 old
+5656 old
+5657 old
+5658 old
+5659 old
+5660 old
+5661 old
+5662 old
+5663 old
+5664 old
+5665 old
+5666 old
+5667 old
+5668 old
+5669 old
+5670 old
+5671 old
+5672 old
+5673 old
+5674 old
+5675 old
+5676 old
+5677 old
+5678 old
+5679 old
+5680 old
+5681 old
+5682 old
+5683 old
+5684 old
+5685 old
+5686 old
+5687 old
+5688 old
+5689 old
+5690 old
+5691 old
+5692 old
+5693 old
+5694 old
+5695 old
+5696 old
+5697 old
+5698 old
+5699 old
+5700 old
+5701 old
+5702 old
+5703 old
+5704 old
+5705 old
+5706 old
+5707 old
+5708 old
+5709 old
+5710 old
+5711 old
+5712 old
+5713 old
+5714 old
+5715 old
+5716 old
+5717 old
+5718 old
+5719 old
+5720 old
+5721 old
+5722 old
+5723 old
+5724 old
+5725 old
+5726 old
+5727 old
+5728 old
+5729 old
+5730 old
+5731 old
+5732 old
+5733 old
+5734 old
+5735 old
+5736 old
+5737 old
+5738 old
+5739 old
+5740 old
+5741 old
+5742 old
+5743 old
+5744 old
+5745 old
+5746 old
+5747 old
+5748 old
+5749 old
+5750 old
+5751 old
+5752 old
+5753 old
+5754 old
+5755 old
+5756 old
+5757 old
+5758 old
+5759 old
+5760 old
+5761 old
+5762 old
+5763 old
+5764 old
+5765 old
+5766 old
+5767 old
+5768 old
+5769 old
+5770 old
+5771 old
+5772 old
+5773 old
+5774 old
+5775 old
+5776 old
+5777 old
+5778 old
+5779 old
+5780 old
+5781 old
+5782 old
+5783 old
+5784 old
+5785 old
+5786 old
+5787 old
+5788 old
+5789 old
+5790 old
+5791 old
+5792 old
+5793 old
+5794 old
+5795 old
+5796 old
+5797 old
+5798 old
+5799 old
+5800 old
+5801 old
+5802 old
+5803 old
+5804 old
+5805 old
+5806 old
+5807 old
+5808 old
+5809 old
+5810 old
+5811 old
+5812 old
+5813 old
+5814 old
+5815 old
+5816 old
+5817 old
+5818 old
+5819 old
+5820 old
+5821 old
+5822 old
+5823 old
+5824 old
+5825 old
+5826 old
+5827 old
+5828 old
+5829 old
+5830 old
+5831 old
+5832 old
+5833 old
+5834 old
+5835 old
+5836 old
+5837 old
+5838 old
+5839 old
+5840 old
+5841 old
+5842 old
+5843 old
+5844 old
+5845 old
+5846 old
+5847 old
+5848 old
+5849 old
+5850 old
+5851 old
+5852 old
+5853 old
+5854 old
+5855 old
+5856 old
+5857 old
+5858 old
+5859 old
+5860 old
+5861 old
+5862 old
+5863 old
+5864 old
+5865 old
+5866 old
+5867 old
+5868 old
+5869 old
+5870 old
+5871 old
+5872 old
+5873 old
+5874 old
+5875 old
+5876 old
+5877 old
+5878 old
+5879 old
+5880 old
+5881 old
+5882 old
+5883 old
+5884 old
+5885 old
+5886 old
+5887 old
+5888 old
+5889 old
+5890 old
+5891 old
+5892 old
+5893 old
+5894 old
+5895 old
+5896 old
+5897 old
+5898 old
+5899 old
+5900 old
+5901 old
+5902 old
+5903 old
+5904 old
+5905 old
+5906 old
+5907 old
+5908 old
+5909 old
+5910 old
+5911 old
+5912 old
+5913 old
+5914 old
+5915 old
+5916 old
+5917 old
+5918 old
+5919 old
+5920 old
+5921 old
+5922 old
+5923 old
+5924 old
+5925 old
+5926 old
+5927 old
+5928 old
+5929 old
+5930 old
+5931 old
+5932 old
+5933 old
+5934 old
+5935 old
+5936 old
+5937 old
+5938 old
+5939 old
+5940 old
+5941 old
+5942 old
+5943 old
+5944 old
+5945 old
+5946 old
+5947 old
+5948 old
+5949 old
+5950 old
+5951 old
+5952 old
+5953 old
+5954 old
+5955 old
+5956 old
+5957 old
+5958 old
+5959 old
+5960 old
+5961 old
+5962 old
+5963 old
+5964 old
+5965 old
+5966 old
+5967 old
+5968 old
+5969 old
+5970 old
+5971 old
+5972 old
+5973 old
+5974 old
+5975 old
+5976 old
+5977 old
+5978 old
+5979 old
+5980 old
+5981 old
+5982 old
+5983 old
+5984 old
+5985 old
+5986 old
+5987 old
+5988 old
+5989 old
+5990 old
+5991 old
+5992 old
+5993 old
+5994 old
+5995 old
+5996 old
+5997 old
+5998 old
+5999 old
+6000 old
+6001 old
+6002 old
+6003 old
+6004 old
+6005 old
+6006 old
+6007 old
+6008 old
+6009 old
+6010 old
+6011 old
+6012 old
+6013 old
+6014 old
+6015 old
+6016 old
+6017 old
+6018 old
+6019 old
+6020 old
+6021 old
+6022 old
+6023 old
+6024 old
+6025 old
+6026 old
+6027 old
+6028 old
+6029 old
+6030 old
+6031 old
+6032 old
+6033 old
+6034 old
+6035 old
+6036 old
+6037 old
+6038 old
+6039 old
+6040 old
+6041 old
+6042 old
+6043 old
+6044 old
+6045 old
+6046 old
+6047 old
+6048 old
+6049 old
+6050 old
+6051 old
+6052 old
+6053 old
+6054 old
+6055 old
+6056 old
+6057 old
+6058 old
+6059 old
+6060 old
+6061 old
+6062 old
+6063 old
+6064 old
+6065 old
+6066 old
+6067 old
+6068 old
+6069 old
+6070 old
+6071 old
+6072 old
+6073 old
+6074 old
+6075 old
+6076 old
+6077 old
+6078 old
+6079 old
+6080 old
+6081 old
+6082 old
+6083 old
+6084 old
+6085 old
+6086 old
+6087 old
+6088 old
+6089 old
+6090 old
+6091 old
+6092 old
+6093 old
+6094 old
+6095 old
+6096 old
+6097 old
+6098 old
+6099 old
+6100 old
+6101 old
+6102 old
+6103 old
+6104 old
+6105 old
+6106 old
+6107 old
+6108 old
+6109 old
+6110 old
+6111 old
+6112 old
+6113 old
+6114 old
+6115 old
+6116 old
+6117 old
+6118 old
+6119 old
+6120 old
+6121 old
+6122 old
+6123 old
+6124 old
+6125 old
+6126 old
+6127 old
+6128 old
+6129 old
+6130 old
+6131 old
+6132 old
+6133 old
+6134 old
+6135 old
+6136 old
+6137 old
+6138 old
+6139 old
+6140 old
+6141 old
+6142 old
+6143 old
+6144 old
+6145 old
+6146 old
+6147 old
+6148 old
+6149 old
+6150 old
+6151 old
+6152 old
+6153 old
+6154 old
+6155 old
+6156 old
+6157 old
+6158 old
+6159 old
+6160 old
+6161 old
+6162 old
+6163 old
+6164 old
+6165 old
+6166 old
+6167 old
+6168 old
+6169 old
+6170 old
+6171 old
+6172 old
+6173 old
+6174 old
+6175 old
+6176 old
+6177 old
+6178 old
+6179 old
+6180 old
+6181 old
+6182 old
+6183 old
+6184 old
+6185 old
+6186 old
+6187 old
+6188 old
+6189 old
+6190 old
+6191 old
+6192 old
+6193 old
+6194 old
+6195 old
+6196 old
+6197 old
+6198 old
+6199 old
+6200 old
+6201 old
+6202 old
+6203 old
+6204 old
+6205 old
+6206 old
+6207 old
+6208 old
+6209 old
+6210 old
+6211 old
+6212 old
+6213 old
+6214 old
+6215 old
+6216 old
+6217 old
+6218 old
+6219 old
+6220 old
+6221 old
+6222 old
+6223 old
+6224 old
+6225 old
+6226 old
+6227 old
+6228 old
+6229 old
+6230 old
+6231 old
+6232 old
+6233 old
+6234 old
+6235 old
+6236 old
+6237 old
+6238 old
+6239 old
+6240 old
+6241 old
+6242 old
+6243 old
+6244 old
+6245 old
+6246 old
+6247 old
+6248 old
+6249 old
+6250 old
+6251 old
+6252 old
+6253 old
+6254 old
+6255 old
+6256 old
+6257 old
+6258 old
+6259 old
+6260 old
+6261 old
+6262 old
+6263 old
+6264 old
+6265 old
+6266 old
+6267 old
+6268 old
+6269 old
+6270 old
+6271 old
+6272 old
+6273 old
+6274 old
+6275 old
+6276 old
+6277 old
+6278 old
+6279 old
+6280 old
+6281 old
+6282 old
+6283 old
+6284 old
+6285 old
+6286 old
+6287 old
+6288 old
+6289 old
+6290 old
+6291 old
+6292 old
+6293 old
+6294 old
+6295 old
+6296 old
+6297 old
+6298 old
+6299 old
+6300 old
+6301 old
+6302 old
+6303 old
+6304 old
+6305 old
+6306 old
+6307 old
+6308 old
+6309 old
+6310 old
+6311 old
+6312 old
+6313 old
+6314 old
+6315 old
+6316 old
+6317 old
+6318 old
+6319 old
+6320 old
+6321 old
+6322 old
+6323 old
+6324 old
+6325 old
+6326 old
+6327 old
+6328 old
+6329 old
+6330 old
+6331 old
+6332 old
+6333 old
+6334 old
+6335 old
+6336 old
+6337 old
+6338 old
+6339 old
+6340 old
+6341 old
+6342 old
+6343 old
+6344 old
+6345 old
+6346 old
+6347 old
+6348 old
+6349 old
+6350 old
+6351 old
+6352 old
+6353 old
+6354 old
+6355 old
+6356 old
+6357 old
+6358 old
+6359 old
+6360 old
+6361 old
+6362 old
+6363 old
+6364 old
+6365 old
+6366 old
+6367 old
+6368 old
+6369 old
+6370 old
+6371 old
+6372 old
+6373 old
+6374 old
+6375 old
+6376 old
+6377 old
+6378 old
+6379 old
+6380 old
+6381 old
+6382 old
+6383 old
+6384 old
+6385 old
+6386 old
+6387 old
+6388 old
+6389 old
+6390 old
+6391 old
+6392 old
+6393 old
+6394 old
+6395 old
+6396 old
+6397 old
+6398 old
+6399 old
+6400 old
+6401 old
+6402 old
+6403 old
+6404 old
+6405 old
+6406 old
+6407 old
+6408 old
+6409 old
+6410 old
+6411 old
+6412 old
+6413 old
+6414 old
+6415 old
+6416 old
+6417 old
+6418 old
+6419 old
+6420 old
+6421 old
+6422 old
+6423 old
+6424 old
+6425 old
+6426 old
+6427 old
+6428 old
+6429 old
+6430 old
+6431 old
+6432 old
+6433 old
+6434 old
+6435 old
+6436 old
+6437 old
+6438 old
+6439 old
+6440 old
+6441 old
+6442 old
+6443 old
+6444 old
+6445 old
+6446 old
+6447 old
+6448 old
+6449 old
+6450 old
+6451 old
+6452 old
+6453 old
+6454 old
+6455 old
+6456 old
+6457 old
+6458 old
+6459 old
+6460 old
+6461 old
+6462 old
+6463 old
+6464 old
+6465 old
+6466 old
+6467 old
+6468 old
+6469 old
+6470 old
+6471 old
+6472 old
+6473 old
+6474 old
+6475 old
+6476 old
+6477 old
+6478 old
+6479 old
+6480 old
+6481 old
+6482 old
+6483 old
+6484 old
+6485 old
+6486 old
+6487 old
+6488 old
+6489 old
+6490 old
+6491 old
+6492 old
+6493 old
+6494 old
+6495 old
+6496 old
+6497 old
+6498 old
+6499 old
+6500 old
+6501 old
+6502 old
+6503 old
+6504 old
+6505 old
+6506 old
+6507 old
+6508 old
+6509 old
+6510 old
+6511 old
+6512 old
+6513 old
+6514 old
+6515 old
+6516 old
+6517 old
+6518 old
+6519 old
+6520 old
+6521 old
+6522 old
+6523 old
+6524 old
+6525 old
+6526 old
+6527 old
+6528 old
+6529 old
+6530 old
+6531 old
+6532 old
+6533 old
+6534 old
+6535 old
+6536 old
+6537 old
+6538 old
+6539 old
+6540 old
+6541 old
+6542 old
+6543 old
+6544 old
+6545 old
+6546 old
+6547 old
+6548 old
+6549 old
+6550 old
+6551 old
+6552 old
+6553 old
+6554 old
+6555 old
+6556 old
+6557 old
+6558 old
+6559 old
+6560 old
+6561 old
+6562 old
+6563 old
+6564 old
+6565 old
+6566 old
+6567 old
+6568 old
+6569 old
+6570 old
+6571 old
+6572 old
+6573 old
+6574 old
+6575 old
+6576 old
+6577 old
+6578 old
+6579 old
+6580 old
+6581 old
+6582 old
+6583 old
+6584 old
+6585 old
+6586 old
+6587 old
+6588 old
+6589 old
+6590 old
+6591 old
+6592 old
+6593 old
+6594 old
+6595 old
+6596 old
+6597 old
+6598 old
+6599 old
+6600 old
+6601 old
+6602 old
+6603 old
+6604 old
+6605 old
+6606 old
+6607 old
+6608 old
+6609 old
+6610 old
+6611 old
+6612 old
+6613 old
+6614 old
+6615 old
+6616 old
+6617 old
+6618 old
+6619 old
+6620 old
+6621 old
+6622 old
+6623 old
+6624 old
+6625 old
+6626 old
+6627 old
+6628 old
+6629 old
+6630 old
+6631 old
+6632 old
+6633 old
+6634 old
+6635 old
+6636 old
+6637 old
+6638 old
+6639 old
+6640 old
+6641 old
+6642 old
+6643 old
+6644 old
+6645 old
+6646 old
+6647 old
+6648 old
+6649 old
+6650 old
+6651 old
+6652 old
+6653 old
+6654 old
+6655 old
+6656 old
+6657 old
+6658 old
+6659 old
+6660 old
+6661 old
+6662 old
+6663 old
+6664 old
+6665 old
+6666 old
+6667 old
+6668 old
+6669 old
+6670 old
+6671 old
+6672 old
+6673 old
+6674 old
+6675 old
+6676 old
+6677 old
+6678 old
+6679 old
+6680 old
+6681 old
+6682 old
+6683 old
+6684 old
+6685 old
+6686 old
+6687 old
+6688 old
+6689 old
+6690 old
+6691 old
+6692 old
+6693 old
+6694 old
+6695 old
+6696 old
+6697 old
+6698 old
+6699 old
+6700 old
+6701 old
+6702 old
+6703 old
+6704 old
+6705 old
+6706 old
+6707 old
+6708 old
+6709 old
+6710 old
+6711 old
+6712 old
+6713 old
+6714 old
+6715 old
+6716 old
+6717 old
+6718 old
+6719 old
+6720 old
+6721 old
+6722 old
+6723 old
+6724 old
+6725 old
+6726 old
+6727 old
+6728 old
+6729 old
+6730 old
+6731 old
+6732 old
+6733 old
+6734 old
+6735 old
+6736 old
+6737 old
+6738 old
+6739 old
+6740 old
+6741 old
+6742 old
+6743 old
+6744 old
+6745 old
+6746 old
+6747 old
+6748 old
+6749 old
+6750 old
+6751 old
+6752 old
+6753 old
+6754 old
+6755 old
+6756 old
+6757 old
+6758 old
+6759 old
+6760 old
+6761 old
+6762 old
+6763 old
+6764 old
+6765 old
+6766 old
+6767 old
+6768 old
+6769 old
+6770 old
+6771 old
+6772 old
+6773 old
+6774 old
+6775 old
+6776 old
+6777 old
+6778 old
+6779 old
+6780 old
+6781 old
+6782 old
+6783 old
+6784 old
+6785 old
+6786 old
+6787 old
+6788 old
+6789 old
+6790 old
+6791 old
+6792 old
+6793 old
+6794 old
+6795 old
+6796 old
+6797 old
+6798 old
+6799 old
+6800 old
+6801 old
+6802 old
+6803 old
+6804 old
+6805 old
+6806 old
+6807 old
+6808 old
+6809 old
+6810 old
+6811 old
+6812 old
+6813 old
+6814 old
+6815 old
+6816 old
+6817 old
+6818 old
+6819 old
+6820 old
+6821 old
+6822 old
+6823 old
+6824 old
+6825 old
+6826 old
+6827 old
+6828 old
+6829 old
+6830 old
+6831 old
+6832 old
+6833 old
+6834 old
+6835 old
+6836 old
+6837 old
+6838 old
+6839 old
+6840 old
+6841 old
+6842 old
+6843 old
+6844 old
+6845 old
+6846 old
+6847 old
+6848 old
+6849 old
+6850 old
+6851 old
+6852 old
+6853 old
+6854 old
+6855 old
+6856 old
+6857 old
+6858 old
+6859 old
+6860 old
+6861 old
+6862 old
+6863 old
+6864 old
+6865 old
+6866 old
+6867 old
+6868 old
+6869 old
+6870 old
+6871 old
+6872 old
+6873 old
+6874 old
+6875 old
+6876 old
+6877 old
+6878 old
+6879 old
+6880 old
+6881 old
+6882 old
+6883 old
+6884 old
+6885 old
+6886 old
+6887 old
+6888 old
+6889 old
+6890 old
+6891 old
+6892 old
+6893 old
+6894 old
+6895 old
+6896 old
+6897 old
+6898 old
+6899 old
+6900 old
+6901 old
+6902 old
+6903 old
+6904 old
+6905 old
+6906 old
+6907 old
+6908 old
+6909 old
+6910 old
+6911 old
+6912 old
+6913 old
+6914 old
+6915 old
+6916 old
+6917 old
+6918 old
+6919 old
+6920 old
+6921 old
+6922 old
+6923 old
+6924 old
+6925 old
+6926 old
+6927 old
+6928 old
+6929 old
+6930 old
+6931 old
+6932 old
+6933 old
+6934 old
+6935 old
+6936 old
+6937 old
+6938 old
+6939 old
+6940 old
+6941 old
+6942 old
+6943 old
+6944 old
+6945 old
+6946 old
+6947 old
+6948 old
+6949 old
+6950 old
+6951 old
+6952 old
+6953 old
+6954 old
+6955 old
+6956 old
+6957 old
+6958 old
+6959 old
+6960 old
+6961 old
+6962 old
+6963 old
+6964 old
+6965 old
+6966 old
+6967 old
+6968 old
+6969 old
+6970 old
+6971 old
+6972 old
+6973 old
+6974 old
+6975 old
+6976 old
+6977 old
+6978 old
+6979 old
+6980 old
+6981 old
+6982 old
+6983 old
+6984 old
+6985 old
+6986 old
+6987 old
+6988 old
+6989 old
+6990 old
+6991 old
+6992 old
+6993 old
+6994 old
+6995 old
+6996 old
+6997 old
+6998 old
+6999 old
+7000 old
+7001 old
+7002 old
+7003 old
+7004 old
+7005 old
+7006 old
+7007 old
+7008 old
+7009 old
+7010 old
+7011 old
+7012 old
+7013 old
+7014 old
+7015 old
+7016 old
+7017 old
+7018 old
+7019 old
+7020 old
+7021 old
+7022 old
+7023 old
+7024 old
+7025 old
+7026 old
+7027 old
+7028 old
+7029 old
+7030 old
+7031 old
+7032 old
+7033 old
+7034 old
+7035 old
+7036 old
+7037 old
+7038 old
+7039 old
+7040 old
+7041 old
+7042 old
+7043 old
+7044 old
+7045 old
+7046 old
+7047 old
+7048 old
+7049 old
+7050 old
+7051 old
+7052 old
+7053 old
+7054 old
+7055 old
+7056 old
+7057 old
+7058 old
+7059 old
+7060 old
+7061 old
+7062 old
+7063 old
+7064 old
+7065 old
+7066 old
+7067 old
+7068 old
+7069 old
+7070 old
+7071 old
+7072 old
+7073 old
+7074 old
+7075 old
+7076 old
+7077 old
+7078 old
+7079 old
+7080 old
+7081 old
+7082 old
+7083 old
+7084 old
+7085 old
+7086 old
+7087 old
+7088 old
+7089 old
+7090 old
+7091 old
+7092 old
+7093 old
+7094 old
+7095 old
+7096 old
+7097 old
+7098 old
+7099 old
+7100 old
+7101 old
+7102 old
+7103 old
+7104 old
+7105 old
+7106 old
+7107 old
+7108 old
+7109 old
+7110 old
+7111 old
+7112 old
+7113 old
+7114 old
+7115 old
+7116 old
+7117 old
+7118 old
+7119 old
+7120 old
+7121 old
+7122 old
+7123 old
+7124 old
+7125 old
+7126 old
+7127 old
+7128 old
+7129 old
+7130 old
+7131 old
+7132 old
+7133 old
+7134 old
+7135 old
+7136 old
+7137 old
+7138 old
+7139 old
+7140 old
+7141 old
+7142 old
+7143 old
+7144 old
+7145 old
+7146 old
+7147 old
+7148 old
+7149 old
+7150 old
+7151 old
+7152 old
+7153 old
+7154 old
+7155 old
+7156 old
+7157 old
+7158 old
+7159 old
+7160 old
+7161 old
+7162 old
+7163 old
+7164 old
+7165 old
+7166 old
+7167 old
+7168 old
+7169 old
+7170 old
+7171 old
+7172 old
+7173 old
+7174 old
+7175 old
+7176 old
+7177 old
+7178 old
+7179 old
+7180 old
+7181 old
+7182 old
+7183 old
+7184 old
+7185 old
+7186 old
+7187 old
+7188 old
+7189 old
+7190 old
+7191 old
+7192 old
+7193 old
+7194 old
+7195 old
+7196 old
+7197 old
+7198 old
+7199 old
+7200 old
+7201 old
+7202 old
+7203 old
+7204 old
+7205 old
+7206 old
+7207 old
+7208 old
+7209 old
+7210 old
+7211 old
+7212 old
+7213 old
+7214 old
+7215 old
+7216 old
+7217 old
+7218 old
+7219 old
+7220 old
+7221 old
+7222 old
+7223 old
+7224 old
+7225 old
+7226 old
+7227 old
+7228 old
+7229 old
+7230 old
+7231 old
+7232 old
+7233 old
+7234 old
+7235 old
+7236 old
+7237 old
+7238 old
+7239 old
+7240 old
+7241 old
+7242 old
+7243 old
+7244 old
+7245 old
+7246 old
+7247 old
+7248 old
+7249 old
+7250 old
+7251 old
+7252 old
+7253 old
+7254 old
+7255 old
+7256 old
+7257 old
+7258 old
+7259 old
+7260 old
+7261 old
+7262 old
+7263 old
+7264 old
+7265 old
+7266 old
+7267 old
+7268 old
+7269 old
+7270 old
+7271 old
+7272 old
+7273 old
+7274 old
+7275 old
+7276 old
+7277 old
+7278 old
+7279 old
+7280 old
+7281 old
+7282 old
+7283 old
+7284 old
+7285 old
+7286 old
+7287 old
+7288 old
+7289 old
+7290 old
+7291 old
+7292 old
+7293 old
+7294 old
+7295 old
+7296 old
+7297 old
+7298 old
+7299 old
+7300 old
+7301 old
+7302 old
+7303 old
+7304 old
+7305 old
+7306 old
+7307 old
+7308 old
+7309 old
+7310 old
+7311 old
+7312 old
+7313 old
+7314 old
+7315 old
+7316 old
+7317 old
+7318 old
+7319 old
+7320 old
+7321 old
+7322 old
+7323 old
+7324 old
+7325 old
+7326 old
+7327 old
+7328 old
+7329 old
+7330 old
+7331 old
+7332 old
+7333 old
+7334 old
+7335 old
+7336 old
+7337 old
+7338 old
+7339 old
+7340 old
+7341 old
+7342 old
+7343 old
+7344 old
+7345 old
+7346 old
+7347 old
+7348 old
+7349 old
+7350 old
+7351 old
+7352 old
+7353 old
+7354 old
+7355 old
+7356 old
+7357 old
+7358 old
+7359 old
+7360 old
+7361 old
+7362 old
+7363 old
+7364 old
+7365 old
+7366 old
+7367 old
+7368 old
+7369 old
+7370 old
+7371 old
+7372 old
+7373 old
+7374 old
+7375 old
+7376 old
+7377 old
+7378 old
+7379 old
+7380 old
+7381 old
+7382 old
+7383 old
+7384 old
+7385 old
+7386 old
+7387 old
+7388 old
+7389 old
+7390 old
+7391 old
+7392 old
+7393 old
+7394 old
+7395 old
+7396 old
+7397 old
+7398 old
+7399 old
+7400 old
+7401 old
+7402 old
+7403 old
+7404 old
+7405 old
+7406 old
+7407 old
+7408 old
+7409 old
+7410 old
+7411 old
+7412 old
+7413 old
+7414 old
+7415 old
+7416 old
+7417 old
+7418 old
+7419 old
+7420 old
+7421 old
+7422 old
+7423 old
+7424 old
+7425 old
+7426 old
+7427 old
+7428 old
+7429 old
+7430 old
+7431 old
+7432 old
+7433 old
+7434 old
+7435 old
+7436 old
+7437 old
+7438 old
+7439 old
+7440 old
+7441 old
+7442 old
+7443 old
+7444 old
+7445 old
+7446 old
+7447 old
+7448 old
+7449 old
+7450 old
+7451 old
+7452 old
+7453 old
+7454 old
+7455 old
+7456 old
+7457 old
+7458 old
+7459 old
+7460 old
+7461 old
+7462 old
+7463 old
+7464 old
+7465 old
+7466 old
+7467 old
+7468 old
+7469 old
+7470 old
+7471 old
+7472 old
+7473 old
+7474 old
+7475 old
+7476 old
+7477 old
+7478 old
+7479 old
+7480 old
+7481 old
+7482 old
+7483 old
+7484 old
+7485 old
+7486 old
+7487 old
+7488 old
+7489 old
+7490 old
+7491 old
+7492 old
+7493 old
+7494 old
+7495 old
+7496 old
+7497 old
+7498 old
+7499 old
+7500 old
+7501 old
+7502 old
+7503 old
+7504 old
+7505 old
+7506 old
+7507 old
+7508 old
+7509 old
+7510 old
+7511 old
+7512 old
+7513 old
+7514 old
+7515 old
+7516 old
+7517 old
+7518 old
+7519 old
+7520 old
+7521 old
+7522 old
+7523 old
+7524 old
+7525 old
+7526 old
+7527 old
+7528 old
+7529 old
+7530 old
+7531 old
+7532 old
+7533 old
+7534 old
+7535 old
+7536 old
+7537 old
+7538 old
+7539 old
+7540 old
+7541 old
+7542 old
+7543 old
+7544 old
+7545 old
+7546 old
+7547 old
+7548 old
+7549 old
+7550 old
+7551 old
+7552 old
+7553 old
+7554 old
+7555 old
+7556 old
+7557 old
+7558 old
+7559 old
+7560 old
+7561 old
+7562 old
+7563 old
+7564 old
+7565 old
+7566 old
+7567 old
+7568 old
+7569 old
+7570 old
+7571 old
+7572 old
+7573 old
+7574 old
+7575 old
+7576 old
+7577 old
+7578 old
+7579 old
+7580 old
+7581 old
+7582 old
+7583 old
+7584 old
+7585 old
+7586 old
+7587 old
+7588 old
+7589 old
+7590 old
+7591 old
+7592 old
+7593 old
+7594 old
+7595 old
+7596 old
+7597 old
+7598 old
+7599 old
+7600 old
+7601 old
+7602 old
+7603 old
+7604 old
+7605 old
+7606 old
+7607 old
+7608 old
+7609 old
+7610 old
+7611 old
+7612 old
+7613 old
+7614 old
+7615 old
+7616 old
+7617 old
+7618 old
+7619 old
+7620 old
+7621 old
+7622 old
+7623 old
+7624 old
+7625 old
+7626 old
+7627 old
+7628 old
+7629 old
+7630 old
+7631 old
+7632 old
+7633 old
+7634 old
+7635 old
+7636 old
+7637 old
+7638 old
+7639 old
+7640 old
+7641 old
+7642 old
+7643 old
+7644 old
+7645 old
+7646 old
+7647 old
+7648 old
+7649 old
+7650 old
+7651 old
+7652 old
+7653 old
+7654 old
+7655 old
+7656 old
+7657 old
+7658 old
+7659 old
+7660 old
+7661 old
+7662 old
+7663 old
+7664 old
+7665 old
+7666 old
+7667 old
+7668 old
+7669 old
+7670 old
+7671 old
+7672 old
+7673 old
+7674 old
+7675 old
+7676 old
+7677 old
+7678 old
+7679 old
+7680 old
+7681 old
+7682 old
+7683 old
+7684 old
+7685 old
+7686 old
+7687 old
+7688 old
+7689 old
+7690 old
+7691 old
+7692 old
+7693 old
+7694 old
+7695 old
+7696 old
+7697 old
+7698 old
+7699 old
+7700 old
+7701 old
+7702 old
+7703 old
+7704 old
+7705 old
+7706 old
+7707 old
+7708 old
+7709 old
+7710 old
+7711 old
+7712 old
+7713 old
+7714 old
+7715 old
+7716 old
+7717 old
+7718 old
+7719 old
+7720 old
+7721 old
+7722 old
+7723 old
+7724 old
+7725 old
+7726 old
+7727 old
+7728 old
+7729 old
+7730 old
+7731 old
+7732 old
+7733 old
+7734 old
+7735 old
+7736 old
+7737 old
+7738 old
+7739 old
+7740 old
+7741 old
+7742 old
+7743 old
+7744 old
+7745 old
+7746 old
+7747 old
+7748 old
+7749 old
+7750 old
+7751 old
+7752 old
+7753 old
+7754 old
+7755 old
+7756 old
+7757 old
+7758 old
+7759 old
+7760 old
+7761 old
+7762 old
+7763 old
+7764 old
+7765 old
+7766 old
+7767 old
+7768 old
+7769 old
+7770 old
+7771 old
+7772 old
+7773 old
+7774 old
+7775 old
+7776 old
+7777 old
+7778 old
+7779 old
+7780 old
+7781 old
+7782 old
+7783 old
+7784 old
+7785 old
+7786 old
+7787 old
+7788 old
+7789 old
+7790 old
+7791 old
+7792 old
+7793 old
+7794 old
+7795 old
+7796 old
+7797 old
+7798 old
+7799 old
+7800 old
+7801 old
+7802 old
+7803 old
+7804 old
+7805 old
+7806 old
+7807 old
+7808 old
+7809 old
+7810 old
+7811 old
+7812 old
+7813 old
+7814 old
+7815 old
+7816 old
+7817 old
+7818 old
+7819 old
+7820 old
+7821 old
+7822 old
+7823 old
+7824 old
+7825 old
+7826 old
+7827 old
+7828 old
+7829 old
+7830 old
+7831 old
+7832 old
+7833 old
+7834 old
+7835 old
+7836 old
+7837 old
+7838 old
+7839 old
+7840 old
+7841 old
+7842 old
+7843 old
+7844 old
+7845 old
+7846 old
+7847 old
+7848 old
+7849 old
+7850 old
+7851 old
+7852 old
+7853 old
+7854 old
+7855 old
+7856 old
+7857 old
+7858 old
+7859 old
+7860 old
+7861 old
+7862 old
+7863 old
+7864 old
+7865 old
+7866 old
+7867 old
+7868 old
+7869 old
+7870 old
+7871 old
+7872 old
+7873 old
+7874 old
+7875 old
+7876 old
+7877 old
+7878 old
+7879 old
+7880 old
+7881 old
+7882 old
+7883 old
+7884 old
+7885 old
+7886 old
+7887 old
+7888 old
+7889 old
+7890 old
+7891 old
+7892 old
+7893 old
+7894 old
+7895 old
+7896 old
+7897 old
+7898 old
+7899 old
+7900 old
+7901 old
+7902 old
+7903 old
+7904 old
+7905 old
+7906 old
+7907 old
+7908 old
+7909 old
+7910 old
+7911 old
+7912 old
+7913 old
+7914 old
+7915 old
+7916 old
+7917 old
+7918 old
+7919 old
+7920 old
+7921 old
+7922 old
+7923 old
+7924 old
+7925 old
+7926 old
+7927 old
+7928 old
+7929 old
+7930 old
+7931 old
+7932 old
+7933 old
+7934 old
+7935 old
+7936 old
+7937 old
+7938 old
+7939 old
+7940 old
+7941 old
+7942 old
+7943 old
+7944 old
+7945 old
+7946 old
+7947 old
+7948 old
+7949 old
+7950 old
+7951 old
+7952 old
+7953 old
+7954 old
+7955 old
+7956 old
+7957 old
+7958 old
+7959 old
+7960 old
+7961 old
+7962 old
+7963 old
+7964 old
+7965 old
+7966 old
+7967 old
+7968 old
+7969 old
+7970 old
+7971 old
+7972 old
+7973 old
+7974 old
+7975 old
+7976 old
+7977 old
+7978 old
+7979 old
+7980 old
+7981 old
+7982 old
+7983 old
+7984 old
+7985 old
+7986 old
+7987 old
+7988 old
+7989 old
+7990 old
+7991 old
+7992 old
+7993 old
+7994 old
+7995 old
+7996 old
+7997 old
+7998 old
+7999 old
+8000 old
+8001 old
+8002 old
+8003 old
+8004 old
+8005 old
+8006 old
+8007 old
+8008 old
+8009 old
+8010 old
+8011 old
+8012 old
+8013 old
+8014 old
+8015 old
+8016 old
+8017 old
+8018 old
+8019 old
+8020 old
+8021 old
+8022 old
+8023 old
+8024 old
+8025 old
+8026 old
+8027 old
+8028 old
+8029 old
+8030 old
+8031 old
+8032 old
+8033 old
+8034 old
+8035 old
+8036 old
+8037 old
+8038 old
+8039 old
+8040 old
+8041 old
+8042 old
+8043 old
+8044 old
+8045 old
+8046 old
+8047 old
+8048 old
+8049 old
+8050 old
+8051 old
+8052 old
+8053 old
+8054 old
+8055 old
+8056 old
+8057 old
+8058 old
+8059 old
+8060 old
+8061 old
+8062 old
+8063 old
+8064 old
+8065 old
+8066 old
+8067 old
+8068 old
+8069 old
+8070 old
+8071 old
+8072 old
+8073 old
+8074 old
+8075 old
+8076 old
+8077 old
+8078 old
+8079 old
+8080 old
+8081 old
+8082 old
+8083 old
+8084 old
+8085 old
+8086 old
+8087 old
+8088 old
+8089 old
+8090 old
+8091 old
+8092 old
+8093 old
+8094 old
+8095 old
+8096 old
+8097 old
+8098 old
+8099 old
+8100 old
+8101 old
+8102 old
+8103 old
+8104 old
+8105 old
+8106 old
+8107 old
+8108 old
+8109 old
+8110 old
+8111 old
+8112 old
+8113 old
+8114 old
+8115 old
+8116 old
+8117 old
+8118 old
+8119 old
+8120 old
+8121 old
+8122 old
+8123 old
+8124 old
+8125 old
+8126 old
+8127 old
+8128 old
+8129 old
+8130 old
+8131 old
+8132 old
+8133 old
+8134 old
+8135 old
+8136 old
+8137 old
+8138 old
+8139 old
+8140 old
+8141 old
+8142 old
+8143 old
+8144 old
+8145 old
+8146 old
+8147 old
+8148 old
+8149 old
+8150 old
+8151 old
+8152 old
+8153 old
+8154 old
+8155 old
+8156 old
+8157 old
+8158 old
+8159 old
+8160 old
+8161 old
+8162 old
+8163 old
+8164 old
+8165 old
+8166 old
+8167 old
+8168 old
+8169 old
+8170 old
+8171 old
+8172 old
+8173 old
+8174 old
+8175 old
+8176 old
+8177 old
+8178 old
+8179 old
+8180 old
+8181 old
+8182 old
+8183 old
+8184 old
+8185 old
+8186 old
+8187 old
+8188 old
+8189 old
+8190 old
+8191 old
+8192 old
+8193 old
+8194 old
+8195 old
+8196 old
+8197 old
+8198 old
+8199 old
+8200 old
+8201 old
+8202 old
+8203 old
+8204 old
+8205 old
+8206 old
+8207 old
+8208 old
+8209 old
+8210 old
+8211 old
+8212 old
+8213 old
+8214 old
+8215 old
+8216 old
+8217 old
+8218 old
+8219 old
+8220 old
+8221 old
+8222 old
+8223 old
+8224 old
+8225 old
+8226 old
+8227 old
+8228 old
+8229 old
+8230 old
+8231 old
+8232 old
+8233 old
+8234 old
+8235 old
+8236 old
+8237 old
+8238 old
+8239 old
+8240 old
+8241 old
+8242 old
+8243 old
+8244 old
+8245 old
+8246 old
+8247 old
+8248 old
+8249 old
+8250 old
+8251 old
+8252 old
+8253 old
+8254 old
+8255 old
+8256 old
+8257 old
+8258 old
+8259 old
+8260 old
+8261 old
+8262 old
+8263 old
+8264 old
+8265 old
+8266 old
+8267 old
+8268 old
+8269 old
+8270 old
+8271 old
+8272 old
+8273 old
+8274 old
+8275 old
+8276 old
+8277 old
+8278 old
+8279 old
+8280 old
+8281 old
+8282 old
+8283 old
+8284 old
+8285 old
+8286 old
+8287 old
+8288 old
+8289 old
+8290 old
+8291 old
+8292 old
+8293 old
+8294 old
+8295 old
+8296 old
+8297 old
+8298 old
+8299 old
+8300 old
+8301 old
+8302 old
+8303 old
+8304 old
+8305 old
+8306 old
+8307 old
+8308 old
+8309 old
+8310 old
+8311 old
+8312 old
+8313 old
+8314 old
+8315 old
+8316 old
+8317 old
+8318 old
+8319 old
+8320 old
+8321 old
+8322 old
+8323 old
+8324 old
+8325 old
+8326 old
+8327 old
+8328 old
+8329 old
+8330 old
+8331 old
+8332 old
+8333 old
+8334 old
+8335 old
+8336 old
+8337 old
+8338 old
+8339 old
+8340 old
+8341 old
+8342 old
+8343 old
+8344 old
+8345 old
+8346 old
+8347 old
+8348 old
+8349 old
+8350 old
+8351 old
+8352 old
+8353 old
+8354 old
+8355 old
+8356 old
+8357 old
+8358 old
+8359 old
+8360 old
+8361 old
+8362 old
+8363 old
+8364 old
+8365 old
+8366 old
+8367 old
+8368 old
+8369 old
+8370 old
+8371 old
+8372 old
+8373 old
+8374 old
+8375 old
+8376 old
+8377 old
+8378 old
+8379 old
+8380 old
+8381 old
+8382 old
+8383 old
+8384 old
+8385 old
+8386 old
+8387 old
+8388 old
+8389 old
+8390 old
+8391 old
+8392 old
+8393 old
+8394 old
+8395 old
+8396 old
+8397 old
+8398 old
+8399 old
+8400 old
+8401 old
+8402 old
+8403 old
+8404 old
+8405 old
+8406 old
+8407 old
+8408 old
+8409 old
+8410 old
+8411 old
+8412 old
+8413 old
+8414 old
+8415 old
+8416 old
+8417 old
+8418 old
+8419 old
+8420 old
+8421 old
+8422 old
+8423 old
+8424 old
+8425 old
+8426 old
+8427 old
+8428 old
+8429 old
+8430 old
+8431 old
+8432 old
+8433 old
+8434 old
+8435 old
+8436 old
+8437 old
+8438 old
+8439 old
+8440 old
+8441 old
+8442 old
+8443 old
+8444 old
+8445 old
+8446 old
+8447 old
+8448 old
+8449 old
+8450 old
+8451 old
+8452 old
+8453 old
+8454 old
+8455 old
+8456 old
+8457 old
+8458 old
+8459 old
+8460 old
+8461 old
+8462 old
+8463 old
+8464 old
+8465 old
+8466 old
+8467 old
+8468 old
+8469 old
+8470 old
+8471 old
+8472 old
+8473 old
+8474 old
+8475 old
+8476 old
+8477 old
+8478 old
+8479 old
+8480 old
+8481 old
+8482 old
+8483 old
+8484 old
+8485 old
+8486 old
+8487 old
+8488 old
+8489 old
+8490 old
+8491 old
+8492 old
+8493 old
+8494 old
+8495 old
+8496 old
+8497 old
+8498 old
+8499 old
+8500 old
+8501 old
+8502 old
+8503 old
+8504 old
+8505 old
+8506 old
+8507 old
+8508 old
+8509 old
+8510 old
+8511 old
+8512 old
+8513 old
+8514 old
+8515 old
+8516 old
+8517 old
+8518 old
+8519 old
+8520 old
+8521 old
+8522 old
+8523 old
+8524 old
+8525 old
+8526 old
+8527 old
+8528 old
+8529 old
+8530 old
+8531 old
+8532 old
+8533 old
+8534 old
+8535 old
+8536 old
+8537 old
+8538 old
+8539 old
+8540 old
+8541 old
+8542 old
+8543 old
+8544 old
+8545 old
+8546 old
+8547 old
+8548 old
+8549 old
+8550 old
+8551 old
+8552 old
+8553 old
+8554 old
+8555 old
+8556 old
+8557 old
+8558 old
+8559 old
+8560 old
+8561 old
+8562 old
+8563 old
+8564 old
+8565 old
+8566 old
+8567 old
+8568 old
+8569 old
+8570 old
+8571 old
+8572 old
+8573 old
+8574 old
+8575 old
+8576 old
+8577 old
+8578 old
+8579 old
+8580 old
+8581 old
+8582 old
+8583 old
+8584 old
+8585 old
+8586 old
+8587 old
+8588 old
+8589 old
+8590 old
+8591 old
+8592 old
+8593 old
+8594 old
+8595 old
+8596 old
+8597 old
+8598 old
+8599 old
+8600 old
+8601 old
+8602 old
+8603 old
+8604 old
+8605 old
+8606 old
+8607 old
+8608 old
+8609 old
+8610 old
+8611 old
+8612 old
+8613 old
+8614 old
+8615 old
+8616 old
+8617 old
+8618 old
+8619 old
+8620 old
+8621 old
+8622 old
+8623 old
+8624 old
+8625 old
+8626 old
+8627 old
+8628 old
+8629 old
+8630 old
+8631 old
+8632 old
+8633 old
+8634 old
+8635 old
+8636 old
+8637 old
+8638 old
+8639 old
+8640 old
+8641 old
+8642 old
+8643 old
+8644 old
+8645 old
+8646 old
+8647 old
+8648 old
+8649 old
+8650 old
+8651 old
+8652 old
+8653 old
+8654 old
+8655 old
+8656 old
+8657 old
+8658 old
+8659 old
+8660 old
+8661 old
+8662 old
+8663 old
+8664 old
+8665 old
+8666 old
+8667 old
+8668 old
+8669 old
+8670 old
+8671 old
+8672 old
+8673 old
+8674 old
+8675 old
+8676 old
+8677 old
+8678 old
+8679 old
+8680 old
+8681 old
+8682 old
+8683 old
+8684 old
+8685 old
+8686 old
+8687 old
+8688 old
+8689 old
+8690 old
+8691 old
+8692 old
+8693 old
+8694 old
+8695 old
+8696 old
+8697 old
+8698 old
+8699 old
+8700 old
+8701 old
+8702 old
+8703 old
+8704 old
+8705 old
+8706 old
+8707 old
+8708 old
+8709 old
+8710 old
+8711 old
+8712 old
+8713 old
+8714 old
+8715 old
+8716 old
+8717 old
+8718 old
+8719 old
+8720 old
+8721 old
+8722 old
+8723 old
+8724 old
+8725 old
+8726 old
+8727 old
+8728 old
+8729 old
+8730 old
+8731 old
+8732 old
+8733 old
+8734 old
+8735 old
+8736 old
+8737 old
+8738 old
+8739 old
+8740 old
+8741 old
+8742 old
+8743 old
+8744 old
+8745 old
+8746 old
+8747 old
+8748 old
+8749 old
+8750 old
+8751 old
+8752 old
+8753 old
+8754 old
+8755 old
+8756 old
+8757 old
+8758 old
+8759 old
+8760 old
+8761 old
+8762 old
+8763 old
+8764 old
+8765 old
+8766 old
+8767 old
+8768 old
+8769 old
+8770 old
+8771 old
+8772 old
+8773 old
+8774 old
+8775 old
+8776 old
+8777 old
+8778 old
+8779 old
+8780 old
+8781 old
+8782 old
+8783 old
+8784 old
+8785 old
+8786 old
+8787 old
+8788 old
+8789 old
+8790 old
+8791 old
+8792 old
+8793 old
+8794 old
+8795 old
+8796 old
+8797 old
+8798 old
+8799 old
+8800 old
+8801 old
+8802 old
+8803 old
+8804 old
+8805 old
+8806 old
+8807 old
+8808 old
+8809 old
+8810 old
+8811 old
+8812 old
+8813 old
+8814 old
+8815 old
+8816 old
+8817 old
+8818 old
+8819 old
+8820 old
+8821 old
+8822 old
+8823 old
+8824 old
+8825 old
+8826 old
+8827 old
+8828 old
+8829 old
+8830 old
+8831 old
+8832 old
+8833 old
+8834 old
+8835 old
+8836 old
+8837 old
+8838 old
+8839 old
+8840 old
+8841 old
+8842 old
+8843 old
+8844 old
+8845 old
+8846 old
+8847 old
+8848 old
+8849 old
+8850 old
+8851 old
+8852 old
+8853 old
+8854 old
+8855 old
+8856 old
+8857 old
+8858 old
+8859 old
+8860 old
+8861 old
+8862 old
+8863 old
+8864 old
+8865 old
+8866 old
+8867 old
+8868 old
+8869 old
+8870 old
+8871 old
+8872 old
+8873 old
+8874 old
+8875 old
+8876 old
+8877 old
+8878 old
+8879 old
+8880 old
+8881 old
+8882 old
+8883 old
+8884 old
+8885 old
+8886 old
+8887 old
+8888 old
+8889 old
+8890 old
+8891 old
+8892 old
+8893 old
+8894 old
+8895 old
+8896 old
+8897 old
+8898 old
+8899 old
+8900 old
+8901 old
+8902 old
+8903 old
+8904 old
+8905 old
+8906 old
+8907 old
+8908 old
+8909 old
+8910 old
+8911 old
+8912 old
+8913 old
+8914 old
+8915 old
+8916 old
+8917 old
+8918 old
+8919 old
+8920 old
+8921 old
+8922 old
+8923 old
+8924 old
+8925 old
+8926 old
+8927 old
+8928 old
+8929 old
+8930 old
+8931 old
+8932 old
+8933 old
+8934 old
+8935 old
+8936 old
+8937 old
+8938 old
+8939 old
+8940 old
+8941 old
+8942 old
+8943 old
+8944 old
+8945 old
+8946 old
+8947 old
+8948 old
+8949 old
+8950 old
+8951 old
+8952 old
+8953 old
+8954 old
+8955 old
+8956 old
+8957 old
+8958 old
+8959 old
+8960 old
+8961 old
+8962 old
+8963 old
+8964 old
+8965 old
+8966 old
+8967 old
+8968 old
+8969 old
+8970 old
+8971 old
+8972 old
+8973 old
+8974 old
+8975 old
+8976 old
+8977 old
+8978 old
+8979 old
+8980 old
+8981 old
+8982 old
+8983 old
+8984 old
+8985 old
+8986 old
+8987 old
+8988 old
+8989 old
+8990 old
+8991 old
+8992 old
+8993 old
+8994 old
+8995 old
+8996 old
+8997 old
+8998 old
+8999 old
+9000 old
+9001 old
+9002 old
+9003 old
+9004 old
+9005 old
+9006 old
+9007 old
+9008 old
+9009 old
+9010 old
+9011 old
+9012 old
+9013 old
+9014 old
+9015 old
+9016 old
+9017 old
+9018 old
+9019 old
+9020 old
+9021 old
+9022 old
+9023 old
+9024 old
+9025 old
+9026 old
+9027 old
+9028 old
+9029 old
+9030 old
+9031 old
+9032 old
+9033 old
+9034 old
+9035 old
+9036 old
+9037 old
+9038 old
+9039 old
+9040 old
+9041 old
+9042 old
+9043 old
+9044 old
+9045 old
+9046 old
+9047 old
+9048 old
+9049 old
+9050 old
+9051 old
+9052 old
+9053 old
+9054 old
+9055 old
+9056 old
+9057 old
+9058 old
+9059 old
+9060 old
+9061 old
+9062 old
+9063 old
+9064 old
+9065 old
+9066 old
+9067 old
+9068 old
+9069 old
+9070 old
+9071 old
+9072 old
+9073 old
+9074 old
+9075 old
+9076 old
+9077 old
+9078 old
+9079 old
+9080 old
+9081 old
+9082 old
+9083 old
+9084 old
+9085 old
+9086 old
+9087 old
+9088 old
+9089 old
+9090 old
+9091 old
+9092 old
+9093 old
+9094 old
+9095 old
+9096 old
+9097 old
+9098 old
+9099 old
+9100 old
+9101 old
+9102 old
+9103 old
+9104 old
+9105 old
+9106 old
+9107 old
+9108 old
+9109 old
+9110 old
+9111 old
+9112 old
+9113 old
+9114 old
+9115 old
+9116 old
+9117 old
+9118 old
+9119 old
+9120 old
+9121 old
+9122 old
+9123 old
+9124 old
+9125 old
+9126 old
+9127 old
+9128 old
+9129 old
+9130 old
+9131 old
+9132 old
+9133 old
+9134 old
+9135 old
+9136 old
+9137 old
+9138 old
+9139 old
+9140 old
+9141 old
+9142 old
+9143 old
+9144 old
+9145 old
+9146 old
+9147 old
+9148 old
+9149 old
+9150 old
+9151 old
+9152 old
+9153 old
+9154 old
+9155 old
+9156 old
+9157 old
+9158 old
+9159 old
+9160 old
+9161 old
+9162 old
+9163 old
+9164 old
+9165 old
+9166 old
+9167 old
+9168 old
+9169 old
+9170 old
+9171 old
+9172 old
+9173 old
+9174 old
+9175 old
+9176 old
+9177 old
+9178 old
+9179 old
+9180 old
+9181 old
+9182 old
+9183 old
+9184 old
+9185 old
+9186 old
+9187 old
+9188 old
+9189 old
+9190 old
+9191 old
+9192 old
+9193 old
+9194 old
+9195 old
+9196 old
+9197 old
+9198 old
+9199 old
+9200 old
+9201 old
+9202 old
+9203 old
+9204 old
+9205 old
+9206 old
+9207 old
+9208 old
+9209 old
+9210 old
+9211 old
+9212 old
+9213 old
+9214 old
+9215 old
+9216 old
+9217 old
+9218 old
+9219 old
+9220 old
+9221 old
+9222 old
+9223 old
+9224 old
+9225 old
+9226 old
+9227 old
+9228 old
+9229 old
+9230 old
+9231 old
+9232 old
+9233 old
+9234 old
+9235 old
+9236 old
+9237 old
+9238 old
+9239 old
+9240 old
+9241 old
+9242 old
+9243 old
+9244 old
+9245 old
+9246 old
+9247 old
+9248 old
+9249 old
+9250 old
+9251 old
+9252 old
+9253 old
+9254 old
+9255 old
+9256 old
+9257 old
+9258 old
+9259 old
+9260 old
+9261 old
+9262 old
+9263 old
+9264 old
+9265 old
+9266 old
+9267 old
+9268 old
+9269 old
+9270 old
+9271 old
+9272 old
+9273 old
+9274 old
+9275 old
+9276 old
+9277 old
+9278 old
+9279 old
+9280 old
+9281 old
+9282 old
+9283 old
+9284 old
+9285 old
+9286 old
+9287 old
+9288 old
+9289 old
+9290 old
+9291 old
+9292 old
+9293 old
+9294 old
+9295 old
+9296 old
+9297 old
+9298 old
+9299 old
+9300 old
+9301 old
+9302 old
+9303 old
+9304 old
+9305 old
+9306 old
+9307 old
+9308 old
+9309 old
+9310 old
+9311 old
+9312 old
+9313 old
+9314 old
+9315 old
+9316 old
+9317 old
+9318 old
+9319 old
+9320 old
+9321 old
+9322 old
+9323 old
+9324 old
+9325 old
+9326 old
+9327 old
+9328 old
+9329 old
+9330 old
+9331 old
+9332 old
+9333 old
+9334 old
+9335 old
+9336 old
+9337 old
+9338 old
+9339 old
+9340 old
+9341 old
+9342 old
+9343 old
+9344 old
+9345 old
+9346 old
+9347 old
+9348 old
+9349 old
+9350 old
+9351 old
+9352 old
+9353 old
+9354 old
+9355 old
+9356 old
+9357 old
+9358 old
+9359 old
+9360 old
+9361 old
+9362 old
+9363 old
+9364 old
+9365 old
+9366 old
+9367 old
+9368 old
+9369 old
+9370 old
+9371 old
+9372 old
+9373 old
+9374 old
+9375 old
+9376 old
+9377 old
+9378 old
+9379 old
+9380 old
+9381 old
+9382 old
+9383 old
+9384 old
+9385 old
+9386 old
+9387 old
+9388 old
+9389 old
+9390 old
+9391 old
+9392 old
+9393 old
+9394 old
+9395 old
+9396 old
+9397 old
+9398 old
+9399 old
+9400 old
+9401 old
+9402 old
+9403 old
+9404 old
+9405 old
+9406 old
+9407 old
+9408 old
+9409 old
+9410 old
+9411 old
+9412 old
+9413 old
+9414 old
+9415 old
+9416 old
+9417 old
+9418 old
+9419 old
+9420 old
+9421 old
+9422 old
+9423 old
+9424 old
+9425 old
+9426 old
+9427 old
+9428 old
+9429 old
+9430 old
+9431 old
+9432 old
+9433 old
+9434 old
+9435 old
+9436 old
+9437 old
+9438 old
+9439 old
+9440 old
+9441 old
+9442 old
+9443 old
+9444 old
+9445 old
+9446 old
+9447 old
+9448 old
+9449 old
+9450 old
+9451 old
+9452 old
+9453 old
+9454 old
+9455 old
+9456 old
+9457 old
+9458 old
+9459 old
+9460 old
+9461 old
+9462 old
+9463 old
+9464 old
+9465 old
+9466 old
+9467 old
+9468 old
+9469 old
+9470 old
+9471 old
+9472 old
+9473 old
+9474 old
+9475 old
+9476 old
+9477 old
+9478 old
+9479 old
+9480 old
+9481 old
+9482 old
+9483 old
+9484 old
+9485 old
+9486 old
+9487 old
+9488 old
+9489 old
+9490 old
+9491 old
+9492 old
+9493 old
+9494 old
+9495 old
+9496 old
+9497 old
+9498 old
+9499 old
+9500 old
+9501 old
+9502 old
+9503 old
+9504 old
+9505 old
+9506 old
+9507 old
+9508 old
+9509 old
+9510 old
+9511 old
+9512 old
+9513 old
+9514 old
+9515 old
+9516 old
+9517 old
+9518 old
+9519 old
+9520 old
+9521 old
+9522 old
+9523 old
+9524 old
+9525 old
+9526 old
+9527 old
+9528 old
+9529 old
+9530 old
+9531 old
+9532 old
+9533 old
+9534 old
+9535 old
+9536 old
+9537 old
+9538 old
+9539 old
+9540 old
+9541 old
+9542 old
+9543 old
+9544 old
+9545 old
+9546 old
+9547 old
+9548 old
+9549 old
+9550 old
+9551 old
+9552 old
+9553 old
+9554 old
+9555 old
+9556 old
+9557 old
+9558 old
+9559 old
+9560 old
+9561 old
+9562 old
+9563 old
+9564 old
+9565 old
+9566 old
+9567 old
+9568 old
+9569 old
+9570 old
+9571 old
+9572 old
+9573 old
+9574 old
+9575 old
+9576 old
+9577 old
+9578 old
+9579 old
+9580 old
+9581 old
+9582 old
+9583 old
+9584 old
+9585 old
+9586 old
+9587 old
+9588 old
+9589 old
+9590 old
+9591 old
+9592 old
+9593 old
+9594 old
+9595 old
+9596 old
+9597 old
+9598 old
+9599 old
+9600 old
+9601 old
+9602 old
+9603 old
+9604 old
+9605 old
+9606 old
+9607 old
+9608 old
+9609 old
+9610 old
+9611 old
+9612 old
+9613 old
+9614 old
+9615 old
+9616 old
+9617 old
+9618 old
+9619 old
+9620 old
+9621 old
+9622 old
+9623 old
+9624 old
+9625 old
+9626 old
+9627 old
+9628 old
+9629 old
+9630 old
+9631 old
+9632 old
+9633 old
+9634 old
+9635 old
+9636 old
+9637 old
+9638 old
+9639 old
+9640 old
+9641 old
+9642 old
+9643 old
+9644 old
+9645 old
+9646 old
+9647 old
+9648 old
+9649 old
+9650 old
+9651 old
+9652 old
+9653 old
+9654 old
+9655 old
+9656 old
+9657 old
+9658 old
+9659 old
+9660 old
+9661 old
+9662 old
+9663 old
+9664 old
+9665 old
+9666 old
+9667 old
+9668 old
+9669 old
+9670 old
+9671 old
+9672 old
+9673 old
+9674 old
+9675 old
+9676 old
+9677 old
+9678 old
+9679 old
+9680 old
+9681 old
+9682 old
+9683 old
+9684 old
+9685 old
+9686 old
+9687 old
+9688 old
+9689 old
+9690 old
+9691 old
+9692 old
+9693 old
+9694 old
+9695 old
+9696 old
+9697 old
+9698 old
+9699 old
+9700 old
+9701 old
+9702 old
+9703 old
+9704 old
+9705 old
+9706 old
+9707 old
+9708 old
+9709 old
+9710 old
+9711 old
+9712 old
+9713 old
+9714 old
+9715 old
+9716 old
+9717 old
+9718 old
+9719 old
+9720 old
+9721 old
+9722 old
+9723 old
+9724 old
+9725 old
+9726 old
+9727 old
+9728 old
+9729 old
+9730 old
+9731 old
+9732 old
+9733 old
+9734 old
+9735 old
+9736 old
+9737 old
+9738 old
+9739 old
+9740 old
+9741 old
+9742 old
+9743 old
+9744 old
+9745 old
+9746 old
+9747 old
+9748 old
+9749 old
+9750 old
+9751 old
+9752 old
+9753 old
+9754 old
+9755 old
+9756 old
+9757 old
+9758 old
+9759 old
+9760 old
+9761 old
+9762 old
+9763 old
+9764 old
+9765 old
+9766 old
+9767 old
+9768 old
+9769 old
+9770 old
+9771 old
+9772 old
+9773 old
+9774 old
+9775 old
+9776 old
+9777 old
+9778 old
+9779 old
+9780 old
+9781 old
+9782 old
+9783 old
+9784 old
+9785 old
+9786 old
+9787 old
+9788 old
+9789 old
+9790 old
+9791 old
+9792 old
+9793 old
+9794 old
+9795 old
+9796 old
+9797 old
+9798 old
+9799 old
+9800 old
+9801 old
+9802 old
+9803 old
+9804 old
+9805 old
+9806 old
+9807 old
+9808 old
+9809 old
+9810 old
+9811 old
+9812 old
+9813 old
+9814 old
+9815 old
+9816 old
+9817 old
+9818 old
+9819 old
+9820 old
+9821 old
+9822 old
+9823 old
+9824 old
+9825 old
+9826 old
+9827 old
+9828 old
+9829 old
+9830 old
+9831 old
+9832 old
+9833 old
+9834 old
+9835 old
+9836 old
+9837 old
+9838 old
+9839 old
+9840 old
+9841 old
+9842 old
+9843 old
+9844 old
+9845 old
+9846 old
+9847 old
+9848 old
+9849 old
+9850 old
+9851 old
+9852 old
+9853 old
+9854 old
+9855 old
+9856 old
+9857 old
+9858 old
+9859 old
+9860 old
+9861 old
+9862 old
+9863 old
+9864 old
+9865 old
+9866 old
+9867 old
+9868 old
+9869 old
+9870 old
+9871 old
+9872 old
+9873 old
+9874 old
+9875 old
+9876 old
+9877 old
+9878 old
+9879 old
+9880 old
+9881 old
+9882 old
+9883 old
+9884 old
+9885 old
+9886 old
+9887 old
+9888 old
+9889 old
+9890 old
+9891 old
+9892 old
+9893 old
+9894 old
+9895 old
+9896 old
+9897 old
+9898 old
+9899 old
+9900 old
+9901 old
+9902 old
+9903 old
+9904 old
+9905 old
+9906 old
+9907 old
+9908 old
+9909 old
+9910 old
+9911 old
+9912 old
+9913 old
+9914 old
+9915 old
+9916 old
+9917 old
+9918 old
+9919 old
+9920 old
+9921 old
+9922 old
+9923 old
+9924 old
+9925 old
+9926 old
+9927 old
+9928 old
+9929 old
+9930 old
+9931 old
+9932 old
+9933 old
+9934 old
+9935 old
+9936 old
+9937 old
+9938 old
+9939 old
+9940 old
+9941 old
+9942 old
+9943 old
+9944 old
+9945 old
+9946 old
+9947 old
+9948 old
+9949 old
+9950 old
+9951 old
+9952 old
+9953 old
+9954 old
+9955 old
+9956 old
+9957 old
+9958 old
+9959 old
+9960 old
+9961 old
+9962 old
+9963 old
+9964 old
+9965 old
+9966 old
+9967 old
+9968 old
+9969 old
+9970 old
+9971 old
+9972 old
+9973 old
+9974 old
+9975 old
+9976 old
+9977 old
+9978 old
+9979 old
+9980 old
+9981 old
+9982 old
+9983 old
+9984 old
+9985 old
+9986 old
+9987 old
+9988 old
+9989 old
+9990 old
+9991 old
+9992 old
+9993 old
+9994 old
+9995 old
+9996 old
+9997 old
+9998 old
+9999 old
+10000 old

=== added file 'mysql-test/suite/ndb/std_data/table_data100000.dat'
--- a/mysql-test/suite/ndb/std_data/table_data100000.dat	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb/std_data/table_data100000.dat	2009-03-30 12:56:12 +0000
@@ -0,0 +1,10000 @@
+1 old
+2 old
+3 old
+4 old
+5 old
+6 old
+7 old
+8 old
+9 old
+10 old
+11 old
+12 old
+13 old
+14 old
+15 old
+16 old
+17 old
+18 old
+19 old
+20 old
+21 old
+22 old
+23 old
+24 old
+25 old
+26 old
+27 old
+28 old
+29 old
+30 old
+31 old
+32 old
+33 old
+34 old
+35 old
+36 old
+37 old
+38 old
+39 old
+40 old
+41 old
+42 old
+43 old
+44 old
+45 old
+46 old
+47 old
+48 old
+49 old
+50 old
+51 old
+52 old
+53 old
+54 old
+55 old
+56 old
+57 old
+58 old
+59 old
+60 old
+61 old
+62 old
+63 old
+64 old
+65 old
+66 old
+67 old
+68 old
+69 old
+70 old
+71 old
+72 old
+73 old
+74 old
+75 old
+76 old
+77 old
+78 old
+79 old
+80 old
+81 old
+82 old
+83 old
+84 old
+85 old
+86 old
+87 old
+88 old
+89 old
+90 old
+91 old
+92 old
+93 old
+94 old
+95 old
+96 old
+97 old
+98 old
+99 old
+100 old
+101 old
+102 old
+103 old
+104 old
+105 old
+106 old
+107 old
+108 old
+109 old
+110 old
+111 old
+112 old
+113 old
+114 old
+115 old
+116 old
+117 old
+118 old
+119 old
+120 old
+121 old
+122 old
+123 old
+124 old
+125 old
+126 old
+127 old
+128 old
+129 old
+130 old
+131 old
+132 old
+133 old
+134 old
+135 old
+136 old
+137 old
+138 old
+139 old
+140 old
+141 old
+142 old
+143 old
+144 old
+145 old
+146 old
+147 old
+148 old
+149 old
+150 old
+151 old
+152 old
+153 old
+154 old
+155 old
+156 old
+157 old
+158 old
+159 old
+160 old
+161 old
+162 old
+163 old
+164 old
+165 old
+166 old
+167 old
+168 old
+169 old
+170 old
+171 old
+172 old
+173 old
+174 old
+175 old
+176 old
+177 old
+178 old
+179 old
+180 old
+181 old
+182 old
+183 old
+184 old
+185 old
+186 old
+187 old
+188 old
+189 old
+190 old
+191 old
+192 old
+193 old
+194 old
+195 old
+196 old
+197 old
+198 old
+199 old
+200 old
+201 old
+202 old
+203 old
+204 old
+205 old
+206 old
+207 old
+208 old
+209 old
+210 old
+211 old
+212 old
+213 old
+214 old
+215 old
+216 old
+217 old
+218 old
+219 old
+220 old
+221 old
+222 old
+223 old
+224 old
+225 old
+226 old
+227 old
+228 old
+229 old
+230 old
+231 old
+232 old
+233 old
+234 old
+235 old
+236 old
+237 old
+238 old
+239 old
+240 old
+241 old
+242 old
+243 old
+244 old
+245 old
+246 old
+247 old
+248 old
+249 old
+250 old
+251 old
+252 old
+253 old
+254 old
+255 old
+256 old
+257 old
+258 old
+259 old
+260 old
+261 old
+262 old
+263 old
+264 old
+265 old
+266 old
+267 old
+268 old
+269 old
+270 old
+271 old
+272 old
+273 old
+274 old
+275 old
+276 old
+277 old
+278 old
+279 old
+280 old
+281 old
+282 old
+283 old
+284 old
+285 old
+286 old
+287 old
+288 old
+289 old
+290 old
+291 old
+292 old
+293 old
+294 old
+295 old
+296 old
+297 old
+298 old
+299 old
+300 old
+301 old
+302 old
+303 old
+304 old
+305 old
+306 old
+307 old
+308 old
+309 old
+310 old
+311 old
+312 old
+313 old
+314 old
+315 old
+316 old
+317 old
+318 old
+319 old
+320 old
+321 old
+322 old
+323 old
+324 old
+325 old
+326 old
+327 old
+328 old
+329 old
+330 old
+331 old
+332 old
+333 old
+334 old
+335 old
+336 old
+337 old
+338 old
+339 old
+340 old
+341 old
+342 old
+343 old
+344 old
+345 old
+346 old
+347 old
+348 old
+349 old
+350 old
+351 old
+352 old
+353 old
+354 old
+355 old
+356 old
+357 old
+358 old
+359 old
+360 old
+361 old
+362 old
+363 old
+364 old
+365 old
+366 old
+367 old
+368 old
+369 old
+370 old
+371 old
+372 old
+373 old
+374 old
+375 old
+376 old
+377 old
+378 old
+379 old
+380 old
+381 old
+382 old
+383 old
+384 old
+385 old
+386 old
+387 old
+388 old
+389 old
+390 old
+391 old
+392 old
+393 old
+394 old
+395 old
+396 old
+397 old
+398 old
+399 old
+400 old
+401 old
+402 old
+403 old
+404 old
+405 old
+406 old
+407 old
+408 old
+409 old
+410 old
+411 old
+412 old
+413 old
+414 old
+415 old
+416 old
+417 old
+418 old
+419 old
+420 old
+421 old
+422 old
+423 old
+424 old
+425 old
+426 old
+427 old
+428 old
+429 old
+430 old
+431 old
+432 old
+433 old
+434 old
+435 old
+436 old
+437 old
+438 old
+439 old
+440 old
+441 old
+442 old
+443 old
+444 old
+445 old
+446 old
+447 old
+448 old
+449 old
+450 old
+451 old
+452 old
+453 old
+454 old
+455 old
+456 old
+457 old
+458 old
+459 old
+460 old
+461 old
+462 old
+463 old
+464 old
+465 old
+466 old
+467 old
+468 old
+469 old
+470 old
+471 old
+472 old
+473 old
+474 old
+475 old
+476 old
+477 old
+478 old
+479 old
+480 old
+481 old
+482 old
+483 old
+484 old
+485 old
+486 old
+487 old
+488 old
+489 old
+490 old
+491 old
+492 old
+493 old
+494 old
+495 old
+496 old
+497 old
+498 old
+499 old
+500 old
+501 old
+502 old
+503 old
+504 old
+505 old
+506 old
+507 old
+508 old
+509 old
+510 old
+511 old
+512 old
+513 old
+514 old
+515 old
+516 old
+517 old
+518 old
+519 old
+520 old
+521 old
+522 old
+523 old
+524 old
+525 old
+526 old
+527 old
+528 old
+529 old
+530 old
+531 old
+532 old
+533 old
+534 old
+535 old
+536 old
+537 old
+538 old
+539 old
+540 old
+541 old
+542 old
+543 old
+544 old
+545 old
+546 old
+547 old
+548 old
+549 old
+550 old
+551 old
+552 old
+553 old
+554 old
+555 old
+556 old
+557 old
+558 old
+559 old
+560 old
+561 old
+562 old
+563 old
+564 old
+565 old
+566 old
+567 old
+568 old
+569 old
+570 old
+571 old
+572 old
+573 old
+574 old
+575 old
+576 old
+577 old
+578 old
+579 old
+580 old
+581 old
+582 old
+583 old
+584 old
+585 old
+586 old
+587 old
+588 old
+589 old
+590 old
+591 old
+592 old
+593 old
+594 old
+595 old
+596 old
+597 old
+598 old
+599 old
+600 old
+601 old
+602 old
+603 old
+604 old
+605 old
+606 old
+607 old
+608 old
+609 old
+610 old
+611 old
+612 old
+613 old
+614 old
+615 old
+616 old
+617 old
+618 old
+619 old
+620 old
+621 old
+622 old
+623 old
+624 old
+625 old
+626 old
+627 old
+628 old
+629 old
+630 old
+631 old
+632 old
+633 old
+634 old
+635 old
+636 old
+637 old
+638 old
+639 old
+640 old
+641 old
+642 old
+643 old
+644 old
+645 old
+646 old
+647 old
+648 old
+649 old
+650 old
+651 old
+652 old
+653 old
+654 old
+655 old
+656 old
+657 old
+658 old
+659 old
+660 old
+661 old
+662 old
+663 old
+664 old
+665 old
+666 old
+667 old
+668 old
+669 old
+670 old
+671 old
+672 old
+673 old
+674 old
+675 old
+676 old
+677 old
+678 old
+679 old
+680 old
+681 old
+682 old
+683 old
+684 old
+685 old
+686 old
+687 old
+688 old
+689 old
+690 old
+691 old
+692 old
+693 old
+694 old
+695 old
+696 old
+697 old
+698 old
+699 old
+700 old
+701 old
+702 old
+703 old
+704 old
+705 old
+706 old
+707 old
+708 old
+709 old
+710 old
+711 old
+712 old
+713 old
+714 old
+715 old
+716 old
+717 old
+718 old
+719 old
+720 old
+721 old
+722 old
+723 old
+724 old
+725 old
+726 old
+727 old
+728 old
+729 old
+730 old
+731 old
+732 old
+733 old
+734 old
+735 old
+736 old
+737 old
+738 old
+739 old
+740 old
+741 old
+742 old
+743 old
+744 old
+745 old
+746 old
+747 old
+748 old
+749 old
+750 old
+751 old
+752 old
+753 old
+754 old
+755 old
+756 old
+757 old
+758 old
+759 old
+760 old
+761 old
+762 old
+763 old
+764 old
+765 old
+766 old
+767 old
+768 old
+769 old
+770 old
+771 old
+772 old
+773 old
+774 old
+775 old
+776 old
+777 old
+778 old
+779 old
+780 old
+781 old
+782 old
+783 old
+784 old
+785 old
+786 old
+787 old
+788 old
+789 old
+790 old
+791 old
+792 old
+793 old
+794 old
+795 old
+796 old
+797 old
+798 old
+799 old
+800 old
+801 old
+802 old
+803 old
+804 old
+805 old
+806 old
+807 old
+808 old
+809 old
+810 old
+811 old
+812 old
+813 old
+814 old
+815 old
+816 old
+817 old
+818 old
+819 old
+820 old
+821 old
+822 old
+823 old
+824 old
+825 old
+826 old
+827 old
+828 old
+829 old
+830 old
+831 old
+832 old
+833 old
+834 old
+835 old
+836 old
+837 old
+838 old
+839 old
+840 old
+841 old
+842 old
+843 old
+844 old
+845 old
+846 old
+847 old
+848 old
+849 old
+850 old
+851 old
+852 old
+853 old
+854 old
+855 old
+856 old
+857 old
+858 old
+859 old
+860 old
+861 old
+862 old
+863 old
+864 old
+865 old
+866 old
+867 old
+868 old
+869 old
+870 old
+871 old
+872 old
+873 old
+874 old
+875 old
+876 old
+877 old
+878 old
+879 old
+880 old
+881 old
+882 old
+883 old
+884 old
+885 old
+886 old
+887 old
+888 old
+889 old
+890 old
+891 old
+892 old
+893 old
+894 old
+895 old
+896 old
+897 old
+898 old
+899 old
+900 old
+901 old
+902 old
+903 old
+904 old
+905 old
+906 old
+907 old
+908 old
+909 old
+910 old
+911 old
+912 old
+913 old
+914 old
+915 old
+916 old
+917 old
+918 old
+919 old
+920 old
+921 old
+922 old
+923 old
+924 old
+925 old
+926 old
+927 old
+928 old
+929 old
+930 old
+931 old
+932 old
+933 old
+934 old
+935 old
+936 old
+937 old
+938 old
+939 old
+940 old
+941 old
+942 old
+943 old
+944 old
+945 old
+946 old
+947 old
+948 old
+949 old
+950 old
+951 old
+952 old
+953 old
+954 old
+955 old
+956 old
+957 old
+958 old
+959 old
+960 old
+961 old
+962 old
+963 old
+964 old
+965 old
+966 old
+967 old
+968 old
+969 old
+970 old
+971 old
+972 old
+973 old
+974 old
+975 old
+976 old
+977 old
+978 old
+979 old
+980 old
+981 old
+982 old
+983 old
+984 old
+985 old
+986 old
+987 old
+988 old
+989 old
+990 old
+991 old
+992 old
+993 old
+994 old
+995 old
+996 old
+997 old
+998 old
+999 old
+1000 old
+1001 old
+1002 old
+1003 old
+1004 old
+1005 old
+1006 old
+1007 old
+1008 old
+1009 old
+1010 old
+1011 old
+1012 old
+1013 old
+1014 old
+1015 old
+1016 old
+1017 old
+1018 old
+1019 old
+1020 old
+1021 old
+1022 old
+1023 old
+1024 old
+1025 old
+1026 old
+1027 old
+1028 old
+1029 old
+1030 old
+1031 old
+1032 old
+1033 old
+1034 old
+1035 old
+1036 old
+1037 old
+1038 old
+1039 old
+1040 old
+1041 old
+1042 old
+1043 old
+1044 old
+1045 old
+1046 old
+1047 old
+1048 old
+1049 old
+1050 old
+1051 old
+1052 old
+1053 old
+1054 old
+1055 old
+1056 old
+1057 old
+1058 old
+1059 old
+1060 old
+1061 old
+1062 old
+1063 old
+1064 old
+1065 old
+1066 old
+1067 old
+1068 old
+1069 old
+1070 old
+1071 old
+1072 old
+1073 old
+1074 old
+1075 old
+1076 old
+1077 old
+1078 old
+1079 old
+1080 old
+1081 old
+1082 old
+1083 old
+1084 old
+1085 old
+1086 old
+1087 old
+1088 old
+1089 old
+1090 old
+1091 old
+1092 old
+1093 old
+1094 old
+1095 old
+1096 old
+1097 old
+1098 old
+1099 old
+1100 old
+1101 old
+1102 old
+1103 old
+1104 old
+1105 old
+1106 old
+1107 old
+1108 old
+1109 old
+1110 old
+1111 old
+1112 old
+1113 old
+1114 old
+1115 old
+1116 old
+1117 old
+1118 old
+1119 old
+1120 old
+1121 old
+1122 old
+1123 old
+1124 old
+1125 old
+1126 old
+1127 old
+1128 old
+1129 old
+1130 old
+1131 old
+1132 old
+1133 old
+1134 old
+1135 old
+1136 old
+1137 old
+1138 old
+1139 old
+1140 old
+1141 old
+1142 old
+1143 old
+1144 old
+1145 old
+1146 old
+1147 old
+1148 old
+1149 old
+1150 old
+1151 old
+1152 old
+1153 old
+1154 old
+1155 old
+1156 old
+1157 old
+1158 old
+1159 old
+1160 old
+1161 old
+1162 old
+1163 old
+1164 old
+1165 old
+1166 old
+1167 old
+1168 old
+1169 old
+1170 old
+1171 old
+1172 old
+1173 old
+1174 old
+1175 old
+1176 old
+1177 old
+1178 old
+1179 old
+1180 old
+1181 old
+1182 old
+1183 old
+1184 old
+1185 old
+1186 old
+1187 old
+1188 old
+1189 old
+1190 old
+1191 old
+1192 old
+1193 old
+1194 old
+1195 old
+1196 old
+1197 old
+1198 old
+1199 old
+1200 old
+1201 old
+1202 old
+1203 old
+1204 old
+1205 old
+1206 old
+1207 old
+1208 old
+1209 old
+1210 old
+1211 old
+1212 old
+1213 old
+1214 old
+1215 old
+1216 old
+1217 old
+1218 old
+1219 old
+1220 old
+1221 old
+1222 old
+1223 old
+1224 old
+1225 old
+1226 old
+1227 old
+1228 old
+1229 old
+1230 old
+1231 old
+1232 old
+1233 old
+1234 old
+1235 old
+1236 old
+1237 old
+1238 old
+1239 old
+1240 old
+1241 old
+1242 old
+1243 old
+1244 old
+1245 old
+1246 old
+1247 old
+1248 old
+1249 old
+1250 old
+1251 old
+1252 old
+1253 old
+1254 old
+1255 old
+1256 old
+1257 old
+1258 old
+1259 old
+1260 old
+1261 old
+1262 old
+1263 old
+1264 old
+1265 old
+1266 old
+1267 old
+1268 old
+1269 old
+1270 old
+1271 old
+1272 old
+1273 old
+1274 old
+1275 old
+1276 old
+1277 old
+1278 old
+1279 old
+1280 old
+1281 old
+1282 old
+1283 old
+1284 old
+1285 old
+1286 old
+1287 old
+1288 old
+1289 old
+1290 old
+1291 old
+1292 old
+1293 old
+1294 old
+1295 old
+1296 old
+1297 old
+1298 old
+1299 old
+1300 old
+1301 old
+1302 old
+1303 old
+1304 old
+1305 old
+1306 old
+1307 old
+1308 old
+1309 old
+1310 old
+1311 old
+1312 old
+1313 old
+1314 old
+1315 old
+1316 old
+1317 old
+1318 old
+1319 old
+1320 old
+1321 old
+1322 old
+1323 old
+1324 old
+1325 old
+1326 old
+1327 old
+1328 old
+1329 old
+1330 old
+1331 old
+1332 old
+1333 old
+1334 old
+1335 old
+1336 old
+1337 old
+1338 old
+1339 old
+1340 old
+1341 old
+1342 old
+1343 old
+1344 old
+1345 old
+1346 old
+1347 old
+1348 old
+1349 old
+1350 old
+1351 old
+1352 old
+1353 old
+1354 old
+1355 old
+1356 old
+1357 old
+1358 old
+1359 old
+1360 old
+1361 old
+1362 old
+1363 old
+1364 old
+1365 old
+1366 old
+1367 old
+1368 old
+1369 old
+1370 old
+1371 old
+1372 old
+1373 old
+1374 old
+1375 old
+1376 old
+1377 old
+1378 old
+1379 old
+1380 old
+1381 old
+1382 old
+1383 old
+1384 old
+1385 old
+1386 old
+1387 old
+1388 old
+1389 old
+1390 old
+1391 old
+1392 old
+1393 old
+1394 old
+1395 old
+1396 old
+1397 old
+1398 old
+1399 old
+1400 old
+1401 old
+1402 old
+1403 old
+1404 old
+1405 old
+1406 old
+1407 old
+1408 old
+1409 old
+1410 old
+1411 old
+1412 old
+1413 old
+1414 old
+1415 old
+1416 old
+1417 old
+1418 old
+1419 old
+1420 old
+1421 old
+1422 old
+1423 old
+1424 old
+1425 old
+1426 old
+1427 old
+1428 old
+1429 old
+1430 old
+1431 old
+1432 old
+1433 old
+1434 old
+1435 old
+1436 old
+1437 old
+1438 old
+1439 old
+1440 old
+1441 old
+1442 old
+1443 old
+1444 old
+1445 old
+1446 old
+1447 old
+1448 old
+1449 old
+1450 old
+1451 old
+1452 old
+1453 old
+1454 old
+1455 old
+1456 old
+1457 old
+1458 old
+1459 old
+1460 old
+1461 old
+1462 old
+1463 old
+1464 old
+1465 old
+1466 old
+1467 old
+1468 old
+1469 old
+1470 old
+1471 old
+1472 old
+1473 old
+1474 old
+1475 old
+1476 old
+1477 old
+1478 old
+1479 old
+1480 old
+1481 old
+1482 old
+1483 old
+1484 old
+1485 old
+1486 old
+1487 old
+1488 old
+1489 old
+1490 old
+1491 old
+1492 old
+1493 old
+1494 old
+1495 old
+1496 old
+1497 old
+1498 old
+1499 old
+1500 old
+1501 old
+1502 old
+1503 old
+1504 old
+1505 old
+1506 old
+1507 old
+1508 old
+1509 old
+1510 old
+1511 old
+1512 old
+1513 old
+1514 old
+1515 old
+1516 old
+1517 old
+1518 old
+1519 old
+1520 old
+1521 old
+1522 old
+1523 old
+1524 old
+1525 old
+1526 old
+1527 old
+1528 old
+1529 old
+1530 old
+1531 old
+1532 old
+1533 old
+1534 old
+1535 old
+1536 old
+1537 old
+1538 old
+1539 old
+1540 old
+1541 old
+1542 old
+1543 old
+1544 old
+1545 old
+1546 old
+1547 old
+1548 old
+1549 old
+1550 old
+1551 old
+1552 old
+1553 old
+1554 old
+1555 old
+1556 old
+1557 old
+1558 old
+1559 old
+1560 old
+1561 old
+1562 old
+1563 old
+1564 old
+1565 old
+1566 old
+1567 old
+1568 old
+1569 old
+1570 old
+1571 old
+1572 old
+1573 old
+1574 old
+1575 old
+1576 old
+1577 old
+1578 old
+1579 old
+1580 old
+1581 old
+1582 old
+1583 old
+1584 old
+1585 old
+1586 old
+1587 old
+1588 old
+1589 old
+1590 old
+1591 old
+1592 old
+1593 old
+1594 old
+1595 old
+1596 old
+1597 old
+1598 old
+1599 old
+1600 old
+1601 old
+1602 old
+1603 old
+1604 old
+1605 old
+1606 old
+1607 old
+1608 old
+1609 old
+1610 old
+1611 old
+1612 old
+1613 old
+1614 old
+1615 old
+1616 old
+1617 old
+1618 old
+1619 old
+1620 old
+1621 old
+1622 old
+1623 old
+1624 old
+1625 old
+1626 old
+1627 old
+1628 old
+1629 old
+1630 old
+1631 old
+1632 old
+1633 old
+1634 old
+1635 old
+1636 old
+1637 old
+1638 old
+1639 old
+1640 old
+1641 old
+1642 old
+1643 old
+1644 old
+1645 old
+1646 old
+1647 old
+1648 old
+1649 old
+1650 old
+1651 old
+1652 old
+1653 old
+1654 old
+1655 old
+1656 old
+1657 old
+1658 old
+1659 old
+1660 old
+1661 old
+1662 old
+1663 old
+1664 old
+1665 old
+1666 old
+1667 old
+1668 old
+1669 old
+1670 old
+1671 old
+1672 old
+1673 old
+1674 old
+1675 old
+1676 old
+1677 old
+1678 old
+1679 old
+1680 old
+1681 old
+1682 old
+1683 old
+1684 old
+1685 old
+1686 old
+1687 old
+1688 old
+1689 old
+1690 old
+1691 old
+1692 old
+1693 old
+1694 old
+1695 old
+1696 old
+1697 old
+1698 old
+1699 old
+1700 old
+1701 old
+1702 old
+1703 old
+1704 old
+1705 old
+1706 old
+1707 old
+1708 old
+1709 old
+1710 old
+1711 old
+1712 old
+1713 old
+1714 old
+1715 old
+1716 old
+1717 old
+1718 old
+1719 old
+1720 old
+1721 old
+1722 old
+1723 old
+1724 old
+1725 old
+1726 old
+1727 old
+1728 old
+1729 old
+1730 old
+1731 old
+1732 old
+1733 old
+1734 old
+1735 old
+1736 old
+1737 old
+1738 old
+1739 old
+1740 old
+1741 old
+1742 old
+1743 old
+1744 old
+1745 old
+1746 old
+1747 old
+1748 old
+1749 old
+1750 old
+1751 old
+1752 old
+1753 old
+1754 old
+1755 old
+1756 old
+1757 old
+1758 old
+1759 old
+1760 old
+1761 old
+1762 old
+1763 old
+1764 old
+1765 old
+1766 old
+1767 old
+1768 old
+1769 old
+1770 old
+1771 old
+1772 old
+1773 old
+1774 old
+1775 old
+1776 old
+1777 old
+1778 old
+1779 old
+1780 old
+1781 old
+1782 old
+1783 old
+1784 old
+1785 old
+1786 old
+1787 old
+1788 old
+1789 old
+1790 old
+1791 old
+1792 old
+1793 old
+1794 old
+1795 old
+1796 old
+1797 old
+1798 old
+1799 old
+1800 old
+1801 old
+1802 old
+1803 old
+1804 old
+1805 old
+1806 old
+1807 old
+1808 old
+1809 old
+1810 old
+1811 old
+1812 old
+1813 old
+1814 old
+1815 old
+1816 old
+1817 old
+1818 old
+1819 old
+1820 old
+1821 old
+1822 old
+1823 old
+1824 old
+1825 old
+1826 old
+1827 old
+1828 old
+1829 old
+1830 old
+1831 old
+1832 old
+1833 old
+1834 old
+1835 old
+1836 old
+1837 old
+1838 old
+1839 old
+1840 old
+1841 old
+1842 old
+1843 old
+1844 old
+1845 old
+1846 old
+1847 old
+1848 old
+1849 old
+1850 old
+1851 old
+1852 old
+1853 old
+1854 old
+1855 old
+1856 old
+1857 old
+1858 old
+1859 old
+1860 old
+1861 old
+1862 old
+1863 old
+1864 old
+1865 old
+1866 old
+1867 old
+1868 old
+1869 old
+1870 old
+1871 old
+1872 old
+1873 old
+1874 old
+1875 old
+1876 old
+1877 old
+1878 old
+1879 old
+1880 old
+1881 old
+1882 old
+1883 old
+1884 old
+1885 old
+1886 old
+1887 old
+1888 old
+1889 old
+1890 old
+1891 old
+1892 old
+1893 old
+1894 old
+1895 old
+1896 old
+1897 old
+1898 old
+1899 old
+1900 old
+1901 old
+1902 old
+1903 old
+1904 old
+1905 old
+1906 old
+1907 old
+1908 old
+1909 old
+1910 old
+1911 old
+1912 old
+1913 old
+1914 old
+1915 old
+1916 old
+1917 old
+1918 old
+1919 old
+1920 old
+1921 old
+1922 old
+1923 old
+1924 old
+1925 old
+1926 old
+1927 old
+1928 old
+1929 old
+1930 old
+1931 old
+1932 old
+1933 old
+1934 old
+1935 old
+1936 old
+1937 old
+1938 old
+1939 old
+1940 old
+1941 old
+1942 old
+1943 old
+1944 old
+1945 old
+1946 old
+1947 old
+1948 old
+1949 old
+1950 old
+1951 old
+1952 old
+1953 old
+1954 old
+1955 old
+1956 old
+1957 old
+1958 old
+1959 old
+1960 old
+1961 old
+1962 old
+1963 old
+1964 old
+1965 old
+1966 old
+1967 old
+1968 old
+1969 old
+1970 old
+1971 old
+1972 old
+1973 old
+1974 old
+1975 old
+1976 old
+1977 old
+1978 old
+1979 old
+1980 old
+1981 old
+1982 old
+1983 old
+1984 old
+1985 old
+1986 old
+1987 old
+1988 old
+1989 old
+1990 old
+1991 old
+1992 old
+1993 old
+1994 old
+1995 old
+1996 old
+1997 old
+1998 old
+1999 old
+2000 old
+2001 old
+2002 old
+2003 old
+2004 old
+2005 old
+2006 old
+2007 old
+2008 old
+2009 old
+2010 old
+2011 old
+2012 old
+2013 old
+2014 old
+2015 old
+2016 old
+2017 old
+2018 old
+2019 old
+2020 old
+2021 old
+2022 old
+2023 old
+2024 old
+2025 old
+2026 old
+2027 old
+2028 old
+2029 old
+2030 old
+2031 old
+2032 old
+2033 old
+2034 old
+2035 old
+2036 old
+2037 old
+2038 old
+2039 old
+2040 old
+2041 old
+2042 old
+2043 old
+2044 old
+2045 old
+2046 old
+2047 old
+2048 old
+2049 old
+2050 old
+2051 old
+2052 old
+2053 old
+2054 old
+2055 old
+2056 old
+2057 old
+2058 old
+2059 old
+2060 old
+2061 old
+2062 old
+2063 old
+2064 old
+2065 old
+2066 old
+2067 old
+2068 old
+2069 old
+2070 old
+2071 old
+2072 old
+2073 old
+2074 old
+2075 old
+2076 old
+2077 old
+2078 old
+2079 old
+2080 old
+2081 old
+2082 old
+2083 old
+2084 old
+2085 old
+2086 old
+2087 old
+2088 old
+2089 old
+2090 old
+2091 old
+2092 old
+2093 old
+2094 old
+2095 old
+2096 old
+2097 old
+2098 old
+2099 old
+2100 old
+2101 old
+2102 old
+2103 old
+2104 old
+2105 old
+2106 old
+2107 old
+2108 old
+2109 old
+2110 old
+2111 old
+2112 old
+2113 old
+2114 old
+2115 old
+2116 old
+2117 old
+2118 old
+2119 old
+2120 old
+2121 old
+2122 old
+2123 old
+2124 old
+2125 old
+2126 old
+2127 old
+2128 old
+2129 old
+2130 old
+2131 old
+2132 old
+2133 old
+2134 old
+2135 old
+2136 old
+2137 old
+2138 old
+2139 old
+2140 old
+2141 old
+2142 old
+2143 old
+2144 old
+2145 old
+2146 old
+2147 old
+2148 old
+2149 old
+2150 old
+2151 old
+2152 old
+2153 old
+2154 old
+2155 old
+2156 old
+2157 old
+2158 old
+2159 old
+2160 old
+2161 old
+2162 old
+2163 old
+2164 old
+2165 old
+2166 old
+2167 old
+2168 old
+2169 old
+2170 old
+2171 old
+2172 old
+2173 old
+2174 old
+2175 old
+2176 old
+2177 old
+2178 old
+2179 old
+2180 old
+2181 old
+2182 old
+2183 old
+2184 old
+2185 old
+2186 old
+2187 old
+2188 old
+2189 old
+2190 old
+2191 old
+2192 old
+2193 old
+2194 old
+2195 old
+2196 old
+2197 old
+2198 old
+2199 old
+2200 old
+2201 old
+2202 old
+2203 old
+2204 old
+2205 old
+2206 old
+2207 old
+2208 old
+2209 old
+2210 old
+2211 old
+2212 old
+2213 old
+2214 old
+2215 old
+2216 old
+2217 old
+2218 old
+2219 old
+2220 old
+2221 old
+2222 old
+2223 old
+2224 old
+2225 old
+2226 old
+2227 old
+2228 old
+2229 old
+2230 old
+2231 old
+2232 old
+2233 old
+2234 old
+2235 old
+2236 old
+2237 old
+2238 old
+2239 old
+2240 old
+2241 old
+2242 old
+2243 old
+2244 old
+2245 old
+2246 old
+2247 old
+2248 old
+2249 old
+2250 old
+2251 old
+2252 old
+2253 old
+2254 old
+2255 old
+2256 old
+2257 old
+2258 old
+2259 old
+2260 old
+2261 old
+2262 old
+2263 old
+2264 old
+2265 old
+2266 old
+2267 old
+2268 old
+2269 old
+2270 old
+2271 old
+2272 old
+2273 old
+2274 old
+2275 old
+2276 old
+2277 old
+2278 old
+2279 old
+2280 old
+2281 old
+2282 old
+2283 old
+2284 old
+2285 old
+2286 old
+2287 old
+2288 old
+2289 old
+2290 old
+2291 old
+2292 old
+2293 old
+2294 old
+2295 old
+2296 old
+2297 old
+2298 old
+2299 old
+2300 old
+2301 old
+2302 old
+2303 old
+2304 old
+2305 old
+2306 old
+2307 old
+2308 old
+2309 old
+2310 old
+2311 old
+2312 old
+2313 old
+2314 old
+2315 old
+2316 old
+2317 old
+2318 old
+2319 old
+2320 old
+2321 old
+2322 old
+2323 old
+2324 old
+2325 old
+2326 old
+2327 old
+2328 old
+2329 old
+2330 old
+2331 old
+2332 old
+2333 old
+2334 old
+2335 old
+2336 old
+2337 old
+2338 old
+2339 old
+2340 old
+2341 old
+2342 old
+2343 old
+2344 old
+2345 old
+2346 old
+2347 old
+2348 old
+2349 old
+2350 old
+2351 old
+2352 old
+2353 old
+2354 old
+2355 old
+2356 old
+2357 old
+2358 old
+2359 old
+2360 old
+2361 old
+2362 old
+2363 old
+2364 old
+2365 old
+2366 old
+2367 old
+2368 old
+2369 old
+2370 old
+2371 old
+2372 old
+2373 old
+2374 old
+2375 old
+2376 old
+2377 old
+2378 old
+2379 old
+2380 old
+2381 old
+2382 old
+2383 old
+2384 old
+2385 old
+2386 old
+2387 old
+2388 old
+2389 old
+2390 old
+2391 old
+2392 old
+2393 old
+2394 old
+2395 old
+2396 old
+2397 old
+2398 old
+2399 old
+2400 old
+2401 old
+2402 old
+2403 old
+2404 old
+2405 old
+2406 old
+2407 old
+2408 old
+2409 old
+2410 old
+2411 old
+2412 old
+2413 old
+2414 old
+2415 old
+2416 old
+2417 old
+2418 old
+2419 old
+2420 old
+2421 old
+2422 old
+2423 old
+2424 old
+2425 old
+2426 old
+2427 old
+2428 old
+2429 old
+2430 old
+2431 old
+2432 old
+2433 old
+2434 old
+2435 old
+2436 old
+2437 old
+2438 old
+2439 old
+2440 old
+2441 old
+2442 old
+2443 old
+2444 old
+2445 old
+2446 old
+2447 old
+2448 old
+2449 old
+2450 old
+2451 old
+2452 old
+2453 old
+2454 old
+2455 old
+2456 old
+2457 old
+2458 old
+2459 old
+2460 old
+2461 old
+2462 old
+2463 old
+2464 old
+2465 old
+2466 old
+2467 old
+2468 old
+2469 old
+2470 old
+2471 old
+2472 old
+2473 old
+2474 old
+2475 old
+2476 old
+2477 old
+2478 old
+2479 old
+2480 old
+2481 old
+2482 old
+2483 old
+2484 old
+2485 old
+2486 old
+2487 old
+2488 old
+2489 old
+2490 old
+2491 old
+2492 old
+2493 old
+2494 old
+2495 old
+2496 old
+2497 old
+2498 old
+2499 old
+2500 old
+2501 old
+2502 old
+2503 old
+2504 old
+2505 old
+2506 old
+2507 old
+2508 old
+2509 old
+2510 old
+2511 old
+2512 old
+2513 old
+2514 old
+2515 old
+2516 old
+2517 old
+2518 old
+2519 old
+2520 old
+2521 old
+2522 old
+2523 old
+2524 old
+2525 old
+2526 old
+2527 old
+2528 old
+2529 old
+2530 old
+2531 old
+2532 old
+2533 old
+2534 old
+2535 old
+2536 old
+2537 old
+2538 old
+2539 old
+2540 old
+2541 old
+2542 old
+2543 old
+2544 old
+2545 old
+2546 old
+2547 old
+2548 old
+2549 old
+2550 old
+2551 old
+2552 old
+2553 old
+2554 old
+2555 old
+2556 old
+2557 old
+2558 old
+2559 old
+2560 old
+2561 old
+2562 old
+2563 old
+2564 old
+2565 old
+2566 old
+2567 old
+2568 old
+2569 old
+2570 old
+2571 old
+2572 old
+2573 old
+2574 old
+2575 old
+2576 old
+2577 old
+2578 old
+2579 old
+2580 old
+2581 old
+2582 old
+2583 old
+2584 old
+2585 old
+2586 old
+2587 old
+2588 old
+2589 old
+2590 old
+2591 old
+2592 old
+2593 old
+2594 old
+2595 old
+2596 old
+2597 old
+2598 old
+2599 old
+2600 old
+2601 old
+2602 old
+2603 old
+2604 old
+2605 old
+2606 old
+2607 old
+2608 old
+2609 old
+2610 old
+2611 old
+2612 old
+2613 old
+2614 old
+2615 old
+2616 old
+2617 old
+2618 old
+2619 old
+2620 old
+2621 old
+2622 old
+2623 old
+2624 old
+2625 old
+2626 old
+2627 old
+2628 old
+2629 old
+2630 old
+2631 old
+2632 old
+2633 old
+2634 old
+2635 old
+2636 old
+2637 old
+2638 old
+2639 old
+2640 old
+2641 old
+2642 old
+2643 old
+2644 old
+2645 old
+2646 old
+2647 old
+2648 old
+2649 old
+2650 old
+2651 old
+2652 old
+2653 old
+2654 old
+2655 old
+2656 old
+2657 old
+2658 old
+2659 old
+2660 old
+2661 old
+2662 old
+2663 old
+2664 old
+2665 old
+2666 old
+2667 old
+2668 old
+2669 old
+2670 old
+2671 old
+2672 old
+2673 old
+2674 old
+2675 old
+2676 old
+2677 old
+2678 old
+2679 old
+2680 old
+2681 old
+2682 old
+2683 old
+2684 old
+2685 old
+2686 old
+2687 old
+2688 old
+2689 old
+2690 old
+2691 old
+2692 old
+2693 old
+2694 old
+2695 old
+2696 old
+2697 old
+2698 old
+2699 old
+2700 old
+2701 old
+2702 old
+2703 old
+2704 old
+2705 old
+2706 old
+2707 old
+2708 old
+2709 old
+2710 old
+2711 old
+2712 old
+2713 old
+2714 old
+2715 old
+2716 old
+2717 old
+2718 old
+2719 old
+2720 old
+2721 old
+2722 old
+2723 old
+2724 old
+2725 old
+2726 old
+2727 old
+2728 old
+2729 old
+2730 old
+2731 old
+2732 old
+2733 old
+2734 old
+2735 old
+2736 old
+2737 old
+2738 old
+2739 old
+2740 old
+2741 old
+2742 old
+2743 old
+2744 old
+2745 old
+2746 old
+2747 old
+2748 old
+2749 old
+2750 old
+2751 old
+2752 old
+2753 old
+2754 old
+2755 old
+2756 old
+2757 old
+2758 old
+2759 old
+2760 old
+2761 old
+2762 old
+2763 old
+2764 old
+2765 old
+2766 old
+2767 old
+2768 old
+2769 old
+2770 old
+2771 old
+2772 old
+2773 old
+2774 old
+2775 old
+2776 old
+2777 old
+2778 old
+2779 old
+2780 old
+2781 old
+2782 old
+2783 old
+2784 old
+2785 old
+2786 old
+2787 old
+2788 old
+2789 old
+2790 old
+2791 old
+2792 old
+2793 old
+2794 old
+2795 old
+2796 old
+2797 old
+2798 old
+2799 old
+2800 old
+2801 old
+2802 old
+2803 old
+2804 old
+2805 old
+2806 old
+2807 old
+2808 old
+2809 old
+2810 old
+2811 old
+2812 old
+2813 old
+2814 old
+2815 old
+2816 old
+2817 old
+2818 old
+2819 old
+2820 old
+2821 old
+2822 old
+2823 old
+2824 old
+2825 old
+2826 old
+2827 old
+2828 old
+2829 old
+2830 old
+2831 old
+2832 old
+2833 old
+2834 old
+2835 old
+2836 old
+2837 old
+2838 old
+2839 old
+2840 old
+2841 old
+2842 old
+2843 old
+2844 old
+2845 old
+2846 old
+2847 old
+2848 old
+2849 old
+2850 old
+2851 old
+2852 old
+2853 old
+2854 old
+2855 old
+2856 old
+2857 old
+2858 old
+2859 old
+2860 old
+2861 old
+2862 old
+2863 old
+2864 old
+2865 old
+2866 old
+2867 old
+2868 old
+2869 old
+2870 old
+2871 old
+2872 old
+2873 old
+2874 old
+2875 old
+2876 old
+2877 old
+2878 old
+2879 old
+2880 old
+2881 old
+2882 old
+2883 old
+2884 old
+2885 old
+2886 old
+2887 old
+2888 old
+2889 old
+2890 old
+2891 old
+2892 old
+2893 old
+2894 old
+2895 old
+2896 old
+2897 old
+2898 old
+2899 old
+2900 old
+2901 old
+2902 old
+2903 old
+2904 old
+2905 old
+2906 old
+2907 old
+2908 old
+2909 old
+2910 old
+2911 old
+2912 old
+2913 old
+2914 old
+2915 old
+2916 old
+2917 old
+2918 old
+2919 old
+2920 old
+2921 old
+2922 old
+2923 old
+2924 old
+2925 old
+2926 old
+2927 old
+2928 old
+2929 old
+2930 old
+2931 old
+2932 old
+2933 old
+2934 old
+2935 old
+2936 old
+2937 old
+2938 old
+2939 old
+2940 old
+2941 old
+2942 old
+2943 old
+2944 old
+2945 old
+2946 old
+2947 old
+2948 old
+2949 old
+2950 old
+2951 old
+2952 old
+2953 old
+2954 old
+2955 old
+2956 old
+2957 old
+2958 old
+2959 old
+2960 old
+2961 old
+2962 old
+2963 old
+2964 old
+2965 old
+2966 old
+2967 old
+2968 old
+2969 old
+2970 old
+2971 old
+2972 old
+2973 old
+2974 old
+2975 old
+2976 old
+2977 old
+2978 old
+2979 old
+2980 old
+2981 old
+2982 old
+2983 old
+2984 old
+2985 old
+2986 old
+2987 old
+2988 old
+2989 old
+2990 old
+2991 old
+2992 old
+2993 old
+2994 old
+2995 old
+2996 old
+2997 old
+2998 old
+2999 old
+3000 old
+3001 old
+3002 old
+3003 old
+3004 old
+3005 old
+3006 old
+3007 old
+3008 old
+3009 old
+3010 old
+3011 old
+3012 old
+3013 old
+3014 old
+3015 old
+3016 old
+3017 old
+3018 old
+3019 old
+3020 old
+3021 old
+3022 old
+3023 old
+3024 old
+3025 old
+3026 old
+3027 old
+3028 old
+3029 old
+3030 old
+3031 old
+3032 old
+3033 old
+3034 old
+3035 old
+3036 old
+3037 old
+3038 old
+3039 old
+3040 old
+3041 old
+3042 old
+3043 old
+3044 old
+3045 old
+3046 old
+3047 old
+3048 old
+3049 old
+3050 old
+3051 old
+3052 old
+3053 old
+3054 old
+3055 old
+3056 old
+3057 old
+3058 old
+3059 old
+3060 old
+3061 old
+3062 old
+3063 old
+3064 old
+3065 old
+3066 old
+3067 old
+3068 old
+3069 old
+3070 old
+3071 old
+3072 old
+3073 old
+3074 old
+3075 old
+3076 old
+3077 old
+3078 old
+3079 old
+3080 old
+3081 old
+3082 old
+3083 old
+3084 old
+3085 old
+3086 old
+3087 old
+3088 old
+3089 old
+3090 old
+3091 old
+3092 old
+3093 old
+3094 old
+3095 old
+3096 old
+3097 old
+3098 old
+3099 old
+3100 old
+3101 old
+3102 old
+3103 old
+3104 old
+3105 old
+3106 old
+3107 old
+3108 old
+3109 old
+3110 old
+3111 old
+3112 old
+3113 old
+3114 old
+3115 old
+3116 old
+3117 old
+3118 old
+3119 old
+3120 old
+3121 old
+3122 old
+3123 old
+3124 old
+3125 old
+3126 old
+3127 old
+3128 old
+3129 old
+3130 old
+3131 old
+3132 old
+3133 old
+3134 old
+3135 old
+3136 old
+3137 old
+3138 old
+3139 old
+3140 old
+3141 old
+3142 old
+3143 old
+3144 old
+3145 old
+3146 old
+3147 old
+3148 old
+3149 old
+3150 old
+3151 old
+3152 old
+3153 old
+3154 old
+3155 old
+3156 old
+3157 old
+3158 old
+3159 old
+3160 old
+3161 old
+3162 old
+3163 old
+3164 old
+3165 old
+3166 old
+3167 old
+3168 old
+3169 old
+3170 old
+3171 old
+3172 old
+3173 old
+3174 old
+3175 old
+3176 old
+3177 old
+3178 old
+3179 old
+3180 old
+3181 old
+3182 old
+3183 old
+3184 old
+3185 old
+3186 old
+3187 old
+3188 old
+3189 old
+3190 old
+3191 old
+3192 old
+3193 old
+3194 old
+3195 old
+3196 old
+3197 old
+3198 old
+3199 old
+3200 old
+3201 old
+3202 old
+3203 old
+3204 old
+3205 old
+3206 old
+3207 old
+3208 old
+3209 old
+3210 old
+3211 old
+3212 old
+3213 old
+3214 old
+3215 old
+3216 old
+3217 old
+3218 old
+3219 old
+3220 old
+3221 old
+3222 old
+3223 old
+3224 old
+3225 old
+3226 old
+3227 old
+3228 old
+3229 old
+3230 old
+3231 old
+3232 old
+3233 old
+3234 old
+3235 old
+3236 old
+3237 old
+3238 old
+3239 old
+3240 old
+3241 old
+3242 old
+3243 old
+3244 old
+3245 old
+3246 old
+3247 old
+3248 old
+3249 old
+3250 old
+3251 old
+3252 old
+3253 old
+3254 old
+3255 old
+3256 old
+3257 old
+3258 old
+3259 old
+3260 old
+3261 old
+3262 old
+3263 old
+3264 old
+3265 old
+3266 old
+3267 old
+3268 old
+3269 old
+3270 old
+3271 old
+3272 old
+3273 old
+3274 old
+3275 old
+3276 old
+3277 old
+3278 old
+3279 old
+3280 old
+3281 old
+3282 old
+3283 old
+3284 old
+3285 old
+3286 old
+3287 old
+3288 old
+3289 old
+3290 old
+3291 old
+3292 old
+3293 old
+3294 old
+3295 old
+3296 old
+3297 old
+3298 old
+3299 old
+3300 old
+3301 old
+3302 old
+3303 old
+3304 old
+3305 old
+3306 old
+3307 old
+3308 old
+3309 old
+3310 old
+3311 old
+3312 old
+3313 old
+3314 old
+3315 old
+3316 old
+3317 old
+3318 old
+3319 old
+3320 old
+3321 old
+3322 old
+3323 old
+3324 old
+3325 old
+3326 old
+3327 old
+3328 old
+3329 old
+3330 old
+3331 old
+3332 old
+3333 old
+3334 old
+3335 old
+3336 old
+3337 old
+3338 old
+3339 old
+3340 old
+3341 old
+3342 old
+3343 old
+3344 old
+3345 old
+3346 old
+3347 old
+3348 old
+3349 old
+3350 old
+3351 old
+3352 old
+3353 old
+3354 old
+3355 old
+3356 old
+3357 old
+3358 old
+3359 old
+3360 old
+3361 old
+3362 old
+3363 old
+3364 old
+3365 old
+3366 old
+3367 old
+3368 old
+3369 old
+3370 old
+3371 old
+3372 old
+3373 old
+3374 old
+3375 old
+3376 old
+3377 old
+3378 old
+3379 old
+3380 old
+3381 old
+3382 old
+3383 old
+3384 old
+3385 old
+3386 old
+3387 old
+3388 old
+3389 old
+3390 old
+3391 old
+3392 old
+3393 old
+3394 old
+3395 old
+3396 old
+3397 old
+3398 old
+3399 old
+3400 old
+3401 old
+3402 old
+3403 old
+3404 old
+3405 old
+3406 old
+3407 old
+3408 old
+3409 old
+3410 old
+3411 old
+3412 old
+3413 old
+3414 old
+3415 old
+3416 old
+3417 old
+3418 old
+3419 old
+3420 old
+3421 old
+3422 old
+3423 old
+3424 old
+3425 old
+3426 old
+3427 old
+3428 old
+3429 old
+3430 old
+3431 old
+3432 old
+3433 old
+3434 old
+3435 old
+3436 old
+3437 old
+3438 old
+3439 old
+3440 old
+3441 old
+3442 old
+3443 old
+3444 old
+3445 old
+3446 old
+3447 old
+3448 old
+3449 old
+3450 old
+3451 old
+3452 old
+3453 old
+3454 old
+3455 old
+3456 old
+3457 old
+3458 old
+3459 old
+3460 old
+3461 old
+3462 old
+3463 old
+3464 old
+3465 old
+3466 old
+3467 old
+3468 old
+3469 old
+3470 old
+3471 old
+3472 old
+3473 old
+3474 old
+3475 old
+3476 old
+3477 old
+3478 old
+3479 old
+3480 old
+3481 old
+3482 old
+3483 old
+3484 old
+3485 old
+3486 old
+3487 old
+3488 old
+3489 old
+3490 old
+3491 old
+3492 old
+3493 old
+3494 old
+3495 old
+3496 old
+3497 old
+3498 old
+3499 old
+3500 old
+3501 old
+3502 old
+3503 old
+3504 old
+3505 old
+3506 old
+3507 old
+3508 old
+3509 old
+3510 old
+3511 old
+3512 old
+3513 old
+3514 old
+3515 old
+3516 old
+3517 old
+3518 old
+3519 old
+3520 old
+3521 old
+3522 old
+3523 old
+3524 old
+3525 old
+3526 old
+3527 old
+3528 old
+3529 old
+3530 old
+3531 old
+3532 old
+3533 old
+3534 old
+3535 old
+3536 old
+3537 old
+3538 old
+3539 old
+3540 old
+3541 old
+3542 old
+3543 old
+3544 old
+3545 old
+3546 old
+3547 old
+3548 old
+3549 old
+3550 old
+3551 old
+3552 old
+3553 old
+3554 old
+3555 old
+3556 old
+3557 old
+3558 old
+3559 old
+3560 old
+3561 old
+3562 old
+3563 old
+3564 old
+3565 old
+3566 old
+3567 old
+3568 old
+3569 old
+3570 old
+3571 old
+3572 old
+3573 old
+3574 old
+3575 old
+3576 old
+3577 old
+3578 old
+3579 old
+3580 old
+3581 old
+3582 old
+3583 old
+3584 old
+3585 old
+3586 old
+3587 old
+3588 old
+3589 old
+3590 old
+3591 old
+3592 old
+3593 old
+3594 old
+3595 old
+3596 old
+3597 old
+3598 old
+3599 old
+3600 old
+3601 old
+3602 old
+3603 old
+3604 old
+3605 old
+3606 old
+3607 old
+3608 old
+3609 old
+3610 old
+3611 old
+3612 old
+3613 old
+3614 old
+3615 old
+3616 old
+3617 old
+3618 old
+3619 old
+3620 old
+3621 old
+3622 old
+3623 old
+3624 old
+3625 old
+3626 old
+3627 old
+3628 old
+3629 old
+3630 old
+3631 old
+3632 old
+3633 old
+3634 old
+3635 old
+3636 old
+3637 old
+3638 old
+3639 old
+3640 old
+3641 old
+3642 old
+3643 old
+3644 old
+3645 old
+3646 old
+3647 old
+3648 old
+3649 old
+3650 old
+3651 old
+3652 old
+3653 old
+3654 old
+3655 old
+3656 old
+3657 old
+3658 old
+3659 old
+3660 old
+3661 old
+3662 old
+3663 old
+3664 old
+3665 old
+3666 old
+3667 old
+3668 old
+3669 old
+3670 old
+3671 old
+3672 old
+3673 old
+3674 old
+3675 old
+3676 old
+3677 old
+3678 old
+3679 old
+3680 old
+3681 old
+3682 old
+3683 old
+3684 old
+3685 old
+3686 old
+3687 old
+3688 old
+3689 old
+3690 old
+3691 old
+3692 old
+3693 old
+3694 old
+3695 old
+3696 old
+3697 old
+3698 old
+3699 old
+3700 old
+3701 old
+3702 old
+3703 old
+3704 old
+3705 old
+3706 old
+3707 old
+3708 old
+3709 old
+3710 old
+3711 old
+3712 old
+3713 old
+3714 old
+3715 old
+3716 old
+3717 old
+3718 old
+3719 old
+3720 old
+3721 old
+3722 old
+3723 old
+3724 old
+3725 old
+3726 old
+3727 old
+3728 old
+3729 old
+3730 old
+3731 old
+3732 old
+3733 old
+3734 old
+3735 old
+3736 old
+3737 old
+3738 old
+3739 old
+3740 old
+3741 old
+3742 old
+3743 old
+3744 old
+3745 old
+3746 old
+3747 old
+3748 old
+3749 old
+3750 old
+3751 old
+3752 old
+3753 old
+3754 old
+3755 old
+3756 old
+3757 old
+3758 old
+3759 old
+3760 old
+3761 old
+3762 old
+3763 old
+3764 old
+3765 old
+3766 old
+3767 old
+3768 old
+3769 old
+3770 old
+3771 old
+3772 old
+3773 old
+3774 old
+3775 old
+3776 old
+3777 old
+3778 old
+3779 old
+3780 old
+3781 old
+3782 old
+3783 old
+3784 old
+3785 old
+3786 old
+3787 old
+3788 old
+3789 old
+3790 old
+3791 old
+3792 old
+3793 old
+3794 old
+3795 old
+3796 old
+3797 old
+3798 old
+3799 old
+3800 old
+3801 old
+3802 old
+3803 old
+3804 old
+3805 old
+3806 old
+3807 old
+3808 old
+3809 old
+3810 old
+3811 old
+3812 old
+3813 old
+3814 old
+3815 old
+3816 old
+3817 old
+3818 old
+3819 old
+3820 old
+3821 old
+3822 old
+3823 old
+3824 old
+3825 old
+3826 old
+3827 old
+3828 old
+3829 old
+3830 old
+3831 old
+3832 old
+3833 old
+3834 old
+3835 old
+3836 old
+3837 old
+3838 old
+3839 old
+3840 old
+3841 old
+3842 old
+3843 old
+3844 old
+3845 old
+3846 old
+3847 old
+3848 old
+3849 old
+3850 old
+3851 old
+3852 old
+3853 old
+3854 old
+3855 old
+3856 old
+3857 old
+3858 old
+3859 old
+3860 old
+3861 old
+3862 old
+3863 old
+3864 old
+3865 old
+3866 old
+3867 old
+3868 old
+3869 old
+3870 old
+3871 old
+3872 old
+3873 old
+3874 old
+3875 old
+3876 old
+3877 old
+3878 old
+3879 old
+3880 old
+3881 old
+3882 old
+3883 old
+3884 old
+3885 old
+3886 old
+3887 old
+3888 old
+3889 old
+3890 old
+3891 old
+3892 old
+3893 old
+3894 old
+3895 old
+3896 old
+3897 old
+3898 old
+3899 old
+3900 old
+3901 old
+3902 old
+3903 old
+3904 old
+3905 old
+3906 old
+3907 old
+3908 old
+3909 old
+3910 old
+3911 old
+3912 old
+3913 old
+3914 old
+3915 old
+3916 old
+3917 old
+3918 old
+3919 old
+3920 old
+3921 old
+3922 old
+3923 old
+3924 old
+3925 old
+3926 old
+3927 old
+3928 old
+3929 old
+3930 old
+3931 old
+3932 old
+3933 old
+3934 old
+3935 old
+3936 old
+3937 old
+3938 old
+3939 old
+3940 old
+3941 old
+3942 old
+3943 old
+3944 old
+3945 old
+3946 old
+3947 old
+3948 old
+3949 old
+3950 old
+3951 old
+3952 old
+3953 old
+3954 old
+3955 old
+3956 old
+3957 old
+3958 old
+3959 old
+3960 old
+3961 old
+3962 old
+3963 old
+3964 old
+3965 old
+3966 old
+3967 old
+3968 old
+3969 old
+3970 old
+3971 old
+3972 old
+3973 old
+3974 old
+3975 old
+3976 old
+3977 old
+3978 old
+3979 old
+3980 old
+3981 old
+3982 old
+3983 old
+3984 old
+3985 old
+3986 old
+3987 old
+3988 old
+3989 old
+3990 old
+3991 old
+3992 old
+3993 old
+3994 old
+3995 old
+3996 old
+3997 old
+3998 old
+3999 old
+4000 old
+4001 old
+4002 old
+4003 old
+4004 old
+4005 old
+4006 old
+4007 old
+4008 old
+4009 old
+4010 old
+4011 old
+4012 old
+4013 old
+4014 old
+4015 old
+4016 old
+4017 old
+4018 old
+4019 old
+4020 old
+4021 old
+4022 old
+4023 old
+4024 old
+4025 old
+4026 old
+4027 old
+4028 old
+4029 old
+4030 old
+4031 old
+4032 old
+4033 old
+4034 old
+4035 old
+4036 old
+4037 old
+4038 old
+4039 old
+4040 old
+4041 old
+4042 old
+4043 old
+4044 old
+4045 old
+4046 old
+4047 old
+4048 old
+4049 old
+4050 old
+4051 old
+4052 old
+4053 old
+4054 old
+4055 old
+4056 old
+4057 old
+4058 old
+4059 old
+4060 old
+4061 old
+4062 old
+4063 old
+4064 old
+4065 old
+4066 old
+4067 old
+4068 old
+4069 old
+4070 old
+4071 old
+4072 old
+4073 old
+4074 old
+4075 old
+4076 old
+4077 old
+4078 old
+4079 old
+4080 old
+4081 old
+4082 old
+4083 old
+4084 old
+4085 old
+4086 old
+4087 old
+4088 old
+4089 old
+4090 old
+4091 old
+4092 old
+4093 old
+4094 old
+4095 old
+4096 old
+4097 old
+4098 old
+4099 old
+4100 old
+4101 old
+4102 old
+4103 old
+4104 old
+4105 old
+4106 old
+4107 old
+4108 old
+4109 old
+4110 old
+4111 old
+4112 old
+4113 old
+4114 old
+4115 old
+4116 old
+4117 old
+4118 old
+4119 old
+4120 old
+4121 old
+4122 old
+4123 old
+4124 old
+4125 old
+4126 old
+4127 old
+4128 old
+4129 old
+4130 old
+4131 old
+4132 old
+4133 old
+4134 old
+4135 old
+4136 old
+4137 old
+4138 old
+4139 old
+4140 old
+4141 old
+4142 old
+4143 old
+4144 old
+4145 old
+4146 old
+4147 old
+4148 old
+4149 old
+4150 old
+4151 old
+4152 old
+4153 old
+4154 old
+4155 old
+4156 old
+4157 old
+4158 old
+4159 old
+4160 old
+4161 old
+4162 old
+4163 old
+4164 old
+4165 old
+4166 old
+4167 old
+4168 old
+4169 old
+4170 old
+4171 old
+4172 old
+4173 old
+4174 old
+4175 old
+4176 old
+4177 old
+4178 old
+4179 old
+4180 old
+4181 old
+4182 old
+4183 old
+4184 old
+4185 old
+4186 old
+4187 old
+4188 old
+4189 old
+4190 old
+4191 old
+4192 old
+4193 old
+4194 old
+4195 old
+4196 old
+4197 old
+4198 old
+4199 old
+4200 old
+4201 old
+4202 old
+4203 old
+4204 old
+4205 old
+4206 old
+4207 old
+4208 old
+4209 old
+4210 old
+4211 old
+4212 old
+4213 old
+4214 old
+4215 old
+4216 old
+4217 old
+4218 old
+4219 old
+4220 old
+4221 old
+4222 old
+4223 old
+4224 old
+4225 old
+4226 old
+4227 old
+4228 old
+4229 old
+4230 old
+4231 old
+4232 old
+4233 old
+4234 old
+4235 old
+4236 old
+4237 old
+4238 old
+4239 old
+4240 old
+4241 old
+4242 old
+4243 old
+4244 old
+4245 old
+4246 old
+4247 old
+4248 old
+4249 old
+4250 old
+4251 old
+4252 old
+4253 old
+4254 old
+4255 old
+4256 old
+4257 old
+4258 old
+4259 old
+4260 old
+4261 old
+4262 old
+4263 old
+4264 old
+4265 old
+4266 old
+4267 old
+4268 old
+4269 old
+4270 old
+4271 old
+4272 old
+4273 old
+4274 old
+4275 old
+4276 old
+4277 old
+4278 old
+4279 old
+4280 old
+4281 old
+4282 old
+4283 old
+4284 old
+4285 old
+4286 old
+4287 old
+4288 old
+4289 old
+4290 old
+4291 old
+4292 old
+4293 old
+4294 old
+4295 old
+4296 old
+4297 old
+4298 old
+4299 old
+4300 old
+4301 old
+4302 old
+4303 old
+4304 old
+4305 old
+4306 old
+4307 old
+4308 old
+4309 old
+4310 old
+4311 old
+4312 old
+4313 old
+4314 old
+4315 old
+4316 old
+4317 old
+4318 old
+4319 old
+4320 old
+4321 old
+4322 old
+4323 old
+4324 old
+4325 old
+4326 old
+4327 old
+4328 old
+4329 old
+4330 old
+4331 old
+4332 old
+4333 old
+4334 old
+4335 old
+4336 old
+4337 old
+4338 old
+4339 old
+4340 old
+4341 old
+4342 old
+4343 old
+4344 old
+4345 old
+4346 old
+4347 old
+4348 old
+4349 old
+4350 old
+4351 old
+4352 old
+4353 old
+4354 old
+4355 old
+4356 old
+4357 old
+4358 old
+4359 old
+4360 old
+4361 old
+4362 old
+4363 old
+4364 old
+4365 old
+4366 old
+4367 old
+4368 old
+4369 old
+4370 old
+4371 old
+4372 old
+4373 old
+4374 old
+4375 old
+4376 old
+4377 old
+4378 old
+4379 old
+4380 old
+4381 old
+4382 old
+4383 old
+4384 old
+4385 old
+4386 old
+4387 old
+4388 old
+4389 old
+4390 old
+4391 old
+4392 old
+4393 old
+4394 old
+4395 old
+4396 old
+4397 old
+4398 old
+4399 old
+4400 old
+4401 old
+4402 old
+4403 old
+4404 old
+4405 old
+4406 old
+4407 old
+4408 old
+4409 old
+4410 old
+4411 old
+4412 old
+4413 old
+4414 old
+4415 old
+4416 old
+4417 old
+4418 old
+4419 old
+4420 old
+4421 old
+4422 old
+4423 old
+4424 old
+4425 old
+4426 old
+4427 old
+4428 old
+4429 old
+4430 old
+4431 old
+4432 old
+4433 old
+4434 old
+4435 old
+4436 old
+4437 old
+4438 old
+4439 old
+4440 old
+4441 old
+4442 old
+4443 old
+4444 old
+4445 old
+4446 old
+4447 old
+4448 old
+4449 old
+4450 old
+4451 old
+4452 old
+4453 old
+4454 old
+4455 old
+4456 old
+4457 old
+4458 old
+4459 old
+4460 old
+4461 old
+4462 old
+4463 old
+4464 old
+4465 old
+4466 old
+4467 old
+4468 old
+4469 old
+4470 old
+4471 old
+4472 old
+4473 old
+4474 old
+4475 old
+4476 old
+4477 old
+4478 old
+4479 old
+4480 old
+4481 old
+4482 old
+4483 old
+4484 old
+4485 old
+4486 old
+4487 old
+4488 old
+4489 old
+4490 old
+4491 old
+4492 old
+4493 old
+4494 old
+4495 old
+4496 old
+4497 old
+4498 old
+4499 old
+4500 old
+4501 old
+4502 old
+4503 old
+4504 old
+4505 old
+4506 old
+4507 old
+4508 old
+4509 old
+4510 old
+4511 old
+4512 old
+4513 old
+4514 old
+4515 old
+4516 old
+4517 old
+4518 old
+4519 old
+4520 old
+4521 old
+4522 old
+4523 old
+4524 old
+4525 old
+4526 old
+4527 old
+4528 old
+4529 old
+4530 old
+4531 old
+4532 old
+4533 old
+4534 old
+4535 old
+4536 old
+4537 old
+4538 old
+4539 old
+4540 old
+4541 old
+4542 old
+4543 old
+4544 old
+4545 old
+4546 old
+4547 old
+4548 old
+4549 old
+4550 old
+4551 old
+4552 old
+4553 old
+4554 old
+4555 old
+4556 old
+4557 old
+4558 old
+4559 old
+4560 old
+4561 old
+4562 old
+4563 old
+4564 old
+4565 old
+4566 old
+4567 old
+4568 old
+4569 old
+4570 old
+4571 old
+4572 old
+4573 old
+4574 old
+4575 old
+4576 old
+4577 old
+4578 old
+4579 old
+4580 old
+4581 old
+4582 old
+4583 old
+4584 old
+4585 old
+4586 old
+4587 old
+4588 old
+4589 old
+4590 old
+4591 old
+4592 old
+4593 old
+4594 old
+4595 old
+4596 old
+4597 old
+4598 old
+4599 old
+4600 old
+4601 old
+4602 old
+4603 old
+4604 old
+4605 old
+4606 old
+4607 old
+4608 old
+4609 old
+4610 old
+4611 old
+4612 old
+4613 old
+4614 old
+4615 old
+4616 old
+4617 old
+4618 old
+4619 old
+4620 old
+4621 old
+4622 old
+4623 old
+4624 old
+4625 old
+4626 old
+4627 old
+4628 old
+4629 old
+4630 old
+4631 old
+4632 old
+4633 old
+4634 old
+4635 old
+4636 old
+4637 old
+4638 old
+4639 old
+4640 old
+4641 old
+4642 old
+4643 old
+4644 old
+4645 old
+4646 old
+4647 old
+4648 old
+4649 old
+4650 old
+4651 old
+4652 old
+4653 old
+4654 old
+4655 old
+4656 old
+4657 old
+4658 old
+4659 old
+4660 old
+4661 old
+4662 old
+4663 old
+4664 old
+4665 old
+4666 old
+4667 old
+4668 old
+4669 old
+4670 old
+4671 old
+4672 old
+4673 old
+4674 old
+4675 old
+4676 old
+4677 old
+4678 old
+4679 old
+4680 old
+4681 old
+4682 old
+4683 old
+4684 old
+4685 old
+4686 old
+4687 old
+4688 old
+4689 old
+4690 old
+4691 old
+4692 old
+4693 old
+4694 old
+4695 old
+4696 old
+4697 old
+4698 old
+4699 old
+4700 old
+4701 old
+4702 old
+4703 old
+4704 old
+4705 old
+4706 old
+4707 old
+4708 old
+4709 old
+4710 old
+4711 old
+4712 old
+4713 old
+4714 old
+4715 old
+4716 old
+4717 old
+4718 old
+4719 old
+4720 old
+4721 old
+4722 old
+4723 old
+4724 old
+4725 old
+4726 old
+4727 old
+4728 old
+4729 old
+4730 old
+4731 old
+4732 old
+4733 old
+4734 old
+4735 old
+4736 old
+4737 old
+4738 old
+4739 old
+4740 old
+4741 old
+4742 old
+4743 old
+4744 old
+4745 old
+4746 old
+4747 old
+4748 old
+4749 old
+4750 old
+4751 old
+4752 old
+4753 old
+4754 old
+4755 old
+4756 old
+4757 old
+4758 old
+4759 old
+4760 old
+4761 old
+4762 old
+4763 old
+4764 old
+4765 old
+4766 old
+4767 old
+4768 old
+4769 old
+4770 old
+4771 old
+4772 old
+4773 old
+4774 old
+4775 old
+4776 old
+4777 old
+4778 old
+4779 old
+4780 old
+4781 old
+4782 old
+4783 old
+4784 old
+4785 old
+4786 old
+4787 old
+4788 old
+4789 old
+4790 old
+4791 old
+4792 old
+4793 old
+4794 old
+4795 old
+4796 old
+4797 old
+4798 old
+4799 old
+4800 old
+4801 old
+4802 old
+4803 old
+4804 old
+4805 old
+4806 old
+4807 old
+4808 old
+4809 old
+4810 old
+4811 old
+4812 old
+4813 old
+4814 old
+4815 old
+4816 old
+4817 old
+4818 old
+4819 old
+4820 old
+4821 old
+4822 old
+4823 old
+4824 old
+4825 old
+4826 old
+4827 old
+4828 old
+4829 old
+4830 old
+4831 old
+4832 old
+4833 old
+4834 old
+4835 old
+4836 old
+4837 old
+4838 old
+4839 old
+4840 old
+4841 old
+4842 old
+4843 old
+4844 old
+4845 old
+4846 old
+4847 old
+4848 old
+4849 old
+4850 old
+4851 old
+4852 old
+4853 old
+4854 old
+4855 old
+4856 old
+4857 old
+4858 old
+4859 old
+4860 old
+4861 old
+4862 old
+4863 old
+4864 old
+4865 old
+4866 old
+4867 old
+4868 old
+4869 old
+4870 old
+4871 old
+4872 old
+4873 old
+4874 old
+4875 old
+4876 old
+4877 old
+4878 old
+4879 old
+4880 old
+4881 old
+4882 old
+4883 old
+4884 old
+4885 old
+4886 old
+4887 old
+4888 old
+4889 old
+4890 old
+4891 old
+4892 old
+4893 old
+4894 old
+4895 old
+4896 old
+4897 old
+4898 old
+4899 old
+4900 old
+4901 old
+4902 old
+4903 old
+4904 old
+4905 old
+4906 old
+4907 old
+4908 old
+4909 old
+4910 old
+4911 old
+4912 old
+4913 old
+4914 old
+4915 old
+4916 old
+4917 old
+4918 old
+4919 old
+4920 old
+4921 old
+4922 old
+4923 old
+4924 old
+4925 old
+4926 old
+4927 old
+4928 old
+4929 old
+4930 old
+4931 old
+4932 old
+4933 old
+4934 old
+4935 old
+4936 old
+4937 old
+4938 old
+4939 old
+4940 old
+4941 old
+4942 old
+4943 old
+4944 old
+4945 old
+4946 old
+4947 old
+4948 old
+4949 old
+4950 old
+4951 old
+4952 old
+4953 old
+4954 old
+4955 old
+4956 old
+4957 old
+4958 old
+4959 old
+4960 old
+4961 old
+4962 old
+4963 old
+4964 old
+4965 old
+4966 old
+4967 old
+4968 old
+4969 old
+4970 old
+4971 old
+4972 old
+4973 old
+4974 old
+4975 old
+4976 old
+4977 old
+4978 old
+4979 old
+4980 old
+4981 old
+4982 old
+4983 old
+4984 old
+4985 old
+4986 old
+4987 old
+4988 old
+4989 old
+4990 old
+4991 old
+4992 old
+4993 old
+4994 old
+4995 old
+4996 old
+4997 old
+4998 old
+4999 old
+5000 old
+5001 old
+5002 old
+5003 old
+5004 old
+5005 old
+5006 old
+5007 old
+5008 old
+5009 old
+5010 old
+5011 old
+5012 old
+5013 old
+5014 old
+5015 old
+5016 old
+5017 old
+5018 old
+5019 old
+5020 old
+5021 old
+5022 old
+5023 old
+5024 old
+5025 old
+5026 old
+5027 old
+5028 old
+5029 old
+5030 old
+5031 old
+5032 old
+5033 old
+5034 old
+5035 old
+5036 old
+5037 old
+5038 old
+5039 old
+5040 old
+5041 old
+5042 old
+5043 old
+5044 old
+5045 old
+5046 old
+5047 old
+5048 old
+5049 old
+5050 old
+5051 old
+5052 old
+5053 old
+5054 old
+5055 old
+5056 old
+5057 old
+5058 old
+5059 old
+5060 old
+5061 old
+5062 old
+5063 old
+5064 old
+5065 old
+5066 old
+5067 old
+5068 old
+5069 old
+5070 old
+5071 old
+5072 old
+5073 old
+5074 old
+5075 old
+5076 old
+5077 old
+5078 old
+5079 old
+5080 old
+5081 old
+5082 old
+5083 old
+5084 old
+5085 old
+5086 old
+5087 old
+5088 old
+5089 old
+5090 old
+5091 old
+5092 old
+5093 old
+5094 old
+5095 old
+5096 old
+5097 old
+5098 old
+5099 old
+5100 old
+5101 old
+5102 old
+5103 old
+5104 old
+5105 old
+5106 old
+5107 old
+5108 old
+5109 old
+5110 old
+5111 old
+5112 old
+5113 old
+5114 old
+5115 old
+5116 old
+5117 old
+5118 old
+5119 old
+5120 old
+5121 old
+5122 old
+5123 old
+5124 old
+5125 old
+5126 old
+5127 old
+5128 old
+5129 old
+5130 old
+5131 old
+5132 old
+5133 old
+5134 old
+5135 old
+5136 old
+5137 old
+5138 old
+5139 old
+5140 old
+5141 old
+5142 old
+5143 old
+5144 old
+5145 old
+5146 old
+5147 old
+5148 old
+5149 old
+5150 old
+5151 old
+5152 old
+5153 old
+5154 old
+5155 old
+5156 old
+5157 old
+5158 old
+5159 old
+5160 old
+5161 old
+5162 old
+5163 old
+5164 old
+5165 old
+5166 old
+5167 old
+5168 old
+5169 old
+5170 old
+5171 old
+5172 old
+5173 old
+5174 old
+5175 old
+5176 old
+5177 old
+5178 old
+5179 old
+5180 old
+5181 old
+5182 old
+5183 old
+5184 old
+5185 old
+5186 old
+5187 old
+5188 old
+5189 old
+5190 old
+5191 old
+5192 old
+5193 old
+5194 old
+5195 old
+5196 old
+5197 old
+5198 old
+5199 old
+5200 old
+5201 old
+5202 old
+5203 old
+5204 old
+5205 old
+5206 old
+5207 old
+5208 old
+5209 old
+5210 old
+5211 old
+5212 old
+5213 old
+5214 old
+5215 old
+5216 old
+5217 old
+5218 old
+5219 old
+5220 old
+5221 old
+5222 old
+5223 old
+5224 old
+5225 old
+5226 old
+5227 old
+5228 old
+5229 old
+5230 old
+5231 old
+5232 old
+5233 old
+5234 old
+5235 old
+5236 old
+5237 old
+5238 old
+5239 old
+5240 old
+5241 old
+5242 old
+5243 old
+5244 old
+5245 old
+5246 old
+5247 old
+5248 old
+5249 old
+5250 old
+5251 old
+5252 old
+5253 old
+5254 old
+5255 old
+5256 old
+5257 old
+5258 old
+5259 old
+5260 old
+5261 old
+5262 old
+5263 old
+5264 old
+5265 old
+5266 old
+5267 old
+5268 old
+5269 old
+5270 old
+5271 old
+5272 old
+5273 old
+5274 old
+5275 old
+5276 old
+5277 old
+5278 old
+5279 old
+5280 old
+5281 old
+5282 old
+5283 old
+5284 old
+5285 old
+5286 old
+5287 old
+5288 old
+5289 old
+5290 old
+5291 old
+5292 old
+5293 old
+5294 old
+5295 old
+5296 old
+5297 old
+5298 old
+5299 old
+5300 old
+5301 old
+5302 old
+5303 old
+5304 old
+5305 old
+5306 old
+5307 old
+5308 old
+5309 old
+5310 old
+5311 old
+5312 old
+5313 old
+5314 old
+5315 old
+5316 old
+5317 old
+5318 old
+5319 old
+5320 old
+5321 old
+5322 old
+5323 old
+5324 old
+5325 old
+5326 old
+5327 old
+5328 old
+5329 old
+5330 old
+5331 old
+5332 old
+5333 old
+5334 old
+5335 old
+5336 old
+5337 old
+5338 old
+5339 old
+5340 old
+5341 old
+5342 old
+5343 old
+5344 old
+5345 old
+5346 old
+5347 old
+5348 old
+5349 old
+5350 old
+5351 old
+5352 old
+5353 old
+5354 old
+5355 old
+5356 old
+5357 old
+5358 old
+5359 old
+5360 old
+5361 old
+5362 old
+5363 old
+5364 old
+5365 old
+5366 old
+5367 old
+5368 old
+5369 old
+5370 old
+5371 old
+5372 old
+5373 old
+5374 old
+5375 old
+5376 old
+5377 old
+5378 old
+5379 old
+5380 old
+5381 old
+5382 old
+5383 old
+5384 old
+5385 old
+5386 old
+5387 old
+5388 old
+5389 old
+5390 old
+5391 old
+5392 old
+5393 old
+5394 old
+5395 old
+5396 old
+5397 old
+5398 old
+5399 old
+5400 old
+5401 old
+5402 old
+5403 old
+5404 old
+5405 old
+5406 old
+5407 old
+5408 old
+5409 old
+5410 old
+5411 old
+5412 old
+5413 old
+5414 old
+5415 old
+5416 old
+5417 old
+5418 old
+5419 old
+5420 old
+5421 old
+5422 old
+5423 old
+5424 old
+5425 old
+5426 old
+5427 old
+5428 old
+5429 old
+5430 old
+5431 old
+5432 old
+5433 old
+5434 old
+5435 old
+5436 old
+5437 old
+5438 old
+5439 old
+5440 old
+5441 old
+5442 old
+5443 old
+5444 old
+5445 old
+5446 old
+5447 old
+5448 old
+5449 old
+5450 old
+5451 old
+5452 old
+5453 old
+5454 old
+5455 old
+5456 old
+5457 old
+5458 old
+5459 old
+5460 old
+5461 old
+5462 old
+5463 old
+5464 old
+5465 old
+5466 old
+5467 old
+5468 old
+5469 old
+5470 old
+5471 old
+5472 old
+5473 old
+5474 old
+5475 old
+5476 old
+5477 old
+5478 old
+5479 old
+5480 old
+5481 old
+5482 old
+5483 old
+5484 old
+5485 old
+5486 old
+5487 old
+5488 old
+5489 old
+5490 old
+5491 old
+5492 old
+5493 old
+5494 old
+5495 old
+5496 old
+5497 old
+5498 old
+5499 old
+5500 old
+5501 old
+5502 old
+5503 old
+5504 old
+5505 old
+5506 old
+5507 old
+5508 old
+5509 old
+5510 old
+5511 old
+5512 old
+5513 old
+5514 old
+5515 old
+5516 old
+5517 old
+5518 old
+5519 old
+5520 old
+5521 old
+5522 old
+5523 old
+5524 old
+5525 old
+5526 old
+5527 old
+5528 old
+5529 old
+5530 old
+5531 old
+5532 old
+5533 old
+5534 old
+5535 old
+5536 old
+5537 old
+5538 old
+5539 old
+5540 old
+5541 old
+5542 old
+5543 old
+5544 old
+5545 old
+5546 old
+5547 old
+5548 old
+5549 old
+5550 old
+5551 old
+5552 old
+5553 old
+5554 old
+5555 old
+5556 old
+5557 old
+5558 old
+5559 old
+5560 old
+5561 old
+5562 old
+5563 old
+5564 old
+5565 old
+5566 old
+5567 old
+5568 old
+5569 old
+5570 old
+5571 old
+5572 old
+5573 old
+5574 old
+5575 old
+5576 old
+5577 old
+5578 old
+5579 old
+5580 old
+5581 old
+5582 old
+5583 old
+5584 old
+5585 old
+5586 old
+5587 old
+5588 old
+5589 old
+5590 old
+5591 old
+5592 old
+5593 old
+5594 old
+5595 old
+5596 old
+5597 old
+5598 old
+5599 old
+5600 old
+5601 old
+5602 old
+5603 old
+5604 old
+5605 old
+5606 old
+5607 old
+5608 old
+5609 old
+5610 old
+5611 old
+5612 old
+5613 old
+5614 old
+5615 old
+5616 old
+5617 old
+5618 old
+5619 old
+5620 old
+5621 old
+5622 old
+5623 old
+5624 old
+5625 old
+5626 old
+5627 old
+5628 old
+5629 old
+5630 old
+5631 old
+5632 old
+5633 old
+5634 old
+5635 old
+5636 old
+5637 old
+5638 old
+5639 old
+5640 old
+5641 old
+5642 old
+5643 old
+5644 old
+5645 old
+5646 old
+5647 old
+5648 old
+5649 old
+5650 old
+5651 old
+5652 old
+5653 old
+5654 old
+5655 old
+5656 old
+5657 old
+5658 old
+5659 old
+5660 old
+5661 old
+5662 old
+5663 old
+5664 old
+5665 old
+5666 old
+5667 old
+5668 old
+5669 old
+5670 old
+5671 old
+5672 old
+5673 old
+5674 old
+5675 old
+5676 old
+5677 old
+5678 old
+5679 old
+5680 old
+5681 old
+5682 old
+5683 old
+5684 old
+5685 old
+5686 old
+5687 old
+5688 old
+5689 old
+5690 old
+5691 old
+5692 old
+5693 old
+5694 old
+5695 old
+5696 old
+5697 old
+5698 old
+5699 old
+5700 old
+5701 old
+5702 old
+5703 old
+5704 old
+5705 old
+5706 old
+5707 old
+5708 old
+5709 old
+5710 old
+5711 old
+5712 old
+5713 old
+5714 old
+5715 old
+5716 old
+5717 old
+5718 old
+5719 old
+5720 old
+5721 old
+5722 old
+5723 old
+5724 old
+5725 old
+5726 old
+5727 old
+5728 old
+5729 old
+5730 old
+5731 old
+5732 old
+5733 old
+5734 old
+5735 old
+5736 old
+5737 old
+5738 old
+5739 old
+5740 old
+5741 old
+5742 old
+5743 old
+5744 old
+5745 old
+5746 old
+5747 old
+5748 old
+5749 old
+5750 old
+5751 old
+5752 old
+5753 old
+5754 old
+5755 old
+5756 old
+5757 old
+5758 old
+5759 old
+5760 old
+5761 old
+5762 old
+5763 old
+5764 old
+5765 old
+5766 old
+5767 old
+5768 old
+5769 old
+5770 old
+5771 old
+5772 old
+5773 old
+5774 old
+5775 old
+5776 old
+5777 old
+5778 old
+5779 old
+5780 old
+5781 old
+5782 old
+5783 old
+5784 old
+5785 old
+5786 old
+5787 old
+5788 old
+5789 old
+5790 old
+5791 old
+5792 old
+5793 old
+5794 old
+5795 old
+5796 old
+5797 old
+5798 old
+5799 old
+5800 old
+5801 old
+5802 old
+5803 old
+5804 old
+5805 old
+5806 old
+5807 old
+5808 old
+5809 old
+5810 old
+5811 old
+5812 old
+5813 old
+5814 old
+5815 old
+5816 old
+5817 old
+5818 old
+5819 old
+5820 old
+5821 old
+5822 old
+5823 old
+5824 old
+5825 old
+5826 old
+5827 old
+5828 old
+5829 old
+5830 old
+5831 old
+5832 old
+5833 old
+5834 old
+5835 old
+5836 old
+5837 old
+5838 old
+5839 old
+5840 old
+5841 old
+5842 old
+5843 old
+5844 old
+5845 old
+5846 old
+5847 old
+5848 old
+5849 old
+5850 old
+5851 old
+5852 old
+5853 old
+5854 old
+5855 old
+5856 old
+5857 old
+5858 old
+5859 old
+5860 old
+5861 old
+5862 old
+5863 old
+5864 old
+5865 old
+5866 old
+5867 old
+5868 old
+5869 old
+5870 old
+5871 old
+5872 old
+5873 old
+5874 old
+5875 old
+5876 old
+5877 old
+5878 old
+5879 old
+5880 old
+5881 old
+5882 old
+5883 old
+5884 old
+5885 old
+5886 old
+5887 old
+5888 old
+5889 old
+5890 old
+5891 old
+5892 old
+5893 old
+5894 old
+5895 old
+5896 old
+5897 old
+5898 old
+5899 old
+5900 old
+5901 old
+5902 old
+5903 old
+5904 old
+5905 old
+5906 old
+5907 old
+5908 old
+5909 old
+5910 old
+5911 old
+5912 old
+5913 old
+5914 old
+5915 old
+5916 old
+5917 old
+5918 old
+5919 old
+5920 old
+5921 old
+5922 old
+5923 old
+5924 old
+5925 old
+5926 old
+5927 old
+5928 old
+5929 old
+5930 old
+5931 old
+5932 old
+5933 old
+5934 old
+5935 old
+5936 old
+5937 old
+5938 old
+5939 old
+5940 old
+5941 old
+5942 old
+5943 old
+5944 old
+5945 old
+5946 old
+5947 old
+5948 old
+5949 old
+5950 old
+5951 old
+5952 old
+5953 old
+5954 old
+5955 old
+5956 old
+5957 old
+5958 old
+5959 old
+5960 old
+5961 old
+5962 old
+5963 old
+5964 old
+5965 old
+5966 old
+5967 old
+5968 old
+5969 old
+5970 old
+5971 old
+5972 old
+5973 old
+5974 old
+5975 old
+5976 old
+5977 old
+5978 old
+5979 old
+5980 old
+5981 old
+5982 old
+5983 old
+5984 old
+5985 old
+5986 old
+5987 old
+5988 old
+5989 old
+5990 old
+5991 old
+5992 old
+5993 old
+5994 old
+5995 old
+5996 old
+5997 old
+5998 old
+5999 old
+6000 old
+6001 old
+6002 old
+6003 old
+6004 old
+6005 old
+6006 old
+6007 old
+6008 old
+6009 old
+6010 old
+6011 old
+6012 old
+6013 old
+6014 old
+6015 old
+6016 old
+6017 old
+6018 old
+6019 old
+6020 old
+6021 old
+6022 old
+6023 old
+6024 old
+6025 old
+6026 old
+6027 old
+6028 old
+6029 old
+6030 old
+6031 old
+6032 old
+6033 old
+6034 old
+6035 old
+6036 old
+6037 old
+6038 old
+6039 old
+6040 old
+6041 old
+6042 old
+6043 old
+6044 old
+6045 old
+6046 old
+6047 old
+6048 old
+6049 old
+6050 old
+6051 old
+6052 old
+6053 old
+6054 old
+6055 old
+6056 old
+6057 old
+6058 old
+6059 old
+6060 old
+6061 old
+6062 old
+6063 old
+6064 old
+6065 old
+6066 old
+6067 old
+6068 old
+6069 old
+6070 old
+6071 old
+6072 old
+6073 old
+6074 old
+6075 old
+6076 old
+6077 old
+6078 old
+6079 old
+6080 old
+6081 old
+6082 old
+6083 old
+6084 old
+6085 old
+6086 old
+6087 old
+6088 old
+6089 old
+6090 old
+6091 old
+6092 old
+6093 old
+6094 old
+6095 old
+6096 old
+6097 old
+6098 old
+6099 old
+6100 old
+6101 old
+6102 old
+6103 old
+6104 old
+6105 old
+6106 old
+6107 old
+6108 old
+6109 old
+6110 old
+6111 old
+6112 old
+6113 old
+6114 old
+6115 old
+6116 old
+6117 old
+6118 old
+6119 old
+6120 old
+6121 old
+6122 old
+6123 old
+6124 old
+6125 old
+6126 old
+6127 old
+6128 old
+6129 old
+6130 old
+6131 old
+6132 old
+6133 old
+6134 old
+6135 old
+6136 old
+6137 old
+6138 old
+6139 old
+6140 old
+6141 old
+6142 old
+6143 old
+6144 old
+6145 old
+6146 old
+6147 old
+6148 old
+6149 old
+6150 old
+6151 old
+6152 old
+6153 old
+6154 old
+6155 old
+6156 old
+6157 old
+6158 old
+6159 old
+6160 old
+6161 old
+6162 old
+6163 old
+6164 old
+6165 old
+6166 old
+6167 old
+6168 old
+6169 old
+6170 old
+6171 old
+6172 old
+6173 old
+6174 old
+6175 old
+6176 old
+6177 old
+6178 old
+6179 old
+6180 old
+6181 old
+6182 old
+6183 old
+6184 old
+6185 old
+6186 old
+6187 old
+6188 old
+6189 old
+6190 old
+6191 old
+6192 old
+6193 old
+6194 old
+6195 old
+6196 old
+6197 old
+6198 old
+6199 old
+6200 old
+6201 old
+6202 old
+6203 old
+6204 old
+6205 old
+6206 old
+6207 old
+6208 old
+6209 old
+6210 old
+6211 old
+6212 old
+6213 old
+6214 old
+6215 old
+6216 old
+6217 old
+6218 old
+6219 old
+6220 old
+6221 old
+6222 old
+6223 old
+6224 old
+6225 old
+6226 old
+6227 old
+6228 old
+6229 old
+6230 old
+6231 old
+6232 old
+6233 old
+6234 old
+6235 old
+6236 old
+6237 old
+6238 old
+6239 old
+6240 old
+6241 old
+6242 old
+6243 old
+6244 old
+6245 old
+6246 old
+6247 old
+6248 old
+6249 old
+6250 old
+6251 old
+6252 old
+6253 old
+6254 old
+6255 old
+6256 old
+6257 old
+6258 old
+6259 old
+6260 old
+6261 old
+6262 old
+6263 old
+6264 old
+6265 old
+6266 old
+6267 old
+6268 old
+6269 old
+6270 old
+6271 old
+6272 old
+6273 old
+6274 old
+6275 old
+6276 old
+6277 old
+6278 old
+6279 old
+6280 old
+6281 old
+6282 old
+6283 old
+6284 old
+6285 old
+6286 old
+6287 old
+6288 old
+6289 old
+6290 old
+6291 old
+6292 old
+6293 old
+6294 old
+6295 old
+6296 old
+6297 old
+6298 old
+6299 old
+6300 old
+6301 old
+6302 old
+6303 old
+6304 old
+6305 old
+6306 old
+6307 old
+6308 old
+6309 old
+6310 old
+6311 old
+6312 old
+6313 old
+6314 old
+6315 old
+6316 old
+6317 old
+6318 old
+6319 old
+6320 old
+6321 old
+6322 old
+6323 old
+6324 old
+6325 old
+6326 old
+6327 old
+6328 old
+6329 old
+6330 old
+6331 old
+6332 old
+6333 old
+6334 old
+6335 old
+6336 old
+6337 old
+6338 old
+6339 old
+6340 old
+6341 old
+6342 old
+6343 old
+6344 old
+6345 old
+6346 old
+6347 old
+6348 old
+6349 old
+6350 old
+6351 old
+6352 old
+6353 old
+6354 old
+6355 old
+6356 old
+6357 old
+6358 old
+6359 old
+6360 old
+6361 old
+6362 old
+6363 old
+6364 old
+6365 old
+6366 old
+6367 old
+6368 old
+6369 old
+6370 old
+6371 old
+6372 old
+6373 old
+6374 old
+6375 old
+6376 old
+6377 old
+6378 old
+6379 old
+6380 old
+6381 old
+6382 old
+6383 old
+6384 old
+6385 old
+6386 old
+6387 old
+6388 old
+6389 old
+6390 old
+6391 old
+6392 old
+6393 old
+6394 old
+6395 old
+6396 old
+6397 old
+6398 old
+6399 old
+6400 old
+6401 old
+6402 old
+6403 old
+6404 old
+6405 old
+6406 old
+6407 old
+6408 old
+6409 old
+6410 old
+6411 old
+6412 old
+6413 old
+6414 old
+6415 old
+6416 old
+6417 old
+6418 old
+6419 old
+6420 old
+6421 old
+6422 old
+6423 old
+6424 old
+6425 old
+6426 old
+6427 old
+6428 old
+6429 old
+6430 old
+6431 old
+6432 old
+6433 old
+6434 old
+6435 old
+6436 old
+6437 old
+6438 old
+6439 old
+6440 old
+6441 old
+6442 old
+6443 old
+6444 old
+6445 old
+6446 old
+6447 old
+6448 old
+6449 old
+6450 old
+6451 old
+6452 old
+6453 old
+6454 old
+6455 old
+6456 old
+6457 old
+6458 old
+6459 old
+6460 old
+6461 old
+6462 old
+6463 old
+6464 old
+6465 old
+6466 old
+6467 old
+6468 old
+6469 old
+6470 old
+6471 old
+6472 old
+6473 old
+6474 old
+6475 old
+6476 old
+6477 old
+6478 old
+6479 old
+6480 old
+6481 old
+6482 old
+6483 old
+6484 old
+6485 old
+6486 old
+6487 old
+6488 old
+6489 old
+6490 old
+6491 old
+6492 old
+6493 old
+6494 old
+6495 old
+6496 old
+6497 old
+6498 old
+6499 old
+6500 old
+6501 old
+6502 old
+6503 old
+6504 old
+6505 old
+6506 old
+6507 old
+6508 old
+6509 old
+6510 old
+6511 old
+6512 old
+6513 old
+6514 old
+6515 old
+6516 old
+6517 old
+6518 old
+6519 old
+6520 old
+6521 old
+6522 old
+6523 old
+6524 old
+6525 old
+6526 old
+6527 old
+6528 old
+6529 old
+6530 old
+6531 old
+6532 old
+6533 old
+6534 old
+6535 old
+6536 old
+6537 old
+6538 old
+6539 old
+6540 old
+6541 old
+6542 old
+6543 old
+6544 old
+6545 old
+6546 old
+6547 old
+6548 old
+6549 old
+6550 old
+6551 old
+6552 old
+6553 old
+6554 old
+6555 old
+6556 old
+6557 old
+6558 old
+6559 old
+6560 old
+6561 old
+6562 old
+6563 old
+6564 old
+6565 old
+6566 old
+6567 old
+6568 old
+6569 old
+6570 old
+6571 old
+6572 old
+6573 old
+6574 old
+6575 old
+6576 old
+6577 old
+6578 old
+6579 old
+6580 old
+6581 old
+6582 old
+6583 old
+6584 old
+6585 old
+6586 old
+6587 old
+6588 old
+6589 old
+6590 old
+6591 old
+6592 old
+6593 old
+6594 old
+6595 old
+6596 old
+6597 old
+6598 old
+6599 old
+6600 old
+6601 old
+6602 old
+6603 old
+6604 old
+6605 old
+6606 old
+6607 old
+6608 old
+6609 old
+6610 old
+6611 old
+6612 old
+6613 old
+6614 old
+6615 old
+6616 old
+6617 old
+6618 old
+6619 old
+6620 old
+6621 old
+6622 old
+6623 old
+6624 old
+6625 old
+6626 old
+6627 old
+6628 old
+6629 old
+6630 old
+6631 old
+6632 old
+6633 old
+6634 old
+6635 old
+6636 old
+6637 old
+6638 old
+6639 old
+6640 old
+6641 old
+6642 old
+6643 old
+6644 old
+6645 old
+6646 old
+6647 old
+6648 old
+6649 old
+6650 old
+6651 old
+6652 old
+6653 old
+6654 old
+6655 old
+6656 old
+6657 old
+6658 old
+6659 old
+6660 old
+6661 old
+6662 old
+6663 old
+6664 old
+6665 old
+6666 old
+6667 old
+6668 old
+6669 old
+6670 old
+6671 old
+6672 old
+6673 old
+6674 old
+6675 old
+6676 old
+6677 old
+6678 old
+6679 old
+6680 old
+6681 old
+6682 old
+6683 old
+6684 old
+6685 old
+6686 old
+6687 old
+6688 old
+6689 old
+6690 old
+6691 old
+6692 old
+6693 old
+6694 old
+6695 old
+6696 old
+6697 old
+6698 old
+6699 old
+6700 old
+6701 old
+6702 old
+6703 old
+6704 old
+6705 old
+6706 old
+6707 old
+6708 old
+6709 old
+6710 old
+6711 old
+6712 old
+6713 old
+6714 old
+6715 old
+6716 old
+6717 old
+6718 old
+6719 old
+6720 old
+6721 old
+6722 old
+6723 old
+6724 old
+6725 old
+6726 old
+6727 old
+6728 old
+6729 old
+6730 old
+6731 old
+6732 old
+6733 old
+6734 old
+6735 old
+6736 old
+6737 old
+6738 old
+6739 old
+6740 old
+6741 old
+6742 old
+6743 old
+6744 old
+6745 old
+6746 old
+6747 old
+6748 old
+6749 old
+6750 old
+6751 old
+6752 old
+6753 old
+6754 old
+6755 old
+6756 old
+6757 old
+6758 old
+6759 old
+6760 old
+6761 old
+6762 old
+6763 old
+6764 old
+6765 old
+6766 old
+6767 old
+6768 old
+6769 old
+6770 old
+6771 old
+6772 old
+6773 old
+6774 old
+6775 old
+6776 old
+6777 old
+6778 old
+6779 old
+6780 old
+6781 old
+6782 old
+6783 old
+6784 old
+6785 old
+6786 old
+6787 old
+6788 old
+6789 old
+6790 old
+6791 old
+6792 old
+6793 old
+6794 old
+6795 old
+6796 old
+6797 old
+6798 old
+6799 old
+6800 old
+6801 old
+6802 old
+6803 old
+6804 old
+6805 old
+6806 old
+6807 old
+6808 old
+6809 old
+6810 old
+6811 old
+6812 old
+6813 old
+6814 old
+6815 old
+6816 old
+6817 old
+6818 old
+6819 old
+6820 old
+6821 old
+6822 old
+6823 old
+6824 old
+6825 old
+6826 old
+6827 old
+6828 old
+6829 old
+6830 old
+6831 old
+6832 old
+6833 old
+6834 old
+6835 old
+6836 old
+6837 old
+6838 old
+6839 old
+6840 old
+6841 old
+6842 old
+6843 old
+6844 old
+6845 old
+6846 old
+6847 old
+6848 old
+6849 old
+6850 old
+6851 old
+6852 old
+6853 old
+6854 old
+6855 old
+6856 old
+6857 old
+6858 old
+6859 old
+6860 old
+6861 old
+6862 old
+6863 old
+6864 old
+6865 old
+6866 old
+6867 old
+6868 old
+6869 old
+6870 old
+6871 old
+6872 old
+6873 old
+6874 old
+6875 old
+6876 old
+6877 old
+6878 old
+6879 old
+6880 old
+6881 old
+6882 old
+6883 old
+6884 old
+6885 old
+6886 old
+6887 old
+6888 old
+6889 old
+6890 old
+6891 old
+6892 old
+6893 old
+6894 old
+6895 old
+6896 old
+6897 old
+6898 old
+6899 old
+6900 old
+6901 old
+6902 old
+6903 old
+6904 old
+6905 old
+6906 old
+6907 old
+6908 old
+6909 old
+6910 old
+6911 old
+6912 old
+6913 old
+6914 old
+6915 old
+6916 old
+6917 old
+6918 old
+6919 old
+6920 old
+6921 old
+6922 old
+6923 old
+6924 old
+6925 old
+6926 old
+6927 old
+6928 old
+6929 old
+6930 old
+6931 old
+6932 old
+6933 old
+6934 old
+6935 old
+6936 old
+6937 old
+6938 old
+6939 old
+6940 old
+6941 old
+6942 old
+6943 old
+6944 old
+6945 old
+6946 old
+6947 old
+6948 old
+6949 old
+6950 old
+6951 old
+6952 old
+6953 old
+6954 old
+6955 old
+6956 old
+6957 old
+6958 old
+6959 old
+6960 old
+6961 old
+6962 old
+6963 old
+6964 old
+6965 old
+6966 old
+6967 old
+6968 old
+6969 old
+6970 old
+6971 old
+6972 old
+6973 old
+6974 old
+6975 old
+6976 old
+6977 old
+6978 old
+6979 old
+6980 old
+6981 old
+6982 old
+6983 old
+6984 old
+6985 old
+6986 old
+6987 old
+6988 old
+6989 old
+6990 old
+6991 old
+6992 old
+6993 old
+6994 old
+6995 old
+6996 old
+6997 old
+6998 old
+6999 old
+7000 old
+7001 old
+7002 old
+7003 old
+7004 old
+7005 old
+7006 old
+7007 old
+7008 old
+7009 old
+7010 old
+7011 old
+7012 old
+7013 old
+7014 old
+7015 old
+7016 old
+7017 old
+7018 old
+7019 old
+7020 old
+7021 old
+7022 old
+7023 old
+7024 old
+7025 old
+7026 old
+7027 old
+7028 old
+7029 old
+7030 old
+7031 old
+7032 old
+7033 old
+7034 old
+7035 old
+7036 old
+7037 old
+7038 old
+7039 old
+7040 old
+7041 old
+7042 old
+7043 old
+7044 old
+7045 old
+7046 old
+7047 old
+7048 old
+7049 old
+7050 old
+7051 old
+7052 old
+7053 old
+7054 old
+7055 old
+7056 old
+7057 old
+7058 old
+7059 old
+7060 old
+7061 old
+7062 old
+7063 old
+7064 old
+7065 old
+7066 old
+7067 old
+7068 old
+7069 old
+7070 old
+7071 old
+7072 old
+7073 old
+7074 old
+7075 old
+7076 old
+7077 old
+7078 old
+7079 old
+7080 old
+7081 old
+7082 old
+7083 old
+7084 old
+7085 old
+7086 old
+7087 old
+7088 old
+7089 old
+7090 old
+7091 old
+7092 old
+7093 old
+7094 old
+7095 old
+7096 old
+7097 old
+7098 old
+7099 old
+7100 old
+7101 old
+7102 old
+7103 old
+7104 old
+7105 old
+7106 old
+7107 old
+7108 old
+7109 old
+7110 old
+7111 old
+7112 old
+7113 old
+7114 old
+7115 old
+7116 old
+7117 old
+7118 old
+7119 old
+7120 old
+7121 old
+7122 old
+7123 old
+7124 old
+7125 old
+7126 old
+7127 old
+7128 old
+7129 old
+7130 old
+7131 old
+7132 old
+7133 old
+7134 old
+7135 old
+7136 old
+7137 old
+7138 old
+7139 old
+7140 old
+7141 old
+7142 old
+7143 old
+7144 old
+7145 old
+7146 old
+7147 old
+7148 old
+7149 old
+7150 old
+7151 old
+7152 old
+7153 old
+7154 old
+7155 old
+7156 old
+7157 old
+7158 old
+7159 old
+7160 old
+7161 old
+7162 old
+7163 old
+7164 old
+7165 old
+7166 old
+7167 old
+7168 old
+7169 old
+7170 old
+7171 old
+7172 old
+7173 old
+7174 old
+7175 old
+7176 old
+7177 old
+7178 old
+7179 old
+7180 old
+7181 old
+7182 old
+7183 old
+7184 old
+7185 old
+7186 old
+7187 old
+7188 old
+7189 old
+7190 old
+7191 old
+7192 old
+7193 old
+7194 old
+7195 old
+7196 old
+7197 old
+7198 old
+7199 old
+7200 old
+7201 old
+7202 old
+7203 old
+7204 old
+7205 old
+7206 old
+7207 old
+7208 old
+7209 old
+7210 old
+7211 old
+7212 old
+7213 old
+7214 old
+7215 old
+7216 old
+7217 old
+7218 old
+7219 old
+7220 old
+7221 old
+7222 old
+7223 old
+7224 old
+7225 old
+7226 old
+7227 old
+7228 old
+7229 old
+7230 old
+7231 old
+7232 old
+7233 old
+7234 old
+7235 old
+7236 old
+7237 old
+7238 old
+7239 old
+7240 old
+7241 old
+7242 old
+7243 old
+7244 old
+7245 old
+7246 old
+7247 old
+7248 old
+7249 old
+7250 old
+7251 old
+7252 old
+7253 old
+7254 old
+7255 old
+7256 old
+7257 old
+7258 old
+7259 old
+7260 old
+7261 old
+7262 old
+7263 old
+7264 old
+7265 old
+7266 old
+7267 old
+7268 old
+7269 old
+7270 old
+7271 old
+7272 old
+7273 old
+7274 old
+7275 old
+7276 old
+7277 old
+7278 old
+7279 old
+7280 old
+7281 old
+7282 old
+7283 old
+7284 old
+7285 old
+7286 old
+7287 old
+7288 old
+7289 old
+7290 old
+7291 old
+7292 old
+7293 old
+7294 old
+7295 old
+7296 old
+7297 old
+7298 old
+7299 old
+7300 old
+7301 old
+7302 old
+7303 old
+7304 old
+7305 old
+7306 old
+7307 old
+7308 old
+7309 old
+7310 old
+7311 old
+7312 old
+7313 old
+7314 old
+7315 old
+7316 old
+7317 old
+7318 old
+7319 old
+7320 old
+7321 old
+7322 old
+7323 old
+7324 old
+7325 old
+7326 old
+7327 old
+7328 old
+7329 old
+7330 old
+7331 old
+7332 old
+7333 old
+7334 old
+7335 old
+7336 old
+7337 old
+7338 old
+7339 old
+7340 old
+7341 old
+7342 old
+7343 old
+7344 old
+7345 old
+7346 old
+7347 old
+7348 old
+7349 old
+7350 old
+7351 old
+7352 old
+7353 old
+7354 old
+7355 old
+7356 old
+7357 old
+7358 old
+7359 old
+7360 old
+7361 old
+7362 old
+7363 old
+7364 old
+7365 old
+7366 old
+7367 old
+7368 old
+7369 old
+7370 old
+7371 old
+7372 old
+7373 old
+7374 old
+7375 old
+7376 old
+7377 old
+7378 old
+7379 old
+7380 old
+7381 old
+7382 old
+7383 old
+7384 old
+7385 old
+7386 old
+7387 old
+7388 old
+7389 old
+7390 old
+7391 old
+7392 old
+7393 old
+7394 old
+7395 old
+7396 old
+7397 old
+7398 old
+7399 old
+7400 old
+7401 old
+7402 old
+7403 old
+7404 old
+7405 old
+7406 old
+7407 old
+7408 old
+7409 old
+7410 old
+7411 old
+7412 old
+7413 old
+7414 old
+7415 old
+7416 old
+7417 old
+7418 old
+7419 old
+7420 old
+7421 old
+7422 old
+7423 old
+7424 old
+7425 old
+7426 old
+7427 old
+7428 old
+7429 old
+7430 old
+7431 old
+7432 old
+7433 old
+7434 old
+7435 old
+7436 old
+7437 old
+7438 old
+7439 old
+7440 old
+7441 old
+7442 old
+7443 old
+7444 old
+7445 old
+7446 old
+7447 old
+7448 old
+7449 old
+7450 old
+7451 old
+7452 old
+7453 old
+7454 old
+7455 old
+7456 old
+7457 old
+7458 old
+7459 old
+7460 old
+7461 old
+7462 old
+7463 old
+7464 old
+7465 old
+7466 old
+7467 old
+7468 old
+7469 old
+7470 old
+7471 old
+7472 old
+7473 old
+7474 old
+7475 old
+7476 old
+7477 old
+7478 old
+7479 old
+7480 old
+7481 old
+7482 old
+7483 old
+7484 old
+7485 old
+7486 old
+7487 old
+7488 old
+7489 old
+7490 old
+7491 old
+7492 old
+7493 old
+7494 old
+7495 old
+7496 old
+7497 old
+7498 old
+7499 old
+7500 old
+7501 old
+7502 old
+7503 old
+7504 old
+7505 old
+7506 old
+7507 old
+7508 old
+7509 old
+7510 old
+7511 old
+7512 old
+7513 old
+7514 old
+7515 old
+7516 old
+7517 old
+7518 old
+7519 old
+7520 old
+7521 old
+7522 old
+7523 old
+7524 old
+7525 old
+7526 old
+7527 old
+7528 old
+7529 old
+7530 old
+7531 old
+7532 old
+7533 old
+7534 old
+7535 old
+7536 old
+7537 old
+7538 old
+7539 old
+7540 old
+7541 old
+7542 old
+7543 old
+7544 old
+7545 old
+7546 old
+7547 old
+7548 old
+7549 old
+7550 old
+7551 old
+7552 old
+7553 old
+7554 old
+7555 old
+7556 old
+7557 old
+7558 old
+7559 old
+7560 old
+7561 old
+7562 old
+7563 old
+7564 old
+7565 old
+7566 old
+7567 old
+7568 old
+7569 old
+7570 old
+7571 old
+7572 old
+7573 old
+7574 old
+7575 old
+7576 old
+7577 old
+7578 old
+7579 old
+7580 old
+7581 old
+7582 old
+7583 old
+7584 old
+7585 old
+7586 old
+7587 old
+7588 old
+7589 old
+7590 old
+7591 old
+7592 old
+7593 old
+7594 old
+7595 old
+7596 old
+7597 old
+7598 old
+7599 old
+7600 old
+7601 old
+7602 old
+7603 old
+7604 old
+7605 old
+7606 old
+7607 old
+7608 old
+7609 old
+7610 old
+7611 old
+7612 old
+7613 old
+7614 old
+7615 old
+7616 old
+7617 old
+7618 old
+7619 old
+7620 old
+7621 old
+7622 old
+7623 old
+7624 old
+7625 old
+7626 old
+7627 old
+7628 old
+7629 old
+7630 old
+7631 old
+7632 old
+7633 old
+7634 old
+7635 old
+7636 old
+7637 old
+7638 old
+7639 old
+7640 old
+7641 old
+7642 old
+7643 old
+7644 old
+7645 old
+7646 old
+7647 old
+7648 old
+7649 old
+7650 old
+7651 old
+7652 old
+7653 old
+7654 old
+7655 old
+7656 old
+7657 old
+7658 old
+7659 old
+7660 old
+7661 old
+7662 old
+7663 old
+7664 old
+7665 old
+7666 old
+7667 old
+7668 old
+7669 old
+7670 old
+7671 old
+7672 old
+7673 old
+7674 old
+7675 old
+7676 old
+7677 old
+7678 old
+7679 old
+7680 old
+7681 old
+7682 old
+7683 old
+7684 old
+7685 old
+7686 old
+7687 old
+7688 old
+7689 old
+7690 old
+7691 old
+7692 old
+7693 old
+7694 old
+7695 old
+7696 old
+7697 old
+7698 old
+7699 old
+7700 old
+7701 old
+7702 old
+7703 old
+7704 old
+7705 old
+7706 old
+7707 old
+7708 old
+7709 old
+7710 old
+7711 old
+7712 old
+7713 old
+7714 old
+7715 old
+7716 old
+7717 old
+7718 old
+7719 old
+7720 old
+7721 old
+7722 old
+7723 old
+7724 old
+7725 old
+7726 old
+7727 old
+7728 old
+7729 old
+7730 old
+7731 old
+7732 old
+7733 old
+7734 old
+7735 old
+7736 old
+7737 old
+7738 old
+7739 old
+7740 old
+7741 old
+7742 old
+7743 old
+7744 old
+7745 old
+7746 old
+7747 old
+7748 old
+7749 old
+7750 old
+7751 old
+7752 old
+7753 old
+7754 old
+7755 old
+7756 old
+7757 old
+7758 old
+7759 old
+7760 old
+7761 old
+7762 old
+7763 old
+7764 old
+7765 old
+7766 old
+7767 old
+7768 old
+7769 old
+7770 old
+7771 old
+7772 old
+7773 old
+7774 old
+7775 old
+7776 old
+7777 old
+7778 old
+7779 old
+7780 old
+7781 old
+7782 old
+7783 old
+7784 old
+7785 old
+7786 old
+7787 old
+7788 old
+7789 old
+7790 old
+7791 old
+7792 old
+7793 old
+7794 old
+7795 old
+7796 old
+7797 old
+7798 old
+7799 old
+7800 old
+7801 old
+7802 old
+7803 old
+7804 old
+7805 old
+7806 old
+7807 old
+7808 old
+7809 old
+7810 old
+7811 old
+7812 old
+7813 old
+7814 old
+7815 old
+7816 old
+7817 old
+7818 old
+7819 old
+7820 old
+7821 old
+7822 old
+7823 old
+7824 old
+7825 old
+7826 old
+7827 old
+7828 old
+7829 old
+7830 old
+7831 old
+7832 old
+7833 old
+7834 old
+7835 old
+7836 old
+7837 old
+7838 old
+7839 old
+7840 old
+7841 old
+7842 old
+7843 old
+7844 old
+7845 old
+7846 old
+7847 old
+7848 old
+7849 old
+7850 old
+7851 old
+7852 old
+7853 old
+7854 old
+7855 old
+7856 old
+7857 old
+7858 old
+7859 old
+7860 old
+7861 old
+7862 old
+7863 old
+7864 old
+7865 old
+7866 old
+7867 old
+7868 old
+7869 old
+7870 old
+7871 old
+7872 old
+7873 old
+7874 old
+7875 old
+7876 old
+7877 old
+7878 old
+7879 old
+7880 old
+7881 old
+7882 old
+7883 old
+7884 old
+7885 old
+7886 old
+7887 old
+7888 old
+7889 old
+7890 old
+7891 old
+7892 old
+7893 old
+7894 old
+7895 old
+7896 old
+7897 old
+7898 old
+7899 old
+7900 old
+7901 old
+7902 old
+7903 old
+7904 old
+7905 old
+7906 old
+7907 old
+7908 old
+7909 old
+7910 old
+7911 old
+7912 old
+7913 old
+7914 old
+7915 old
+7916 old
+7917 old
+7918 old
+7919 old
+7920 old
+7921 old
+7922 old
+7923 old
+7924 old
+7925 old
+7926 old
+7927 old
+7928 old
+7929 old
+7930 old
+7931 old
+7932 old
+7933 old
+7934 old
+7935 old
+7936 old
+7937 old
+7938 old
+7939 old
+7940 old
+7941 old
+7942 old
+7943 old
+7944 old
+7945 old
+7946 old
+7947 old
+7948 old
+7949 old
+7950 old
+7951 old
+7952 old
+7953 old
+7954 old
+7955 old
+7956 old
+7957 old
+7958 old
+7959 old
+7960 old
+7961 old
+7962 old
+7963 old
+7964 old
+7965 old
+7966 old
+7967 old
+7968 old
+7969 old
+7970 old
+7971 old
+7972 old
+7973 old
+7974 old
+7975 old
+7976 old
+7977 old
+7978 old
+7979 old
+7980 old
+7981 old
+7982 old
+7983 old
+7984 old
+7985 old
+7986 old
+7987 old
+7988 old
+7989 old
+7990 old
+7991 old
+7992 old
+7993 old
+7994 old
+7995 old
+7996 old
+7997 old
+7998 old
+7999 old
+8000 old
+8001 old
+8002 old
+8003 old
+8004 old
+8005 old
+8006 old
+8007 old
+8008 old
+8009 old
+8010 old
+8011 old
+8012 old
+8013 old
+8014 old
+8015 old
+8016 old
+8017 old
+8018 old
+8019 old
+8020 old
+8021 old
+8022 old
+8023 old
+8024 old
+8025 old
+8026 old
+8027 old
+8028 old
+8029 old
+8030 old
+8031 old
+8032 old
+8033 old
+8034 old
+8035 old
+8036 old
+8037 old
+8038 old
+8039 old
+8040 old
+8041 old
+8042 old
+8043 old
+8044 old
+8045 old
+8046 old
+8047 old
+8048 old
+8049 old
+8050 old
+8051 old
+8052 old
+8053 old
+8054 old
+8055 old
+8056 old
+8057 old
+8058 old
+8059 old
+8060 old
+8061 old
+8062 old
+8063 old
+8064 old
+8065 old
+8066 old
+8067 old
+8068 old
+8069 old
+8070 old
+8071 old
+8072 old
+8073 old
+8074 old
+8075 old
+8076 old
+8077 old
+8078 old
+8079 old
+8080 old
+8081 old
+8082 old
+8083 old
+8084 old
+8085 old
+8086 old
+8087 old
+8088 old
+8089 old
+8090 old
+8091 old
+8092 old
+8093 old
+8094 old
+8095 old
+8096 old
+8097 old
+8098 old
+8099 old
+8100 old
+8101 old
+8102 old
+8103 old
+8104 old
+8105 old
+8106 old
+8107 old
+8108 old
+8109 old
+8110 old
+8111 old
+8112 old
+8113 old
+8114 old
+8115 old
+8116 old
+8117 old
+8118 old
+8119 old
+8120 old
+8121 old
+8122 old
+8123 old
+8124 old
+8125 old
+8126 old
+8127 old
+8128 old
+8129 old
+8130 old
+8131 old
+8132 old
+8133 old
+8134 old
+8135 old
+8136 old
+8137 old
+8138 old
+8139 old
+8140 old
+8141 old
+8142 old
+8143 old
+8144 old
+8145 old
+8146 old
+8147 old
+8148 old
+8149 old
+8150 old
+8151 old
+8152 old
+8153 old
+8154 old
+8155 old
+8156 old
+8157 old
+8158 old
+8159 old
+8160 old
+8161 old
+8162 old
+8163 old
+8164 old
+8165 old
+8166 old
+8167 old
+8168 old
+8169 old
+8170 old
+8171 old
+8172 old
+8173 old
+8174 old
+8175 old
+8176 old
+8177 old
+8178 old
+8179 old
+8180 old
+8181 old
+8182 old
+8183 old
+8184 old
+8185 old
+8186 old
+8187 old
+8188 old
+8189 old
+8190 old
+8191 old
+8192 old
+8193 old
+8194 old
+8195 old
+8196 old
+8197 old
+8198 old
+8199 old
+8200 old
+8201 old
+8202 old
+8203 old
+8204 old
+8205 old
+8206 old
+8207 old
+8208 old
+8209 old
+8210 old
+8211 old
+8212 old
+8213 old
+8214 old
+8215 old
+8216 old
+8217 old
+8218 old
+8219 old
+8220 old
+8221 old
+8222 old
+8223 old
+8224 old
+8225 old
+8226 old
+8227 old
+8228 old
+8229 old
+8230 old
+8231 old
+8232 old
+8233 old
+8234 old
+8235 old
+8236 old
+8237 old
+8238 old
+8239 old
+8240 old
+8241 old
+8242 old
+8243 old
+8244 old
+8245 old
+8246 old
+8247 old
+8248 old
+8249 old
+8250 old
+8251 old
+8252 old
+8253 old
+8254 old
+8255 old
+8256 old
+8257 old
+8258 old
+8259 old
+8260 old
+8261 old
+8262 old
+8263 old
+8264 old
+8265 old
+8266 old
+8267 old
+8268 old
+8269 old
+8270 old
+8271 old
+8272 old
+8273 old
+8274 old
+8275 old
+8276 old
+8277 old
+8278 old
+8279 old
+8280 old
+8281 old
+8282 old
+8283 old
+8284 old
+8285 old
+8286 old
+8287 old
+8288 old
+8289 old
+8290 old
+8291 old
+8292 old
+8293 old
+8294 old
+8295 old
+8296 old
+8297 old
+8298 old
+8299 old
+8300 old
+8301 old
+8302 old
+8303 old
+8304 old
+8305 old
+8306 old
+8307 old
+8308 old
+8309 old
+8310 old
+8311 old
+8312 old
+8313 old
+8314 old
+8315 old
+8316 old
+8317 old
+8318 old
+8319 old
+8320 old
+8321 old
+8322 old
+8323 old
+8324 old
+8325 old
+8326 old
+8327 old
+8328 old
+8329 old
+8330 old
+8331 old
+8332 old
+8333 old
+8334 old
+8335 old
+8336 old
+8337 old
+8338 old
+8339 old
+8340 old
+8341 old
+8342 old
+8343 old
+8344 old
+8345 old
+8346 old
+8347 old
+8348 old
+8349 old
+8350 old
+8351 old
+8352 old
+8353 old
+8354 old
+8355 old
+8356 old
+8357 old
+8358 old
+8359 old
+8360 old
+8361 old
+8362 old
+8363 old
+8364 old
+8365 old
+8366 old
+8367 old
+8368 old
+8369 old
+8370 old
+8371 old
+8372 old
+8373 old
+8374 old
+8375 old
+8376 old
+8377 old
+8378 old
+8379 old
+8380 old
+8381 old
+8382 old
+8383 old
+8384 old
+8385 old
+8386 old
+8387 old
+8388 old
+8389 old
+8390 old
+8391 old
+8392 old
+8393 old
+8394 old
+8395 old
+8396 old
+8397 old
+8398 old
+8399 old
+8400 old
+8401 old
+8402 old
+8403 old
+8404 old
+8405 old
+8406 old
+8407 old
+8408 old
+8409 old
+8410 old
+8411 old
+8412 old
+8413 old
+8414 old
+8415 old
+8416 old
+8417 old
+8418 old
+8419 old
+8420 old
+8421 old
+8422 old
+8423 old
+8424 old
+8425 old
+8426 old
+8427 old
+8428 old
+8429 old
+8430 old
+8431 old
+8432 old
+8433 old
+8434 old
+8435 old
+8436 old
+8437 old
+8438 old
+8439 old
+8440 old
+8441 old
+8442 old
+8443 old
+8444 old
+8445 old
+8446 old
+8447 old
+8448 old
+8449 old
+8450 old
+8451 old
+8452 old
+8453 old
+8454 old
+8455 old
+8456 old
+8457 old
+8458 old
+8459 old
+8460 old
+8461 old
+8462 old
+8463 old
+8464 old
+8465 old
+8466 old
+8467 old
+8468 old
+8469 old
+8470 old
+8471 old
+8472 old
+8473 old
+8474 old
+8475 old
+8476 old
+8477 old
+8478 old
+8479 old
+8480 old
+8481 old
+8482 old
+8483 old
+8484 old
+8485 old
+8486 old
+8487 old
+8488 old
+8489 old
+8490 old
+8491 old
+8492 old
+8493 old
+8494 old
+8495 old
+8496 old
+8497 old
+8498 old
+8499 old
+8500 old
+8501 old
+8502 old
+8503 old
+8504 old
+8505 old
+8506 old
+8507 old
+8508 old
+8509 old
+8510 old
+8511 old
+8512 old
+8513 old
+8514 old
+8515 old
+8516 old
+8517 old
+8518 old
+8519 old
+8520 old
+8521 old
+8522 old
+8523 old
+8524 old
+8525 old
+8526 old
+8527 old
+8528 old
+8529 old
+8530 old
+8531 old
+8532 old
+8533 old
+8534 old
+8535 old
+8536 old
+8537 old
+8538 old
+8539 old
+8540 old
+8541 old
+8542 old
+8543 old
+8544 old
+8545 old
+8546 old
+8547 old
+8548 old
+8549 old
+8550 old
+8551 old
+8552 old
+8553 old
+8554 old
+8555 old
+8556 old
+8557 old
+8558 old
+8559 old
+8560 old
+8561 old
+8562 old
+8563 old
+8564 old
+8565 old
+8566 old
+8567 old
+8568 old
+8569 old
+8570 old
+8571 old
+8572 old
+8573 old
+8574 old
+8575 old
+8576 old
+8577 old
+8578 old
+8579 old
+8580 old
+8581 old
+8582 old
+8583 old
+8584 old
+8585 old
+8586 old
+8587 old
+8588 old
+8589 old
+8590 old
+8591 old
+8592 old
+8593 old
+8594 old
+8595 old
+8596 old
+8597 old
+8598 old
+8599 old
+8600 old
+8601 old
+8602 old
+8603 old
+8604 old
+8605 old
+8606 old
+8607 old
+8608 old
+8609 old
+8610 old
+8611 old
+8612 old
+8613 old
+8614 old
+8615 old
+8616 old
+8617 old
+8618 old
+8619 old
+8620 old
+8621 old
+8622 old
+8623 old
+8624 old
+8625 old
+8626 old
+8627 old
+8628 old
+8629 old
+8630 old
+8631 old
+8632 old
+8633 old
+8634 old
+8635 old
+8636 old
+8637 old
+8638 old
+8639 old
+8640 old
+8641 old
+8642 old
+8643 old
+8644 old
+8645 old
+8646 old
+8647 old
+8648 old
+8649 old
+8650 old
+8651 old
+8652 old
+8653 old
+8654 old
+8655 old
+8656 old
+8657 old
+8658 old
+8659 old
+8660 old
+8661 old
+8662 old
+8663 old
+8664 old
+8665 old
+8666 old
+8667 old
+8668 old
+8669 old
+8670 old
+8671 old
+8672 old
+8673 old
+8674 old
+8675 old
+8676 old
+8677 old
+8678 old
+8679 old
+8680 old
+8681 old
+8682 old
+8683 old
+8684 old
+8685 old
+8686 old
+8687 old
+8688 old
+8689 old
+8690 old
+8691 old
+8692 old
+8693 old
+8694 old
+8695 old
+8696 old
+8697 old
+8698 old
+8699 old
+8700 old
+8701 old
+8702 old
+8703 old
+8704 old
+8705 old
+8706 old
+8707 old
+8708 old
+8709 old
+8710 old
+8711 old
+8712 old
+8713 old
+8714 old
+8715 old
+8716 old
+8717 old
+8718 old
+8719 old
+8720 old
+8721 old
+8722 old
+8723 old
+8724 old
+8725 old
+8726 old
+8727 old
+8728 old
+8729 old
+8730 old
+8731 old
+8732 old
+8733 old
+8734 old
+8735 old
+8736 old
+8737 old
+8738 old
+8739 old
+8740 old
+8741 old
+8742 old
+8743 old
+8744 old
+8745 old
+8746 old
+8747 old
+8748 old
+8749 old
+8750 old
+8751 old
+8752 old
+8753 old
+8754 old
+8755 old
+8756 old
+8757 old
+8758 old
+8759 old
+8760 old
+8761 old
+8762 old
+8763 old
+8764 old
+8765 old
+8766 old
+8767 old
+8768 old
+8769 old
+8770 old
+8771 old
+8772 old
+8773 old
+8774 old
+8775 old
+8776 old
+8777 old
+8778 old
+8779 old
+8780 old
+8781 old
+8782 old
+8783 old
+8784 old
+8785 old
+8786 old
+8787 old
+8788 old
+8789 old
+8790 old
+8791 old
+8792 old
+8793 old
+8794 old
+8795 old
+8796 old
+8797 old
+8798 old
+8799 old
+8800 old
+8801 old
+8802 old
+8803 old
+8804 old
+8805 old
+8806 old
+8807 old
+8808 old
+8809 old
+8810 old
+8811 old
+8812 old
+8813 old
+8814 old
+8815 old
+8816 old
+8817 old
+8818 old
+8819 old
+8820 old
+8821 old
+8822 old
+8823 old
+8824 old
+8825 old
+8826 old
+8827 old
+8828 old
+8829 old
+8830 old
+8831 old
+8832 old
+8833 old
+8834 old
+8835 old
+8836 old
+8837 old
+8838 old
+8839 old
+8840 old
+8841 old
+8842 old
+8843 old
+8844 old
+8845 old
+8846 old
+8847 old
+8848 old
+8849 old
+8850 old
+8851 old
+8852 old
+8853 old
+8854 old
+8855 old
+8856 old
+8857 old
+8858 old
+8859 old
+8860 old
+8861 old
+8862 old
+8863 old
+8864 old
+8865 old
+8866 old
+8867 old
+8868 old
+8869 old
+8870 old
+8871 old
+8872 old
+8873 old
+8874 old
+8875 old
+8876 old
+8877 old
+8878 old
+8879 old
+8880 old
+8881 old
+8882 old
+8883 old
+8884 old
+8885 old
+8886 old
+8887 old
+8888 old
+8889 old
+8890 old
+8891 old
+8892 old
+8893 old
+8894 old
+8895 old
+8896 old
+8897 old
+8898 old
+8899 old
+8900 old
+8901 old
+8902 old
+8903 old
+8904 old
+8905 old
+8906 old
+8907 old
+8908 old
+8909 old
+8910 old
+8911 old
+8912 old
+8913 old
+8914 old
+8915 old
+8916 old
+8917 old
+8918 old
+8919 old
+8920 old
+8921 old
+8922 old
+8923 old
+8924 old
+8925 old
+8926 old
+8927 old
+8928 old
+8929 old
+8930 old
+8931 old
+8932 old
+8933 old
+8934 old
+8935 old
+8936 old
+8937 old
+8938 old
+8939 old
+8940 old
+8941 old
+8942 old
+8943 old
+8944 old
+8945 old
+8946 old
+8947 old
+8948 old
+8949 old
+8950 old
+8951 old
+8952 old
+8953 old
+8954 old
+8955 old
+8956 old
+8957 old
+8958 old
+8959 old
+8960 old
+8961 old
+8962 old
+8963 old
+8964 old
+8965 old
+8966 old
+8967 old
+8968 old
+8969 old
+8970 old
+8971 old
+8972 old
+8973 old
+8974 old
+8975 old
+8976 old
+8977 old
+8978 old
+8979 old
+8980 old
+8981 old
+8982 old
+8983 old
+8984 old
+8985 old
+8986 old
+8987 old
+8988 old
+8989 old
+8990 old
+8991 old
+8992 old
+8993 old
+8994 old
+8995 old
+8996 old
+8997 old
+8998 old
+8999 old
+9000 old
+9001 old
+9002 old
+9003 old
+9004 old
+9005 old
+9006 old
+9007 old
+9008 old
+9009 old
+9010 old
+9011 old
+9012 old
+9013 old
+9014 old
+9015 old
+9016 old
+9017 old
+9018 old
+9019 old
+9020 old
+9021 old
+9022 old
+9023 old
+9024 old
+9025 old
+9026 old
+9027 old
+9028 old
+9029 old
+9030 old
+9031 old
+9032 old
+9033 old
+9034 old
+9035 old
+9036 old
+9037 old
+9038 old
+9039 old
+9040 old
+9041 old
+9042 old
+9043 old
+9044 old
+9045 old
+9046 old
+9047 old
+9048 old
+9049 old
+9050 old
+9051 old
+9052 old
+9053 old
+9054 old
+9055 old
+9056 old
+9057 old
+9058 old
+9059 old
+9060 old
+9061 old
+9062 old
+9063 old
+9064 old
+9065 old
+9066 old
+9067 old
+9068 old
+9069 old
+9070 old
+9071 old
+9072 old
+9073 old
+9074 old
+9075 old
+9076 old
+9077 old
+9078 old
+9079 old
+9080 old
+9081 old
+9082 old
+9083 old
+9084 old
+9085 old
+9086 old
+9087 old
+9088 old
+9089 old
+9090 old
+9091 old
+9092 old
+9093 old
+9094 old
+9095 old
+9096 old
+9097 old
+9098 old
+9099 old
+9100 old
+9101 old
+9102 old
+9103 old
+9104 old
+9105 old
+9106 old
+9107 old
+9108 old
+9109 old
+9110 old
+9111 old
+9112 old
+9113 old
+9114 old
+9115 old
+9116 old
+9117 old
+9118 old
+9119 old
+9120 old
+9121 old
+9122 old
+9123 old
+9124 old
+9125 old
+9126 old
+9127 old
+9128 old
+9129 old
+9130 old
+9131 old
+9132 old
+9133 old
+9134 old
+9135 old
+9136 old
+9137 old
+9138 old
+9139 old
+9140 old
+9141 old
+9142 old
+9143 old
+9144 old
+9145 old
+9146 old
+9147 old
+9148 old
+9149 old
+9150 old
+9151 old
+9152 old
+9153 old
+9154 old
+9155 old
+9156 old
+9157 old
+9158 old
+9159 old
+9160 old
+9161 old
+9162 old
+9163 old
+9164 old
+9165 old
+9166 old
+9167 old
+9168 old
+9169 old
+9170 old
+9171 old
+9172 old
+9173 old
+9174 old
+9175 old
+9176 old
+9177 old
+9178 old
+9179 old
+9180 old
+9181 old
+9182 old
+9183 old
+9184 old
+9185 old
+9186 old
+9187 old
+9188 old
+9189 old
+9190 old
+9191 old
+9192 old
+9193 old
+9194 old
+9195 old
+9196 old
+9197 old
+9198 old
+9199 old
+9200 old
+9201 old
+9202 old
+9203 old
+9204 old
+9205 old
+9206 old
+9207 old
+9208 old
+9209 old
+9210 old
+9211 old
+9212 old
+9213 old
+9214 old
+9215 old
+9216 old
+9217 old
+9218 old
+9219 old
+9220 old
+9221 old
+9222 old
+9223 old
+9224 old
+9225 old
+9226 old
+9227 old
+9228 old
+9229 old
+9230 old
+9231 old
+9232 old
+9233 old
+9234 old
+9235 old
+9236 old
+9237 old
+9238 old
+9239 old
+9240 old
+9241 old
+9242 old
+9243 old
+9244 old
+9245 old
+9246 old
+9247 old
+9248 old
+9249 old
+9250 old
+9251 old
+9252 old
+9253 old
+9254 old
+9255 old
+9256 old
+9257 old
+9258 old
+9259 old
+9260 old
+9261 old
+9262 old
+9263 old
+9264 old
+9265 old
+9266 old
+9267 old
+9268 old
+9269 old
+9270 old
+9271 old
+9272 old
+9273 old
+9274 old
+9275 old
+9276 old
+9277 old
+9278 old
+9279 old
+9280 old
+9281 old
+9282 old
+9283 old
+9284 old
+9285 old
+9286 old
+9287 old
+9288 old
+9289 old
+9290 old
+9291 old
+9292 old
+9293 old
+9294 old
+9295 old
+9296 old
+9297 old
+9298 old
+9299 old
+9300 old
+9301 old
+9302 old
+9303 old
+9304 old
+9305 old
+9306 old
+9307 old
+9308 old
+9309 old
+9310 old
+9311 old
+9312 old
+9313 old
+9314 old
+9315 old
+9316 old
+9317 old
+9318 old
+9319 old
+9320 old
+9321 old
+9322 old
+9323 old
+9324 old
+9325 old
+9326 old
+9327 old
+9328 old
+9329 old
+9330 old
+9331 old
+9332 old
+9333 old
+9334 old
+9335 old
+9336 old
+9337 old
+9338 old
+9339 old
+9340 old
+9341 old
+9342 old
+9343 old
+9344 old
+9345 old
+9346 old
+9347 old
+9348 old
+9349 old
+9350 old
+9351 old
+9352 old
+9353 old
+9354 old
+9355 old
+9356 old
+9357 old
+9358 old
+9359 old
+9360 old
+9361 old
+9362 old
+9363 old
+9364 old
+9365 old
+9366 old
+9367 old
+9368 old
+9369 old
+9370 old
+9371 old
+9372 old
+9373 old
+9374 old
+9375 old
+9376 old
+9377 old
+9378 old
+9379 old
+9380 old
+9381 old
+9382 old
+9383 old
+9384 old
+9385 old
+9386 old
+9387 old
+9388 old
+9389 old
+9390 old
+9391 old
+9392 old
+9393 old
+9394 old
+9395 old
+9396 old
+9397 old
+9398 old
+9399 old
+9400 old
+9401 old
+9402 old
+9403 old
+9404 old
+9405 old
+9406 old
+9407 old
+9408 old
+9409 old
+9410 old
+9411 old
+9412 old
+9413 old
+9414 old
+9415 old
+9416 old
+9417 old
+9418 old
+9419 old
+9420 old
+9421 old
+9422 old
+9423 old
+9424 old
+9425 old
+9426 old
+9427 old
+9428 old
+9429 old
+9430 old
+9431 old
+9432 old
+9433 old
+9434 old
+9435 old
+9436 old
+9437 old
+9438 old
+9439 old
+9440 old
+9441 old
+9442 old
+9443 old
+9444 old
+9445 old
+9446 old
+9447 old
+9448 old
+9449 old
+9450 old
+9451 old
+9452 old
+9453 old
+9454 old
+9455 old
+9456 old
+9457 old
+9458 old
+9459 old
+9460 old
+9461 old
+9462 old
+9463 old
+9464 old
+9465 old
+9466 old
+9467 old
+9468 old
+9469 old
+9470 old
+9471 old
+9472 old
+9473 old
+9474 old
+9475 old
+9476 old
+9477 old
+9478 old
+9479 old
+9480 old
+9481 old
+9482 old
+9483 old
+9484 old
+9485 old
+9486 old
+9487 old
+9488 old
+9489 old
+9490 old
+9491 old
+9492 old
+9493 old
+9494 old
+9495 old
+9496 old
+9497 old
+9498 old
+9499 old
+9500 old
+9501 old
+9502 old
+9503 old
+9504 old
+9505 old
+9506 old
+9507 old
+9508 old
+9509 old
+9510 old
+9511 old
+9512 old
+9513 old
+9514 old
+9515 old
+9516 old
+9517 old
+9518 old
+9519 old
+9520 old
+9521 old
+9522 old
+9523 old
+9524 old
+9525 old
+9526 old
+9527 old
+9528 old
+9529 old
+9530 old
+9531 old
+9532 old
+9533 old
+9534 old
+9535 old
+9536 old
+9537 old
+9538 old
+9539 old
+9540 old
+9541 old
+9542 old
+9543 old
+9544 old
+9545 old
+9546 old
+9547 old
+9548 old
+9549 old
+9550 old
+9551 old
+9552 old
+9553 old
+9554 old
+9555 old
+9556 old
+9557 old
+9558 old
+9559 old
+9560 old
+9561 old
+9562 old
+9563 old
+9564 old
+9565 old
+9566 old
+9567 old
+9568 old
+9569 old
+9570 old
+9571 old
+9572 old
+9573 old
+9574 old
+9575 old
+9576 old
+9577 old
+9578 old
+9579 old
+9580 old
+9581 old
+9582 old
+9583 old
+9584 old
+9585 old
+9586 old
+9587 old
+9588 old
+9589 old
+9590 old
+9591 old
+9592 old
+9593 old
+9594 old
+9595 old
+9596 old
+9597 old
+9598 old
+9599 old
+9600 old
+9601 old
+9602 old
+9603 old
+9604 old
+9605 old
+9606 old
+9607 old
+9608 old
+9609 old
+9610 old
+9611 old
+9612 old
+9613 old
+9614 old
+9615 old
+9616 old
+9617 old
+9618 old
+9619 old
+9620 old
+9621 old
+9622 old
+9623 old
+9624 old
+9625 old
+9626 old
+9627 old
+9628 old
+9629 old
+9630 old
+9631 old
+9632 old
+9633 old
+9634 old
+9635 old
+9636 old
+9637 old
+9638 old
+9639 old
+9640 old
+9641 old
+9642 old
+9643 old
+9644 old
+9645 old
+9646 old
+9647 old
+9648 old
+9649 old
+9650 old
+9651 old
+9652 old
+9653 old
+9654 old
+9655 old
+9656 old
+9657 old
+9658 old
+9659 old
+9660 old
+9661 old
+9662 old
+9663 old
+9664 old
+9665 old
+9666 old
+9667 old
+9668 old
+9669 old
+9670 old
+9671 old
+9672 old
+9673 old
+9674 old
+9675 old
+9676 old
+9677 old
+9678 old
+9679 old
+9680 old
+9681 old
+9682 old
+9683 old
+9684 old
+9685 old
+9686 old
+9687 old
+9688 old
+9689 old
+9690 old
+9691 old
+9692 old
+9693 old
+9694 old
+9695 old
+9696 old
+9697 old
+9698 old
+9699 old
+9700 old
+9701 old
+9702 old
+9703 old
+9704 old
+9705 old
+9706 old
+9707 old
+9708 old
+9709 old
+9710 old
+9711 old
+9712 old
+9713 old
+9714 old
+9715 old
+9716 old
+9717 old
+9718 old
+9719 old
+9720 old
+9721 old
+9722 old
+9723 old
+9724 old
+9725 old
+9726 old
+9727 old
+9728 old
+9729 old
+9730 old
+9731 old
+9732 old
+9733 old
+9734 old
+9735 old
+9736 old
+9737 old
+9738 old
+9739 old
+9740 old
+9741 old
+9742 old
+9743 old
+9744 old
+9745 old
+9746 old
+9747 old
+9748 old
+9749 old
+9750 old
+9751 old
+9752 old
+9753 old
+9754 old
+9755 old
+9756 old
+9757 old
+9758 old
+9759 old
+9760 old
+9761 old
+9762 old
+9763 old
+9764 old
+9765 old
+9766 old
+9767 old
+9768 old
+9769 old
+9770 old
+9771 old
+9772 old
+9773 old
+9774 old
+9775 old
+9776 old
+9777 old
+9778 old
+9779 old
+9780 old
+9781 old
+9782 old
+9783 old
+9784 old
+9785 old
+9786 old
+9787 old
+9788 old
+9789 old
+9790 old
+9791 old
+9792 old
+9793 old
+9794 old
+9795 old
+9796 old
+9797 old
+9798 old
+9799 old
+9800 old
+9801 old
+9802 old
+9803 old
+9804 old
+9805 old
+9806 old
+9807 old
+9808 old
+9809 old
+9810 old
+9811 old
+9812 old
+9813 old
+9814 old
+9815 old
+9816 old
+9817 old
+9818 old
+9819 old
+9820 old
+9821 old
+9822 old
+9823 old
+9824 old
+9825 old
+9826 old
+9827 old
+9828 old
+9829 old
+9830 old
+9831 old
+9832 old
+9833 old
+9834 old
+9835 old
+9836 old
+9837 old
+9838 old
+9839 old
+9840 old
+9841 old
+9842 old
+9843 old
+9844 old
+9845 old
+9846 old
+9847 old
+9848 old
+9849 old
+9850 old
+9851 old
+9852 old
+9853 old
+9854 old
+9855 old
+9856 old
+9857 old
+9858 old
+9859 old
+9860 old
+9861 old
+9862 old
+9863 old
+9864 old
+9865 old
+9866 old
+9867 old
+9868 old
+9869 old
+9870 old
+9871 old
+9872 old
+9873 old
+9874 old
+9875 old
+9876 old
+9877 old
+9878 old
+9879 old
+9880 old
+9881 old
+9882 old
+9883 old
+9884 old
+9885 old
+9886 old
+9887 old
+9888 old
+9889 old
+9890 old
+9891 old
+9892 old
+9893 old
+9894 old
+9895 old
+9896 old
+9897 old
+9898 old
+9899 old
+9900 old
+9901 old
+9902 old
+9903 old
+9904 old
+9905 old
+9906 old
+9907 old
+9908 old
+9909 old
+9910 old
+9911 old
+9912 old
+9913 old
+9914 old
+9915 old
+9916 old
+9917 old
+9918 old
+9919 old
+9920 old
+9921 old
+9922 old
+9923 old
+9924 old
+9925 old
+9926 old
+9927 old
+9928 old
+9929 old
+9930 old
+9931 old
+9932 old
+9933 old
+9934 old
+9935 old
+9936 old
+9937 old
+9938 old
+9939 old
+9940 old
+9941 old
+9942 old
+9943 old
+9944 old
+9945 old
+9946 old
+9947 old
+9948 old
+9949 old
+9950 old
+9951 old
+9952 old
+9953 old
+9954 old
+9955 old
+9956 old
+9957 old
+9958 old
+9959 old
+9960 old
+9961 old
+9962 old
+9963 old
+9964 old
+9965 old
+9966 old
+9967 old
+9968 old
+9969 old
+9970 old
+9971 old
+9972 old
+9973 old
+9974 old
+9975 old
+9976 old
+9977 old
+9978 old
+9979 old
+9980 old
+9981 old
+9982 old
+9983 old
+9984 old
+9985 old
+9986 old
+9987 old
+9988 old
+9989 old
+9990 old
+9991 old
+9992 old
+9993 old
+9994 old
+9995 old
+9996 old
+9997 old
+9998 old
+9999 old
+10000 old

=== added file 'mysql-test/suite/ndb/t/add_node01.test'
--- a/mysql-test/suite/ndb/t/add_node01.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb/t/add_node01.test	2009-04-07 07:47:30 +0000
@@ -0,0 +1,152 @@
+-- source include/have_ndb.inc
+-- source include/not_embedded.inc
+# angel does not currently work on windoze
+-- source include/not_windows.inc 
+--result_format 2
+
+## Make mtr.pl restart all servers after this test
+call mtr.force_restart(); 
+
+## Show cluster is started with one ndb_mgmd and two ndbd nodes
+--replace_regex /mysql-[0-9]*.[0-9]*.[0-9]*/mysql/ /ndb-[0-9]*.[0-9]*.[0-9]*/ndb/ /localhost:[0-9]*/localhost/
+--exec $NDB_MGM -e show
+
+--disable_warnings
+drop database if exists DB1;
+--enable_warnings
+
+CREATE LOGFILE GROUP lg_1
+    ADD UNDOFILE 'undo_1.dat'
+    INITIAL_SIZE 16M
+    UNDO_BUFFER_SIZE 2M
+    ENGINE NDB;
+
+ALTER LOGFILE GROUP lg_1
+    ADD UNDOFILE 'undo_2.dat'
+    INITIAL_SIZE 12M
+    ENGINE NDB;
+
+CREATE TABLESPACE ts_1
+    ADD DATAFILE 'data_1.dat'
+    USE LOGFILE GROUP lg_1
+    INITIAL_SIZE 32M
+    ENGINE NDB;
+
+CREATE TABLESPACE ts_2
+    ADD DATAFILE 'data_2.dat'
+    USE LOGFILE GROUP lg_1
+    INITIAL_SIZE 32M
+    ENGINE NDB;
+
+create database DB1;
+use DB1;
+create table old_table1(id int NOT NULL PRIMARY KEY, data char(8)) engine=ndb;
+create table old_table2(id int NOT NULL PRIMARY KEY, data char(8)) engine=ndb;
+create table old_table3(id int NOT NULL PRIMARY KEY, data char(8))
+TABLESPACE ts_1 STORAGE DISK
+engine=ndb;
+create table old_table4(id int NOT NULL PRIMARY KEY, data char(8))
+TABLESPACE ts_2 STORAGE DISK
+engine=ndb;
+
+load data local infile 'suite/ndb/std_data/table_data10000.dat' into table old_table1 fields terminated by ' ' lines terminated by '\n';
+load data local infile 'suite/ndb/std_data/table_data10000.dat' into table old_table2 fields terminated by ' ' lines terminated by '\n';
+load data local infile 'suite/ndb/std_data/table_data10000.dat' into table old_table3 fields terminated by ' ' lines terminated by '\n';
+load data local infile 'suite/ndb/std_data/table_data10000.dat' into table old_table4 fields terminated by ' ' lines terminated by '\n';
+
+## Add two nodes to my.cnf
+# Set ndb_mgmd with node id 3, otherwise the configuration will change and the
+# cluster may fail to restart
+--source suite/ndb/include/add_two_nodes.inc
+
+## Reload ndb_mgmd
+--source suite/ndb/include/reload_ndb_mgmd.inc
+--exec $NDB_MGM -e show >> $NDB_TOOLS_OUTPUT
+
+## Restart the "old" ndbd nodes
+--exec $NDB_MGM -e "1 restart" >> $NDB_TOOLS_OUTPUT
+--exec $NDB_WAITER --nowait-nodes=40,41 >> $NDB_TOOLS_OUTPUT
+--exec $NDB_MGM -e "2 restart" >> $NDB_TOOLS_OUTPUT
+--exec $NDB_WAITER --nowait-nodes=40,41 >> $NDB_TOOLS_OUTPUT
+
+## Restart mysqld nodes
+let $mysqld_name=mysqld.1.1;
+--source include/restart_mysqld.inc
+connect (mysqld_2_1,127.0.0.1,root,,test,$MASTER_MYPORT1,);
+connection mysqld_2_1;
+let $mysqld_name= mysqld.2.1;
+--source include/restart_mysqld.inc
+connection default;
+
+## Initial start of "new" data nodes
+--replace_regex /[0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*/YYYY-MM-DD HH:MM:SS/
+/localhost:[0-9]*/localhost/ /generation: [0-9]*/generation: X/
+--exec $NDB_NDBD --ndb-nodeid=40
+--replace_regex /[0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*/YYYY-MM-DD HH:MM:SS/
+/localhost:[0-9]*/localhost/ /generation: [0-9]*/generation: X/
+--exec $NDB_NDBD --ndb-nodeid=41
+
+## Wait for added nodes started
+--exec $NDB_WAITER --timeout=300 >> $NDB_TOOLS_OUTPUT
+
+## Create nodegroup for "new" nodes
+--exec $NDB_MGM -e "create nodegroup 40,41" >> $NDB_TOOLS_OUTPUT
+
+# Cluster running after adding two ndbd nodes
+--replace_regex /mysql-[0-9]*.[0-9]*.[0-9]*/mysql/ /ndb-[0-9]*.[0-9]*.[0-9]*/ndb/ /localhost:[0-9]*/localhost/
+--exec $NDB_MGM -e show
+
+use DB1;
+create table new_table1(id int NOT NULL PRIMARY KEY, data char(8)) engine=ndb;
+create table new_table2(id int NOT NULL PRIMARY KEY, data char(8))
+TABLESPACE ts_1 STORAGE DISK
+engine=ndb;
+insert into new_table1(id, data) VALUES(1,'new'), (2,'new'),(3,'new'),(4,'new'),(5,'new'),(6,'new'),(7,'new'),(8,'new'),(9,'new'),(10,'new');
+insert into new_table2(id, data) VALUES(1,'new'), (2,'new'),(3,'new'),(4,'new'),(5,'new'),(6,'new'),(7,'new'),(8,'new'),(9,'new'),(10,'new');
+
+## ndb_mgm dump shows old data resides only on "old" nodes and new data resides on all nodes in cluster log 
+--exec $NDB_MGM -e "all dump 18" >> $NDB_TOOLS_OUTPUT
+
+alter online table old_table1 reorganize partition;
+alter online table old_table2 reorganize partition;
+alter online table old_table3 reorganize partition;
+alter online table old_table4 reorganize partition;
+
+select LOGFILE_GROUP_NAME,FILE_TYPE,EXTRA from INFORMATION_SCHEMA.FILES where FILE_NAME='undo_1.dat';
+select LOGFILE_GROUP_NAME,FILE_TYPE,EXTRA from INFORMATION_SCHEMA.FILES where FILE_NAME='undo_2.dat';
+select LOGFILE_GROUP_NAME,FILE_TYPE,TABLESPACE_NAME,EXTRA from INFORMATION_SCHEMA.FILES where FILE_NAME='data_1.dat';
+select LOGFILE_GROUP_NAME,FILE_TYPE,TABLESPACE_NAME,EXTRA from INFORMATION_SCHEMA.FILES where FILE_NAME='data_2.dat';
+
+## Drop nodegroup with "new" nodes is not allowed with data one those nodes
+--error 255
+--exec $NDB_MGM -e "drop nodegroup 1" >> $NDB_TOOLS_OUTPUT
+
+## Nodegroup with "new" nodes still exist after dropping it as shown:
+--replace_regex /mysql-[0-9]*.[0-9]*.[0-9]*/mysql/ /ndb-[0-9]*.[0-9]*.[0-9]*/ndb/ /localhost:[0-9]*/localhost/
+--exec $NDB_MGM -e show
+
+show databases;
+drop table old_table1,old_table2,old_table3,old_table4,new_table1,new_table2;
+drop database DB1;
+show databases;
+
+## Drop nodegroup with "new" nodes
+--exec $NDB_MGM -e "drop nodegroup 1" >> $NDB_TOOLS_OUTPUT
+
+## Nodegroup with "new" nodes still exists after dropping it as shown:
+--replace_regex /mysql-[0-9]*.[0-9]*.[0-9]*/mysql/ /ndb-[0-9]*.[0-9]*.[0-9]*/ndb/ /localhost:[0-9]*/localhost/
+--exec $NDB_MGM -e show
+
+# Cleanup
+ALTER TABLESPACE ts_1
+    DROP DATAFILE 'data_1.dat'
+    ENGINE NDB;
+
+ALTER TABLESPACE ts_2
+    DROP DATAFILE 'data_2.dat'
+    ENGINE NDB;
+
+drop TABLESPACE ts_1 ENGINE NDB;
+drop TABLESPACE ts_2 ENGINE NDB;
+
+drop LOGFILE GROUP lg_1 ENGINE NDB;

=== added file 'mysql-test/suite/ndb/t/add_node02.test'
--- a/mysql-test/suite/ndb/t/add_node02.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb/t/add_node02.test	2009-04-07 07:47:30 +0000
@@ -0,0 +1,126 @@
+-- source include/have_ndb.inc
+-- source include/not_embedded.inc
+# angel does not currently work on windoze
+-- source include/not_windows.inc
+--result_format 2
+
+## Make mtr.pl restart all servers after this test
+call mtr.force_restart(); 
+
+## Show cluster is started with one ndb_mgmd and two ndbd nodes
+--replace_regex /mysql-[0-9]*.[0-9]*.[0-9]*/mysql/ /ndb-[0-9]*.[0-9]*.[0-9]*/ndb/ /localhost:[0-9]*/localhost/ 
+--exec $NDB_MGM -e show
+
+--disable_warnings
+drop database if exists DB1;
+--enable_warnings
+
+CREATE LOGFILE GROUP lg_1
+    ADD UNDOFILE 'undo_1.dat'
+    INITIAL_SIZE 16M
+    UNDO_BUFFER_SIZE 2M
+    ENGINE NDB;
+
+ALTER LOGFILE GROUP lg_1
+    ADD UNDOFILE 'undo_2.dat'
+    INITIAL_SIZE 12M
+    ENGINE NDB;
+
+CREATE TABLESPACE ts_1
+    ADD DATAFILE 'data_1.dat'
+    USE LOGFILE GROUP lg_1
+    INITIAL_SIZE 32M
+    ENGINE NDB;
+
+CREATE TABLESPACE ts_2
+    ADD DATAFILE 'data_2.dat'
+    USE LOGFILE GROUP lg_1
+    INITIAL_SIZE 32M
+    ENGINE NDB;
+
+create database DB1;
+use DB1;
+create table old_table1(id int NOT NULL PRIMARY KEY, data char(8)) engine=ndb;
+create table old_table2(id int NOT NULL PRIMARY KEY, data char(8)) engine=ndb;
+create table old_table3(id int NOT NULL PRIMARY KEY, data char(8))
+TABLESPACE ts_1 STORAGE DISK
+engine=ndb;
+create table old_table4(id int NOT NULL PRIMARY KEY, data char(8))
+TABLESPACE ts_2 STORAGE DISK
+engine=ndb;
+load data local infile 'suite/ndb/std_data/table_data10000.dat' into table old_table1 fields terminated by ' ' lines terminated by '\n';
+load data local infile 'suite/ndb/std_data/table_data10000.dat' into table old_table2 fields terminated by ' ' lines terminated by '\n';
+load data local infile 'suite/ndb/std_data/table_data10000.dat' into table old_table3 fields terminated by ' ' lines terminated by '\n';
+load data local infile 'suite/ndb/std_data/table_data10000.dat' into table old_table4 fields terminated by ' ' lines terminated by '\n';
+
+## Add two nodes to my.cnf
+# Set ndb_mgmd with node id 3, otherwise the configuration will change and the
+# cluster may fail to restart
+--source suite/ndb/include/add_two_nodes.inc
+
+## Reload ndb_mgmd
+--source suite/ndb/include/reload_ndb_mgmd.inc
+--exec $NDB_MGM -e show >> $NDB_TOOLS_OUTPUT
+
+## Restart the "old" ndbd nodes
+--exec $NDB_MGM -e "1 restart" >> $NDB_TOOLS_OUTPUT
+--exec $NDB_WAITER --nowait-nodes=40,41 >> $NDB_TOOLS_OUTPUT
+--exec $NDB_MGM -e "2 restart" >> $NDB_TOOLS_OUTPUT
+--exec $NDB_WAITER --nowait-nodes=40,41 >> $NDB_TOOLS_OUTPUT
+
+## Restart mysqld nodes
+let $mysqld_name=mysqld.1.1;
+--source include/restart_mysqld.inc
+connect (mysqld_2_1,127.0.0.1,root,,test,$MASTER_MYPORT1,);
+connection mysqld_2_1;
+let $mysqld_name= mysqld.2.1;
+--source include/restart_mysqld.inc
+connection default;
+
+## Initial start of "new" data nodes
+--replace_regex /[0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*/YYYY-MM-DD HH:MM:SS/
+/localhost:[0-9]*/localhost/ /generation: [0-9]*/generation: X/
+--exec $NDB_NDBD --ndb-nodeid=40 --initial
+--replace_regex /[0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*/YYYY-MM-DD HH:MM:SS/
+/localhost:[0-9]*/localhost/ /generation: [0-9]*/generation: X/
+--exec $NDB_NDBD --ndb-nodeid=41 --initial
+
+## Wait for added nodes started
+--exec $NDB_WAITER --timeout=300 >> $NDB_TOOLS_OUTPUT
+
+## Create nodegroup for "new" nodes
+--exec $NDB_MGM -e "create nodegroup 40,41" >> $NDB_TOOLS_OUTPUT
+
+## Cluster running after adding two ndbd nodes
+--replace_regex /mysql-[0-9]*.[0-9]*.[0-9]*/mysql/ /ndb-[0-9]*.[0-9]*.[0-9]*/ndb/ /localhost:[0-9]*/localhost/
+--exec $NDB_MGM -e show
+
+--source include/ndb_backup.inc
+use DB1;
+drop table old_table1, old_table2, old_table3, old_table4;
+ALTER TABLESPACE ts_1
+    DROP DATAFILE 'data_1.dat'
+    ENGINE NDB;
+ALTER TABLESPACE ts_2
+    DROP DATAFILE 'data_2.dat'
+    ENGINE NDB;
+drop TABLESPACE ts_1 ENGINE NDB;
+drop TABLESPACE ts_2 ENGINE NDB;
+drop LOGFILE GROUP lg_1 ENGINE NDB;
+
+--exec $NDB_RESTORE --no-defaults -b $the_backup_id -n 1 -m -r --print --print_meta $NDB_BACKUPS-$the_backup_id >> $NDB_TOOLS_OUTPUT
+--exec $NDB_RESTORE --no-defaults -b $the_backup_id -n 2 -r --print --print_meta $NDB_BACKUPS-$the_backup_id >> $NDB_TOOLS_OUTPUT
+
+# Cleanup
+use DB1;
+drop table old_table1, old_table2, old_table3, old_table4;
+ALTER TABLESPACE ts_1
+    DROP DATAFILE 'data_1.dat'
+    ENGINE NDB;
+ALTER TABLESPACE ts_2
+    DROP DATAFILE 'data_2.dat'
+    ENGINE NDB;
+drop TABLESPACE ts_1 ENGINE NDB;
+drop TABLESPACE ts_2 ENGINE NDB;
+drop LOGFILE GROUP lg_1 ENGINE NDB;
+drop database DB1;

=== added file 'mysql-test/suite/ndb/t/add_node03.test'
--- a/mysql-test/suite/ndb/t/add_node03.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb/t/add_node03.test	2009-04-07 07:47:30 +0000
@@ -0,0 +1,69 @@
+-- source include/have_ndb.inc
+-- source include/not_embedded.inc
+# angel does not currently work on windoze
+-- source include/not_windows.inc
+--result_format 2
+
+## Make mtr.pl restart all servers after this test
+call mtr.force_restart(); 
+
+## Show cluster is started with one ndb_mgmd and two ndbd nodes
+--replace_regex /mysql-[0-9]*.[0-9]*.[0-9]*/mysql/ /ndb-[0-9]*.[0-9]*.[0-9]*/ndb/ /localhost:[0-9]*/localhost/
+--exec $NDB_MGM -e show
+
+## Add six nodes to my.cnf
+# Set ndb_mgmd with node id 3, otherwise the configuration will change and the
+# cluster may fail to restart
+--source suite/ndb/include/add_six_nodes.inc
+
+## Reload ndb_mgmd
+--source suite/ndb/include/reload_ndb_mgmd.inc
+--exec $NDB_MGM -e show >> $NDB_TOOLS_OUTPUT
+
+## Restart the "old" ndbd nodes
+--exec $NDB_MGM -e "1 restart" >> $NDB_TOOLS_OUTPUT
+--exec $NDB_WAITER --nowait-nodes=40,41,42,43,44,45 >> $NDB_TOOLS_OUTPUT
+--exec $NDB_MGM -e "2 restart" >> $NDB_TOOLS_OUTPUT
+--exec $NDB_WAITER --nowait-nodes=40,41,42,43,44,45 >> $NDB_TOOLS_OUTPUT
+
+## Restart mysqld nodes
+let $mysqld_name=mysqld.1.1;
+--source include/restart_mysqld.inc
+connect (mysqld_2_1,127.0.0.1,root,,test,$MASTER_MYPORT1,);
+connection mysqld_2_1;
+let $mysqld_name= mysqld.2.1;
+--source include/restart_mysqld.inc
+connection default;
+
+## Initial start of "new" data nodes
+--replace_regex /[0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*/YYYY-MM-DD HH:MM:SS/
+/localhost:[0-9]*/localhost/ /generation: [0-9]*/generation: X/
+--exec $NDB_NDBD --ndb-nodeid=40 --initial
+--replace_regex /[0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*/YYYY-MM-DD HH:MM:SS/
+/localhost:[0-9]*/localhost/ /generation: [0-9]*/generation: X/
+--exec $NDB_NDBD --ndb-nodeid=41 --initial
+--replace_regex /[0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*/YYYY-MM-DD HH:MM:SS/
+/localhost:[0-9]*/localhost/ /generation: [0-9]*/generation: X/
+--exec $NDB_NDBD --ndb-nodeid=42 --initial
+--replace_regex /[0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*/YYYY-MM-DD HH:MM:SS/
+/localhost:[0-9]*/localhost/ /generation: [0-9]*/generation: X/
+--exec $NDB_NDBD --ndb-nodeid=43 --initial
+--replace_regex /[0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*/YYYY-MM-DD HH:MM:SS/
+/localhost:[0-9]*/localhost/ /generation: [0-9]*/generation: X/
+--exec $NDB_NDBD --ndb-nodeid=44 --initial
+--replace_regex /[0-9]*-[0-9]*-[0-9]* [0-9]*:[0-9]*:[0-9]*/YYYY-MM-DD HH:MM:SS/
+/localhost:[0-9]*/localhost/ /generation: [0-9]*/generation: X/
+--exec $NDB_NDBD --ndb-nodeid=45 --initial
+
+## Wait for added nodes started
+--exec $NDB_WAITER --timeout=300 >> $NDB_TOOLS_OUTPUT
+
+## Create nodegroup for "new" nodes
+--exec $NDB_MGM -e "create nodegroup 40,41" >> $NDB_TOOLS_OUTPUT
+--exec $NDB_MGM -e "create nodegroup 42,43" >> $NDB_TOOLS_OUTPUT
+--exec $NDB_MGM -e "create nodegroup 44,45" >> $NDB_TOOLS_OUTPUT
+
+## Cluster running after adding six ndbd nodes:
+--replace_regex /mysql-[0-9]*.[0-9]*.[0-9]*/mysql/ /ndb-[0-9]*.[0-9]*.[0-9]*/ndb/ /localhost:[0-9]*/localhost/
+--exec $NDB_MGM -e show
+

=== modified file 'mysql-test/suite/ndb/t/disabled.def'
--- a/mysql-test/suite/ndb/t/disabled.def	2009-02-16 08:34:08 +0000
+++ b/mysql-test/suite/ndb/t/disabled.def	2009-04-07 07:47:30 +0000
@@ -14,3 +14,8 @@ ndb_partition_error2 : Bug#40989 ndb_par
 
 # the below testcase have been reworked to avoid the bug, test contains comment, keep bug open
 ndb_cache_trans           : Bug#42197 Query cache and autocommit
+
+# the below testcase have detected the bugs that are still open
+add_node01    : disabled waiting for safe_process compatible spawn
+add_node02    : disabled waiting for safe_process compatible spawn
+add_node03    : disabled waiting for safe_process compatible spawn

=== added file 'mysql-test/suite/ndb/t/ndb_bug31754.test'
--- a/mysql-test/suite/ndb/t/ndb_bug31754.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/ndb/t/ndb_bug31754.test	2009-03-31 09:04:22 +0000
@@ -0,0 +1,6 @@
+-- source include/have_ndb.inc
+-- source include/ndb_default_cluster.inc
+
+-- replace_regex /[0-9]+/x/
+-- exec $NDB_MGM --no-defaults --ndb-connectstring="$NDB_CONNECTSTRING" -e "start backup wait started"
+

=== modified file 'mysql-test/suite/ndb/t/ndb_config.test'
--- a/mysql-test/suite/ndb/t/ndb_config.test	2009-02-26 14:52:41 +0000
+++ b/mysql-test/suite/ndb/t/ndb_config.test	2009-03-20 09:57:27 +0000
@@ -39,3 +39,10 @@ echo == 12 ==;
 
 echo == 13 ==;
 --exec $NDB_CONFIG --no-defaults --query=nodeid --host=127.0.0.1 --config-file=$MYSQL_TEST_DIR/std_data/ndb_config_config.ini 2> /dev/null
+
+echo == 14 == ndb_config --configinfo;
+--exec $NDB_CONFIG --configinfo > /dev/null
+
+echo == 15 == ndb_config --configinfo --xml;
+--exec $NDB_CONFIG --configinfo --xml > /dev/null
+

=== modified file 'mysql-test/suite/ndb/t/ndb_load.test'
--- a/mysql-test/suite/ndb/t/ndb_load.test	2009-02-03 13:35:56 +0000
+++ b/mysql-test/suite/ndb/t/ndb_load.test	2009-04-06 10:37:55 +0000
@@ -21,3 +21,82 @@ SELECT * FROM t1 ORDER BY word;
 DROP TABLE t1;
 
 # End of 4.1 tests
+
+--echo Test single statement load from MyISAM table with and
+--echo without ndb_use_transactions
+--echo (Bug#43236)
+--echo ndb_use_transactions = 0 should allow bulk inserts to 
+--echo succeed by automatically splitting into smaller 
+--echo transactions.
+
+CREATE TABLE t1 (a int) engine=MyIsam;
+
+show tables;
+
+DELIMITER %;
+
+CREATE PROCEDURE bulkinsert (in num int)
+BEGIN
+  set @total= num;
+  repeat
+    insert into t1 values (@total);
+    set @total= @total -1;
+  until @total = 0 end repeat;
+end %
+
+DELIMITER ;%
+
+
+--echo Insert 15000 rows which should exceed default number
+--echo of concurrent operations (include/default_ndbd.cnf)
+--echo when trying to move over to ndb.
+CALL bulkinsert(15000);
+
+show tables;
+
+SELECT COUNT(*) FROM t1;
+
+SET ndb_use_transactions= 1;
+
+CREATE TABLE t2 (a int) engine=Ndb;
+
+--echo Will fail with too many concurrent operations error
+--error 1297
+INSERT INTO t2 SELECT * FROM t1;
+
+SELECT COUNT(*) FROM t2;
+
+SET ndb_use_transactions= 0;
+
+--echo Should pass as insert is split
+--echo into multiple transactions
+INSERT INTO t2 SELECT * FROM t1;
+
+SELECT COUNT(*) FROM t2;
+
+DROP PROCEDURE bulkinsert;
+DROP TABLE t2;
+
+--echo Now check bulk insert using create .. as select.
+SHOW VARIABLES LIKE '%storage_engine%';
+SET storage_engine="ndb";
+
+CREATE TABLE t2 AS SELECT * FROM t1;
+
+SELECT COUNT(*) FROM t2;
+
+DROP TABLE t2;
+
+SET storage_engine="MyIsam";
+
+--echo Now check Alter table to Ndb
+ALTER TABLE t1 ENGINE= Ndb;
+
+SELECT COUNT(*) FROM t1;
+
+--echo Now check Alter table within Ndb
+ALTER TABLE t1 ADD COLUMN extra int default 6;
+
+SELECT COUNT(*) FROM t1;
+
+DROP TABLE t1;

=== modified file 'mysql-test/suite/ndb_team/t/ndb_autodiscover3.test'
--- a/mysql-test/suite/ndb_team/t/ndb_autodiscover3.test	2009-02-19 10:38:36 +0000
+++ b/mysql-test/suite/ndb_team/t/ndb_autodiscover3.test	2009-04-03 04:40:49 +0000
@@ -5,6 +5,8 @@
 # see bug#21563
 -- source include/have_binlog_format_mixed_or_row.inc
 
+# angel does not currently work on windoze
+-- source include/not_windows.inc
 --disable_warnings
 drop table if exists t1, t2;
 --disable_query_log

=== modified file 'mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result'
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result	2009-02-26 14:52:41 +0000
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result	2009-03-19 13:37:37 +0000
@@ -5,10 +5,12 @@ reset slave;
 drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
 start slave;
 CREATE TABLE t1 (c1 CHAR(15), c2 CHAR(15), c3 INT, PRIMARY KEY (c3)) ENGINE = NDB ;
+CREATE TABLE t2 (a int key) ENGINE = NDB ;
 reset master;
 SHOW TABLES;
 Tables_in_test
 t1
+t2
 INSERT INTO t1 VALUES ("row1","will go away",1);
 SELECT * FROM t1 ORDER BY c3;
 c1	c2	c3
@@ -23,6 +25,17 @@ SELECT * FROM t1 ORDER BY c3;
 c1	c2	c3
 row1	will go away	1
 stop slave;
+set SQL_LOG_BIN=0;
+insert into t2 values (1);
+show binlog events from <binlog_start>;
+Log_name	Pos	Event_type	Server_id	End_log_pos	Info
+master-bin.000001	#	Query	3	#	BEGIN
+master-bin.000001	#	Table_map	3	#	table_id: # (test.t1)
+master-bin.000001	#	Table_map	3	#	table_id: # (mysql.ndb_apply_status)
+master-bin.000001	#	Write_rows	3	#	table_id: #
+master-bin.000001	#	Write_rows	3	#	table_id: # flags: STMT_END_F
+master-bin.000001	#	Query	3	#	COMMIT
+set SQL_LOG_BIN=1;
 @the_pos:=Position	@the_file:=SUBSTRING_INDEX(REPLACE(FILE,'\\','/'), '/', -1)
 107	master-bin.000001
 CHANGE MASTER TO
@@ -52,4 +65,5 @@ row4	D	4
 row5	E	5
 ==== clean up ====
 DROP TABLE t1;
+DROP TABLE t2;
 STOP SLAVE;

=== modified file 'mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test'
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test	2009-02-26 14:52:41 +0000
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test	2009-03-19 13:37:37 +0000
@@ -11,6 +11,8 @@
 
 # create a table with one row, and make sure the other "master" gets it
 CREATE TABLE t1 (c1 CHAR(15), c2 CHAR(15), c3 INT, PRIMARY KEY (c3)) ENGINE = NDB ;
+# a dummy table such that we can make sure data gets into binlog on server2
+CREATE TABLE t2 (a int key) ENGINE = NDB ;
 connection server2;
 reset master;
 SHOW TABLES;
@@ -31,6 +33,13 @@ stop slave;
 
 # get the master binlog pos from the epoch, from the _other_ "master", server2
 connection server2;
+# insert some data to t1 which should not come into the binlog
+# just so that we can do "show binlog events" to make sure the t1
+# update is actually in the server2 binlog
+set SQL_LOG_BIN=0;
+insert into t2 values (1);
+-- source include/show_binlog_events2.inc
+set SQL_LOG_BIN=1;
 --replace_result $the_epoch <the_epoch>
 --disable_query_log
 eval SELECT @the_pos:=Position,
@@ -70,6 +79,7 @@ SELECT * FROM t1 ORDER BY c3;
 --echo ==== clean up ====
 connection server2;
 DROP TABLE t1;
+DROP TABLE t2;
 sync_slave_with_master;
 
 STOP SLAVE;

=== modified file 'mysql-test/t/disabled.def'
--- a/mysql-test/t/disabled.def	2009-02-18 08:46:29 +0000
+++ b/mysql-test/t/disabled.def	2009-03-31 11:54:00 +0000
@@ -15,3 +15,4 @@ innodb_bug39438          : BUG#42383 200
 innodb			 : Bug #37995  	Error message truncation in test "innodb" in embedded mode
 concurrent_innodb_unsafelog: Bug #41498 concurrent_innodb_unsafelog fails sporadically
 concurrent_innodb_safelog: Bug #39484  	main.concurrent_innodb_safelog fails sporadically
+

=== modified file 'mysql-test/t/mysqltest.test'
--- a/mysql-test/t/mysqltest.test	2009-01-15 08:05:51 +0000
+++ b/mysql-test/t/mysqltest.test	2009-03-19 13:42:51 +0000
@@ -573,7 +573,7 @@ echo ;
 
 # Illegal use of exec
 --error 1
---exec echo "--exec false" | $MYSQL_TEST 2>&1
+--exec echo "--exec false" | $MYSQL_TEST > /dev/null 2>&1
 
 --error 1
 --exec echo "--exec " | $MYSQL_TEST 2>&1

=== modified file 'sql/ha_ndbcluster.cc'
--- a/sql/ha_ndbcluster.cc	2009-03-16 15:24:30 +0000
+++ b/sql/ha_ndbcluster.cc	2009-04-07 20:06:42 +0000
@@ -5879,6 +5879,8 @@ ha_ndbcluster::start_transaction_row(con
   DBUG_ASSERT(m_thd_ndb);
   DBUG_ASSERT(m_thd_ndb->trans == NULL);
 
+  transaction_checks(table->in_use, m_thd_ndb);
+
   Ndb *ndb= m_thd_ndb->ndb;
 
   Uint64 tmp[(MAX_KEY_SIZE_IN_WORDS*MAX_XFRM_MULTIPLY) >> 1];
@@ -5908,6 +5910,8 @@ ha_ndbcluster::start_transaction_key(uin
   DBUG_ASSERT(m_thd_ndb);
   DBUG_ASSERT(m_thd_ndb->trans == NULL);
 
+  transaction_checks(table->in_use, m_thd_ndb);
+
   Ndb *ndb= m_thd_ndb->ndb;
   const NdbRecord *key_rec= m_index[inx_no].ndb_unique_record_key;
 

=== modified file 'storage/ndb/include/kernel/signaldata/SumaImpl.hpp'
--- a/storage/ndb/include/kernel/signaldata/SumaImpl.hpp	2008-10-01 07:53:50 +0000
+++ b/storage/ndb/include/kernel/signaldata/SumaImpl.hpp	2009-03-20 08:36:40 +0000
@@ -222,7 +222,8 @@ struct SubStopConf {
    */
 
   friend bool printSUB_STOP_CONF(FILE *, const Uint32 *, Uint32, Uint16);
-  STATIC_CONST( SignalLength = 7 );
+  STATIC_CONST( SignalLengthWithGci = 9 );
+  STATIC_CONST( SignalLength = 9 );
 
   Uint32 senderRef;
   Uint32 senderData;
@@ -231,6 +232,9 @@ struct SubStopConf {
   Uint32 part;  // SubscriptionData::Part
   Uint32 subscriberData;
   Uint32 subscriberRef;
+  //
+  Uint32 gci_hi;
+  Uint32 gci_lo;
 };
 
 struct SubSyncReq {

=== modified file 'storage/ndb/include/mgmapi/mgmapi_error.h'
--- a/storage/ndb/include/mgmapi/mgmapi_error.h	2008-12-18 09:43:26 +0000
+++ b/storage/ndb/include/mgmapi/mgmapi_error.h	2009-03-26 09:11:40 +0000
@@ -75,6 +75,8 @@ extern "C" {
     /* Service errors - Configuration change */
     /** Unable to start config change */
     NDB_MGM_CONFIG_CHANGE_FAILED = 4011,
+    /** Unable to get configuration */
+    NDB_MGM_GET_CONFIG_FAILED = 4012,
 
     /* Usage errors */
     /** Usage error */

=== modified file 'storage/ndb/include/mgmcommon/ConfigRetriever.hpp'
--- a/storage/ndb/include/mgmcommon/ConfigRetriever.hpp	2009-03-04 10:07:03 +0000
+++ b/storage/ndb/include/mgmcommon/ConfigRetriever.hpp	2009-03-26 08:33:33 +0000
@@ -27,7 +27,7 @@
 class ConfigRetriever {
 public:
   ConfigRetriever(const char * _connect_string,
-		  Uint32 version, Uint32 nodeType,
+                  Uint32 version, ndb_mgm_node_type nodeType,
 		  const char * _bind_address = 0,
                   int timeout_ms = 30000);
   ~ConfigRetriever();
@@ -96,7 +96,7 @@ private:
 
   bool m_end_session;
   Uint32 m_version;
-  Uint32 m_node_type;
+  ndb_mgm_node_type m_node_type;
   NdbMgmHandle m_handle;
 };
 

=== modified file 'storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp'
--- a/storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp	2009-03-05 06:42:20 +0000
+++ b/storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp	2009-04-02 20:42:30 +0000
@@ -23,6 +23,7 @@
 #include <mgmapi.h>
 #include <mgmapi_config_parameters.h>
 #include <mgmapi_configuration.hpp>
+#include <mgmapi_internal.h>
 #include <ConfigValues.hpp>
 
 
@@ -30,7 +31,8 @@
 //****************************************************************************
 
 ConfigRetriever::ConfigRetriever(const char * _connect_string,
-				 Uint32 version, Uint32 node_type,
+				 Uint32 version,
+                                 ndb_mgm_node_type node_type,
 				 const char * _bindaddress,
                                  int timeout_ms) :
   m_end_session(true),
@@ -157,8 +159,10 @@ ConfigRetriever::getConfig(Uint32 nodeid
 ndb_mgm_configuration *
 ConfigRetriever::getConfig(NdbMgmHandle mgm_handle)
 {
-  ndb_mgm_configuration * conf = ndb_mgm_get_configuration(mgm_handle,
-                                                           m_version);
+  ndb_mgm_configuration * conf =
+    ndb_mgm_get_configuration2(mgm_handle,
+                               m_version,
+                               m_node_type);
   if(conf == 0)
   {
     BaseString tmp(ndb_mgm_get_latest_error_msg(mgm_handle));
@@ -282,7 +286,7 @@ ConfigRetriever::verifyConfig(const stru
     return false;
   }
 
-  if(_type != m_node_type){
+  if(_type != (unsigned int)m_node_type){
     const char *type_s, *alias_s, *type_s2, *alias_s2;
     alias_s=
       ndb_mgm_get_node_type_alias_string((enum ndb_mgm_node_type)m_node_type,

=== modified file 'storage/ndb/src/common/portlib/my_daemon.cc'
--- a/storage/ndb/src/common/portlib/my_daemon.cc	2009-03-13 09:48:24 +0000
+++ b/storage/ndb/src/common/portlib/my_daemon.cc	2009-03-25 09:18:47 +0000
@@ -52,7 +52,6 @@ static HANDLE g_shutdown_event;
 static my_daemon_stop_t g_stop_func;
 static my_daemon_run_t g_run_func;
 
-
 static void stopper_thread(void*)
 {
   // Wait forever until the shutdown event is signaled
@@ -235,8 +234,15 @@ static inline int ftruncate(int fd, off_
 {
   return _chsize(fd, length);
 }
+
+static inline int unlink(const char *filename)
+{
+  return _unlink(filename);
+}
 #endif
 
+static const char *g_pidfile_name = 0;
+static int g_pidfd = -1, g_logfd = -1;
 
 static int
 check_files(const char *pidfile_name,
@@ -250,6 +256,7 @@ check_files(const char *pidfile_name,
     if(logfd == -1)
       return ERR1("Failed to open logfile '%s' for write, errno: %d",
                 logfile_name, errno);
+    g_logfd = logfd;
     dlog_file = fdopen(logfd, "a");
     *logfd_ret = logfd;
   }
@@ -261,6 +268,7 @@ check_files(const char *pidfile_name,
   if (pidfd == -1)
     return ERR1("Failed to open pidfile '%s' for write, errno: %d",
                 pidfile_name, errno);
+  g_pidfd = pidfd;
 
   /* Read any old pid from lock file */
   char buf[32];
@@ -334,6 +342,7 @@ do_files(const char *pidfile_name, int p
 int my_daemonize(const char* pidfile_name, const char *logfile_name)
 {
   int pidfd = -1, logfd = -1;
+
   if (check_files(pidfile_name, logfile_name, &pidfd, &logfd))
     return 1;
 
@@ -355,12 +364,22 @@ int my_daemonize(const char* pidfile_nam
   if (do_files(pidfile_name, pidfd, logfd))
     return 1;
 
+  g_pidfile_name = pidfile_name;
+
   return 0;
 }
 
-
 void my_daemon_exit(int status)
 {
+  if (g_pidfd != -1)
+    close(g_pidfd);
+
+  if (g_logfd != -1)
+    close(g_logfd);
+
+  if (g_pidfile_name)
+    unlink(g_pidfile_name);
+
 #ifdef _WIN32
   /*
     Stop by calling NtService::Stop if running
@@ -369,5 +388,6 @@ void my_daemon_exit(int status)
   if (g_shutdown_event)
     g_ntsvc.Stop();
 #endif
+
   exit(status);
 }

=== modified file 'storage/ndb/src/kernel/blocks/backup/Backup.cpp'
--- a/storage/ndb/src/kernel/blocks/backup/Backup.cpp	2009-03-16 15:24:30 +0000
+++ b/storage/ndb/src/kernel/blocks/backup/Backup.cpp	2009-04-07 20:06:42 +0000
@@ -3510,10 +3510,6 @@ Backup::execGET_TABINFOREF(Signal* signa
   BackupRecordPtr ptr LINT_SET_PTR;
   c_backupPool.getPtr(ptr, senderData);
 
-  BackupFilePtr filePtr LINT_SET_PTR;
-  ptr.p->files.getPtr(filePtr, ptr.p->ctlFilePtr);
-  filePtr.p->m_flags &= ~(Uint32)BackupFile::BF_FILE_THREAD;
-  
   defineBackupRef(signal, ptr, ref->errorCode);
 }
 

=== modified file 'storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp'
--- a/storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp	2009-03-16 15:24:30 +0000
+++ b/storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp	2009-04-07 20:06:42 +0000
@@ -900,6 +900,8 @@ Cmvmi::execSTART_ORD(Signal* signal) {
         globalTransporterRegistry.setIOState(i, HaltIO);
       }
     }
+
+    CRASH_INSERTION(9994);
     
     /**
      * Start running startphases

=== modified file 'storage/ndb/src/kernel/blocks/dbacc/Dbacc.hpp'
--- a/storage/ndb/src/kernel/blocks/dbacc/Dbacc.hpp	2008-10-05 07:12:56 +0000
+++ b/storage/ndb/src/kernel/blocks/dbacc/Dbacc.hpp	2009-04-05 21:03:06 +0000
@@ -148,7 +148,6 @@ ndbout << "Ptr: " << ptr.p->word32 << " 
 /* CONTINUEB CODES                                                                   */
 /* --------------------------------------------------------------------------------- */
 #define ZINITIALISE_RECORDS 1
-#define ZSEND_SCAN_HBREP 4
 #define ZREL_ROOT_FRAG 5
 #define ZREL_FRAG 6
 #define ZREL_DIR 7
@@ -607,8 +606,6 @@ struct ScanRec {
   Uint32 scanUserblockref;
   Uint32 scanMask;
   Uint8 scanLockMode;
-  Uint8 scanTimer;
-  Uint8 scanContinuebCounter;
   Uint8 scanReadCommittedFlag;
 }; 
 
@@ -823,7 +820,6 @@ private:
   void sendSystemerror(Signal* signal, int line);
   void takeRecOutOfFreeOverdir(Signal* signal);
   void takeRecOutOfFreeOverpage(Signal* signal);
-  void sendScanHbRep(Signal* signal, Uint32);
 
   void addFragRefuse(Signal* signal, Uint32 errorCode);
   void ndbsttorryLab(Signal* signal);

=== modified file 'storage/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp'
--- a/storage/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp	2008-12-22 09:40:33 +0000
+++ b/storage/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp	2009-04-05 21:03:06 +0000
@@ -88,10 +88,6 @@ void Dbacc::execCONTINUEB(Signal* signal
     initialiseRecordsLab(signal, signal->theData[3], signal->theData[4]);
     return;
     break;
-  case ZSEND_SCAN_HBREP:
-    jam();
-    sendScanHbRep(signal, tdata0);
-    break;
   case ZREL_ROOT_FRAG:
     {
       jam();
@@ -525,8 +521,6 @@ void Dbacc::initialiseScanRec(Signal* si
     ptrAss(scanPtr, scanRec);
     scanPtr.p->scanNextfreerec = scanPtr.i + 1;
     scanPtr.p->scanState = ScanRec::SCAN_DISCONNECT;
-    scanPtr.p->scanTimer = 0;
-    scanPtr.p->scanContinuebCounter = 0;
   }//for
   scanPtr.i = cscanRecSize - 1;
   ptrAss(scanPtr, scanRec);
@@ -6326,18 +6320,6 @@ void Dbacc::execACC_SCANREQ(Signal* sign
   scanPtr.p->scanState = ScanRec::WAIT_NEXT;
   initScanFragmentPart(signal);
 
-  /*------------------------------------------------------*/
-  /* We start the timeout loop for the scan process here. */
-  /*------------------------------------------------------*/
-  ndbrequire(scanPtr.p->scanTimer == 0);
-  if (scanPtr.p->scanContinuebCounter == 0) {
-    jam();
-    scanPtr.p->scanContinuebCounter = 1;
-    signal->theData[0] = ZSEND_SCAN_HBREP;
-    signal->theData[1] = scanPtr.i;
-    sendSignalWithDelay(cownBlockref, GSN_CONTINUEB, signal, 100, 2);
-  }//if
-  scanPtr.p->scanTimer = scanPtr.p->scanContinuebCounter;
   /* ************************ */
   /*  ACC_SCANCONF            */
   /* ************************ */
@@ -6376,7 +6358,6 @@ void Dbacc::execNEXT_SCANREQ(Signal* sig
   ptrCheckGuard(scanPtr, cscanRecSize, scanRec);
   ndbrequire(scanPtr.p->scanState == ScanRec::WAIT_NEXT);
 
-  scanPtr.p->scanTimer = scanPtr.p->scanContinuebCounter;
   switch (tscanNextFlag) {
   case NextScanReq::ZSCAN_NEXT:
     jam();
@@ -6712,7 +6693,6 @@ void Dbacc::releaseScanLab(Signal* signa
     }//if
   }//for
   // Stops the heartbeat.
-  scanPtr.p->scanTimer = 0;
   signal->theData[0] = scanPtr.p->scanUserptr;
   signal->theData[1] = RNIL;
   signal->theData[2] = RNIL;
@@ -6903,8 +6883,6 @@ void Dbacc::execACC_CHECK_SCAN(Signal* s
     return;
   }//if
 
-  scanPtr.p->scanTimer = scanPtr.p->scanContinuebCounter;
-
   fragrecptr.i = scanPtr.p->activeLocalFrag;
   ptrCheckGuard(fragrecptr, cfragmentsize, fragmentrec);
   gnsDirRangePtr.i = fragrecptr.p->directory;
@@ -7400,7 +7378,6 @@ bool Dbacc::searchScanContainer(Signal* 
 /* --------------------------------------------------------------------------------- */
 void Dbacc::sendNextScanConf(Signal* signal) 
 {
-  scanPtr.p->scanTimer = scanPtr.p->scanContinuebCounter;
   Uint32 blockNo = refToMain(scanPtr.p->scanUserblockref);
   jam();
   /** ---------------------------------------------------------------------
@@ -7417,41 +7394,6 @@ void Dbacc::sendNextScanConf(Signal* sig
   return;
 }//Dbacc::sendNextScanConf()
 
-/*---------------------------------------------------------------------------
- * sendScanHbRep     	      	             	      	             	       
- * Description: Using Dispatcher::execute() to send a heartbeat to DBTC
- *     	from DBLQH telling the scan is alive. We use the sendScanHbRep()
- *     	in DBLQH, this needs to be done here in DBACC since it can take
- *	a while before LQH receives an answer the normal way from ACC. 
- *--------------------------------------------------------------------------*/
-void Dbacc::sendScanHbRep(Signal* signal, Uint32 scanPtrIndex)
-{
-  scanPtr.i = scanPtrIndex;
-  ptrCheckGuard(scanPtr, cscanRecSize, scanRec);
- 
-  // If the timer status is on we continue with a new heartbeat in one second,
-  // else the loop stops and we will not send a new CONTINUEB
-  if (scanPtr.p->scanTimer != 0){
-    if (scanPtr.p->scanTimer == scanPtr.p->scanContinuebCounter){
-      jam();
-      ndbrequire(scanPtr.p->scanState != ScanRec::SCAN_DISCONNECT);
-
-      signal->theData[0] = scanPtr.p->scanUserptr;
-      signal->theData[1] = scanPtr.p->scanTrid1;
-      signal->theData[2] = scanPtr.p->scanTrid2;
-      EXECUTE_DIRECT(DBLQH, GSN_SCAN_HBREP, signal, 3);
-      jamEntry();
-    }//if
-    scanPtr.p->scanContinuebCounter++;
-    signal->theData[0] = ZSEND_SCAN_HBREP;
-    signal->theData[1] = scanPtr.i;
-    sendSignalWithDelay(cownBlockref, GSN_CONTINUEB, signal, 100, 2);
-  } else {
-    jam();
-    scanPtr.p->scanContinuebCounter = 0;
-  }//if
-}//Dbacc::sendScanHbRep()			
-
 /* --------------------------------------------------------------------------------- */
 /* SETLOCK                                                                           */
 /*          DESCRIPTION:SETS LOCK ON AN ELEMENT. INFORMATION ABOUT THE ELEMENT IS    */
@@ -8344,10 +8286,7 @@ Dbacc::execDUMP_STATE_ORD(Signal* signal
     infoEvent("Dbacc::ScanRec[%d]: state=%d, transid(0x%x, 0x%x)",
 	      scanPtr.i, scanPtr.p->scanState,scanPtr.p->scanTrid1,
 	      scanPtr.p->scanTrid2);
-    infoEvent(" timer=%d, continueBCount=%d, "
-	      "activeLocalFrag=%d, nextBucketIndex=%d",
-	      scanPtr.p->scanTimer,
-	      scanPtr.p->scanContinuebCounter,
+    infoEvent(" activeLocalFrag=%d, nextBucketIndex=%d",
 	      scanPtr.p->activeLocalFrag,
 	      scanPtr.p->nextBucketIndex);
     infoEvent(" scanNextfreerec=%d firstActOp=%d firstLockedOp=%d, "

=== modified file 'storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp'
--- a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp	2009-03-13 09:38:19 +0000
+++ b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp	2009-03-24 08:42:42 +0000
@@ -6497,7 +6497,6 @@ Dbdict::execDROP_TABLE_REQ(Signal* signa
   ref->tableId = req->tableId;
   ref->tableVersion = req->tableVersion;
   getError(error, ref);
-
   sendSignal(req->clientRef, GSN_DROP_TABLE_REF, signal,
              DropTableRef::SignalLength, JBB);
 }
@@ -6732,7 +6731,6 @@ Dbdict::prepDropTab_nextStep(Signal* sig
     ref->senderData = op_ptr.p->op_key;
     ref->tableId = impl_req->tableId;
     ref->errorCode = 9131;
-
     sendSignal(reference(), GSN_PREP_DROP_TAB_REF, signal,
                PrepDropTabRef::SignalLength, JBB);
     return;
@@ -7024,7 +7022,6 @@ Dbdict::dropTab_complete(Signal* signal,
     }
     conf->senderData = op_key;
     conf->tableId = tableId;
-
     sendSignal(SUMA_REF, GSN_DROP_TAB_CONF, signal,
                DropTabConf::SignalLength, JBB);
   }
@@ -7144,12 +7141,12 @@ void
 Dbdict::execALTER_TABLE_REQ(Signal* signal)
 {
   jamEntry();
+
   if (!assembleFragments(signal)) {
     jam();
     return;
   }
   SectionHandle handle(this, signal);
-
   const AlterTableReq req_copy =
     *(const AlterTableReq*)signal->getDataPtr();
   const AlterTableReq* req = &req_copy;
@@ -7187,7 +7184,6 @@ Dbdict::execALTER_TABLE_REQ(Signal* sign
   ref->clientData = req->clientData;
   ref->transId = req->transId;
   getError(error, ref);
-
   sendSignal(req->clientRef, GSN_ALTER_TABLE_REF, signal,
              AlterTableRef::SignalLength, JBB);
 }
@@ -8034,7 +8030,6 @@ Dbdict::alterTable_toSumaSync(Signal* si
     jamLine(step);
     ndbrequire(false);
   }
-
   sendSignal(reference(), GSN_ALTER_TABLE_REQ, signal,
              AlterTableReq::SignalLength, JBB);
 }
@@ -10879,7 +10874,6 @@ Dbdict::dropIndex_toDropTable(Signal* si
   req->requestInfo = requestInfo;
   req->tableId = impl_req->indexId;
   req->tableVersion = impl_req->indexVersion;
-
   sendSignal(reference(), GSN_DROP_TABLE_REQ, signal,
              DropTableReq::SignalLength, JBB);
 }
@@ -13459,6 +13453,15 @@ Dbdict::execCREATE_EVNT_REQ(Signal* sign
     jam();
     EVENT_TRACE;
     releaseSections(handle);
+
+    if (ERROR_INSERTED(6023))
+    {
+      jam();
+      signal->theData[0] = 9999;
+      sendSignalWithDelay(CMVMI_REF, GSN_NDB_TAMPER, signal, 1000, 1);
+      return;
+    }
+
     createEvent_RT_DICT_AFTER_GET(signal, evntRecPtr);
     return;
   }
@@ -14132,15 +14135,44 @@ void Dbdict::execCREATE_EVNT_REF(Signal*
   ndbout_c("DBDICT(Coordinator) got GSN_CREATE_EVNT_REF evntRecPtr.i = (%d)", evntRecPtr.i);
 #endif
 
-  if (ref->errorCode == CreateEvntRef::NF_FakeErrorREF){
+  LinearSectionPtr ptr[1];
+
+  int noLSP = 0;
+  LinearSectionPtr *ptr0 = NULL;
+  if (ref->errorCode == CreateEvntRef::NF_FakeErrorREF)
+  {
     jam();
-    evntRecPtr.p->m_reqTracker.ignoreRef(c_counterMgr, refToNode(ref->senderRef));
-  } else {
+    evntRecPtr.p->m_reqTracker.ignoreRef(c_counterMgr, 
+                                         refToNode(ref->senderRef));
+
+    /**
+     * If a CREATE_EVNT_REF finishes request,
+     *   we need to make sure that table name is sent
+     *   same as it is if a CREATE_EVNT_CONF finishes request
+     */
+    if (evntRecPtr.p->m_reqTracker.done())
+    {
+      jam();
+      /**
+       * Add "extra" check if tracker is done...
+       *   (strictly not necessary...)
+       *   but makes case more explicit
+       */
+      ptr[0].p = (Uint32 *)evntRecPtr.p->m_eventRec.TABLE_NAME;
+      ptr[0].sz = (strlen(evntRecPtr.p->m_eventRec.TABLE_NAME)+4)/4;
+      ptr0 = ptr;
+      noLSP = 1;
+    }
+  }
+  else 
+  {
     jam();
     evntRecPtr.p->m_errorCode = ref->errorCode;
-    evntRecPtr.p->m_reqTracker.reportRef(c_counterMgr, refToNode(ref->senderRef));
+    evntRecPtr.p->m_reqTracker.reportRef(c_counterMgr, 
+                                         refToNode(ref->senderRef));
   }
-  createEvent_sendReply(signal, evntRecPtr);
+
+  createEvent_sendReply(signal, evntRecPtr, ptr0, noLSP);
 
   return;
 }
@@ -14718,6 +14750,7 @@ busy:
     subbPtr.p->m_subscriptionKey = req->subscriptionKey;
     subbPtr.p->m_subscriberRef = req->subscriberRef;
     subbPtr.p->m_subscriberData = req->subscriberData;
+    bzero(&subbPtr.p->m_sub_stop_conf, sizeof(subbPtr.p->m_sub_stop_conf));
 
     if (signal->getLength() < SubStopReq::SignalLength)
     {
@@ -14862,7 +14895,24 @@ void Dbdict::execSUB_STOP_CONF(Signal* s
    * Coordinator
    */
   ndbrequire(refToBlock(senderRef) == DBDICT);
+  Uint64 old_gci, new_gci = 0;
+  {
+    Uint32 old_gci_hi = subbPtr.p->m_sub_stop_conf.gci_hi;
+    Uint32 old_gci_lo = subbPtr.p->m_sub_stop_conf.gci_lo;
+    old_gci = old_gci_lo | (Uint64(old_gci_hi) << 32);
+    if (signal->getLength() >= SubStopConf::SignalLengthWithGci)
+    {
+      Uint32 new_gci_hi = conf->gci_hi;
+      Uint32 new_gci_lo = conf->gci_lo;
+      new_gci = new_gci_lo | (Uint64(new_gci_hi) << 32);
+    }
+  }
   subbPtr.p->m_sub_stop_conf = *conf;
+  if (old_gci > new_gci)
+  {
+    subbPtr.p->m_sub_stop_conf.gci_hi= Uint32(old_gci>>32);
+    subbPtr.p->m_sub_stop_conf.gci_lo= Uint32(old_gci);
+  }
   subbPtr.p->m_reqTracker.reportConf(c_counterMgr, refToNode(senderRef));
   completeSubStopReq(signal,subbPtr.i,0);
 }
@@ -22348,7 +22398,6 @@ void
 Dbdict::execSCHEMA_TRANS_END_REQ(Signal* signal)
 {
   jamEntry();
-
   const SchemaTransEndReq* req =
     (const SchemaTransEndReq*)signal->getDataPtr();
   Uint32 clientRef = req->clientRef;
@@ -24431,7 +24480,6 @@ Dbdict::execSCHEMA_TRANS_IMPL_REQ(Signal
     jam();
     return;
   }
-
   SchemaTransImplReq reqCopy =
     *(const SchemaTransImplReq*)signal->getDataPtr();
   const SchemaTransImplReq *req = &reqCopy;
@@ -25229,7 +25277,6 @@ Dbdict::sendTransClientReply(Signal* sig
       ref->transId = transId;
       getError(trans_ptr.p->m_error, ref);
       ref->masterNodeId = c_masterNodeId;
-
       sendSignal(receiverRef, GSN_SCHEMA_TRANS_END_REF, signal,
                  SchemaTransEndRef::SignalLength, JBB);
     }
@@ -25344,7 +25391,6 @@ Dbdict::beginSchemaTrans(Signal* signal,
   req->clientRef = reference();
   req->transId = tx_ptr.p->m_transId;
   req->requestInfo = requestInfo;
-
   sendSignal(reference(), GSN_SCHEMA_TRANS_BEGIN_REQ, signal,
              SchemaTransBeginReq::SignalLength, JBB);
 }
@@ -25375,7 +25421,6 @@ Dbdict::endSchemaTrans(Signal* signal, T
   req->transKey = tx_ptr.p->m_transKey;
   req->requestInfo = requestInfo;
   req->flags = flags;
-
   sendSignal(reference(), GSN_SCHEMA_TRANS_END_REQ, signal,
              SchemaTransEndReq::SignalLength, JBB);
 }
@@ -25383,7 +25428,7 @@ Dbdict::endSchemaTrans(Signal* signal, T
 void
 Dbdict::execSCHEMA_TRANS_BEGIN_CONF(Signal* signal)
 {
-  jamEntry();
+  jamEntry(); 
   const SchemaTransBeginConf* conf =
     (const SchemaTransBeginConf*)signal->getDataPtr();
 

=== modified file 'storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp'
--- a/storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp	2009-03-15 13:33:49 +0000
+++ b/storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp	2009-04-01 12:26:52 +0000
@@ -1085,7 +1085,7 @@ private:
                     Uint32& tfstLcp);
   void newCrashedReplica(Uint32 nodeId, ReplicaRecordPtr ncrReplicaPtr);
   void packCrashedReplicas(ReplicaRecordPtr pcrReplicaPtr);
-  void releaseReplicas(Uint32 replicaPtr);
+  void releaseReplicas(Uint32 * replicaPtr);
   void removeOldCrashedReplicas(ReplicaRecordPtr rocReplicaPtr);
   void removeTooNewCrashedReplicas(ReplicaRecordPtr rtnReplicaPtr);
   void seizeReplicaRec(ReplicaRecordPtr& replicaPtr);
@@ -1564,7 +1564,7 @@ private:
     Uint32 failNr;
     bool activeState;
     bool blockLcp;
-    bool blockGcp;
+    Uint32 blockGcp; // 0, 1=ordered, 2=effective
     Uint32 startInfoErrorCode;
     Uint32 m_outstandingGsn;
     MutexHandle2<DIH_FRAGMENT_INFO> m_fragmentInfoMutex;

=== modified file 'storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp'
--- a/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp	2009-03-16 15:24:30 +0000
+++ b/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp	2009-04-07 20:06:42 +0000
@@ -2465,7 +2465,7 @@ void Dbdih::nodeDictStartConfLab(Signal*
   // THE DICTIONARY AGAIN.
   /*-------------------------------------------------------------------------*/
   c_nodeStartMaster.wait = ZFALSE;
-  c_nodeStartMaster.blockGcp = true;
+  c_nodeStartMaster.blockGcp = 1;
 
   return;
 }//Dbdih::nodeDictStartConfLab()
@@ -2614,7 +2614,7 @@ void Dbdih::execINCL_NODECONF(Signal* si
   // various blocks we are ready to start the global checkpoint protocol
   /*------------------------------------------------------------------------*/
   c_nodeStartMaster.wait = 11;
-  c_nodeStartMaster.blockGcp = false;
+  c_nodeStartMaster.blockGcp = 0;
 
   /**
    * Restart GCP
@@ -4523,7 +4523,7 @@ void Dbdih::execNODE_FAILREP(Signal* sig
   Uint32 newMasterId = nodeFail->masterNodeId;
   const Uint32 noOfFailedNodes = nodeFail->noOfNodes;
 
-  if (ERROR_INSERTED(7179))
+  if (ERROR_INSERTED(7179) || ERROR_INSERTED(7217))
   {
     CLEAR_ERROR_INSERT_VALUE;
   }
@@ -4533,6 +4533,8 @@ void Dbdih::execNODE_FAILREP(Signal* sig
     SET_ERROR_INSERT_VALUE(7000);
   }
 
+
+
   /*-------------------------------------------------------------------------*/
   // The first step is to convert from a bit mask to an array of failed nodes.
   /*-------------------------------------------------------------------------*/
@@ -7782,8 +7784,8 @@ void Dbdih::releaseTable(TabRecordPtr ta
       jam();
       getFragstore(tabPtr.p, fragId, fragPtr);
       dec_ng_refcount(getNodeGroup(fragPtr.p->preferredPrimary));
-      releaseReplicas(fragPtr.p->storedReplicas);
-      releaseReplicas(fragPtr.p->oldStoredReplicas);
+      releaseReplicas(& fragPtr.p->storedReplicas);
+      releaseReplicas(& fragPtr.p->oldStoredReplicas);
     }//for
     releaseFragments(tabPtr);
   }
@@ -7795,10 +7797,10 @@ void Dbdih::releaseTable(TabRecordPtr ta
   }//if
 }//Dbdih::releaseTable()
 
-void Dbdih::releaseReplicas(Uint32 replicaPtrI) 
+void Dbdih::releaseReplicas(Uint32 * replicaPtrI) 
 {
   ReplicaRecordPtr replicaPtr;
-  replicaPtr.i = replicaPtrI;
+  replicaPtr.i = * replicaPtrI;
   jam();
   while (replicaPtr.i != RNIL) {
     jam();
@@ -7809,6 +7811,8 @@ void Dbdih::releaseReplicas(Uint32 repli
     replicaPtr.i = tmp;
     cnoFreeReplicaRec++;
   }//while
+
+  * replicaPtrI = RNIL;
 }//Dbdih::releaseReplicas()
 
 void Dbdih::seizeReplicaRec(ReplicaRecordPtr& replicaPtr) 
@@ -8171,8 +8175,8 @@ Dbdih::release_fragment_from_table(Ptr<T
   getFragstore(tabPtr.p, fragId, fragPtr);
   dec_ng_refcount(getNodeGroup(fragPtr.p->preferredPrimary));
 
-  releaseReplicas(fragPtr.p->storedReplicas);
-  releaseReplicas(fragPtr.p->oldStoredReplicas);
+  releaseReplicas(& fragPtr.p->storedReplicas);
+  releaseReplicas(& fragPtr.p->oldStoredReplicas);
 
   if (fragId == ((chunks - 1) << LOG_NO_OF_FRAGS_PER_CHUNK))
   {
@@ -8746,7 +8750,7 @@ Dbdih::startGcpLab(Signal* signal, Uint3
                           m_micro_gcp.m_current_gci,
                           c_waitEpochMasterList);
   
-  if (c_nodeStartMaster.blockGcp == true &&
+  if (c_nodeStartMaster.blockGcp != 0 &&
       m_gcp_save.m_master.m_state == GcpSave::GCP_SAVE_IDLE)
   {
     jam();
@@ -8755,9 +8759,27 @@ Dbdih::startGcpLab(Signal* signal, Uint3
     /*  A NEW NODE WANTS IN AND WE MUST ALLOW IT TO COME IN NOW SINCE THE */
     /*       GCP IS COMPLETED.                                            */
     /* ------------------------------------------------------------------ */
-    gcpBlockedLab(signal);
-    return;
-  }//if
+
+    if (ERROR_INSERTED(7217))
+    {
+      jam();
+      
+      signal->theData[0] = 9999;
+      sendSignal(numberToRef(CMVMI, refToNode(c_nodeStartMaster.startNode)),
+                 GSN_NDB_TAMPER, signal, 1, JBB);
+
+      m_micro_gcp.m_master.m_start_time = 0; // Force start
+      // fall through
+    }
+    else
+    {
+      jam();
+      ndbrequire(c_nodeStartMaster.blockGcp == 1); // Ordered...
+      c_nodeStartMaster.blockGcp = 2; // effective
+      gcpBlockedLab(signal);
+      return;
+    }
+  }
 
   if (cgcpOrderBlocked)
   {
@@ -13083,7 +13105,10 @@ Dbdih::dumpGcpStop()
            m_gcp_monitor.m_micro_gcp.m_counter, 
            m_gcp_monitor.m_micro_gcp.m_max_lag);
   
+  
+  ndbout_c("m_gcp_save.m_state: %u", m_gcp_save.m_state);
   ndbout_c("m_gcp_save.m_master.m_state: %u", m_gcp_save.m_master.m_state);
+  ndbout_c("m_micro_gcp.m_state: %u", m_micro_gcp.m_state);
   ndbout_c("m_micro_gcp.m_master.m_state: %u", m_micro_gcp.m_master.m_state);
   
   ndbout_c("c_COPY_GCIREQ_Counter = %s", c_COPY_GCIREQ_Counter.getText());
@@ -13131,7 +13156,7 @@ void Dbdih::crashSystemAtGcpStop(Signal*
   if (local)
     goto dolocal;
 
-  if (c_nodeStartMaster.blockGcp)
+  if (c_nodeStartMaster.blockGcp == 2)
   {
     jam();
     /**
@@ -13849,7 +13874,7 @@ void Dbdih::initCommonData()
   c_newest_restorable_gci = 0;
   cverifyQueueCounter = 0;
   cwaitLcpSr = false;
-  c_nodeStartMaster.blockGcp = false;
+  c_nodeStartMaster.blockGcp = 0;
 
   nodeResetStart(0);
   c_nodeStartMaster.wait = ZFALSE;
@@ -14757,17 +14782,17 @@ void Dbdih::newCrashedReplica(Uint32 nod
 void Dbdih::nodeResetStart(Signal *signal)
 {
   jam();
-  bool startGCP = c_nodeStartMaster.blockGcp;
+  Uint32 startGCP = c_nodeStartMaster.blockGcp;
 
   c_nodeStartSlave.nodeId = 0;
   c_nodeStartMaster.startNode = RNIL;
   c_nodeStartMaster.failNr = cfailurenr;
   c_nodeStartMaster.activeState = false;
-  c_nodeStartMaster.blockGcp = false;
+  c_nodeStartMaster.blockGcp = 0;
   c_nodeStartMaster.blockLcp = false;
   c_nodeStartMaster.m_outstandingGsn = 0;
 
-  if (startGCP)
+  if (startGCP == 2) // effective
   {
     jam();
     ndbrequire(isMaster());

=== modified file 'storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp'
--- a/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp	2009-03-16 14:32:03 +0000
+++ b/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp	2009-04-07 20:06:42 +0000
@@ -519,6 +519,7 @@ public:
     UintR scanAiLength;
     UintR scanErrorCounter;
     UintR scanSchemaVersion;
+    Uint32 scanTcWaiting; // When the request came from TC, 0 is no request
 
     /**
      * This is _always_ main table, even in range scan
@@ -546,7 +547,6 @@ public:
     Uint8 descending;
     Uint8 tupScan;
     Uint8 lcpScan;
-    Uint8 scanTcWaiting;
     Uint8 scanKeyinfoFlag;
     Uint8 m_last_row;
   }; // Size 272 bytes
@@ -2164,7 +2164,6 @@ private:
   void execFSREADCONF(Signal* signal);
   void execFSREADREF(Signal* signal);
   void execFSWRITEREQ(Signal*);
-  void execSCAN_HBREP(Signal* signal);
   void execTIME_SIGNAL(Signal* signal);
   void execFSSYNCCONF(Signal* signal);
 
@@ -2565,6 +2564,7 @@ private:
   void send_restore_lcp(Signal * signal);
   void execRESTORE_LCP_REF(Signal* signal);
   void execRESTORE_LCP_CONF(Signal* signal);
+
   /**
    * For periodic redo log file initialization status reporting 
    * and explicit redo log file status reporting
@@ -2578,6 +2578,8 @@ private:
   /* redo log file initialization completed report*/
   void logfileInitCompleteReport(Signal* signal);
  
+  void check_send_scan_hb_rep(Signal* signal, ScanRecord*, TcConnectionrec*);
+  
   Dbtup* c_tup;
   Dbacc* c_acc;
 
@@ -2876,6 +2878,7 @@ private:
   BlockReference ctupBlockref;
   BlockReference ctuxBlockref;
   BlockReference cownref;
+  Uint32 cTransactionDeadlockDetectionTimeout;
   UintR cLqhTimeOutCount;
   UintR cLqhTimeOutCheckCount;
   UintR cnoOfLogPages;

=== modified file 'storage/ndb/src/kernel/blocks/dblqh/DblqhInit.cpp'
--- a/storage/ndb/src/kernel/blocks/dblqh/DblqhInit.cpp	2008-12-08 13:58:15 +0000
+++ b/storage/ndb/src/kernel/blocks/dblqh/DblqhInit.cpp	2009-04-05 21:03:06 +0000
@@ -39,6 +39,7 @@ void Dblqh::initData() 
   ctabrecFileSize = 0;
   ctcConnectrecFileSize = 0;
   ctcNodeFailrecFileSize = MAX_NDB_NODES;
+  cTransactionDeadlockDetectionTimeout = 100;
 
   addFragRecord = 0;
   gcpRecord = 0;
@@ -224,7 +225,6 @@ Dblqh::Dblqh(Block_context& ctx, Uint32 
   addRecSignal(GSN_START_EXEC_SR, &Dblqh::execSTART_EXEC_SR);
   addRecSignal(GSN_EXEC_SRREQ, &Dblqh::execEXEC_SRREQ);
   addRecSignal(GSN_EXEC_SRCONF, &Dblqh::execEXEC_SRCONF);
-  addRecSignal(GSN_SCAN_HBREP, &Dblqh::execSCAN_HBREP);
 
   addRecSignal(GSN_ALTER_TAB_REQ, &Dblqh::execALTER_TAB_REQ);
 

=== modified file 'storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp'
--- a/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp	2009-03-16 14:32:03 +0000
+++ b/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp	2009-04-07 20:06:42 +0000
@@ -1202,6 +1202,9 @@ void Dblqh::execREAD_CONFIG_REQ(Signal* 
   {
     ndbrequire(cmaxLogFilesInPageZero);
   }
+
+  ndb_mgm_get_int_parameter(p, CFG_DB_TRANSACTION_DEADLOCK_TIMEOUT, 
+                            &cTransactionDeadlockDetectionTimeout);
   
   initRecords();
   initialiseRecordsLab(signal, 0, ref, senderData);
@@ -2450,7 +2453,7 @@ void Dblqh::execTIME_SIGNAL(Signal* sign
   jamEntry();
   cLqhTimeOutCount++;
   cLqhTimeOutCheckCount++;
-  if (cLqhTimeOutCheckCount < 10) {
+  if (cLqhTimeOutCheckCount < 1000) {
     jam();
     return;
   }//if
@@ -2463,12 +2466,12 @@ void Dblqh::execTIME_SIGNAL(Signal* sign
     jam();
     ptrAss(tTcConptr, tcConnectionrec);
     if ((tTcConptr.p->tcTimer != 0) &&
-	((tTcConptr.p->tcTimer + 120) < cLqhTimeOutCount)) {
+	((tTcConptr.p->tcTimer + 12000) < cLqhTimeOutCount)) {
       ndbout << "Dblqh::execTIME_SIGNAL"<<endl
 	     << "Timeout found in tcConnectRecord " <<tTcConptr.i<<endl
 	     << " cLqhTimeOutCount = " << cLqhTimeOutCount << endl
 	     << " tcTimer="<<tTcConptr.p->tcTimer<<endl
-	     << " tcTimer+120="<<tTcConptr.p->tcTimer + 120<<endl;
+	     << " tcTimer+12000="<<tTcConptr.p->tcTimer + 12000<<endl;
 
       signal->theData[0] = 2307;
       signal->theData[1] = tTcConptr.i;
@@ -2483,7 +2486,7 @@ void Dblqh::execTIME_SIGNAL(Signal* sign
   for (lfoPtr.i = 0; lfoPtr.i < clfoFileSize; lfoPtr.i++) {
     ptrAss(lfoPtr, logFileOperationRecord);
     if ((lfoPtr.p->lfoTimer != 0) &&
-        ((lfoPtr.p->lfoTimer + 120) < cLqhTimeOutCount)) {
+        ((lfoPtr.p->lfoTimer + 12000) < cLqhTimeOutCount)) {
       ndbout << "We have lost LFO record" << endl;
       ndbout << "index = " << lfoPtr.i;
       ndbout << "State = " << lfoPtr.p->lfoState;
@@ -5067,8 +5070,15 @@ void Dblqh::execTUP_DEALLOCREQ(Signal* s
   {
     jam();
     Local_key tmp;
+
     tmp.m_page_no = signal->theData[2];
     tmp.m_page_idx = signal->theData[3];
+
+    if (ERROR_INSERTED(5712))
+    {
+      ndbout << "TUP_DEALLOC: " << tmp << endl;
+    }
+
     EXECUTE_DIRECT(DBTUP, GSN_TUP_DEALLOCREQ, signal, signal->getLength());
     return;
   }
@@ -5078,6 +5088,8 @@ void Dblqh::execTUP_DEALLOCREQ(Signal* s
     ptrCheckGuard(regTcPtr, ctcConnectrecFileSize, tcConnectionrec);
     regTcPtr.p->m_row_id.m_page_no = signal->theData[2];
     regTcPtr.p->m_row_id.m_page_idx = signal->theData[3];
+
+    TRACE_OP(regTcPtr.p, "DEALLOC");
     
     ndbrequire(regTcPtr.p->m_dealloc == 0);
     regTcPtr.p->m_dealloc = 1;
@@ -5337,11 +5349,11 @@ void Dblqh::tupkeyConfLab(Signal* signal
   Uint32 readLen = tupKeyConf->readLength;
   Uint32 writeLen = tupKeyConf->writeLength;
   
+  TRACE_OP(regTcPtr, "TUPKEYCONF");
+
   Uint32 accOp = regTcPtr->accConnectrec;
   c_acc->execACCKEY_ORD(signal, accOp);
 
-  TRACE_OP(regTcPtr, "TUPKEYCONF");
-
   if (readLen != 0) 
   {
     jam();
@@ -7610,10 +7622,18 @@ void Dblqh::execACCKEYREF(Signal* signal
    *
    * -> ZNO_TUPLE_FOUND is possible
    */
-  ndbrequire
-    (tcPtr->seqNoReplica == 0 ||
-     errCode != ZTUPLE_ALREADY_EXIST ||
-     (tcPtr->operation == ZREAD && (tcPtr->dirtyOp || tcPtr->opSimple)));
+  if (unlikely(! (tcPtr->seqNoReplica == 0 ||
+                  errCode != ZTUPLE_ALREADY_EXIST ||
+                  (tcPtr->operation == ZREAD && 
+                   (tcPtr->dirtyOp || tcPtr->opSimple)))))
+  {
+    jamLine(Uint32(tcPtr->operation));
+    jamLine(Uint32(tcPtr->seqNoReplica));
+    jamLine(Uint32(errCode));
+    jamLine(Uint32(tcPtr->dirtyOp));
+    jamLine(Uint32(tcPtr->opSimple));
+    ndbrequire(false);
+  }
   
   tcPtr->abortState = TcConnectionrec::ABORT_FROM_LQH;
   abortCommonLab(signal);
@@ -8661,7 +8681,7 @@ void Dblqh::execSCAN_NEXTREQ(Signal* sig
   scanptr.i = tcConnectptr.p->tcScanRec;
   ndbrequire(scanptr.i != RNIL);
   c_scanRecordPool.getPtr(scanptr);
-  scanptr.p->scanTcWaiting = ZTRUE;
+  scanptr.p->scanTcWaiting = cLqhTimeOutCount;
 
   /* ------------------------------------------------------------------
    * If close flag is set this scan should be closed
@@ -8933,6 +8953,8 @@ void Dblqh::scanLockReleasedLab(Signal* 
   tcConnectptr.i = scanptr.p->scanTcrec;
   ptrCheckGuard(tcConnectptr, ctcConnectrecFileSize, tcConnectionrec);  
 
+  check_send_scan_hb_rep(signal, scanptr.p, tcConnectptr.p);
+
   if (scanptr.p->scanReleaseCounter == scanptr.p->m_curr_batch_size_rows) {
     if ((scanptr.p->scanErrorCounter > 0) ||
         (scanptr.p->scanCompletedStatus == ZTRUE)) {
@@ -9372,44 +9394,58 @@ void Dblqh::abort_scan(Signal* signal, U
 /* We include the scanPtr.i that comes from ACC in signalData[1], this */
 /* tells TC which fragment record to check for a timeout.              */
 /*---------------------------------------------------------------------*/
-void Dblqh::execSCAN_HBREP(Signal* signal)
+void
+Dblqh::check_send_scan_hb_rep(Signal* signal, 
+                              ScanRecord* scanPtrP,
+                              TcConnectionrec* tcPtrP)
 {
-  jamEntry();
-  scanptr.i = signal->theData[0];
-  c_scanRecordPool.getPtr(scanptr);
-  switch(scanptr.p->scanType){
+  switch(scanPtrP->scanType){
   case ScanRecord::SCAN:
-    if (scanptr.p->scanTcWaiting == ZTRUE) {
-      jam();
-      tcConnectptr.i = scanptr.p->scanTcrec;  
-      ptrCheckGuard(tcConnectptr, ctcConnectrecFileSize, tcConnectionrec);
-
-      ptrCheckGuard(tcConnectptr, ctcConnectrecFileSize, tcConnectionrec);
-      const Uint32 transid1  = signal->theData[1];
-      const Uint32 transid2  = signal->theData[2];
-      ndbrequire(transid1 == tcConnectptr.p->transid[0] && 
-		 transid2 == tcConnectptr.p->transid[1]);
-
-      // Update counter on tcConnectPtr
-      if (tcConnectptr.p->tcTimer != 0){
-	tcConnectptr.p->tcTimer = cLqhTimeOutCount;
-      } else {
-        jam();
-	//ndbout << "SCAN_HBREP when tcTimer was off" << endl;	
-      }
-      
-      signal->theData[0] = tcConnectptr.p->clientConnectrec;
-      signal->theData[1] = tcConnectptr.p->transid[0];
-      signal->theData[2] = tcConnectptr.p->transid[1];
-      sendSignal(tcConnectptr.p->clientBlockref,
-                 GSN_SCAN_HBREP, signal, 3, JBB);
-    }//if
     break;
   case ScanRecord::COPY:
-    //    ndbout << "Dblqh::execSCAN_HBREP Dropping SCAN_HBREP" << endl;
-    break;
+    return;
+#ifdef NDEBUG
+  case ScanRecord::ST_IDLE:
   default:
+    return;
+#else
+  case ScanRecord::ST_IDLE:
     ndbrequire(false);
+#endif
+  }
+
+  Uint64 now = cLqhTimeOutCount;         // measure in 10ms
+  Uint64 last = scanPtrP->scanTcWaiting; // last time we reported to TC (10ms)
+  Uint64 timeout = cTransactionDeadlockDetectionTimeout; // (ms)
+  Uint64 limit = (3*timeout) / 4;
+
+  bool alarm = 
+    now >= ((10 * last + limit) / 10) || now < last; // wrap
+    
+  if (alarm)
+  {
+    jam();
+
+    scanPtrP->scanTcWaiting = Uint32(now);
+    if (tcPtrP->tcTimer != 0)
+    {
+      tcPtrP->tcTimer = Uint32(now);
+    }      
+
+    Uint32 save[3];
+    save[0] = signal->theData[0];
+    save[1] = signal->theData[1];
+    save[2] = signal->theData[2];
+
+    signal->theData[0] = tcPtrP->clientConnectrec;
+    signal->theData[1] = tcPtrP->transid[0];
+    signal->theData[2] = tcPtrP->transid[1];
+    sendSignal(tcPtrP->clientBlockref,
+               GSN_SCAN_HBREP, signal, 3, JBB);
+
+    signal->theData[0] = save[0];
+    signal->theData[1] = save[1];
+    signal->theData[2] = save[2];
   }
 }
 
@@ -9418,6 +9454,7 @@ void Dblqh::accScanConfScanLab(Signal* s
   AccScanConf * const accScanConf = (AccScanConf *)&signal->theData[0];
   tcConnectptr.i = scanptr.p->scanTcrec;
   ptrCheckGuard(tcConnectptr, ctcConnectrecFileSize, tcConnectionrec);
+
   /* -----------------------------------------------------------------------
    *       PRECONDITION: SCAN_STATE = WAIT_ACC_SCAN
    * ----------------------------------------------------------------------- */
@@ -9430,6 +9467,9 @@ void Dblqh::accScanConfScanLab(Signal* s
     tupScanCloseConfLab(signal);
     return;
   }//if
+
+  check_send_scan_hb_rep(signal, scanptr.p, tcConnectptr.p);
+
   scanptr.p->scanAccPtr = accScanConf->accPtr;
   if (scanptr.p->rangeScan) {
     jam();
@@ -9625,6 +9665,7 @@ void Dblqh::execCHECK_LCP_STOP(Signal* s
   tcConnectptr.i = scanptr.p->scanTcrec;
   ptrCheckGuard(tcConnectptr, ctcConnectrecFileSize, tcConnectionrec);
   fragptr.i = tcConnectptr.p->fragmentptr;
+
   c_fragment_pool.getPtr(fragptr);
   if (signal->theData[1] == ZTRUE) {
     jam();
@@ -9690,6 +9731,7 @@ void Dblqh::nextScanConfScanLab(Signal* 
   NextScanConf * const nextScanConf = (NextScanConf *)&signal->theData[0];
   tcConnectptr.i = scanptr.p->scanTcrec;
   ptrCheckGuard(tcConnectptr, ctcConnectrecFileSize, tcConnectionrec);
+
   if (nextScanConf->fragId == RNIL) {
     jam();
     /* ---------------------------------------------------------------------
@@ -9770,7 +9812,9 @@ void Dblqh::nextScanConfScanLab(Signal* 
                GSN_ACC_CHECK_SCAN, signal, 2, JBB);
     return;
   }//if
+
   jam();
+  check_send_scan_hb_rep(signal, scanptr.p, tcConnectptr.p);
   set_acc_ptr_in_scan_record(scanptr.p,
                              scanptr.p->m_curr_batch_size_rows,
                              accOpPtr);
@@ -10157,8 +10201,10 @@ void Dblqh::scanTupkeyRefLab(Signal* sig
     return;
   }//if
   Uint32 time_passed= tcConnectptr.p->tcTimer - cLqhTimeOutCount;
-  if (rows) {
-    if (time_passed > 1) {
+  if (rows) 
+  {
+    if (time_passed > 1) 
+    {
   /* -----------------------------------------------------------------------
    *  WE NEED TO ENSURE THAT WE DO NOT SEARCH FOR THE NEXT TUPLE FOR A 
    *  LONG TIME WHILE WE KEEP A LOCK ON A FOUND TUPLE. WE RATHER REPORT 
@@ -10169,15 +10215,8 @@ void Dblqh::scanTupkeyRefLab(Signal* sig
       scanReleaseLocksLab(signal);
       return;
     }
-  } else {
-    if (time_passed > 10) {
-      jam();
-      signal->theData[0]= scanptr.i;
-      signal->theData[1]= tcConnectptr.p->transid[0];
-      signal->theData[2]= tcConnectptr.p->transid[1];
-      execSCAN_HBREP(signal);
-    }
   }
+
   scanptr.p->scanFlag = NextScanReq::ZSCAN_NEXT_ABORT;
   scanNextLoopLab(signal);
 }//Dblqh::scanTupkeyRefLab()
@@ -10348,7 +10387,7 @@ Uint32 Dblqh::initScanrec(const ScanFrag
   scanptr.p->scanState = ScanRecord::SCAN_FREE;
   scanptr.p->scanFlag = ZFALSE;
   scanptr.p->m_row_id.setNull();
-  scanptr.p->scanTcWaiting = ZTRUE;
+  scanptr.p->scanTcWaiting = cLqhTimeOutCount;
   scanptr.p->scanNumber = ~0;
   scanptr.p->scanApiOpPtr = scanFragReq->clientOpPtr;
   scanptr.p->m_last_row = 0;
@@ -10588,7 +10627,7 @@ void Dblqh::releaseScanrec(Signal* signa
 {
   scanptr.p->scanState = ScanRecord::SCAN_FREE;
   scanptr.p->scanType = ScanRecord::ST_IDLE;
-  scanptr.p->scanTcWaiting = ZFALSE;
+  scanptr.p->scanTcWaiting = 0;
   cbookedAccOps -= scanptr.p->m_max_batch_size_rows;
   cscanNoFreeRec++;
 }//Dblqh::releaseScanrec()
@@ -10733,7 +10772,7 @@ void Dblqh::sendScanFragConf(Signal* sig
 {
   Uint32 completed_ops= scanptr.p->m_curr_batch_size_rows;
   Uint32 total_len= scanptr.p->m_curr_batch_size_bytes;
-  scanptr.p->scanTcWaiting = ZFALSE;
+  scanptr.p->scanTcWaiting = 0;
 
   if(ERROR_INSERTED(5037)){
     CLEAR_ERROR_INSERT_VALUE;
@@ -18129,7 +18168,7 @@ void Dblqh::initialiseScanrec(Signal* si
     refresh_watch_dog();
     scanptr.p->scanType = ScanRecord::ST_IDLE;
     scanptr.p->scanState = ScanRecord::SCAN_FREE;
-    scanptr.p->scanTcWaiting = ZFALSE;
+    scanptr.p->scanTcWaiting = 0;
     scanptr.p->nextHash = RNIL;
     scanptr.p->prevHash = RNIL;
     scanptr.p->scan_acc_index= 0;

=== modified file 'storage/ndb/src/kernel/blocks/dblqh/DblqhProxy.cpp'
--- a/storage/ndb/src/kernel/blocks/dblqh/DblqhProxy.cpp	2009-03-17 10:30:40 +0000
+++ b/storage/ndb/src/kernel/blocks/dblqh/DblqhProxy.cpp	2009-04-07 20:06:42 +0000
@@ -230,6 +230,15 @@ DblqhProxy::execLQHADDATTREQ(Signal* sig
   memcpy(&ss.m_req, req, reqlength << 2);
   ss.m_reqlength = reqlength;
 
+  /**
+   * Count LQHFRAGREQ, 
+   *   so that I can release CREATE_TAB_REQ after last attribute has been
+   *   processed
+   */
+  Ss_CREATE_TAB_REQ& ss_main = ssFind<Ss_CREATE_TAB_REQ>(ssId);
+  ndbrequire(ss_main.m_req.noOfAttributes >= req->noOfAttributes);
+  ss_main.m_req.noOfAttributes -= req->noOfAttributes;
+
   sendREQ(signal, ss);
 }
 
@@ -278,13 +287,27 @@ DblqhProxy::sendLQHADDATTCONF(Signal* si
   if (!lastReply(ss))
     return;
 
-  if (ss.m_error == 0) {
+  if (ss.m_error == 0) 
+  {
+    jam();
     LqhAddAttrConf* conf = (LqhAddAttrConf*)signal->getDataPtrSend();
     conf->senderData = ss.m_req.senderData;
     conf->senderAttrPtr = ss.m_req.senderAttrPtr;
     sendSignal(dictRef, GSN_LQHADDATTCONF,
                signal, LqhAddAttrConf::SignalLength, JBB);
-  } else {
+
+    if (ss_main.m_req.noOfAttributes == 0)
+    {
+      jam();
+      /**
+       * All the attributes has been processed
+       *   release create_table object
+       */
+      ssRelease<Ss_CREATE_TAB_REQ>(ssId);
+    }
+  }
+  else 
+  {
     jam();
     LqhAddAttrRef* ref = (LqhAddAttrRef*)signal->getDataPtrSend();
     ref->senderData = ss.m_req.senderData;
@@ -359,8 +382,7 @@ void
 DblqhProxy::sendTAB_COMMITCONF(Signal* signal, Uint32 ssId)
 {
   Ss_TAB_COMMITREQ& ss = ssFind<Ss_TAB_COMMITREQ>(ssId);
-  Ss_CREATE_TAB_REQ& ss_main = ssFind<Ss_CREATE_TAB_REQ>(ssId);
-  BlockReference dictRef = ss_main.m_req.senderRef;
+  BlockReference dictRef = ss.m_req.senderRef;
 
   if (!lastReply(ss))
     return;
@@ -384,7 +406,6 @@ DblqhProxy::sendTAB_COMMITCONF(Signal* s
     return;
   }
 
-  ssRelease<Ss_CREATE_TAB_REQ>(ssId);
   ssRelease<Ss_TAB_COMMITREQ>(ssId);
 }
 

=== modified file 'storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp'
--- a/storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp	2009-03-16 14:32:03 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp	2009-04-07 20:06:42 +0000
@@ -246,10 +246,11 @@ public:
    * from index table lookup
    */
   enum IndexTransIdAIState {
-    ITAS_WAIT_HEADER = 0,     // Initial state
-    ITAS_WAIT_FRAGID = 1,     // Waiting for fragment id word
-    ITAS_WAIT_KEY = 2,        // Waiting for (more) key information
-    ITAS_ALL_RECEIVED = 3     // All TransIdAI info received
+    ITAS_WAIT_HEADER   = 0,     // Initial state
+    ITAS_WAIT_FRAGID   = 1,     // Waiting for fragment id word
+    ITAS_WAIT_KEY      = 2,     // Waiting for (more) key information
+    ITAS_ALL_RECEIVED  = 3,     // All TransIdAI info received
+    ITAS_WAIT_KEY_FAIL = 4     // Failed collecting key
   };
   
 
@@ -1877,9 +1878,6 @@ private:
   bool testFragmentDrop(Signal* signal);
 #endif
 
-  // For Error inserts
-  Uint32 errorInsertHoardedSegments;
-
   /************************** API CONNECT RECORD ***********************/
   /* *******************************************************************/
   /* THE API CONNECT RECORD CONTAINS THE CONNECTION RECORD TO WHICH THE*/

=== modified file 'storage/ndb/src/kernel/blocks/dbtc/DbtcInit.cpp'
--- a/storage/ndb/src/kernel/blocks/dbtc/DbtcInit.cpp	2008-12-03 19:51:33 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtc/DbtcInit.cpp	2009-03-20 15:10:06 +0000
@@ -331,8 +331,6 @@ Dbtc::Dbtc(Block_context& ctx):
   tcFailRecord = 0;
   c_apiConTimer = 0;
   c_apiConTimer_line = 0;
-
-  errorInsertHoardedSegments= RNIL;
 }//Dbtc::Dbtc()
 
 Dbtc::~Dbtc() 

=== modified file 'storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp'
--- a/storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp	2009-03-16 14:32:03 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp	2009-04-07 20:06:42 +0000
@@ -161,6 +161,9 @@ operator<<(NdbOut& out, Dbtc::ScanFragRe
 }
 #endif
 
+extern int ErrorSignalReceive;
+extern int ErrorMaxSegmentsToSeize;
+
 void
 Dbtc::updateBuddyTimer(ApiConnectRecordPtr apiPtr)
 {
@@ -2597,44 +2600,33 @@ void Dbtc::execTCKEYREQ(Signal* signal) 
   UintR TapiConnectptrIndex = apiConnectptr.i;
   UintR TsenderData = tcKeyReq->senderData;
 
-  if (ERROR_INSERTED(8065) || 
-      ERROR_INSERTED(8066) ||
-      ERROR_INSERTED(8067))
-  {
-    /* Consume all but 10(8065) or all but 1 (8066) or all (8067) of 
-     * the SegmentedSection buffers to allow testing of what happens 
-     * when they're exhausted, either in this signal or one to follow
-     * 8068 frees all 'hoarded' segments
-     */
-    Uint32 segmentsToLeave= ERROR_INSERTED(8065)? 
-      10 : 
-      ERROR_INSERTED(8066) ? 
-      1 :
-      0;
-    Uint32 freeSegments= g_sectionSegmentPool.getNoOfFree();
-    DEBUG("Hoarding all but " << segmentsToLeave << 
-          " of " << freeSegments << " free segments");
-    if (freeSegments >= segmentsToLeave)
-    {
-      Uint32 numToAlloc= (g_sectionSegmentPool.getNoOfFree() - segmentsToLeave);
-      Uint32 segmentsIVal= errorInsertHoardedSegments;
-      Uint32 space[SectionSegment::DataLength];
-      
-      while (numToAlloc-- > 0)
-        appendToSection(segmentsIVal, space, SectionSegment::DataLength);
-      
-      errorInsertHoardedSegments= segmentsIVal;
-    }
+  if (ERROR_INSERTED(8065))
+  {
+    ErrorSignalReceive= 1;
+    ErrorMaxSegmentsToSeize= 10;
   }
-
-  if (ERROR_INSERTED(8068) && 
-      (errorInsertHoardedSegments != RNIL))
-  {
-    /* Free the SegmentedSection buffers taken previously */
-    DEBUG("Freeing hoarded segments");
-    releaseSection(errorInsertHoardedSegments);
-    errorInsertHoardedSegments= RNIL;
-  }   
+  if (ERROR_INSERTED(8066))
+  {
+    ErrorSignalReceive= 1;
+    ErrorMaxSegmentsToSeize= 1;
+  }
+  if (ERROR_INSERTED(8067))
+  {
+    ErrorSignalReceive= 1;
+    ErrorMaxSegmentsToSeize= 0;
+  }
+  if (ERROR_INSERTED(8068))
+  {
+    ErrorSignalReceive= 0;
+    ErrorMaxSegmentsToSeize= 0;
+    CLEAR_ERROR_INSERT_VALUE;
+    DEBUG("Max segments to seize cleared");
+  }
+#ifdef ERROR_INSERT
+  if (ErrorSignalReceive)
+    DEBUG("Max segments to seize : " 
+          << ErrorMaxSegmentsToSeize);
+#endif
 
   /* Key and attribute lengths are passed in the header for 
    * short TCKEYREQ and  passed as section lengths for long 
@@ -13439,12 +13431,18 @@ bool  Dbtc::saveTRANSID_AI(Signal* signa
    *                                   -> ITAS_WAIT_KEY
    *
    *   [2..N]   Base table primary    ITAS_WAIT_KEY
-   *            key info               -> [ ITAS_WAIT_KEY ]
+   *            key info               -> [ ITAS_WAIT_KEY |
+   *                                        ITAS_WAIT_KEY_FAIL ]
    *                                   -> ITAS_ALL_RECEIVED
    *
    * The outgoing KeyInfo section contains the base
    * table primary key info, with the fragment id passed
    * as the distribution key.
+   * ITAS_WAIT_KEY_FAIL state is entered when there is no 
+   * space to store received TRANSID_AI information and
+   * key collection must fail.  Transaction abort is performed
+   * once all TRANSID_AI is received, and the system waits in
+   * ITAS_WAIT_KEY_FAIL state until then.
    *
    */
   Uint32 remain= len;
@@ -13484,24 +13482,46 @@ bool  Dbtc::saveTRANSID_AI(Signal* signa
     {
       jam();
       /* Add key information to long section */
-      if (!appendToSection(indexOp->transIdAISectionIVal,
-                           src,
-                           remain))
+      if (appendToSection(indexOp->transIdAISectionIVal,
+                          src,
+                          remain))
+      {
+        jam();
+        remain= 0;
+        break;
+      }
+      else
       {
         jam();
 #ifdef VM_TRACE
-        ndbout_c("Dbtc::saveTRANSID_AI: Failed to seize beffer for TRANSID_AI\n");
+        ndbout_c("Dbtc::saveTRANSID_AI: Failed to seize buffer for TRANSID_AI\n");
 #endif
-        apiConnectptr.i = indexOp->connectionIndex;
-        ptrCheckGuard(apiConnectptr, capiConnectFilesize, apiConnectRecord);
-        releaseIndexOperation(apiConnectptr.p, indexOp);
-        terrorCode = ZGET_DATAREC_ERROR;
-        abortErrorLab(signal);
-        return false;
+        indexOp->transIdAIState= ITAS_WAIT_KEY_FAIL;
+        /* Fall through to ITAS_WAIT_KEY_FAIL state handling */
       }
+    }
 
-      remain= 0;
-      break;
+    case ITAS_WAIT_KEY_FAIL:
+    {
+      /* Failed when collecting key previously - if we have all the
+       * TRANSID_AI now then we abort
+       */
+      if (indexOp->pendingTransIdAI > len)
+      {
+        /* Still some TransIdAI to arrive, keep waiting as if we had
+         * stored it
+         */
+        remain= 0;
+        break;
+      }
+
+      /* All TransIdAI has arrived, abort */
+      apiConnectptr.i = indexOp->connectionIndex;
+      ptrCheckGuard(apiConnectptr, capiConnectFilesize, apiConnectRecord);
+      releaseIndexOperation(apiConnectptr.p, indexOp);
+      terrorCode = ZGET_DATAREC_ERROR;
+      abortErrorLab(signal);
+      return false;
     }
 
     case ITAS_ALL_RECEIVED:
@@ -13804,7 +13824,7 @@ void Dbtc::execTRANSID_AI(Signal* signal
       tcIndxRef->connectPtr = indexOp->tcIndxReq.senderData;
       tcIndxRef->transId[0] = regApiPtr->transid[0];
       tcIndxRef->transId[1] = regApiPtr->transid[1];
-      tcIndxRef->errorCode = 4000;
+      tcIndxRef->errorCode = ZGET_DATAREC_ERROR;
       tcIndxRef->errorData = 0;
       sendSignal(regApiPtr->ndbapiBlockref, GSN_TCINDXREF, signal,
                  TcKeyRef::SignalLength, JBB);

=== modified file 'storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp'
--- a/storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp	2009-02-11 15:07:28 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp	2009-04-04 20:53:52 +0000
@@ -2630,6 +2630,10 @@ private:
 //------------------------------------------------------------------
   void tupkeyErrorLab(Signal* signal);
   void do_tup_abortreq(Signal*, Uint32 flags);
+  bool do_tup_abort_operation(Signal*, Tuple_header *,
+                              Operationrec*,
+                              Fragrecord*,
+                              Tablerec*);
 
 //------------------------------------------------------------------
 //------------------------------------------------------------------

=== modified file 'storage/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp'
--- a/storage/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp	2008-11-16 09:16:35 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp	2009-04-04 20:53:52 +0000
@@ -29,77 +29,27 @@ void Dbtup::execTUP_ABORTREQ(Signal* sig
   do_tup_abortreq(signal, 0);
 }
 
-void Dbtup::do_tup_abortreq(Signal* signal, Uint32 flags)
+bool
+Dbtup::do_tup_abort_operation(Signal* signal,
+                              Tuple_header *tuple_ptr,
+                              Operationrec* opPtrP,
+                              Fragrecord* fragPtrP,
+                              Tablerec* tablePtrP)
 {
-  OperationrecPtr regOperPtr;
-  FragrecordPtr regFragPtr;
-  TablerecPtr regTabPtr;
-
-  regOperPtr.i = signal->theData[0];
-  c_operation_pool.getPtr(regOperPtr);
-  TransState trans_state= get_trans_state(regOperPtr.p);
-  ndbrequire((trans_state == TRANS_STARTED) ||
-             (trans_state == TRANS_TOO_MUCH_AI) ||
-             (trans_state == TRANS_ERROR_WAIT_TUPKEYREQ) ||
-             (trans_state == TRANS_IDLE));
-  if (regOperPtr.p->op_struct.op_type == ZREAD) {
-    jam();
-    initOpConnection(regOperPtr.p);
-    return;
-  }//if
-
-  regFragPtr.i = regOperPtr.p->fragmentPtr;
-  ptrCheckGuard(regFragPtr, cnoOfFragrec, fragrecord);
-
-  regTabPtr.i = regFragPtr.p->fragTableId;
-  ptrCheckGuard(regTabPtr, cnoOfTablerec, tablerec);
-
-  if (get_tuple_state(regOperPtr.p) == TUPLE_PREPARED)
-  {
-    jam();
-    if (!regTabPtr.p->tuxCustomTriggers.isEmpty() &&
-        (flags & ZSKIP_TUX_TRIGGERS) == 0)
-      executeTuxAbortTriggers(signal,
-			      regOperPtr.p,
-			      regFragPtr.p,
-			      regTabPtr.p);
-    
-    OperationrecPtr loopOpPtr;
-    loopOpPtr.i = regOperPtr.p->nextActiveOp;
-    while (loopOpPtr.i != RNIL) {
-      jam();
-      c_operation_pool.getPtr(loopOpPtr);
-      if (get_tuple_state(loopOpPtr.p) != TUPLE_ALREADY_ABORTED &&
-	  !regTabPtr.p->tuxCustomTriggers.isEmpty() &&
-          (flags & ZSKIP_TUX_TRIGGERS) == 0) {
-        jam();
-        executeTuxAbortTriggers(signal,
-                                loopOpPtr.p,
-                                regFragPtr.p,
-                                regTabPtr.p);
-      }
-      set_tuple_state(loopOpPtr.p, TUPLE_ALREADY_ABORTED);      
-      loopOpPtr.i = loopOpPtr.p->nextActiveOp;
-    }
-  }
-
-  PagePtr page;
-  Tuple_header *tuple_ptr= (Tuple_header*)
-    get_ptr(&page, &regOperPtr.p->m_tuple_location, regTabPtr.p);
+  bool change = true;
 
-  bool change = false;
   Uint32 bits= tuple_ptr->m_header_bits;  
-  if(regOperPtr.p->op_struct.op_type != ZDELETE)
+  if (opPtrP->op_struct.op_type != ZDELETE)
   {
     Tuple_header *copy=
-      get_copy_tuple(regTabPtr.p, &regOperPtr.p->m_copy_tuple_location);
+      get_copy_tuple(tablePtrP, &opPtrP->m_copy_tuple_location);
     
-    if(regOperPtr.p->op_struct.m_disk_preallocated)
+    if (opPtrP->op_struct.m_disk_preallocated)
     {
       jam();
       Local_key key;
-      memcpy(&key, copy->get_disk_ref_ptr(regTabPtr.p), sizeof(key));
-      disk_page_abort_prealloc(signal, regFragPtr.p, &key, key.m_page_idx);
+      memcpy(&key, copy->get_disk_ref_ptr(tablePtrP), sizeof(key));
+      disk_page_abort_prealloc(signal, fragPtrP, &key, key.m_page_idx);
     }
 
     if(! (bits & Tuple_header::ALLOC))
@@ -108,13 +58,13 @@ void Dbtup::do_tup_abortreq(Signal* sign
       {
 	if (0) ndbout_c("abort grow");
 	Ptr<Page> vpage;
-	Uint32 idx= regOperPtr.p->m_tuple_location.m_page_idx;
+	Uint32 idx= opPtrP->m_tuple_location.m_page_idx;
         Uint32 *var_part;
-
+        
 	ndbassert(! (tuple_ptr->m_header_bits & Tuple_header::COPY_TUPLE));
 	
-	Var_part_ref *ref = tuple_ptr->get_var_part_ref_ptr(regTabPtr.p);
-
+	Var_part_ref *ref = tuple_ptr->get_var_part_ref_ptr(tablePtrP);
+        
         Local_key tmp; 
         ref->copyout(&tmp);
 	
@@ -142,7 +92,7 @@ void Dbtup::do_tup_abortreq(Signal* sign
           ref->assign(&tmp);
           bits &= ~(Uint32)Tuple_header::VAR_PART;
         }
-        update_free_page_list(regFragPtr.p, vpage);
+        update_free_page_list(fragPtrP, vpage);
         tuple_ptr->m_header_bits= bits & ~Tuple_header::MM_GROWN;
         change = true;
       } 
@@ -151,8 +101,7 @@ void Dbtup::do_tup_abortreq(Signal* sign
 	if (0) ndbout_c("abort shrink");
       }
     }
-    else if (regOperPtr.p->is_first_operation() && 
-	     regOperPtr.p->is_last_operation())
+    else if (opPtrP->is_first_operation())
     {
       /**
        * Aborting last operation that performed ALLOC
@@ -162,8 +111,7 @@ void Dbtup::do_tup_abortreq(Signal* sign
       tuple_ptr->m_header_bits |= Tuple_header::FREED;
     }
   }
-  else if (regOperPtr.p->is_first_operation() && 
-	   regOperPtr.p->is_last_operation())
+  else if (opPtrP->is_first_operation())
   {
     if (bits & Tuple_header::ALLOC)
     {
@@ -172,11 +120,107 @@ void Dbtup::do_tup_abortreq(Signal* sign
       tuple_ptr->m_header_bits |= Tuple_header::FREED;
     }
   }
-  
-  if (change && (regTabPtr.p->m_bits & Tablerec::TR_Checksum)) 
+  return change;
+}
+
+void Dbtup::do_tup_abortreq(Signal* signal, Uint32 flags)
+{
+  OperationrecPtr regOperPtr;
+  FragrecordPtr regFragPtr;
+  TablerecPtr regTabPtr;
+
+  regOperPtr.i = signal->theData[0];
+  c_operation_pool.getPtr(regOperPtr);
+  TransState trans_state= get_trans_state(regOperPtr.p);
+  ndbrequire((trans_state == TRANS_STARTED) ||
+             (trans_state == TRANS_TOO_MUCH_AI) ||
+             (trans_state == TRANS_ERROR_WAIT_TUPKEYREQ) ||
+             (trans_state == TRANS_IDLE));
+  if (regOperPtr.p->op_struct.op_type == ZREAD) {
+    jam();
+    initOpConnection(regOperPtr.p);
+    return;
+  }//if
+
+  regFragPtr.i = regOperPtr.p->fragmentPtr;
+  ptrCheckGuard(regFragPtr, cnoOfFragrec, fragrecord);
+
+  regTabPtr.i = regFragPtr.p->fragTableId;
+  ptrCheckGuard(regTabPtr, cnoOfTablerec, tablerec);
+
+  PagePtr page;
+  Tuple_header *tuple_ptr= (Tuple_header*)
+    get_ptr(&page, &regOperPtr.p->m_tuple_location, regTabPtr.p);
+
+  if (get_tuple_state(regOperPtr.p) == TUPLE_PREPARED)
   {
     jam();
-    setChecksum(tuple_ptr, regTabPtr.p);
+
+    /**
+     * abort all TUX entries first...if present
+     */
+    if (!regTabPtr.p->tuxCustomTriggers.isEmpty() && 
+        ! (flags & ZSKIP_TUX_TRIGGERS))
+    {
+      jam();
+      executeTuxAbortTriggers(signal,
+                              regOperPtr.p,
+                              regFragPtr.p,
+                              regTabPtr.p);
+
+      OperationrecPtr loopOpPtr;
+      loopOpPtr.i = regOperPtr.p->nextActiveOp;
+      while (loopOpPtr.i != RNIL) 
+      {
+        jam();
+        c_operation_pool.getPtr(loopOpPtr);
+        if (get_tuple_state(loopOpPtr.p) != TUPLE_ALREADY_ABORTED)
+        {
+          jam();
+          executeTuxAbortTriggers(signal,
+                                  loopOpPtr.p,
+                                  regFragPtr.p,
+                                  regTabPtr.p);
+        }
+        loopOpPtr.i = loopOpPtr.p->nextActiveOp;
+      }
+    }
+
+    /**
+     * Then abort all data changes
+     */
+    {
+      bool change = do_tup_abort_operation(signal, 
+                                           tuple_ptr,
+                                           regOperPtr.p,
+                                           regFragPtr.p,
+                                           regTabPtr.p);
+      
+      OperationrecPtr loopOpPtr;
+      loopOpPtr.i = regOperPtr.p->nextActiveOp;
+      while (loopOpPtr.i != RNIL) 
+      {
+        jam();
+        c_operation_pool.getPtr(loopOpPtr);
+        if (get_tuple_state(loopOpPtr.p) != TUPLE_ALREADY_ABORTED)
+        {
+          jam();
+          change |= do_tup_abort_operation(signal,
+                                           tuple_ptr,
+                                           loopOpPtr.p,
+                                           regFragPtr.p,
+                                           regTabPtr.p);
+          set_tuple_state(loopOpPtr.p, TUPLE_ALREADY_ABORTED);      
+        }
+        loopOpPtr.i = loopOpPtr.p->nextActiveOp;
+      }
+    
+      if (change && (regTabPtr.p->m_bits & Tablerec::TR_Checksum)) 
+      {
+        jam();
+        setChecksum(tuple_ptr, regTabPtr.p);
+      }
+    }
   }
   
   if(regOperPtr.p->is_first_operation() && regOperPtr.p->is_last_operation())

=== modified file 'storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp'
--- a/storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp	2009-02-11 15:07:28 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp	2009-03-24 08:42:42 +0000
@@ -33,6 +33,9 @@
 #include <signaldata/DropTab.hpp>
 #include <SLList.hpp>
 
+#include <EventLogger.hpp>
+extern EventLogger * g_eventLogger;
+
 #define DEBUG(x) { ndbout << "TUP::" << x << endl; }
 
 void Dbtup::initData() 
@@ -231,6 +234,7 @@ void Dbtup::execCONTINUEB(Signal* signal
   jamEntry();
   Uint32 actionType = signal->theData[0];
   Uint32 dataPtr = signal->theData[1];
+
   switch (actionType) {
   case ZINITIALISE_RECORDS:
     jam();
@@ -256,7 +260,6 @@ void Dbtup::execCONTINUEB(Signal* signal
   case ZFREE_EXTENT:
   {
     jam();
-    
     TablerecPtr tabPtr;
     tabPtr.i= dataPtr;
     FragrecordPtr fragPtr;
@@ -269,7 +272,6 @@ void Dbtup::execCONTINUEB(Signal* signal
   case ZUNMAP_PAGES:
   {
     jam();
-    
     TablerecPtr tabPtr;
     tabPtr.i= dataPtr;
     FragrecordPtr fragPtr;

=== modified file 'storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp'
--- a/storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp	2008-11-16 12:29:39 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp	2009-03-24 08:42:42 +0000
@@ -36,6 +36,9 @@
 #include <my_sys.h>
 #include <signaldata/LqhFrag.hpp>
 
+#include <EventLogger.hpp>
+extern EventLogger * g_eventLogger;
+
 void
 Dbtup::execCREATE_TAB_REQ(Signal* signal)
 {

=== modified file 'storage/ndb/src/kernel/blocks/dbtup/DbtupProxy.cpp'
--- a/storage/ndb/src/kernel/blocks/dbtup/DbtupProxy.cpp	2009-03-16 17:05:07 +0000
+++ b/storage/ndb/src/kernel/blocks/dbtup/DbtupProxy.cpp	2009-03-24 08:42:42 +0000
@@ -21,6 +21,9 @@
 #include <pgman.hpp>
 #include <signaldata/LgmanContinueB.hpp>
 
+#include <EventLogger.hpp>
+extern EventLogger * g_eventLogger;
+
 DbtupProxy::DbtupProxy(Block_context& ctx) :
   LocalProxy(DBTUP, ctx),
   c_pgman(0),

=== modified file 'storage/ndb/src/kernel/blocks/lgman.cpp'
--- a/storage/ndb/src/kernel/blocks/lgman.cpp	2009-03-14 20:42:04 +0000
+++ b/storage/ndb/src/kernel/blocks/lgman.cpp	2009-03-24 08:42:42 +0000
@@ -1151,6 +1151,7 @@ Logfile_client::Logfile_client(Simulated
 {
   Uint32 bno = block->number();
   Uint32 ino = block->instance();
+  m_client_block= block;
   m_block= numberToBlock(bno, ino);
   m_lgman= lgman;
   m_lock = lock;
@@ -1210,8 +1211,8 @@ Logfile_client::sync_lsn(Signal* signal,
       signal->theData[1] = ptr.i;
       signal->theData[2] = (Uint32)(lsn >> 32);
       signal->theData[3] = (Uint32)(lsn & 0xFFFFFFFF);
-      m_lgman->sendSignalWithDelay(m_lgman->reference(), 
-				   GSN_CONTINUEB, signal, 10, 4);
+      m_client_block->sendSignalWithDelay(m_lgman->reference(), 
+                                          GSN_CONTINUEB, signal, 10, 4);
     }
     return 0;
   }

=== modified file 'storage/ndb/src/kernel/blocks/lgman.hpp'
--- a/storage/ndb/src/kernel/blocks/lgman.hpp	2008-11-16 15:29:16 +0000
+++ b/storage/ndb/src/kernel/blocks/lgman.hpp	2009-03-24 08:33:25 +0000
@@ -321,6 +321,7 @@ private:
 };
 
 class Logfile_client {
+  SimulatedBlock *m_client_block;
   Uint32 m_block; // includes instance
   Lgman * m_lgman;
   bool m_lock;

=== modified file 'storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp'
--- a/storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp	2008-12-02 13:10:49 +0000
+++ b/storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp	2009-04-07 12:34:39 +0000
@@ -87,7 +87,7 @@ AsyncFile::readvReq( Request * request)
 void
 AsyncFile::writeReq(Request * request)
 {
-  Uint32 cnt = request->par.readWrite.numberOfPages;
+  const Uint32 cnt = request->par.readWrite.numberOfPages;
   if (theWriteBuffer == 0 || cnt == 1)
   {
     for (Uint32 i = 0; i<cnt; i++)
@@ -100,8 +100,8 @@ AsyncFile::writeReq(Request * request)
         request->error = err;
         return;
       }
-      goto done;
     }
+    goto done;
   }
 
   {

=== modified file 'storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp'
--- a/storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp	2009-02-18 15:01:04 +0000
+++ b/storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp	2009-04-05 21:03:06 +0000
@@ -303,7 +303,7 @@ private:
 
   void api_failed(Signal* signal, Uint32 aFailedNode);
   void node_failed(Signal* signal, Uint16 aFailedNode);
-  void checkStartInterface(Signal* signal);
+  void checkStartInterface(Signal* signal, Uint64 now);
   void failReport(Signal* signal,
                   Uint16 aFailedNode,
                   UintR aSendFailRep,
@@ -445,7 +445,6 @@ private:
   UintR cfailureNr;
 
   QmgrState ctoStatus;
-  UintR cLqhTimeSignalCount;
   bool cHbSent;
   NDB_TICKS clatestTransactionCheck;
 

=== modified file 'storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp'
--- a/storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp	2009-03-16 15:24:30 +0000
+++ b/storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp	2009-04-07 20:06:42 +0000
@@ -2337,8 +2337,6 @@ void Qmgr::initData(Signal* signal) 
   interface_check_timer.reset();
   clatestTransactionCheck = 0;
 
-  cLqhTimeSignalCount = 0;
-
   // catch-all for missing initializations
   memset(&arbitRec, 0, sizeof(arbitRec));
 
@@ -2454,7 +2452,7 @@ void Qmgr::timerHandlingLab(Signal* sign
   if (interface_check_timer.check(TcurrentTime)) {
     jam();
     interface_check_timer.reset();
-    checkStartInterface(signal);
+    checkStartInterface(signal, TcurrentTime);
   }
 
   if (hb_api_timer.check(TcurrentTime)) 
@@ -2477,11 +2475,7 @@ void Qmgr::timerHandlingLab(Signal* sign
       jam();
       clatestTransactionCheck += (NDB_TICKS)10;
       sendSignal(DBTC_REF, GSN_TIME_SIGNAL, signal, 1, JBB);
-      cLqhTimeSignalCount++;
-      if (cLqhTimeSignalCount >= 100) {
-	cLqhTimeSignalCount = 0;
-	sendSignal(DBLQH_REF, GSN_TIME_SIGNAL, signal, 1, JBB);          
-      }//if
+      sendSignal(DBLQH_REF, GSN_TIME_SIGNAL, signal, 1, JBB);          
       counter++;
       if (counter > 1) {
 	jam();
@@ -2624,7 +2618,7 @@ void Qmgr::apiHbHandlingLab(Signal* sign
   return;
 }//Qmgr::apiHbHandlingLab()
 
-void Qmgr::checkStartInterface(Signal* signal) 
+void Qmgr::checkStartInterface(Signal* signal, Uint64 now) 
 {
   NodeRecPtr nodePtr;
   /*------------------------------------------------------------------------*/
@@ -2634,6 +2628,7 @@ void Qmgr::checkStartInterface(Signal* s
   /*------------------------------------------------------------------------*/
   for (nodePtr.i = 1; nodePtr.i < MAX_NODES; nodePtr.i++) {
     ptrAss(nodePtr, nodeRec);
+    Uint32 type = getNodeInfo(nodePtr.i).m_type;
     if (nodePtr.p->phase == ZFAIL_CLOSING) {
       jam();
       setNodeInfo(nodePtr.i).m_heartbeat_cnt++;
@@ -2655,7 +2650,6 @@ void Qmgr::checkStartInterface(Signal* s
 	 *-------------------------------------------------------------------*/
         nodePtr.p->failState = NORMAL;
         nodePtr.p->m_secret = 0;
-        Uint32 type = getNodeInfo(nodePtr.i).m_type;
         switch(type){
         case NodeInfo::DB:
           jam();
@@ -2700,7 +2694,15 @@ void Qmgr::checkStartInterface(Signal* s
 	  warningEvent(buf);
 	}
       }
-    }//if
+    }
+    else if (type == NodeInfo::DB && nodePtr.p->phase == ZINIT &&
+             nodePtr.p->m_secret != 0 && now > nodePtr.p->m_alloc_timeout)
+    {
+      jam();
+      nodePtr.p->m_secret = 0;
+      warningEvent("Releasing node id allocation for node %u",
+                   nodePtr.i);
+    }
   }//for
   return;
 }//Qmgr::checkStartInterface()
@@ -5543,7 +5545,7 @@ Qmgr::execALLOC_NODEID_REQ(Signal * sign
 
     nodePtr.p->m_secret = (Uint64(secret_hi) << 32) + secret_lo;
     nodePtr.p->m_alloc_timeout = now + req.timeout;
-    
+
     opAllocNodeIdReq.m_req = req;
     opAllocNodeIdReq.m_error = 0;
     opAllocNodeIdReq.m_connectCount =

=== modified file 'storage/ndb/src/kernel/blocks/suma/Suma.cpp'
--- a/storage/ndb/src/kernel/blocks/suma/Suma.cpp	2009-03-14 20:42:04 +0000
+++ b/storage/ndb/src/kernel/blocks/suma/Suma.cpp	2009-04-06 09:46:01 +0000
@@ -2622,6 +2622,8 @@ Suma::execSUB_START_REQ(Signal* signal){
 
   SubscriptionPtr subPtr;
 
+  CRASH_INSERTION2(13042, getNodeState().startLevel == NodeState::SL_STARTING);
+  
   if (c_startup.m_restart_server_node_id == RNIL)
   {
     jam();
@@ -2634,8 +2636,6 @@ Suma::execSUB_START_REQ(Signal* signal){
     return;
   }
 
-  CRASH_INSERTION2(13042, getNodeState().startLevel == NodeState::SL_STARTING);
-  
   bool found = c_subscriptions.find(subPtr, key);
   if (!found)
   {
@@ -3468,8 +3468,11 @@ Suma::report_sub_stop_conf(Signal* signa
   }
   
   SubStopConf * const conf = (SubStopConf*)signal->getDataPtrSend();
+  const Uint64 gci = m_max_seen_gci;
   conf->senderRef= reference();
   conf->senderData= senderData;
+  conf->gci_hi= Uint32(gci>>32);
+  conf->gci_lo= Uint32(gci);
   sendSignal(senderRef, GSN_SUB_STOP_CONF, signal,
 	     SubStopConf::SignalLength, JBB);
 

=== modified file 'storage/ndb/src/kernel/main.cpp'
--- a/storage/ndb/src/kernel/main.cpp	2009-03-16 14:32:03 +0000
+++ b/storage/ndb/src/kernel/main.cpp	2009-04-07 20:06:42 +0000
@@ -197,6 +197,8 @@ int main(int argc, char** argv)
   g_eventLogger->info("Ndb started");
 #endif
 
-  return ndbd_run(opt_foreground);
+  int res = ndbd_run(opt_foreground);
+  _exit(res);
+  return res;
 }
 

=== modified file 'storage/ndb/src/kernel/ndbd.cpp'
--- a/storage/ndb/src/kernel/ndbd.cpp	2009-03-14 20:42:04 +0000
+++ b/storage/ndb/src/kernel/ndbd.cpp	2009-04-01 12:56:26 +0000
@@ -73,9 +73,6 @@ systemInfo(const Configuration & config,
   if(logLevel.getLogLevel(LogLevel::llStartUp) > 0){
     g_eventLogger->info("NDB Cluster -- DB node %d", globalData.ownId);
     g_eventLogger->info("%s --", NDB_VERSION_STRING);
-    if (config.get_mgmd_host())
-      g_eventLogger->info("Configuration fetched at %s port %d",
-                          config.get_mgmd_host(), config.get_mgmd_port());
 #ifdef NDB_SOLARIS
     g_eventLogger->info("NDB is running on a machine with %d processor(s) at %d MHz",
                         processor, speed);
@@ -310,7 +307,7 @@ childExit(int code, Uint32 currentStartP
   fprintf(child_info_file_w, "\n");
   fclose(child_info_file_r);
   fclose(child_info_file_w);
-  exit(code);
+  _exit(code);
 #else
   {
     Configuration* theConfig=globalEmulatorData.theConfiguration;
@@ -319,7 +316,7 @@ childExit(int code, Uint32 currentStartP
     case NRT_Default:
       g_eventLogger->info("Angel shutting down");
       reportShutdown(theConfig, 0, 0, currentStartPhase);
-      exit(0);
+      _exit(0);
       break;
     case NRT_NoStart_Restart:
       theConfig->setInitialStart(false);
@@ -340,7 +337,7 @@ childExit(int code, Uint32 currentStartP
          * Error shutdown && stopOnError()
          */
         reportShutdown(theConfig, 1, 0, currentStartPhase);
-        exit(0);
+        _exit(0);
       }
       // Fall-through
     case NRT_DoStart_Restart:
@@ -367,7 +364,7 @@ childExit(int code, Uint32 currentStartP
     if (reportShutdown(theConfig, 0, 1, currentStartPhase))
     {
       g_eventLogger->error("unable to shutdown");
-      exit(1);
+      _exit(1);
     }
     g_eventLogger->info("Ndb has terminated.  code=%d", code);
     if (code == NRT_NoStart_Restart)
@@ -592,7 +589,7 @@ ndbd_run(bool foreground)
   globalTransporterRegistry.startReceiving();
   if (!globalTransporterRegistry.start_service(*globalEmulatorData.m_socket_server)){
     ndbout_c("globalTransporterRegistry.start_service() failed");
-    exit(-1);
+    _exit(-1);
   }
 
   // Re-use the mgm handle as a transporter
@@ -606,7 +603,7 @@ ndbd_run(bool foreground)
   if (pTrp == 0)
   {
     ndbout_c("globalTransporterRegistry.start_clients() failed");
-    exit(-1);
+    _exit(-1);
   }
 
   NdbThread* pSockServ = globalEmulatorData.m_socket_server->startServer();

=== modified file 'storage/ndb/src/kernel/vm/Configuration.cpp'
--- a/storage/ndb/src/kernel/vm/Configuration.cpp	2009-03-04 10:40:00 +0000
+++ b/storage/ndb/src/kernel/vm/Configuration.cpp	2009-03-26 09:13:22 +0000
@@ -121,10 +121,9 @@ Configuration::fetch_configuration(const
     delete m_config_retriever;
   }
 
-  m_mgmd_port= 0;
   m_config_retriever= new ConfigRetriever(_connect_string,
-					  NDB_VERSION, 
-					  NODE_TYPE_DB,
+                                          NDB_VERSION,
+                                          NDB_MGM_NODE_TYPE_NDB,
 					  _bind_address);
 
   if (m_config_retriever->hasError())
@@ -143,9 +142,6 @@ Configuration::fetch_configuration(const
     */
     ERROR_SET(fatal, NDBD_EXIT_INVALID_CONFIG, "Could not connect to ndb_mgmd", s);
   }
-  
-  m_mgmd_port= m_config_retriever->get_mgmd_port();
-  m_mgmd_host.assign(m_config_retriever->get_mgmd_host());
 
   ConfigRetriever &cr= *m_config_retriever;
   
@@ -181,7 +177,21 @@ Configuration::fetch_configuration(const
     free(m_clusterConfig);
   
   m_clusterConfig = p;
-  
+
+  {
+    Uint32 generation;
+    ndb_mgm_configuration_iterator sys_iter(*p, CFG_SECTION_SYSTEM);
+    if (sys_iter.get(CFG_SYS_CONFIG_GENERATION, &generation)) {
+      ERROR_SET(fatal, NDBD_EXIT_INVALID_CONFIG,
+                "Invalid configuration fetched", "generation missing");
+    }
+
+    g_eventLogger->info("Configuration fetched from '%s:%d', generation: %d",
+                        m_config_retriever->get_mgmd_host(),
+                        m_config_retriever->get_mgmd_port(),
+                        generation);
+  }
+
   ndb_mgm_configuration_iterator iter(* p, CFG_SECTION_NODE);
   if (iter.find(CFG_NODE_ID, globalData.ownId)){
     ERROR_SET(fatal, NDBD_EXIT_INVALID_CONFIG, "Invalid configuration fetched", "DB missing");

=== modified file 'storage/ndb/src/kernel/vm/Configuration.hpp'
--- a/storage/ndb/src/kernel/vm/Configuration.hpp	2009-03-04 10:40:00 +0000
+++ b/storage/ndb/src/kernel/vm/Configuration.hpp	2009-03-26 09:13:22 +0000
@@ -122,8 +122,6 @@ public:
 
   const ndb_mgm_configuration_iterator * getOwnConfigIterator() const;
 
-  Uint32 get_mgmd_port() const {return m_mgmd_port;};
-  const char *get_mgmd_host() const {return m_mgmd_host.c_str();};
   ConfigRetriever* get_config_retriever() { return m_config_retriever; };
 
   class LogLevel * m_logLevel;
@@ -167,8 +165,6 @@ private:
   char * _fsPath;
   char * _backupPath;
   bool _initialStart;
-  Uint32 m_mgmd_port;
-  BaseString m_mgmd_host;
   bool _daemonMode; // if not, angel in foreground
 
   void calcSizeAlt(class ConfigValues * );

=== modified file 'storage/ndb/src/kernel/vm/LongSignal.cpp'
--- a/storage/ndb/src/kernel/vm/LongSignal.cpp	2008-10-08 19:09:05 +0000
+++ b/storage/ndb/src/kernel/vm/LongSignal.cpp	2009-03-20 17:03:34 +0000
@@ -179,6 +179,9 @@ dupSection(SPC_ARG Uint32& copyFirstIVal
   return true;
 }
 
+extern int ErrorSignalReceive;
+extern int ErrorMaxSegmentsToSeize;
+
 /**
  * appendToSection
  * Append supplied words to the chain of section segments
@@ -211,6 +214,15 @@ appendToSection(SPC_ARG Uint32& firstSeg
 
   if (firstSegmentIVal == RNIL)
   {
+#ifdef ERROR_INSERT
+    /* Simulate running out of segments */
+    if ((ErrorSignalReceive == 1) && 
+        (ErrorMaxSegmentsToSeize == 0))
+    {
+      ndbout_c("append exhausted on first segment");
+      return false;
+    }
+#endif
     /* First data to be added to this section */
     bool result= g_sectionSegmentPool.seize(SPC_SEIZE_ARG firstPtr);
 
@@ -245,6 +257,10 @@ appendToSection(SPC_ARG Uint32& firstSeg
 
   firstPtr.p->m_sz+= len;
 
+#ifdef ERROR_INSERT
+  Uint32 remainSegs= (Uint32) ErrorMaxSegmentsToSeize - 1;
+#endif
+
   while(len > remain) {
     /* Fill this segment, and link in another one
      * Note that we can memcpy to a bad address with size 0
@@ -253,6 +269,18 @@ appendToSection(SPC_ARG Uint32& firstSeg
     src += remain;
     len -= remain;
     Ptr<SectionSegment> prevPtr= currPtr;
+
+#ifdef ERROR_INSERT
+    /* Simulate running out of segments */
+    if ((ErrorSignalReceive == 1) && 
+        (0 == remainSegs--))
+    {
+      ndbout_c("Append exhausted on segment %d", ErrorMaxSegmentsToSeize);
+      firstPtr.p->m_lastSegment= prevPtr.i;
+      firstPtr.p->m_sz-= len;
+      return false;
+    }
+#endif
     bool result = g_sectionSegmentPool.seize(SPC_SEIZE_ARG currPtr);
     if (!result)
     {
@@ -282,6 +310,16 @@ appendToSection(SPC_ARG Uint32& firstSeg
 bool
 import(SPC_ARG Ptr<SectionSegment> & first, const Uint32 * src, Uint32 len){
 
+#ifdef ERROR_INSERT
+  /* Simulate running out of segments */
+  if ((ErrorSignalReceive == 1) &&
+      (ErrorMaxSegmentsToSeize == 0))
+  {
+    ndbout_c("Import exhausted on first segment");
+    return false;
+  }
+#endif
+
   first.p = 0;
   if(g_sectionSegmentPool.seize(SPC_SEIZE_ARG first)){
     ;
@@ -295,11 +333,30 @@ import(SPC_ARG Ptr<SectionSegment> & fir
 
   Ptr<SectionSegment> currPtr = first;
 
+#ifdef ERROR_INSERT
+  Uint32 remainSegs= (Uint32) ErrorMaxSegmentsToSeize - 1;
+#endif
+
   while(len > SectionSegment::DataLength){
     memcpy(&currPtr.p->theData[0], src, 4 * SectionSegment::DataLength);
     src += SectionSegment::DataLength;
     len -= SectionSegment::DataLength;
     Ptr<SectionSegment> prevPtr = currPtr;
+
+#ifdef ERROR_INSERT
+    /* Simulate running out of segments */
+    if ((ErrorSignalReceive == 1) &&
+        (0 == remainSegs--))
+    {
+      ndbout_c("Import exhausted on segment %d", 
+               ErrorMaxSegmentsToSeize);
+      first.p->m_lastSegment= prevPtr.i;
+      first.p->m_sz-= len;
+      prevPtr.p->m_nextSegment = RNIL;
+      return false;
+    }
+#endif
+
     if(g_sectionSegmentPool.seize(SPC_SEIZE_ARG currPtr)){
       prevPtr.p->m_nextSegment = currPtr.i;
       ;

=== modified file 'storage/ndb/src/kernel/vm/TransporterCallback.cpp'
--- a/storage/ndb/src/kernel/vm/TransporterCallback.cpp	2009-03-14 20:42:04 +0000
+++ b/storage/ndb/src/kernel/vm/TransporterCallback.cpp	2009-03-20 17:03:34 +0000
@@ -39,6 +39,12 @@
  */
 SectionSegmentPool g_sectionSegmentPool;
 
+/* Instance debugging vars
+ * Set from DBTC
+ */
+int ErrorSignalReceive= 0;
+int ErrorMaxSegmentsToSeize= 0;
+
 struct ConnectionError
 {
   enum TransporterError err;

=== modified file 'storage/ndb/src/mgmapi/mgmapi.cpp'
--- a/storage/ndb/src/mgmapi/mgmapi.cpp	2008-12-18 10:38:41 +0000
+++ b/storage/ndb/src/mgmapi/mgmapi.cpp	2009-03-26 09:11:40 +0000
@@ -2302,13 +2302,16 @@ ndb_mgm_abort_backup(NdbMgmHandle handle
 
 extern "C"
 struct ndb_mgm_configuration *
-ndb_mgm_get_configuration(NdbMgmHandle handle, unsigned int version) {
+ndb_mgm_get_configuration2(NdbMgmHandle handle, unsigned int version,
+                           enum ndb_mgm_node_type nodetype)
+{
   CHECK_HANDLE(handle, 0);
   SET_ERROR(handle, NDB_MGM_NO_ERROR, "Executing: ndb_mgm_get_configuration");
   CHECK_CONNECTED(handle, 0);
 
   Properties args;
   args.put("version", version);
+  args.put("nodetype", nodetype);
 
   const ParserRow<ParserDummy> reply[] = {
     MGM_CMD("get config reply", NULL, ""),
@@ -2324,9 +2327,10 @@ ndb_mgm_get_configuration(NdbMgmHandle h
   CHECK_REPLY(handle, prop, 0);
   
   do {
-    const char * buf;
+    const char * buf = "<unknown error>";
     if(!prop->get("result", &buf) || strcmp(buf, "Ok") != 0){
       fprintf(handle->errstream, "ERROR Message: %s\n\n", buf);
+      SET_ERROR(handle, NDB_MGM_GET_CONFIG_FAILED, buf);
       break;
     }
 
@@ -2401,6 +2405,14 @@ ndb_mgm_get_configuration(NdbMgmHandle h
 }
 
 extern "C"
+struct ndb_mgm_configuration *
+ndb_mgm_get_configuration(NdbMgmHandle handle, unsigned int version)
+{
+  return ndb_mgm_get_configuration2(handle, version,
+                                    NDB_MGM_NODE_TYPE_UNKNOWN);
+}
+
+extern "C"
 void
 ndb_mgm_destroy_configuration(struct ndb_mgm_configuration *cfg)
 {

=== modified file 'storage/ndb/src/mgmapi/mgmapi_error.c'
--- a/storage/ndb/src/mgmapi/mgmapi_error.c	2008-12-18 10:38:41 +0000
+++ b/storage/ndb/src/mgmapi/mgmapi_error.c	2009-03-26 09:11:40 +0000
@@ -46,7 +46,9 @@ const struct Ndb_Mgm_Error_Msg ndb_mgm_e
   /* Service errors - Configuration change */
   { NDB_MGM_CONFIG_CHANGE_FAILED,
     "Failed to complete configuration change" },
-  
+  { NDB_MGM_GET_CONFIG_FAILED,
+    "Failed to get configuration" },
+
   /* Usage errors */
   { NDB_MGM_USAGE_ERROR,
     "Usage error" }

=== modified file 'storage/ndb/src/mgmapi/mgmapi_internal.h'
--- a/storage/ndb/src/mgmapi/mgmapi_internal.h	2008-11-19 13:42:48 +0000
+++ b/storage/ndb/src/mgmapi/mgmapi_internal.h	2009-03-26 09:11:40 +0000
@@ -82,6 +82,19 @@ extern "C" {
 
   NDB_SOCKET_TYPE _ndb_mgm_get_socket(NdbMgmHandle handle);
 
+  /**
+   * Get configuration
+   *
+   * @param   handle    NDB management handle.
+   * @param   version   version of this node
+   * @param   nodetype   type of this node
+   */
+  struct ndb_mgm_configuration *
+  ndb_mgm_get_configuration2(NdbMgmHandle handle,
+                             unsigned version,
+                             enum ndb_mgm_node_type nodetype);
+
+
 #ifdef __cplusplus
 }
 #endif

=== modified file 'storage/ndb/src/mgmclient/CommandInterpreter.cpp'
--- a/storage/ndb/src/mgmclient/CommandInterpreter.cpp	2009-03-14 20:42:04 +0000
+++ b/storage/ndb/src/mgmclient/CommandInterpreter.cpp	2009-03-31 09:04:22 +0000
@@ -3055,7 +3055,7 @@ CommandInterpreter::executeStartBackup(c
 
   NdbLogEventHandle log_handle= NULL;
   struct ndb_logevent log_event;
-  if (flags == 2 && !interactive)
+  if (flags > 0 && !interactive)
   {
     int filter[] = { 15, NDB_MGM_EVENT_CATEGORY_BACKUP, 0, 0 };
     log_handle = ndb_mgm_create_logevent_handle(m_mgmsrv, filter);

=== modified file 'storage/ndb/src/mgmsrv/Config.cpp'
--- a/storage/ndb/src/mgmsrv/Config.cpp	2009-03-14 20:42:04 +0000
+++ b/storage/ndb/src/mgmsrv/Config.cpp	2009-03-26 08:31:32 +0000
@@ -777,3 +777,25 @@ void Config::getConnectString(BaseString
   ndbout << connectstring << endl;
 }
 
+
+void
+Config::get_nodemask(NodeBitmask& mask,
+                     ndb_mgm_node_type type) const
+{
+  mask.clear();
+  ConfigIter it(this, CFG_SECTION_NODE);
+  for (; it.valid(); it.next())
+  {
+    Uint32 node_type;
+    require(it.get(CFG_TYPE_OF_SECTION, &node_type) == 0);
+
+    if (type == NDB_MGM_NODE_TYPE_UNKNOWN || // UNKOWN -> add all nodes to mask
+        type == (ndb_mgm_node_type)node_type)
+    {
+      Uint32 nodeid;
+      require(it.get(CFG_NODE_ID, &nodeid) == 0);
+      mask.set(nodeid);
+    }
+  }
+}
+

=== modified file 'storage/ndb/src/mgmsrv/Config.hpp'
--- a/storage/ndb/src/mgmsrv/Config.hpp	2008-12-16 16:30:58 +0000
+++ b/storage/ndb/src/mgmsrv/Config.hpp	2009-03-26 08:31:32 +0000
@@ -16,7 +16,9 @@
 #ifndef Config_H
 #define Config_H
 
+#include <kernel/NodeBitmask.hpp>
 #include "ConfigInfo.hpp"
+#include <mgmapi.h>
 #include <mgmapi_configuration.hpp>
 
 
@@ -113,6 +115,13 @@ public:
   */
   bool equal(const Config*, const unsigned* exclude = NULL) const;
 
+  /*
+    Return bitmask of all defined nodes of a certain type
+    returns all defined nodes by default.
+   */
+  void get_nodemask(NodeBitmask& mask,
+                    ndb_mgm_node_type type = NDB_MGM_NODE_TYPE_UNKNOWN) const;
+
   struct ndb_mgm_configuration * m_configValues;
   struct ndb_mgm_configuration * values(void) const { return m_configValues; };
 

=== modified file 'storage/ndb/src/mgmsrv/ConfigInfo.cpp'
--- a/storage/ndb/src/mgmsrv/ConfigInfo.cpp	2009-03-16 15:24:30 +0000
+++ b/storage/ndb/src/mgmsrv/ConfigInfo.cpp	2009-04-07 20:06:42 +0000
@@ -25,6 +25,7 @@
 #include <m_string.h>
 #include <Bitmask.hpp>
 #include <ndb_opts.h>
+#include <ndb_version.h>
 
 #else
 #include "ConfigInfo.hpp"
@@ -2800,10 +2801,6 @@ ConfigInfo::ConfigInfo()
     pinfo.put("Type",        param._type);
     pinfo.put("Status",      param._status);
 
-    if(param._default == MANDATORY){
-      pinfo.put("Mandatory", (Uint32)1);
-    }
-
     switch (param._type) {
       case CI_BOOL:
       {
@@ -2812,6 +2809,16 @@ ConfigInfo::ConfigInfo()
 	pinfo.put64("Min", tmp_bool);
 	require(InitConfigFileParser::convertStringToBool(param._max, tmp_bool));
 	pinfo.put64("Max", tmp_bool);
+
+        if(param._default == MANDATORY)
+          pinfo.put("Mandatory", (Uint32)1);
+        else if(param._default != UNDEFINED)
+        {
+          require(InitConfigFileParser::convertStringToBool(param._default,
+                                                            tmp_bool));
+          pinfo.put("Default", tmp_bool);
+        }
+
 	break;
       }
       case CI_INT:
@@ -2822,12 +2829,25 @@ ConfigInfo::ConfigInfo()
 	pinfo.put64("Min", tmp_uint64);
 	require(InitConfigFileParser::convertStringToUint64(param._max, tmp_uint64));
 	pinfo.put64("Max", tmp_uint64);
+
+        if(param._default == MANDATORY)
+          pinfo.put("Mandatory", (Uint32)1);
+        else if(param._default != UNDEFINED)
+        {
+          require(InitConfigFileParser::convertStringToUint64(param._default,
+                                                              tmp_uint64));
+          pinfo.put64("Default", tmp_uint64);
+        }
 	break;
       }
       case CI_SECTION:
 	pinfo.put("SectionType", (Uint32)UintPtr(param._default));
 	break;
       case CI_STRING:
+        if(param._default == MANDATORY)
+          pinfo.put("Mandatory", (Uint32)1);
+        else if(param._default != UNDEFINED)
+          pinfo.put("Default", param._default);
 	break;
     }
 
@@ -2864,6 +2884,7 @@ ConfigInfo::ConfigInfo()
 	    {
 	      require(InitConfigFileParser::convertStringToBool(param._default, default_bool));
 	      require(p->put(param._fname, default_bool));
+
 	      break;
 	    }
 	  case CI_INT:
@@ -2984,8 +3005,28 @@ ConfigInfo::getDefault(const Properties 
 }
 
 const char*
-ConfigInfo::getDescription(const Properties * section, 
-			   const char* fname) const {
+ConfigInfo::getDefaultString(const Properties * section,
+                             const char* fname) const {
+  return getInfoString(section, fname, "Default");
+}
+
+bool
+ConfigInfo::hasDefault(const Properties * section, const char* fname) const {
+  const Properties * p;
+  require(section->get(fname, &p));
+  return p->contains("Default");
+}
+
+bool
+ConfigInfo::getMandatory(const Properties * section, const char* fname) const {
+  const Properties * p;
+  require(section->get(fname, &p));
+  return p->contains("Mandatory");
+}
+
+const char*
+ConfigInfo::getDescription(const Properties * section,
+                           const char* fname) const {
   return getInfoString(section, fname, "Description");
 }
 
@@ -3094,77 +3135,268 @@ ConfigInfo::getStatus(const Properties *
  * Printers
  ****************************************************************************/
 
-void ConfigInfo::print() const {
-  Properties::Iterator it(&m_info);
-  for (const char* n = it.first(); n != NULL; n = it.next()) {
-    print(n);
+class ConfigPrinter {
+protected:
+  FILE* m_out;
+public:
+  ConfigPrinter(FILE* out = stdout) :
+    m_out(out)
+    {}
+  virtual ~ConfigPrinter() {};
+
+  virtual void start() {}
+  virtual void end() {}
+
+  virtual void section_start(const char* name, const char* alias) {}
+  virtual void section_end(const char* name) {}
+
+  virtual void parameter(const char* section_name,
+                         const Properties* section,
+                         const char* param_name,
+                         const ConfigInfo& info){}
+};
+
+
+class PrettyPrinter : public ConfigPrinter {
+public:
+  PrettyPrinter(FILE* out = stdout) : ConfigPrinter(out) {}
+  virtual ~PrettyPrinter() {}
+
+  virtual void section_start(const char* name, const char* alias) {
+    fprintf(m_out, "****** %s ******\n\n", name);
+  }
+
+  virtual void parameter(const char* section_name,
+                         const Properties* section,
+                         const char* param_name,
+                         const ConfigInfo& info){
+    switch (info.getType(section, param_name)) {
+    case ConfigInfo::CI_BOOL:
+      fprintf(m_out, "%s (Boolean value)\n", param_name);
+      fprintf(m_out, "%s\n", info.getDescription(section, param_name));
+
+      if (info.getMandatory(section, param_name))
+        fprintf(m_out, "MANDATORY (Legal values: Y, N)\n");
+      else if (info.hasDefault(section, param_name))
+      {
+        if (info.getDefault(section, param_name) == false)
+          fprintf(m_out, "Default: N (Legal values: Y, N)\n");
+        else if (info.getDefault(section, param_name) == true)
+          fprintf(m_out, "Default: Y (Legal values: Y, N)\n");
+        else
+          fprintf(m_out, "UNKNOWN\n");
+      }
+      fprintf(m_out, "\n");
+      break;
+
+    case ConfigInfo::CI_INT:
+    case ConfigInfo::CI_INT64:
+      fprintf(m_out, "%s (Non-negative Integer)\n", param_name);
+      fprintf(m_out, "%s\n", info.getDescription(section, param_name));
+      if (info.getMandatory(section, param_name))
+        fprintf(m_out, "MANDATORY (");
+      else if (info.hasDefault(section, param_name))
+        fprintf(m_out, "Default: %llu (",
+                info.getDefault(section, param_name));
+      else
+        fprintf(m_out, "(");
+      fprintf(m_out, "Min: %llu, ", info.getMin(section, param_name));
+      fprintf(m_out, "Max: %llu)\n", info.getMax(section, param_name));
+      fprintf(m_out, "\n");
+      break;
+
+    case ConfigInfo::CI_STRING:
+      fprintf(m_out, "%s (String)\n", param_name);
+      fprintf(m_out, "%s\n", info.getDescription(section, param_name));
+      if (info.getMandatory(section, param_name))
+        fprintf(m_out, "MANDATORY\n");
+      else if (info.hasDefault(section, param_name))
+        fprintf(m_out, "Default: %s\n",
+              info.getDefaultString(section, param_name));
+      fprintf(m_out, "\n");
+      break;
+    case ConfigInfo::CI_SECTION:
+      break;
+    }
   }
-}
+};
+
+
+class XMLPrinter : public ConfigPrinter {
+  int m_indent;
+
+  void print_xml(const char* name, const Properties& pairs,
+                 bool close = true) {
+    const char* value;
+    Properties::Iterator it(&pairs);
+    for (int i= 0; i < m_indent; i++)
+      fprintf(m_out, "  ");
+    fprintf(m_out, "<%s", name);
+    for (const char* name = it.first(); name != NULL; name = it.next()) {
+      require(pairs.get(name, &value));
+      fprintf(m_out, " %s=\"%s\"", name, value);
+    }
+    if (close)
+      fprintf(m_out, "/");
+    fprintf(m_out, ">\n");
+  }
+
+public:
+  XMLPrinter(FILE* out = stdout) : ConfigPrinter(out), m_indent(0) {}
+  virtual ~XMLPrinter() {
+    assert(m_indent == 0);
+  }
+
+  virtual void start() {
+    BaseString buf;
+    Properties pairs;
+    pairs.put("protocolversion", "1");
+    pairs.put("ndbversionstring", ndbGetOwnVersionString());
+    Uint32 ndbversion = ndbGetOwnVersion();
+    buf.assfmt("%u", ndbversion);
+    pairs.put("ndbversion", buf.c_str());
+    buf.assfmt("%u", ndbGetMajor(ndbversion));
+    pairs.put("ndbversionmajor", buf.c_str());
+    buf.assfmt("%u", ndbGetMinor(ndbversion));
+    pairs.put("ndbversionminor", buf.c_str());
+    buf.assfmt("%u", ndbGetBuild(ndbversion));
+    pairs.put("ndbversionbuild", buf.c_str());
+
+    print_xml("configvariables", pairs, false);
+    m_indent++;
+  }
+  virtual void end() {
+    m_indent--;
+    Properties pairs;
+    print_xml("/configvariables", pairs, false);
+  }
+
+  virtual void section_start(const char* name, const char* alias) {
+    Properties pairs;
+    pairs.put("name", alias ? alias : name);
+    print_xml("section", pairs, false);
+    m_indent++;
+  }
+  virtual void section_end(const char* name) {
+    m_indent--;
+    Properties pairs;
+    print_xml("/section", pairs, false);
+  }
+
+  virtual void parameter(const char* section_name,
+                         const Properties* section,
+                         const char* param_name,
+                         const ConfigInfo& info){
+    BaseString buf;
+    Properties pairs;
+    pairs.put("name", param_name);
+    pairs.put("comment", info.getDescription(section, param_name));
+
+    switch (info.getType(section, param_name)) {
+    case ConfigInfo::CI_BOOL:
+      pairs.put("type", "bool");
+
+      if (info.getMandatory(section, param_name))
+        pairs.put("mandatory", "true");
+      else if (info.hasDefault(section, param_name))
+      {
+        if (info.getDefault(section, param_name) == false)
+          pairs.put("default", "false");
+        else if (info.getDefault(section, param_name) == true)
+          pairs.put("default", "true");
+      }
+      break;
+
+    case ConfigInfo::CI_INT:
+    case ConfigInfo::CI_INT64:
+      pairs.put("type", "unsigned");
+
+      if (info.getMandatory(section, param_name))
+        pairs.put("mandatory", "true");
+      else if (info.hasDefault(section, param_name))
+      {
+        buf.assfmt("%llu", info.getDefault(section, param_name));
+        pairs.put("default", buf.c_str());
+      }
+      buf.assfmt("%llu", info.getMin(section, param_name));
+      pairs.put("min", buf.c_str());
+      buf.assfmt("%llu", info.getMax(section, param_name));
+      pairs.put("max", buf.c_str());
+    break;
+
+    case ConfigInfo::CI_STRING:
+      pairs.put("type", "string");
+
+      if (info.getMandatory(section, param_name))
+        pairs.put("mandatory", "true");
+      else if (info.hasDefault(section, param_name))
+        pairs.put("default", info.getDefaultString(section, param_name));
+      break;
+
+    case ConfigInfo::CI_SECTION:
+      return; // Don't print anything for the section itself
+    }
+    print_xml("param", pairs);
+  }
+};
 
 void ConfigInfo::print(const char* section) const {
-  ndbout << "****** " << section << " ******" << endl << endl;
-  const Properties * sec = getInfo(section);
+  PrettyPrinter pretty_printer;
+  print_impl(section, pretty_printer);
+}
+
+void ConfigInfo::print_xml(const char* section) const {
+  XMLPrinter xml_printer;
+  print_impl(section, xml_printer);
+}
+
+
+bool
+ConfigInfo::is_internal_section(const Properties* sec) const
+{
+  /* Check if the section is marked as internal */
   Properties::Iterator it(sec);
   for (const char* n = it.first(); n != NULL; n = it.next()) {
-    // Skip entries with different F- and P-names
-    if (getStatus(sec, n) == ConfigInfo::CI_INTERNAL) continue;
-    if (getStatus(sec, n) == ConfigInfo::CI_DEPRICATED) continue;
-    if (getStatus(sec, n) == ConfigInfo::CI_NOTIMPLEMENTED) continue;
-    print(sec, n);
+    if (getStatus(sec, n) == ConfigInfo::CI_INTERNAL &&
+        getType(sec, n) == ConfigInfo:: CI_SECTION)
+      return true;
   }
+  return false;
 }
 
-void ConfigInfo::print(const Properties * section, 
-		       const char* parameter) const {
-  ndbout << parameter;
-  //  ndbout << getDescription(section, parameter) << endl;
-  switch (getType(section, parameter)) {
-  case ConfigInfo::CI_BOOL:
-    ndbout << " (Boolean value)" << endl;
-    ndbout << getDescription(section, parameter) << endl;
-    if (getDefault(section, parameter) == false) {
-      ndbout << "Default: N (Legal values: Y, N)" << endl; 
-    } else if (getDefault(section, parameter) == true) {
-      ndbout << "Default: Y (Legal values: Y, N)" << endl;
-    } else if (getDefault(section, parameter) == (UintPtr)MANDATORY) {
-      ndbout << "MANDATORY (Legal values: Y, N)" << endl;
-    } else {
-      ndbout << "UNKNOWN" << endl;
-    }
-    ndbout << endl;
-    break;    
-    
-  case ConfigInfo::CI_INT:
-  case ConfigInfo::CI_INT64:
-    ndbout << " (Non-negative Integer)" << endl;
-    ndbout << getDescription(section, parameter) << endl;
-    if (getDefault(section, parameter) == (UintPtr)MANDATORY) {
-      ndbout << "MANDATORY (";
-    } else if (getDefault(section, parameter) == (UintPtr)UNDEFINED) {
-      ndbout << "UNDEFINED (";
-    } else {
-      ndbout << "Default: " << getDefault(section, parameter) << " (";
-    }
-    ndbout << "Min: " << getMin(section, parameter) << ", ";
-    ndbout << "Max: " << getMax(section, parameter) << ")" << endl;
-    ndbout << endl;
-    break;
-    
-  case ConfigInfo::CI_STRING:
-    ndbout << " (String)" << endl;
-    ndbout << getDescription(section, parameter) << endl;
-    if (getDefault(section, parameter) == (UintPtr)MANDATORY) {
-      ndbout << "MANDATORY" << endl;
-    } else {
-      ndbout << "No default value" << endl;
+
+void ConfigInfo::print_impl(const char* section_filter,
+                            ConfigPrinter& printer) const {
+  printer.start();
+  /* Iterate through all sections */
+  Properties::Iterator it(&m_info);
+  for (const char* s = it.first(); s != NULL; s = it.next()) {
+    if (section_filter && strcmp(section_filter, s))
+      continue; // Skip this section
+
+    const Properties * sec = getInfo(s);
+
+    if (is_internal_section(sec))
+      continue; // Skip whole section
+
+    printer.section_start(s, nameToAlias(s));
+
+    /* Iterate through all parameters in section */
+    Properties::Iterator it(sec);
+    for (const char* n = it.first(); n != NULL; n = it.next()) {
+      // Skip entries with different F- and P-names
+      if (getStatus(sec, n) == ConfigInfo::CI_INTERNAL) continue;
+      if (getStatus(sec, n) == ConfigInfo::CI_DEPRICATED) continue;
+      if (getStatus(sec, n) == ConfigInfo::CI_NOTIMPLEMENTED) continue;
+      printer.parameter(s, sec, n, *this);
     }
-    ndbout << endl;
-    break;
-  case ConfigInfo::CI_SECTION:
-    break;
+    printer.section_end(s);
   }
+  printer.end();
 }
 
+
+
 /****************************************************************************
  * Section Rules
  ****************************************************************************/

=== modified file 'storage/ndb/src/mgmsrv/ConfigInfo.hpp'
--- a/storage/ndb/src/mgmsrv/ConfigInfo.hpp	2008-11-10 14:43:52 +0000
+++ b/storage/ndb/src/mgmsrv/ConfigInfo.hpp	2009-03-20 09:57:27 +0000
@@ -156,17 +156,23 @@ public:
   Status       getStatus(const Properties* section, const char* fname) const;
   Uint64       getMin(const Properties * section, const char* fname) const;
   Uint64       getMax(const Properties * section, const char* fname) const;
-  Uint64       getDefault(const Properties * section, const char* fname) const;
-  
+  Uint64 getDefault(const Properties * section, const char* fname) const;
+  const char* getDefaultString(const Properties * section,
+                               const char* fname) const;
+  bool getMandatory(const Properties * section, const char* fname) const;
+  bool hasDefault(const Properties * section, const char* fname) const;
+
   const Properties * getInfo(const char * section) const;
   const Properties * getDefaults(const char * section) const;
-  
-  void print() const;
-  void print(const char* section) const;
-  void print(const Properties * section, const char* parameter) const;
 
-  const char* sectionName(Uint32 section, Uint32 type) const;
+  const char* sectionName(Uint32 section_type, Uint32 type) const;
 
+  void print(const char* section= NULL) const;
+  void print_xml(const char* section= NULL) const;
+private:
+  bool is_internal_section(const Properties* sec) const;
+  void print_impl(const char* section,
+                  class ConfigPrinter& printer) const;
 private:
   Properties               m_info;
   Properties               m_systemDefaults;

=== modified file 'storage/ndb/src/mgmsrv/ConfigManager.cpp'
--- a/storage/ndb/src/mgmsrv/ConfigManager.cpp	2009-02-23 09:59:06 +0000
+++ b/storage/ndb/src/mgmsrv/ConfigManager.cpp	2009-03-26 09:15:15 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008 Sun Microsystems, Inc.
+/* Copyright (C) 2008-2009 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
@@ -19,7 +19,7 @@
 #include "DirIterator.hpp"
 
 #include <NdbConfig.h>
-
+#include <NdbSleep.h>
 #include <SignalSender.hpp>
 #include <NdbApiSignal.hpp>
 #include <signaldata/NFCompleteRep.hpp>
@@ -41,6 +41,27 @@ _require(bool v, const char* expr, const
 }
 #define require(v)  _require((v), #v, __FILE__, __LINE__)
 
+
+static void
+nodes2str(const NodeBitmask nodes, BaseString& to)
+{
+  unsigned found = 0;
+  const char* delimiter = "";
+  for (int i = 1; i < MAX_NODES; i++)
+  {
+    if (nodes.get(i))
+    {
+      to.appfmt("%s%d", delimiter, i);
+      found++;
+      if (found < nodes.count() - 1)
+        delimiter = ", ";
+      else
+        delimiter = " and ";
+    }
+  }
+}
+
+
 extern "C" const char* opt_connect_str;
 
 ConfigManager::ConfigManager(const MgmtSrvr::MgmtOpts& opts,
@@ -55,7 +76,6 @@ ConfigManager::ConfigManager(const MgmtS
                      NDB_VERSION,
                      NDB_MGM_NODE_TYPE_MGM,
                      opts.bind_address),
-  m_config_change_state(CCS_IDLE),
   m_config_state(CS_UNINITIALIZED),
   m_previous_state(CS_UNINITIALIZED),
   m_config_change_error(ConfigChangeRef::OK),
@@ -315,7 +335,7 @@ ConfigManager::init(void)
 
   if (m_config_retriever.hasError())
   {
-    g_eventLogger->error(m_config_retriever.getErrorString());
+    g_eventLogger->error("%s", m_config_retriever.getErrorString());
     DBUG_RETURN(false);
   }
 
@@ -419,6 +439,9 @@ ConfigManager::init(void)
                           m_opts.mycnf ? "my.cnf" : m_opts.config_filename);
       m_new_config = new Config(conf); // Copy config
       m_config_state = CS_INITIAL;
+
+      if (!init_checkers(m_new_config))
+        DBUG_RETURN(false);
     }
     else
     {
@@ -434,7 +457,6 @@ ConfigManager::init(void)
 
       /* Use the fetched config for now */
       set_config(conf);
-      m_new_config = new Config(conf); // Copy config
 
       if (m_config->getGeneration() == 0)
       {
@@ -443,6 +465,10 @@ ConfigManager::init(void)
                             "Will try to set it when all ndb_mgmd(s) started",
                             m_config->getGeneration(), m_config->getName());
         m_config_state= CS_INITIAL;
+        m_new_config = new Config(conf); // Copy config
+
+        if (!init_checkers(m_new_config))
+          DBUG_RETURN(false);
       }
       else
       {
@@ -615,7 +641,7 @@ ConfigManager::config_ok(const Config* c
   assert(m_node_id);
   if (!m_config_retriever.verifyConfig(conf->m_configValues, m_node_id))
   {
-    g_eventLogger->error(m_config_retriever.getErrorString());
+    g_eventLogger->error("%s", m_config_retriever.getErrorString());
     return false;
   }
 
@@ -869,6 +895,19 @@ ConfigManager::execCONFIG_CHANGE_IMPL_RE
 }
 
 
+void ConfigManager::set_config_change_state(ConfigChangeState::States state)
+{
+  if (state == ConfigChangeState::IDLE)
+  {
+    // Rebuild m_all_mgm so that each node in config is included
+    // new mgm nodes might have been added
+    m_config->get_nodemask(m_all_mgm, NDB_MGM_NODE_TYPE_MGM);
+  }
+
+  m_config_change_state.m_current_state = state;
+}
+
+
 void
 ConfigManager::execCONFIG_CHANGE_IMPL_REF(SignalSender& ss, SimpleSignal* sig)
 {
@@ -886,9 +925,9 @@ ConfigManager::execCONFIG_CHANGE_IMPL_RE
 
   switch(m_config_change_state){
 
-  case CCS_PREPARING:{
+  case ConfigChangeState::PREPARING:{
     /* Got ref while preparing */
-    m_config_change_state = CCS_ABORT;
+    set_config_change_state(ConfigChangeState::ABORT);
     m_waiting_for.clear(nodeId);
     if (!m_waiting_for.isclear())
       return;
@@ -907,18 +946,18 @@ ConfigManager::execCONFIG_CHANGE_IMPL_RE
                                   GSN_CONFIG_CHANGE_IMPL_REQ,
                                   ConfigChangeImplReq::SignalLength);
     if (m_waiting_for.isclear())
-      m_config_change_state = CCS_IDLE;
+      set_config_change_state(ConfigChangeState::IDLE);
     else
-      m_config_change_state = CCS_ABORTING;
+      set_config_change_state(ConfigChangeState::ABORTING);
     break;
   }
 
-  case CCS_COMITTING:
+  case ConfigChangeState::COMITTING:
     /* Got ref while comitting, impossible */
     abort();
     break;
 
-  case CCS_ABORT:{
+  case ConfigChangeState::ABORT:{
     /* Got ref(another) while already decided to abort */
     m_waiting_for.clear(nodeId);
     if (!m_waiting_for.isclear())
@@ -938,13 +977,13 @@ ConfigManager::execCONFIG_CHANGE_IMPL_RE
                                   GSN_CONFIG_CHANGE_IMPL_REQ,
                                   ConfigChangeImplReq::SignalLength);
     if (m_waiting_for.isclear())
-      m_config_change_state = CCS_IDLE;
+      set_config_change_state(ConfigChangeState::IDLE);
     else
-      m_config_change_state = CCS_ABORTING;
+      set_config_change_state(ConfigChangeState::ABORTING);
     break;
   }
 
-  case CCS_ABORTING:
+  case ConfigChangeState::ABORTING:
     /* Got ref while aborting, impossible */
     abort();
     break;
@@ -966,7 +1005,7 @@ ConfigManager::execCONFIG_CHANGE_IMPL_CO
   g_eventLogger->debug("Got CONFIG_CHANGE_IMPL_CONF from node %d", nodeId);
 
   switch(m_config_change_state){
-  case CCS_PREPARING:{
+  case ConfigChangeState::PREPARING:{
     require(conf->requestType == ConfigChangeImplReq::Prepare);
     m_waiting_for.clear(nodeId);
     if (!m_waiting_for.isclear())
@@ -986,13 +1025,13 @@ ConfigManager::execCONFIG_CHANGE_IMPL_CO
                                   GSN_CONFIG_CHANGE_IMPL_REQ,
                                   ConfigChangeImplReq::SignalLength);
     if (m_waiting_for.isclear())
-      m_config_change_state = CCS_IDLE;
+      set_config_change_state(ConfigChangeState::IDLE);
     else
-      m_config_change_state = CCS_COMITTING;
+      set_config_change_state(ConfigChangeState::COMITTING);
     break;
   }
 
-  case CCS_COMITTING:{
+  case ConfigChangeState::COMITTING:{
     require(conf->requestType == ConfigChangeImplReq::Commit);
 
     m_waiting_for.clear(nodeId);
@@ -1012,11 +1051,11 @@ ConfigManager::execCONFIG_CHANGE_IMPL_CO
       sendConfigChangeConf(ss, m_client_ref);
     }
     m_client_ref = RNIL;
-    m_config_change_state = CCS_IDLE;
+    set_config_change_state(ConfigChangeState::IDLE);
     break;
   }
 
-  case CCS_ABORT:{
+  case ConfigChangeState::ABORT:{
     m_waiting_for.clear(nodeId);
     if (!m_waiting_for.isclear())
       return;
@@ -1034,13 +1073,13 @@ ConfigManager::execCONFIG_CHANGE_IMPL_CO
                                   GSN_CONFIG_CHANGE_IMPL_REQ,
                                   ConfigChangeImplReq::SignalLength);
     if (m_waiting_for.isclear())
-        m_config_change_state = CCS_IDLE;
+      set_config_change_state(ConfigChangeState::IDLE);
     else
-      m_config_change_state = CCS_ABORTING;
+      set_config_change_state(ConfigChangeState::ABORTING);
     break;
   }
 
-  case CCS_ABORTING:{
+  case ConfigChangeState::ABORTING:{
     m_waiting_for.clear(nodeId);
     if (!m_waiting_for.isclear())
       return;
@@ -1063,7 +1102,7 @@ ConfigManager::execCONFIG_CHANGE_IMPL_CO
     }
     m_config_change_error= ConfigChangeRef::OK;
     m_client_ref = RNIL;
-    m_config_change_state = CCS_IDLE;
+    set_config_change_state(ConfigChangeState::IDLE);
     break;
   }
 
@@ -1160,7 +1199,7 @@ ConfigManager::sendConfigChangeImplReq(S
   req->length = buf.length();
 
   require(m_waiting_for.isclear());
-  require(m_config_change_state == CCS_IDLE);
+  require(m_config_change_state == ConfigChangeState::IDLE);
 
   g_eventLogger->debug("Sending CONFIG_CHANGE_IMPL_REQ(prepare)");
   unsigned i = 0;
@@ -1192,7 +1231,7 @@ ConfigManager::sendConfigChangeImplReq(S
       // Some nodes got prepare, set state to
       // abort and continue abort when result
       // of prepare arrives
-      m_config_change_state = CCS_ABORT;
+      set_config_change_state(ConfigChangeState::ABORT);
       return false;
     }
 
@@ -1202,7 +1241,7 @@ ConfigManager::sendConfigChangeImplReq(S
 
   // Prepare has been sent to all mgm nodes
   // continue and wait for prepare conf(s)
-  m_config_change_state = CCS_PREPARING;
+  set_config_change_state(ConfigChangeState::PREPARING);
   return true;
 
 }
@@ -1230,7 +1269,7 @@ ConfigManager::execCONFIG_CHANGE_REQ(Sig
     return;
   }
 
-  if (m_config_change_state != CCS_IDLE)
+  if (m_config_change_state != ConfigChangeState::IDLE)
   {
     sendConfigChangeRef(ss, from, ConfigChangeRef::ConfigChangeOnGoing);
     return;
@@ -1470,14 +1509,17 @@ ConfigManager::run()
   SignalSender ss(m_facade, MGM_CONFIG_MAN);
   ss.lock();
 
-  ss.getNodes(m_all_mgm, NodeInfo::MGM);
+  // Build bitmaks of all mgm nodes in config
+  m_config->get_nodemask(m_all_mgm, NDB_MGM_NODE_TYPE_MGM);
 
   m_started.set(m_facade->ownId());
 
+  start_checkers();
+
   while (!is_stopped())
   {
 
-    if (m_config_change_state == CCS_IDLE)
+    if (m_config_change_state == ConfigChangeState::IDLE)
     {
       bool print_state = false;
       if (m_previous_state != m_config_state)
@@ -1543,8 +1585,9 @@ ConfigManager::run()
         not_checked.bitANDC(m_checked);
         sendConfigCheckReq(ss, not_checked);
       }
-    }
 
+      handle_exclude_nodes();
+    }
 
     SimpleSignal *sig = ss.waitFor((Uint32)1000);
     if (!sig)
@@ -1581,7 +1624,7 @@ ConfigManager::run()
       m_checked.clear(nodeId);
       m_defragger.node_failed(nodeId);
 
-      if (m_config_change_state != CCS_IDLE)
+      if (m_config_change_state != ConfigChangeState::IDLE)
       {
         g_eventLogger->info("Node %d failed during config change!!",
                             nodeId);
@@ -1636,6 +1679,7 @@ ConfigManager::run()
       break;
     }
   }
+  stop_checkers();
 }
 
 
@@ -1719,15 +1763,21 @@ ConfigManager::fetch_config(void)
                            "returned!");
       abort();
     }
-    g_eventLogger->info("Connected...");
+    g_eventLogger->info("Connected to '%s:%d'...",
+                        m_config_retriever.get_mgmd_host(),
+                        m_config_retriever.get_mgmd_port());
 
   }
 
   // read config from other management server
   ndb_mgm_configuration * tmp =
     m_config_retriever.getConfig(m_config_retriever.get_mgmHandle());
+
+  // Disconnect from other mgmd
+  m_config_retriever.disconnect();
+
   if (tmp == NULL) {
-    g_eventLogger->error(m_config_retriever.getErrorString());
+    g_eventLogger->error("%s", m_config_retriever.getErrorString());
     DBUG_RETURN(false);
   }
 
@@ -1898,18 +1948,229 @@ ConfigManager::load_saved_config(const B
 
 
 bool
-ConfigManager::get_packed_config(UtilBuffer& pack_buf)
+ConfigManager::get_packed_config(ndb_mgm_node_type nodetype,
+                                 BaseString& buf64, BaseString& error)
 {
   Guard g(m_config_mutex);
 
-  /* Only allow the config to be exported if it's been confirmed */
-  if (m_config_state != CS_CONFIRMED)
-    return false;
+  /*
+    Only allow the config to be exported if it's been confirmed
+    or if another mgmd is asking for it
+  */
+  switch(m_config_state)
+  {
+  case CS_INITIAL:
+    if (nodetype == NDB_MGM_NODE_TYPE_MGM)
+      ; // allow other mgmd to fetch initial configuration
+    else
+    {
+      NodeBitmask not_started(m_all_mgm);
+      not_started.bitANDC(m_started);
+
+      error.assign("The cluster configuration is not yet confirmed "
+                   "by all defined management servers. "
+                   "This management server is still waiting for node ");
+      nodes2str(not_started, error);
+      error.append(" to connect.");
+      return false;
+    }
+    break;
+
+  case CS_CONFIRMED:
+    // OK
+    break;
+
+  default:
+    error.assign("get_packed_config, unknown config state: %d",
+                 m_config_state);
+     return false;
+    break;
+
+  }
 
   require(m_config);
-  return m_config->pack(pack_buf);
+  return m_config->pack64(buf64);
+}
+
+
+bool
+ConfigManager::init_checkers(const Config* config)
+{
+
+  // Init one thread for each other mgmd
+  // in the config and check which version it has. If version
+  // does not have config manager, set this node to ignore
+  // that node in the config change protocol
+
+  BaseString connect_string;
+  ConfigIter iter(config, CFG_SECTION_NODE);
+  for (iter.first(); iter.valid(); iter.next())
+  {
+
+    // Only MGM nodes
+    Uint32 type;
+    if (iter.get(CFG_TYPE_OF_SECTION, &type) ||
+        type != NODE_TYPE_MGM)
+      continue;
+
+    // Not this node
+    Uint32 nodeid;
+    if(iter.get(CFG_NODE_ID, &nodeid) ||
+       nodeid == m_node_id)
+      continue;
+
+    const char* hostname;
+    Uint32 port;
+    require(!iter.get(CFG_NODE_HOST, &hostname));
+    require(!iter.get(CFG_MGM_PORT, &port));
+    connect_string.assfmt("%s:%u",hostname,port);
+
+    ConfigChecker* checker =
+      new ConfigChecker(*this, connect_string.c_str(),
+                        m_opts.bind_address, nodeid);
+    if (!checker)
+    {
+      g_eventLogger->error("Failed to create ConfigChecker");
+      return false;
+    }
+
+    if (!checker->init())
+      return false;
+
+    m_checkers.push_back(checker);
+  }
+  return true;
+}
+
+
+void
+ConfigManager::start_checkers(void)
+{
+  for (unsigned i = 0; i < m_checkers.size(); i++)
+    m_checkers[i]->start();
+}
+
+
+void
+ConfigManager::stop_checkers(void)
+{
+  for (unsigned i = 0; i < m_checkers.size(); i++)
+  {
+    ConfigChecker* checker = m_checkers[i];
+    ndbout << "stop checker " << i << endl;
+    checker->stop();
+    delete checker;
+  }
+}
+
+
+ConfigManager::ConfigChecker::ConfigChecker(ConfigManager& manager,
+                                            const char* connect_string,
+                                            const char * bindaddress,
+                                            NodeId nodeid) :
+  MgmtThread("ConfigChecker"),
+  m_manager(manager),
+  m_config_retriever(connect_string, NDB_VERSION,
+                     NDB_MGM_NODE_TYPE_MGM, bindaddress),
+  m_connect_string(connect_string),
+  m_nodeid(nodeid)
+{
+}
+
+
+bool
+ConfigManager::ConfigChecker::init()
+{
+  if (m_config_retriever.hasError())
+  {
+    g_eventLogger->error("%s", m_config_retriever.getErrorString());
+    return false;
+  }
+
+  return true;
+}
+
+
+void
+ConfigManager::ConfigChecker::run()
+{
+  // Connect to other mgmd inifintely until thread is stopped
+  // or connect suceeds
+  g_eventLogger->debug("ConfigChecker, connecting to '%s'",
+                       m_connect_string.c_str());
+  while(m_config_retriever.do_connect(0 /* retry */,
+                                      1 /* delay */,
+                                      0 /* verbose */) != 0)
+  {
+    if (is_stopped())
+    {
+      g_eventLogger->debug("ConfigChecker, thread is stopped");
+      return; // Thread is stopped
+    }
+
+    NdbSleep_SecSleep(1);
+  }
+
+  // Connected
+  g_eventLogger->debug("ConfigChecker, connected to '%s'",
+                       m_connect_string.c_str());
+
+  // Check version
+  int major, minor, build;
+  char ver_str[50];
+  if (!ndb_mgm_get_version(m_config_retriever.get_mgmHandle(),
+                           &major, &minor, &build,
+                           sizeof(ver_str), ver_str))
+  {
+    g_eventLogger->error("Could not get version from mgmd on '%s'",
+                         m_connect_string.c_str());
+    return;
+  }
+  g_eventLogger->debug("mgmd on '%s' has version %d.%d.%d",
+                       m_connect_string.c_str(), major, minor, build);
+
+  // Versions prior to 7 don't have ConfigManager
+  // exclude it from config change protocol
+  if (major < 7)
+  {
+    g_eventLogger->info("Excluding node %d with version %d.%d.%d from "
+                        "config change protocol",
+                        m_nodeid, major, minor, build);
+    m_manager.m_exclude_nodes.push_back(m_nodeid);
+  }
+
+  return;
+}
+
+
+void
+ConfigManager::handle_exclude_nodes(void)
+{
+
+  if (!m_waiting_for.isclear())
+    return; // Other things going on
+
+  switch (m_config_state)
+  {
+  case CS_INITIAL:
+    m_exclude_nodes.lock();
+    for (unsigned i = 0; i < m_exclude_nodes.size(); i++)
+    {
+      NodeId nodeid = m_exclude_nodes[i];
+      g_eventLogger->debug("Handle exclusion of node %d", nodeid);
+      m_all_mgm.clear(nodeid);
+    }
+    m_exclude_nodes.unlock();
+    break;
+
+  default:
+    break;
+  }
+  m_exclude_nodes.clear();
+
 }
 
 
 template class Vector<ConfigSubscriber*>;
+template class Vector<ConfigManager::ConfigChecker*>;
 

=== modified file 'storage/ndb/src/mgmsrv/ConfigManager.hpp'
--- a/storage/ndb/src/mgmsrv/ConfigManager.hpp	2009-02-23 09:59:06 +0000
+++ b/storage/ndb/src/mgmsrv/ConfigManager.hpp	2009-03-26 09:11:40 +0000
@@ -39,14 +39,23 @@ class ConfigManager : public MgmtThread 
 
   ConfigRetriever m_config_retriever;
 
-  enum ConfigChangeState {
-    CCS_IDLE,
-    CCS_PREPARING,
-    CCS_COMITTING,
-    CCS_ABORT,
-    CCS_ABORTING
+  struct ConfigChangeState {
+    enum States {
+      IDLE,
+      PREPARING,
+      COMITTING,
+      ABORT,
+      ABORTING
+    } m_current_state;
+
+    ConfigChangeState() :
+      m_current_state(IDLE) {}
+
+    operator int() const { return m_current_state; }
   } m_config_change_state;
 
+  void set_config_change_state(ConfigChangeState::States state);
+
   enum ConfigState {
     CS_UNINITIALIZED,
 
@@ -139,6 +148,32 @@ class ConfigManager : public MgmtThread 
                           Uint32, Uint32, ConfigState, ConfigState) const;
   void sendConfigCheckConf(SignalSender& ss, BlockReference to) const;
 
+  /*
+    ConfigChecker - for connecting to other mgm nodes without
+    transporter
+  */
+  class ConfigChecker : public MgmtThread {
+    ConfigManager& m_manager;
+    ConfigRetriever m_config_retriever;
+    BaseString m_connect_string;
+    NodeId m_nodeid;
+  public:
+    ConfigChecker(); // Not implemented
+    ConfigChecker(const ConfigChecker&); // Not implemented
+    ConfigChecker(ConfigManager& manager,
+                  const char* connect_string,
+                  const char* bind_address,
+                  NodeId nodeid);
+    bool init();
+    virtual void run();
+  };
+  bool init_checkers(const Config* config);
+  void start_checkers();
+  void stop_checkers();
+  Vector<ConfigChecker*> m_checkers;
+  MutexVector<NodeId> m_exclude_nodes;
+  void handle_exclude_nodes(void);
+
 public:
   ConfigManager(const MgmtSrvr::MgmtOpts&,
                 const char* configdir);
@@ -155,9 +190,10 @@ public:
   int add_config_change_subscriber(ConfigSubscriber*);
 
   /*
-    Retrieve the current configuration in packed format
+    Retrieve the current configuration in base64 packed format
    */
-  bool get_packed_config(UtilBuffer& pack_buf);
+  bool get_packed_config(ndb_mgm_node_type nodetype,
+                         BaseString& buf64, BaseString& error);
 
   static Config* load_config(const char* config_filename, bool mycnf,
                              BaseString& msg);

=== modified file 'storage/ndb/src/mgmsrv/MgmtSrvr.cpp'
--- a/storage/ndb/src/mgmsrv/MgmtSrvr.cpp	2009-03-13 14:24:21 +0000
+++ b/storage/ndb/src/mgmsrv/MgmtSrvr.cpp	2009-04-06 14:17:01 +0000
@@ -214,29 +214,8 @@ MgmtSrvr::logLevelThreadRun() 
 }
 
 
-bool
-MgmtSrvr::setEventLogFilter(int severity, int enable)
-{
-  Logger::LoggerLevel level = (Logger::LoggerLevel)severity;
-  if (enable > 0) {
-    g_eventLogger->enable(level);
-  } else if (enable == 0) {
-    g_eventLogger->disable(level);
-  } else if (g_eventLogger->isEnable(level)) {
-    g_eventLogger->disable(level);
-  } else {
-    g_eventLogger->enable(level);
-  }
-  return g_eventLogger->isEnable(level);
-}
-
-bool 
-MgmtSrvr::isEventLogFilterEnabled(int severity) 
-{
-  return g_eventLogger->isEnable((Logger::LoggerLevel)severity);
-}
-
-int MgmtSrvr::translateStopRef(Uint32 errCode)
+static int
+translateStopRef(Uint32 errCode)
 {
   switch(errCode){
   case StopRef::NodeShutdownInProgress:
@@ -816,9 +795,10 @@ MgmtSrvr::config_changed(NodeId node_id,
 
 
 bool
-MgmtSrvr::getPackedConfig(UtilBuffer& pack_buf)
+MgmtSrvr::get_packed_config(ndb_mgm_node_type node_type,
+                            BaseString& buf64, BaseString& error)
 {
-  return m_config_manager->get_packed_config(pack_buf);
+  return m_config_manager->get_packed_config(node_type, buf64, error);
 }
 
 
@@ -2006,7 +1986,18 @@ MgmtSrvr::insertError(int nodeId, int er
   TamperOrd* const tamperOrd = CAST_PTR(TamperOrd, ssig.getDataPtrSend());
   tamperOrd->errorNo = errorNo;
 
-  return ss.sendSignal(nodeId, &ssig) == SEND_OK ? 0 : SEND_OR_RECEIVE_FAILED;
+  int res = ss.sendSignal(nodeId, &ssig) == SEND_OK ? 0 :SEND_OR_RECEIVE_FAILED;
+
+  if (res == 0)
+  {
+    /**
+     * In order to make NDB_TAMPER (almost) syncronous,
+     *   make a syncronous request *after* the NDB_TAMPER
+     */
+    make_sync_req(ss, Uint32(nodeId));
+  }
+
+  return res;
 }
 
 
@@ -2500,7 +2491,19 @@ MgmtSrvr::dumpState(int nodeId, const Ui
       dumpOrd->args[i] = 0;
   }
   
-  return ss.sendSignal(nodeId, &ssig) == SEND_OK ? 0 : SEND_OR_RECEIVE_FAILED;
+  int res = ss.sendSignal(nodeId, &ssig) == SEND_OK ? 0 :SEND_OR_RECEIVE_FAILED;
+
+  if (res == 0)
+  {
+    /**
+     * In order to make DUMP (almost) syncronous,
+     *   make a syncronous request *after* the NDB_TAMPER
+     */
+    make_sync_req(ss, Uint32(nodeId));
+  }
+
+  return res;
+
 }
 
 
@@ -3990,7 +3993,7 @@ MgmtSrvr::change_config(Config& new_conf
   req->length = buf.length();
 
   NodeBitmask mgm_nodes;
-  ss.getNodes(mgm_nodes, NodeInfo::MGM);
+  m_local_config->get_nodemask(mgm_nodes, NDB_MGM_NODE_TYPE_MGM);
 
   NodeId nodeId= ss.find_confirmed_node(mgm_nodes);
   if (nodeId == 0)
@@ -4196,6 +4199,106 @@ MgmtSrvr::show_variables(NdbOut& out)
   out << "master_node: " << m_master_node << endl;
 }
 
+void
+MgmtSrvr::make_sync_req(SignalSender& ss, Uint32 nodeId)
+{
+  /**
+   * This subroutine is used to make a async request(error insert/dump)
+   *   "more" syncronous, i.e increasing the likelyhood that
+   *   the async request has really reached the destination
+   *   before returning to the api
+   *
+   * I.e it's a work-around...
+   *
+   */
+  SimpleSignal ssig;
+  EventSubscribeReq* req = CAST_PTR(EventSubscribeReq, ssig.getDataPtrSend());
+
+  req->blockRef = ss.getOwnRef();
+  req->noOfEntries = 1;
+  req->theData[0] = 0;
+  ssig.set(ss,TestOrd::TraceAPI, CMVMI, GSN_EVENT_SUBSCRIBE_REQ, 
+           EventSubscribeReq::SignalLength);
+  
+  if (ss.sendSignal(nodeId, &ssig) != SEND_OK)
+  {
+    return;
+  }
+
+  while (true)
+  {
+    SimpleSignal *signal = ss.waitFor();
+    
+    int gsn = signal->readSignalNumber();
+    switch (gsn) {
+    case GSN_EVENT_SUBSCRIBE_CONF:
+      goto release;
+      
+    case GSN_NF_COMPLETEREP:{
+      const NFCompleteRep * const rep =
+        CAST_CONSTPTR(NFCompleteRep, signal->getDataPtr());
+      if (rep->failedNodeId == nodeId)
+        return;
+      break;
+    }
+      
+    case GSN_NODE_FAILREP:{
+      const NodeFailRep * const rep =
+	CAST_CONSTPTR(NodeFailRep, signal->getDataPtr());
+      if (NdbNodeBitmask::get(rep->theNodes,nodeId))
+	return;
+      break;
+    }
+      
+    case GSN_API_REGCONF:
+    case GSN_TAKE_OVERTCCONF:
+      break;
+    default:
+      return;
+    }
+  }
+
+release:
+  req->noOfEntries = 0;
+
+  if (ss.sendSignal(nodeId, &ssig) != SEND_OK)
+  {
+    return;
+  }
+
+  while (true)
+  {
+    SimpleSignal *signal = ss.waitFor();
+    
+    int gsn = signal->readSignalNumber();
+    switch (gsn) {
+    case GSN_EVENT_SUBSCRIBE_CONF:
+      return;
+      
+    case GSN_NF_COMPLETEREP:{
+      const NFCompleteRep * const rep =
+        CAST_CONSTPTR(NFCompleteRep, signal->getDataPtr());
+      if (rep->failedNodeId == nodeId)
+        return;
+      break;
+    }
+      
+    case GSN_NODE_FAILREP:{
+      const NodeFailRep * const rep =
+	CAST_CONSTPTR(NodeFailRep, signal->getDataPtr());
+      if (NdbNodeBitmask::get(rep->theNodes,nodeId))
+	return;
+      break;
+    }
+    case GSN_API_REGCONF:
+    case GSN_TAKE_OVERTCCONF:
+      break;
+    default:
+      return;
+    }
+  }
+}
+
 template class MutexVector<NodeId>;
 template class MutexVector<Ndb_mgmd_event_service::Event_listener>;
 template class Vector<EventSubscribeReq>;

=== modified file 'storage/ndb/src/mgmsrv/MgmtSrvr.hpp'
--- a/storage/ndb/src/mgmsrv/MgmtSrvr.hpp	2009-03-13 09:48:24 +0000
+++ b/storage/ndb/src/mgmsrv/MgmtSrvr.hpp	2009-04-06 14:17:01 +0000
@@ -96,21 +96,6 @@ public:
   };
 
   /**
-   * Enable/disable eventlog log levels/severities.
-   *
-   * @param serverity the log level/serverity.
-   * @return true if the severity was enabled.
-   */
-  bool setEventLogFilter(int severity, int enable);
-
-  /**
-   * Returns true if the log level/severity is enabled.
-   *
-   * @param severity the severity level.
-   */
-  bool isEventLogFilterEnabled(int severity);
-
-  /**
    *   This enum specifies the different signal loggig modes possible to set 
    *   with the setSignalLoggingMode method.
    */
@@ -369,11 +354,6 @@ public:
   bool change_config(Config& new_config, BaseString& msg);
 
   /**
-   *
-   */
-  enum ndb_mgm_node_type getNodeType(NodeId) const;
-
-  /**
    *   Get error text
    * 
    *   @param   errorCode: Error code to get a match error text for.
@@ -531,8 +511,6 @@ private:
  
   class TransporterFacade * theFacade;
 
-  int translateStopRef(Uint32 errCode);
-  
   bool _isStopThread;
   int _logLevelThreadSleep;
   MutexVector<NodeId> m_started_nodes;
@@ -545,6 +523,8 @@ private:
   
   NodeId m_master_node;
 
+  ndb_mgm_node_type getNodeType(NodeId) const;
+
   /**
    * Handles the thread wich upon a 'Node is started' event will
    * set the node's previous loglevel settings.
@@ -554,12 +534,11 @@ private:
   void logLevelThreadRun();
   void report_unknown_signal(SimpleSignal *signal);
 
-
+  void make_sync_req(SignalSender& ss, Uint32 nodeId);
 public:
-  /*
-    Get packed copy of configuration in the supplied buffer
-  */
-  bool getPackedConfig(UtilBuffer& pack_buf);
+  /* Get copy of configuration packed with base64 */
+  bool get_packed_config(ndb_mgm_node_type nodetype,
+                         BaseString& buf64, BaseString& error);
 
   void print_config(const char* section_filter = NULL,
                     NodeId nodeid_filter = 0,

=== modified file 'storage/ndb/src/mgmsrv/Services.cpp'
--- a/storage/ndb/src/mgmsrv/Services.cpp	2009-02-18 15:01:04 +0000
+++ b/storage/ndb/src/mgmsrv/Services.cpp	2009-04-02 20:42:30 +0000
@@ -123,6 +123,7 @@ ParserRow<MgmApiSession> commands[] = {
   MGM_CMD("get config", &MgmApiSession::getConfig, ""),
     MGM_ARG("version", Int, Mandatory, "Configuration version number"),
     MGM_ARG("node", Int, Optional, "Node ID"),
+    MGM_ARG("nodetype", Int, Optional, "Type of requesting node"),
 
   MGM_CMD("get nodeid", &MgmApiSession::get_nodeid, ""),
     MGM_ARG("version", Int, Mandatory, "Configuration version number"),
@@ -586,69 +587,42 @@ void
 MgmApiSession::getConfig(Parser_t::Context &,
                          const class Properties &args)
 {
-  Uint32 version, node = 0;
+  Uint32 nodetype = NDB_MGM_NODE_TYPE_UNKNOWN;
 
-  args.get("version", &version);
-  args.get("node", &node);
+  // Ignoring mandatory parameter "version"
+  // Ignoring optional parameter "node"
+  args.get("nodetype", &nodetype);
 
-  if(node != 0){
-    bool compatible;
-    switch (m_mgmsrv.getNodeType(node)) {
-    case NDB_MGM_NODE_TYPE_NDB:
-      compatible = ndbCompatible_mgmt_ndb(NDB_VERSION, version);
-      break;
-    case NDB_MGM_NODE_TYPE_API:
-    case NDB_MGM_NODE_TYPE_MGM:
-      compatible = ndbCompatible_mgmt_api(NDB_VERSION, version);
-      break;
-    default:
-      m_output->println("get config");
-      m_output->println("result: unrecognignized node type");
-      m_output->println("");
-      return;
-    }
-    
-    if (!compatible){
-      m_output->println("get config");
-      m_output->println("result: incompatible version mgmt 0x%x and node 0x%x",
-			NDB_VERSION, version);
-      m_output->println("");
-      return;
-    }
-  }  
+  SLEEP_ERROR_INSERTED(1);
+  m_output->println("get config reply");
+
+  BaseString pack64, error;
 
   UtilBuffer packed;
-  if (!m_mgmsrv.getPackedConfig(packed))
+  if (!m_mgmsrv.get_packed_config((ndb_mgm_node_type)nodetype,
+                                  pack64, error))
   {
-    m_output->println("get config reply");
-    m_output->println("result: Could not fetch configuration");
+    m_output->println("result: %s", error.c_str());
     m_output->println("");
     return;
   }
 
-  char *tmp_str =
-    (char *) malloc(base64_needed_encoded_length(packed.length()));
-  (void) base64_encode(packed.get_data(), packed.length(), tmp_str);
-
-  SLEEP_ERROR_INSERTED(1);
-
-  m_output->println("get config reply");
   m_output->println("result: Ok");
-  m_output->println("Content-Length: %ld", strlen(tmp_str));
+  m_output->println("Content-Length: %u", pack64.length());
   m_output->println("Content-Type: ndbconfig/octet-stream");
   SLEEP_ERROR_INSERTED(2);
   m_output->println("Content-Transfer-Encoding: base64");
-  m_output->println("");
+  m_output->print("\n");
+
   if(ERROR_INSERTED(3))
   {
-    int l= strlen(tmp_str);
-    tmp_str[l/2]='\0';
-    m_output->println(tmp_str);
-    NdbSleep_SecSleep(10);
+    // Return only half the packed config
+    BaseString half64 = pack64.substr(0, pack64.length());
+    m_output->println(half64.c_str());
+    return;
   }
-  m_output->println(tmp_str);
-
-  free(tmp_str);
+  m_output->println(pack64.c_str());
+  m_output->print("\n");
   return;
 }
 
@@ -1077,6 +1051,13 @@ MgmApiSession::getStatus(Parser<MgmApiSe
   m_output->println("");
 }
 
+
+static bool
+isEventLogFilterEnabled(int severity)
+{
+  return g_eventLogger->isEnable((Logger::LoggerLevel)severity);
+}
+
 void
 MgmApiSession::getInfoClusterLog(Parser<MgmApiSession>::Context &,
 		    Properties const &) {
@@ -1087,11 +1068,12 @@ MgmApiSession::getInfoClusterLog(Parser<
 			  "error",
 			  "critical",
 			  "alert" };
-  
+
   m_output->println("clusterlog");
   for(int i = 0; i < 7; i++) {
     m_output->println("%s: %d",
-		      names[i], m_mgmsrv.isEventLogFilterEnabled(i));
+                      names[i],
+                      isEventLogFilterEnabled(i));
   }
   m_output->println("");
 }
@@ -1308,6 +1290,28 @@ MgmApiSession::startAll(Parser<MgmApiSes
   m_output->println("");
 }
 
+
+static bool
+setEventLogFilter(int severity, int enable)
+{
+  Logger::LoggerLevel level = (Logger::LoggerLevel)severity;
+  if (enable > 0) {
+    g_eventLogger->enable(level);
+  } else if (enable == 0) {
+    g_eventLogger->disable(level);
+  }
+  else
+  {
+    /* enable is < 0 => toggle the filter value */
+    if (g_eventLogger->isEnable(level))
+      g_eventLogger->disable(level);
+    else
+      g_eventLogger->enable(level);
+  }
+  return g_eventLogger->isEnable(level);
+}
+
+
 void
 MgmApiSession::setLogFilter(Parser_t::Context &ctx,
 			    const class Properties &args) {
@@ -1317,7 +1321,7 @@ MgmApiSession::setLogFilter(Parser_t::Co
   args.get("level", &severity);
   args.get("enable", &enable);
 
-  int result = m_mgmsrv.setEventLogFilter(severity, enable);
+  bool result = setEventLogFilter(severity, enable);
 
   m_output->println("set logfilter reply");
   m_output->println("result: %d", result);

=== modified file 'storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp'
--- a/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp	2009-03-17 10:30:40 +0000
+++ b/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp	2009-04-07 20:06:42 +0000
@@ -4325,11 +4325,17 @@ NdbDictInterface::stopSubscribeEvent(cla
                      SubStartRef::BusyWithNR,
                      SubStartRef::NotMaster,
                      0 };
-  DBUG_RETURN(dictSignal(&tSignal,NULL,0,
-			 0 /*use masternode id*/,
-			 WAIT_CREATE_INDX_REQ /*WAIT_SUB_STOP__REQ*/,
-			 -1, 100,
-			 errCodes, -1));
+  int ret= dictSignal(&tSignal,NULL,0,
+                      0 /*use masternode id*/,
+                      WAIT_CREATE_INDX_REQ /*WAIT_SUB_STOP__REQ*/,
+                      -1, 100,
+                      errCodes, -1);
+  if (ret == 0)
+  {
+    Uint32 *data = (Uint32*)m_buffer.get_data();
+    ev_op.m_stop_gci = data[1] | (Uint64(data[0]) << 32);
+  }
+  DBUG_RETURN(ret);
 }
 
 NdbEventImpl * 
@@ -4519,6 +4525,20 @@ NdbDictInterface::execSUB_STOP_CONF(NdbA
 
   DBUG_PRINT("info",("subscriptionId=%d,subscriptionKey=%d,subscriberData=%d",
 		     subscriptionId,subscriptionKey,subscriberData));
+
+  Uint32 gci_hi= 0;
+  Uint32 gci_lo= 0;
+  if (SubStopConf::SignalLength >= SubStopConf::SignalLengthWithGci)
+  {
+    gci_hi= subStopConf->gci_hi;
+    gci_lo= subStopConf->gci_lo;
+  }
+
+  m_buffer.grow(4 * 2); // 2 words
+  Uint32* data = (Uint32*)m_buffer.get_data();
+  data[0] = gci_hi;
+  data[1] = gci_lo;
+
   m_waiter.signal(NO_WAIT);
   DBUG_VOID_RETURN;
 }
@@ -5344,7 +5364,6 @@ NdbDictInterface::execLIST_TABLES_CONF(N
   }
   else
   {
-    Uint32 fid = signal->getFragmentId();
     if (m_fragmentId != signal->getFragmentId())
     {
       abort();
@@ -5797,10 +5816,16 @@ NdbDictionaryImpl::validateRecordSpec(co
       elementByteLength= bitLength / 8;
     }
 
-    bitRanges[numElements].start= 8 * elementByteOffset;
-    bitRanges[numElements].end= (8 * (elementByteOffset + elementByteLength)) - 1;
-    
-    numElements++;
+    /* Does the element itself have any bytes?
+     * (MySQLD bit format may have all data as 'null bits'
+     */
+    if (elementByteLength)
+    {
+      bitRanges[numElements].start= 8 * elementByteOffset;
+      bitRanges[numElements].end= (8 * (elementByteOffset + elementByteLength)) - 1;
+      
+      numElements++;
+    }
 
     if (nullLength)
     {
@@ -5872,8 +5897,9 @@ ndb_set_record_specification(Uint32 stor
   }
   else
   {
-    spec->nullbit_byte_offset= 0;
-    spec->nullbit_bit_in_byte= 0;
+    /* For non-nullable columns, use visibly bad offsets */
+    spec->nullbit_byte_offset= ~0;
+    spec->nullbit_bit_in_byte= ~0;
   }
 
   return storageOffset + sizeOfElement;
@@ -6112,6 +6138,11 @@ NdbDictionaryImpl::initialiseColumnData(
     recCol->flags|= NdbRecord::IsNullable;
     recCol->nullbit_byte_offset= recSpec->nullbit_byte_offset;
     recCol->nullbit_bit_in_byte= recSpec->nullbit_bit_in_byte;
+
+    const Uint32 nullbit_byte= recSpec->nullbit_byte_offset + 
+      (recSpec->nullbit_bit_in_byte >> 3);
+    if (nullbit_byte >= rec->m_row_size)
+      rec->m_row_size= nullbit_byte + 1;
   }
   if (col->m_arrayType==NDB_ARRAYTYPE_SHORT_VAR)
   {

=== modified file 'storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp'
--- a/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp	2009-03-17 00:18:16 +0000
+++ b/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp	2009-03-31 14:35:37 +0000
@@ -327,7 +327,7 @@ private:
 
   State m_state;
   Ndb *m_ndb;
-  typedef struct fifo_element_st {
+  struct fifo_element_st {
     fifo_element_st(const NdbTableImpl *tab, fifo_element_st *prev)
       { 
         table = tab; 

=== modified file 'storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp'
--- a/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp	2009-03-14 20:42:04 +0000
+++ b/storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp	2009-03-23 05:48:23 +0000
@@ -182,7 +182,7 @@ NdbEventOperationImpl::init(NdbEventImpl
 
   m_state= EO_CREATED;
 
-  m_node_bit_mask.clear();
+  m_stop_gci = 0;
 #ifdef ndb_event_stores_merge_events_flag
   m_mergeEvents = m_eventImpl->m_mergeEvents;
 #else
@@ -606,7 +606,7 @@ NdbEventOperationImpl::execute_nolock()
   // add kernel reference
   // removed on TE_STOP, TE_CLUSTER_FAILURE, or error below
   m_ref_count++;
-  m_node_bit_mask.set(0u);
+  m_stop_gci= ~(Uint64)0;
   DBUG_PRINT("info", ("m_ref_count: %u for op: %p", m_ref_count, this));
   Uint32 buckets = 0;
   int r= NdbDictionaryImpl::getImpl(*myDict).executeSubscribeEvent(*this,
@@ -628,10 +628,6 @@ NdbEventOperationImpl::execute_nolock()
           m_error.code= myDict->getNdbError().code;
           DBUG_RETURN(r);
         }
-        // add blob reference to main op
-        // removed by TE_STOP or TE_CLUSTER_FAILURE
-        m_ref_count++;
-        DBUG_PRINT("info", ("m_ref_count: %u for op: %p", m_ref_count, this));
         blob_op = blob_op->m_next;
       }
     }
@@ -644,7 +640,7 @@ NdbEventOperationImpl::execute_nolock()
   // remove kernel reference
   // added above
   m_ref_count--;
-  m_node_bit_mask.clear(0u);
+  m_stop_gci = 0;
   DBUG_PRINT("info", ("m_ref_count: %u for op: %p", m_ref_count, this));
   m_state= EO_ERROR;
   mi_type= 0;
@@ -696,6 +692,23 @@ NdbEventOperationImpl::stop()
   m_state= EO_DROPPED;
   mi_type= 0;
   if (r == 0) {
+    if (m_stop_gci == 0)
+    {
+      // response from old kernel
+      Uint64 gci= m_ndb->theEventBuffer->m_highest_sub_gcp_complete_GCI;
+      if (gci)
+      {
+        // calculate a "safe" gci in the future to remove event op.
+        gci += Uint64(3) << 32;
+      }
+      else
+      {
+        // set highest value to ensure that operation does not get dropped
+        // too early. Note '-1' as ~Uint64(0) indicates active event
+        gci = ~Uint64(0)-1;
+      }
+      m_stop_gci = gci;
+    }
     m_ndb->theEventBuffer->add_drop_unlock();
     DBUG_RETURN(0);
   }
@@ -1051,6 +1064,8 @@ NdbEventBuffer::NdbEventBuffer(Ndb *ndb)
   m_max_gci_index(0),
   m_ndb(ndb),
   m_latestGCI(0), m_latest_complete_GCI(0),
+  m_highest_sub_gcp_complete_GCI(0),
+  m_latest_poll_GCI(0),
   m_total_alloc(0),
   m_free_thresh(0),
   m_min_free_thresh(0),
@@ -1145,7 +1160,7 @@ NdbEventBuffer::init_gci_containers()
 {
   m_startup_hack = true;
   bzero(&m_complete_data, sizeof(m_complete_data));
-  m_latest_complete_GCI = m_latestGCI = 0;
+  m_latest_complete_GCI = m_latestGCI = m_latest_poll_GCI = 0;
   m_active_gci.clear();
   m_active_gci.fill(3, g_empty_gci_container);
   m_min_gci_index = m_max_gci_index = 1;
@@ -1201,8 +1216,7 @@ NdbEventBuffer::pollEvents(int aMillisec
     if (unlikely(ev_op == 0))
       ret= 0;
   }
-  if (latestGCI)
-    *latestGCI= m_latestGCI;
+  m_latest_poll_GCI= m_latestGCI;
 #ifdef VM_TRACE
   if (ev_op)
   {
@@ -1213,7 +1227,19 @@ NdbEventBuffer::pollEvents(int aMillisec
   }
   m_latest_command= m_latest_command_save;
 #endif
+  if (unlikely(ev_op == 0))
+  {
+    /*
+      gci's consumed up until m_latest_poll_GCI, so we can free all
+      dropped event operations stopped up until that gci
+    */
+    deleteUsedEventOperations(m_latest_poll_GCI);
+  }
   NdbMutex_Unlock(m_mutex); // we have moved the data
+
+  if (latestGCI)
+    *latestGCI= m_latest_poll_GCI;
+
   return ret;
 }
 
@@ -1332,11 +1358,6 @@ NdbEventBuffer::nextEvent()
          EventBufData_list::Gci_ops *gci_ops = m_available_data.first_gci_ops();
          while (gci_ops && op->getGCI() > gci_ops->m_gci)
          {
-           // moved to next gci, check if any references have been
-           // released when completing the last gci
-           NdbMutex_Lock(m_mutex);
-           deleteUsedEventOperations();
-           NdbMutex_Unlock(m_mutex);
            gci_ops = m_available_data.delete_next_gci_ops();
          }
          if (!gci_ops->m_consistent)
@@ -1364,17 +1385,21 @@ NdbEventBuffer::nextEvent()
   m_latest_command= m_latest_command_save;
 #endif
 
-  // free all "per gci unique" collected operations
-  // completed gci, check if any references have been
-  // released when completing the gci
-  NdbMutex_Lock(m_mutex);
   EventBufData_list::Gci_ops *gci_ops = m_available_data.first_gci_ops();
   while (gci_ops)
   {
-    deleteUsedEventOperations();
     gci_ops = m_available_data.delete_next_gci_ops();
   }
-  NdbMutex_Unlock(m_mutex);
+  /*
+    gci's consumed up until m_latest_poll_GCI, so we can free all
+    dropped event operations stopped up until that gci
+  */
+  if (m_dropped_ev_op)
+  {
+    NdbMutex_Lock(m_mutex);
+    deleteUsedEventOperations(m_latest_poll_GCI);
+    NdbMutex_Unlock(m_mutex);
+  }
   DBUG_RETURN_EVENT(0);
 }
 
@@ -1431,30 +1456,33 @@ NdbEventBuffer::getGCIEventOperations(Ui
 }
 
 void
-NdbEventBuffer::deleteUsedEventOperations()
+NdbEventBuffer::deleteUsedEventOperations(Uint64 last_consumed_gci)
 {
-  Uint32 iter= 0;
-  const NdbEventOperation *op_f;
-  while ((op_f= getGCIEventOperations(&iter, NULL)) != NULL)
-  {
-    NdbEventOperationImpl *op = &op_f->m_impl;
-    DBUG_ASSERT(op->m_ref_count > 0);
-    // remove gci reference
-    // added in inserDataL
-    op->m_ref_count--;
-    DBUG_PRINT("info", ("m_ref_count: %u for op: %p", op->m_ref_count, op));
-    if (op->m_ref_count == 0)
-    {
-      DBUG_PRINT("info", ("deleting op: %p", op));
-      DBUG_ASSERT(op->m_node_bit_mask.isclear());
-      if (op->m_next)
-        op->m_next->m_prev = op->m_prev;
-      if (op->m_prev)
-        op->m_prev->m_next = op->m_next;
-      else
-        m_dropped_ev_op = op->m_next;
-      delete op->m_facade;
+  NdbEventOperationImpl *op= m_dropped_ev_op;
+  while (op && op->m_stop_gci)
+  {
+    if (last_consumed_gci > op->m_stop_gci)
+    {
+      while (op)
+      {
+        NdbEventOperationImpl *next_op= op->m_next;
+        op->m_stop_gci= 0;
+        op->m_ref_count--;
+        if (op->m_ref_count == 0)
+        {
+          if (op->m_next)
+            op->m_next->m_prev = op->m_prev;
+          if (op->m_prev)
+            op->m_prev->m_next = op->m_next;
+          else
+            m_dropped_ev_op = op->m_next;
+          delete op->m_facade;
+        }
+        op = next_op;
+      }
+      break;
     }
+    op = op->m_next;
   }
 }
 
@@ -1851,6 +1879,18 @@ void
 NdbEventBuffer::execSUB_GCP_COMPLETE_REP(const SubGcpCompleteRep * const rep,
                                          Uint32 len, int complete_cluster_failure)
 {
+  Uint32 gci_hi = rep->gci_hi;
+  Uint32 gci_lo = rep->gci_lo;
+
+  if (unlikely(len < SubGcpCompleteRep::SignalLength))
+  {