aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGhaster <defscam@gmail.com>2018-10-17 11:16:56 +0200
committerShauren <shauren.trinity@gmail.com>2018-12-30 19:51:36 +0100
commitbf3ab6d9c4366dae1d34957813e3fbf40ac8532b (patch)
tree2f070f381fbf39e362a44561d8c0187fa79e4984
parent3dbe80ee2e0d1848302bcf34b654693462942639 (diff)
Core/Creatures: Port trainer changes from master
Closes #20493
-rw-r--r--sql/base/auth_database.sql5
-rw-r--r--sql/updates/auth/3.3.5/9999_99_99_99_auth.sql3
-rw-r--r--sql/updates/world/3.3.5/2018_12_30_00_world_335.sql4745
-rw-r--r--src/server/database/Database/Implementation/WorldDatabase.cpp2
-rw-r--r--src/server/game/Accounts/RBAC.h2
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp24
-rw-r--r--src/server/game/Entities/Creature/Creature.h4
-rw-r--r--src/server/game/Entities/Creature/CreatureData.h36
-rw-r--r--src/server/game/Entities/Creature/Trainer.cpp243
-rw-r--r--src/server/game/Entities/Creature/Trainer.h96
-rw-r--r--src/server/game/Entities/Object/Object.cpp6
-rw-r--r--src/server/game/Entities/Object/Object.h6
-rw-r--r--src/server/game/Entities/Player/Player.cpp92
-rw-r--r--src/server/game/Entities/Player/Player.h17
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp4
-rw-r--r--src/server/game/Entities/Unit/Unit.h4
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp340
-rw-r--r--src/server/game/Globals/ObjectMgr.h18
-rw-r--r--src/server/game/Grids/Notifiers/GridNotifiers.h6
-rw-r--r--src/server/game/Handlers/NPCHandler.cpp183
-rw-r--r--src/server/game/Handlers/SkillHandler.cpp2
-rw-r--r--src/server/game/Server/Packets/AllPackets.h1
-rw-r--r--src/server/game/Server/Packets/NPCPackets.cpp70
-rw-r--r--src/server/game/Server/Packets/NPCPackets.h107
-rw-r--r--src/server/game/Server/WorldSession.h12
-rw-r--r--src/server/game/Spells/SpellMgr.cpp4
-rw-r--r--src/server/game/Spells/SpellMgr.h3
-rw-r--r--src/server/game/World/World.cpp11
-rw-r--r--src/server/scripts/Commands/cs_reload.cpp16
-rw-r--r--src/server/scripts/Northrend/zone_storm_peaks.cpp2
-rw-r--r--src/server/scripts/World/npc_professions.cpp6
-rw-r--r--src/server/shared/SharedDefines.h10
32 files changed, 5541 insertions, 539 deletions
diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql
index b5cf5117002..38df7b4f252 100644
--- a/sql/base/auth_database.sql
+++ b/sql/base/auth_database.sql
@@ -1496,7 +1496,7 @@ INSERT INTO `rbac_permissions` VALUES
(669,'Command: reload mail_loot_template'),
(670,'Command: reload milling_loot_template'),
(671,'Command: reload npc_spellclick_spells'),
-(672,'Command: reload npc_trainer'),
+(672,'Command: reload trainer'),
(673,'Command: reload npc_vendor'),
(674,'Command: reload page_text'),
(675,'Command: reload pickpocketing_loot_template'),
@@ -1773,7 +1773,8 @@ INSERT INTO `updates` VALUES
('2018_06_23_00_auth.sql','BE35312C386A127D047E5A7CE0D14DB41D905F8E','ARCHIVED','2018-06-23 00:00:00',0),
('2018_08_30_00_auth.sql','22F69864361D3E72F800379338310172C0576D1C','ARCHIVED','2018-08-30 00:00:00',0),
('2018_09_06_00_auth.sql','309D21E0DF82ED8921F77EAFDE741F38AC32BB13','ARCHIVED','2018-09-06 00:00:00',0),
-('2018_09_17_00_auth.sql','4DB671F0A4FA1A93AF28FB6426AF13DE72C7DA3D','ARCHIVED','2018-09-17 00:00:00',0);
+('2018_09_17_00_auth.sql','4DB671F0A4FA1A93AF28FB6426AF13DE72C7DA3D','ARCHIVED','2018-09-17 00:00:00',0),
+('9999_99_99_99_auth.sql','0321AE9AEA00E1AC9C20DD8F5B55ECCF9D32B1B6','ARCHIVED','9999-99-99 00:00:00',0);
/*!40000 ALTER TABLE `updates` ENABLE KEYS */;
UNLOCK TABLES;
diff --git a/sql/updates/auth/3.3.5/9999_99_99_99_auth.sql b/sql/updates/auth/3.3.5/9999_99_99_99_auth.sql
new file mode 100644
index 00000000000..ba82aab6838
--- /dev/null
+++ b/sql/updates/auth/3.3.5/9999_99_99_99_auth.sql
@@ -0,0 +1,3 @@
+-- Port Trainer changes from master to 3.3.5
+DELETE FROM `rbac_permissions` WHERE `id`=672;
+INSERT INTO `rbac_permissions` (`id`, `name`) VALUES (672, 'Command: reload trainer');
diff --git a/sql/updates/world/3.3.5/2018_12_30_00_world_335.sql b/sql/updates/world/3.3.5/2018_12_30_00_world_335.sql
new file mode 100644
index 00000000000..05d7a4d6702
--- /dev/null
+++ b/sql/updates/world/3.3.5/2018_12_30_00_world_335.sql
@@ -0,0 +1,4745 @@
+-- Port Trainer changes from master to 3.3.5
+
+-- Dumping structure for tabel world.trainer
+DROP TABLE IF EXISTS `trainer`;
+CREATE TABLE IF NOT EXISTS `trainer` (
+ `Id` int(10) unsigned NOT NULL DEFAULT '0',
+ `Type` tinyint(2) unsigned NOT NULL DEFAULT '2',
+ `Requirement` mediumint(8) unsigned NOT NULL DEFAULT '0',
+ `Greeting` text,
+ `VerifiedBuild` smallint(5) DEFAULT '0',
+ PRIMARY KEY (`Id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- Dumping data for table world.trainer: 85 rows
+INSERT INTO `trainer` (`Id`,`Type`,`Requirement`,`Greeting`,`VerifiedBuild`) VALUES
+(200002,0,1,NULL,0),
+(200001,0,1,NULL,0),
+(200003,0,2,NULL,0),
+(200004,0,2,NULL,0),
+(200005,0,11,NULL,0),
+(200006,0,11,NULL,0),
+(200007,0,8,NULL,0),
+(200008,0,8,NULL,0),
+(200009,0,9,NULL,0),
+(200010,0,9,NULL,0),
+(200011,0,5,NULL,0),
+(200012,0,5,NULL,0),
+(200013,0,3,NULL,0),
+(200014,0,3,NULL,0),
+(200015,0,4,NULL,0),
+(200016,0,4,NULL,0),
+(200017,0,7,NULL,0),
+(200018,0,7,NULL,0),
+(200019,0,6,NULL,0),
+(200020,0,2,NULL,0),
+(200021,0,2,NULL,0),
+(201001,2,0,NULL,0),
+(201002,2,0,NULL,0),
+(201003,2,0,NULL,0),
+(201004,2,0,NULL,0),
+(201005,2,0,NULL,0),
+(201006,2,0,NULL,0),
+(201007,2,9788,NULL,0),
+(201008,2,9787,NULL,0),
+(201009,2,0,NULL,0),
+(201010,2,0,NULL,0),
+(201011,2,0,NULL,0),
+(201012,2,0,NULL,0),
+(201013,2,0,NULL,0),
+(201014,2,0,NULL,0),
+(201015,2,0,NULL,0),
+(201016,2,0,NULL,0),
+(201017,2,0,NULL,0),
+(201018,2,0,NULL,0),
+(201019,2,0,NULL,0),
+(201020,2,0,NULL,0),
+(201021,2,0,NULL,0),
+(201022,2,0,NULL,0),
+(201023,2,0,NULL,0),
+(201024,2,0,NULL,0),
+(201025,2,0,NULL,0),
+(201026,2,0,NULL,0),
+(201027,2,0,NULL,0),
+(201028,2,0,NULL,0),
+(201029,2,0,NULL,0),
+(201030,2,0,NULL,0),
+(201031,2,0,NULL,0),
+(201032,2,0,NULL,0),
+(201033,2,0,NULL,0),
+(201034,2,0,NULL,0),
+(201035,2,0,NULL,0),
+(201036,2,0,NULL,0),
+(201037,2,0,NULL,0),
+(201038,2,0,NULL,0),
+(201039,2,0,NULL,0),
+(201040,2,0,NULL,0),
+(201041,2,0,NULL,0),
+(201042,2,0,NULL,0),
+(202001,2,0,NULL,0),
+(202002,2,0,NULL,0),
+(202003,2,0,NULL,0),
+(202004,2,0,NULL,0),
+(202005,2,0,NULL,0),
+(202006,2,0,NULL,0),
+(202007,2,0,NULL,0),
+(202008,2,0,NULL,0),
+(202009,2,0,NULL,0),
+(202011,1,0,NULL,0),
+(202012,1,0,NULL,0),
+(202010,1,0,NULL,0),
+(4732,1,1,NULL,0),
+(4752,1,2,NULL,0),
+(4772,1,3,NULL,0),
+(4753,1,4,NULL,0),
+(4773,1,5,NULL,0),
+(3690,1,6,NULL,0),
+(7954,1,7,NULL,0),
+(7953,1,8,NULL,0),
+(16280,1,10,NULL,0),
+(20914,1,11,NULL,0),
+(2485,0,8,NULL,0),
+(2489,0,8,NULL,0),
+(2492,0,8,NULL,0),
+(4165,0,8,NULL,0),
+(5957,0,8,NULL,0),
+(5958,0,8,NULL,0),
+(16654,0,8,NULL,0),
+(16755,0,8,NULL,0),
+(19340,0,8,NULL,0),
+(20791,0,8,NULL,0),
+(27703,0,8,NULL,0),
+(27705,0,8,NULL,0),
+(29156,0,8,NULL,0),
+(2704,2,0,NULL,0),
+(2818,2,0,NULL,0),
+(10370,2,0,NULL,0),
+(11865,2,0,NULL,0),
+(11866,2,0,NULL,0),
+(11867,2,0,NULL,0),
+(11868,2,0,NULL,0),
+(11869,2,0,NULL,0),
+(11870,2,0,NULL,0),
+(13084,2,0,NULL,0),
+(16621,2,0,NULL,0),
+(16773,2,0,NULL,0),
+(17005,2,0,NULL,0),
+(17215,2,0,NULL,0),
+(17634,2,0,NULL,0),
+(17637,2,0,NULL,0),
+(18752,2,0,NULL,0),
+(18775,2,0,NULL,0),
+(19186,2,0,NULL,0),
+(19576,2,0,NULL,0),
+(21493,2,0,NULL,0),
+(21494,2,0,NULL,0),
+(29506,2,0,NULL,0),
+(33677,2,0,NULL,0),
+(33996,2,0,NULL,0),
+(543,3,0,NULL,0),
+(2878,3,0,NULL,0),
+(2879,3,0,NULL,0),
+(2880,3,0,NULL,0),
+(3306,3,0,NULL,0),
+(3545,3,0,NULL,0),
+(3620,3,0,NULL,0),
+(3622,3,0,NULL,0),
+(3624,3,0,NULL,0),
+(3698,3,0,NULL,0),
+(4320,3,0,NULL,0),
+(10086,3,0,NULL,0),
+(10088,3,0,NULL,0),
+(14401,0,0,NULL,0);
+
+-- Dumping structure for tabel world.trainer_locale
+DROP TABLE IF EXISTS `trainer_locale`;
+CREATE TABLE IF NOT EXISTS `trainer_locale` (
+ `Id` int(10) unsigned NOT NULL DEFAULT '0',
+ `locale` varchar(4) NOT NULL,
+ `Greeting_lang` text,
+ `VerifiedBuild` smallint(5) DEFAULT '0',
+ PRIMARY KEY (`Id`,`locale`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- Dumping structure for tabel world.trainer_spell
+DROP TABLE IF EXISTS `trainer_spell`;
+CREATE TABLE IF NOT EXISTS `trainer_spell` (
+ `TrainerId` int(10) unsigned NOT NULL DEFAULT '0',
+ `SpellId` int(10) unsigned NOT NULL DEFAULT '0',
+ `MoneyCost` int(10) unsigned NOT NULL DEFAULT '0',
+ `ReqSkillLine` int(10) unsigned NOT NULL DEFAULT '0',
+ `ReqSkillRank` int(10) unsigned NOT NULL DEFAULT '0',
+ `ReqAbility1` int(10) unsigned NOT NULL DEFAULT '0',
+ `ReqAbility2` int(10) unsigned NOT NULL DEFAULT '0',
+ `ReqAbility3` int(10) unsigned NOT NULL DEFAULT '0',
+ `ReqLevel` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `VerifiedBuild` smallint(5) DEFAULT '0',
+ PRIMARY KEY (`TrainerId`,`SpellId`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- Dumping data for table world.trainer_spell: 3.573 rows
+INSERT INTO `trainer_spell` (`TrainerId`,`SpellId`,`MoneyCost`,`ReqSkillLine`,`ReqSkillRank`,`ReqAbility1`,`ReqAbility2`,`ReqAbility3`,`ReqLevel`,`VerifiedBuild`) VALUES
+(200001,34428,100,0,0,0,0,0,6,0),
+(200001,6343,100,0,0,0,0,0,6,0),
+(200001,6673,10,0,0,0,0,0,1,0),
+(200001,772,100,0,0,0,0,0,4,0),
+(200001,100,100,0,0,0,0,0,4,0),
+(200001,3127,100,0,0,0,0,0,6,0),
+(200002,25269,65000,0,0,0,0,0,63,0),
+(200002,46845,260000,0,0,0,0,0,71,0),
+(200002,47519,260000,0,0,0,0,0,72,0),
+(200002,25234,65000,0,0,0,0,0,65,0),
+(200002,47439,100000,0,0,0,0,0,74,0),
+(200002,11581,60000,0,0,0,0,0,58,0),
+(200002,469,65000,0,0,0,0,0,68,0),
+(200002,25208,65000,0,0,0,0,0,68,0),
+(200002,12678,4000,0,0,0,0,0,20,0),
+(200002,5246,6000,0,0,0,0,0,22,0),
+(200002,6192,6000,0,0,0,0,0,22,0),
+(200002,20252,12000,0,0,0,0,0,30,0),
+(200002,6548,12000,0,0,0,0,0,30,0),
+(200002,8204,11000,0,0,0,0,0,28,0),
+(200002,25202,65000,0,0,0,0,0,62,0),
+(200002,25241,65000,0,0,0,0,0,61,0),
+(200002,6574,8000,0,0,0,0,0,24,0),
+(200002,5308,8000,0,0,0,0,0,24,0),
+(200002,6190,8000,0,0,0,0,0,24,0),
+(200002,1680,18000,0,0,0,0,0,36,0),
+(200002,47501,260000,0,0,0,0,0,73,0),
+(200002,25203,71000,0,0,0,0,0,70,0),
+(200002,47474,260000,0,0,0,0,0,74,0),
+(200002,47465,260000,0,0,0,0,0,76,0),
+(200002,20662,58000,0,0,0,0,0,56,0),
+(200002,47485,13000,0,0,0,0,0,75,0),
+(200002,2048,71000,0,0,0,0,0,69,0),
+(200002,23920,65000,0,0,0,0,0,64,0),
+(200002,47487,260000,0,0,0,0,0,75,0),
+(200002,30324,100000,0,0,0,0,0,70,0),
+(200002,20658,14000,0,0,0,0,0,32,0),
+(200002,1464,12000,0,0,0,0,0,30,0),
+(200002,7369,12000,0,0,0,0,0,30,0),
+(200002,871,11000,0,0,0,0,0,28,0),
+(200002,1161,10000,0,0,0,0,0,26,0),
+(200002,6178,10000,0,0,0,0,0,26,0),
+(200002,21553,3100,0,0,0,0,0,60,0),
+(200002,30356,71000,0,0,0,0,0,70,0),
+(200002,25231,65000,0,0,0,0,0,68,0),
+(200002,11549,14000,0,0,0,0,0,32,0),
+(200002,30016,3100,0,0,0,0,0,60,0),
+(200002,11564,14000,0,0,0,0,0,32,0),
+(200002,11567,58000,0,0,0,0,0,56,0),
+(200002,11601,56000,0,0,0,0,0,54,0),
+(200002,7379,16000,0,0,0,0,0,34,0),
+(200002,47470,260000,0,0,0,0,0,73,0),
+(200002,11605,56000,0,0,0,0,0,54,0),
+(200002,8198,3000,0,0,0,0,0,18,0),
+(200002,676,3000,0,0,0,0,0,18,0),
+(200002,694,2000,0,0,0,0,0,16,0),
+(200002,285,2000,0,0,0,0,0,16,0),
+(200002,6572,1500,0,0,0,0,0,14,0),
+(200002,1160,1500,0,0,0,0,0,14,0),
+(200002,5242,1000,0,0,0,0,0,12,0),
+(200002,7384,1000,0,0,0,0,0,12,0),
+(200002,8820,20000,0,0,0,0,0,38,0),
+(200002,25264,65000,0,0,0,0,0,67,0),
+(200002,25258,65000,0,0,0,0,0,66,0),
+(200002,25289,65000,0,0,0,0,0,60,0),
+(200002,29707,65000,0,0,0,0,0,66,0),
+(200002,25286,60000,0,0,0,0,0,60,0),
+(200002,23925,62000,0,0,0,0,0,60,0),
+(200002,25248,3250,0,0,0,0,0,66,0),
+(200002,2565,2000,0,0,0,0,0,16,0),
+(200002,11609,42000,0,0,0,0,0,50,0),
+(200002,1719,42000,0,0,0,0,0,50,0),
+(200002,20661,40000,0,0,0,0,0,48,0),
+(200002,11578,36000,0,0,0,0,0,46,0),
+(200002,11608,22000,0,0,0,0,0,40,0),
+(200002,11572,22000,0,0,0,0,0,40,0),
+(200002,20660,22000,0,0,0,0,0,40,0),
+(200002,11565,22000,0,0,0,0,0,40,0),
+(200002,11600,34000,0,0,0,0,0,44,0),
+(200002,750,22000,0,0,0,0,0,40,0),
+(200002,23922,22000,0,0,0,0,0,40,0),
+(200002,11555,34000,0,0,0,0,0,44,0),
+(200002,11550,32000,0,0,0,0,0,42,0),
+(200002,6552,20000,0,0,0,0,0,38,0),
+(200002,8205,20000,0,0,0,0,0,38,0),
+(200002,674,4000,0,0,0,0,0,20,0),
+(200002,845,4000,0,0,0,0,0,20,0),
+(200002,6547,4000,0,0,0,0,0,20,0),
+(200002,20230,4000,0,0,0,0,0,20,0),
+(200002,23924,56000,0,0,0,0,0,54,0),
+(200002,21552,2800,0,0,0,0,0,54,0),
+(200002,11551,54000,0,0,0,0,0,52,0),
+(200002,11566,40000,0,0,0,0,0,48,0),
+(200002,23923,40000,0,0,0,0,0,48,0),
+(200002,21551,2000,0,0,0,0,0,48,0),
+(200002,11580,40000,0,0,0,0,0,48,0),
+(200002,11573,42000,0,0,0,0,0,50,0),
+(200002,47449,260000,0,0,0,0,0,72,0),
+(200002,1715,200,0,0,0,0,0,8,0),
+(200002,284,200,0,0,0,0,0,8,0),
+(200002,47497,5000,0,0,0,0,0,75,0),
+(200002,25288,60000,0,0,0,0,0,60,0),
+(200002,3411,65000,0,0,0,0,0,70,0),
+(200002,11556,56000,0,0,0,0,0,54,0),
+(200002,11554,16000,0,0,0,0,0,34,0),
+(200002,18499,14000,0,0,0,0,0,32,0),
+(200002,30357,260000,0,0,0,0,0,70,0),
+(200002,30022,3250,0,0,0,0,0,70,0),
+(200002,47450,260000,0,0,0,0,0,76,0),
+(200002,20569,62000,0,0,0,0,0,60,0),
+(200002,11574,62000,0,0,0,0,0,60,0),
+(200002,64382,260000,0,0,0,0,0,71,0),
+(200002,6546,600,0,0,0,0,0,10,0),
+(200002,72,1000,0,0,0,0,0,12,0),
+(200002,2687,600,0,0,0,0,0,10,0),
+(200002,25236,71000,0,0,0,0,0,70,0),
+(200002,11604,36000,0,0,0,0,0,46,0),
+(200002,30330,3500,0,0,0,0,0,70,0),
+(200002,55694,100000,0,0,0,0,0,75,0),
+(200002,1608,8000,0,0,0,0,0,24,0),
+(200002,25242,71000,0,0,0,0,0,69,0),
+(200002,47436,260000,0,0,0,0,0,78,0),
+(200002,47502,26000,0,0,0,0,0,78,0),
+(200002,47520,260000,0,0,0,0,0,77,0),
+(200002,57755,100000,0,0,0,0,0,80,0),
+(200002,47437,260000,0,0,0,0,0,79,0),
+(200002,47471,260000,0,0,0,0,0,80,0),
+(200002,47440,260000,0,0,0,0,0,80,0),
+(200002,47498,5000,0,0,0,0,0,80,0),
+(200002,47488,260000,0,0,0,0,0,80,0),
+(200002,47475,260000,0,0,0,0,0,79,0),
+(200002,47486,13000,0,0,0,0,0,80,0),
+(200002,57823,260000,0,0,0,0,0,80,0),
+(200003,465,10,0,0,0,0,0,1,0),
+(200003,639,100,0,0,0,0,0,6,0),
+(200003,498,100,0,0,0,0,0,6,0),
+(200003,20271,100,0,0,0,0,0,4,0),
+(200003,19740,100,0,0,0,0,0,4,0),
+(200004,48932,200000,0,0,0,0,0,79,0),
+(200004,48801,200000,0,0,0,0,0,79,0),
+(200004,48785,200000,0,0,0,0,0,79,0),
+(200004,48947,200000,0,0,0,0,0,78,0),
+(200004,48817,200000,0,0,0,0,0,78,0),
+(200004,48788,200000,0,0,0,0,0,78,0),
+(200004,48945,200000,0,0,0,0,0,77,0),
+(200004,33072,6500,0,0,0,0,0,70,0),
+(200004,48938,200000,0,0,0,0,0,77,0),
+(200004,48936,200000,0,0,0,0,0,77,0),
+(200004,54043,200000,0,0,0,0,0,76,0),
+(200004,48943,200000,0,0,0,0,0,76,0),
+(200004,53600,200000,0,0,0,0,0,75,0),
+(200004,48951,10000,0,0,0,0,0,75,0),
+(200004,48826,10000,0,0,0,0,0,75,0),
+(200004,48824,10000,0,0,0,0,0,75,0),
+(200004,48818,200000,0,0,0,0,0,75,0),
+(200004,48952,10000,0,0,0,0,0,80,0),
+(200004,48827,10000,0,0,0,0,0,80,0),
+(200004,48819,200000,0,0,0,0,0,80,0),
+(200004,48806,200000,0,0,0,0,0,80,0),
+(200004,48782,200000,0,0,0,0,0,80,0),
+(200004,48950,200000,0,0,0,0,0,79,0),
+(200004,48942,200000,0,0,0,0,0,79,0),
+(200004,48781,200000,0,0,0,0,0,75,0),
+(200004,48941,200000,0,0,0,0,0,74,0),
+(200004,48805,200000,0,0,0,0,0,74,0),
+(200004,48784,200000,0,0,0,0,0,74,0),
+(200004,48933,200000,0,0,0,0,0,73,0),
+(200004,48931,200000,0,0,0,0,0,73,0),
+(200004,48800,200000,0,0,0,0,0,73,0),
+(200004,48949,200000,0,0,0,0,0,72,0),
+(200004,48935,200000,0,0,0,0,0,71,0),
+(200004,48825,10000,0,0,0,0,0,80,0),
+(200004,27179,6500,0,0,0,0,0,70,0),
+(200004,31884,130000,0,0,0,0,0,70,0),
+(200004,48937,200000,0,0,0,0,0,71,0),
+(200004,48816,200000,0,0,0,0,0,72,0),
+(200004,54428,100000,0,0,0,0,0,71,0),
+(200004,27173,130000,0,0,0,0,0,70,0),
+(200004,48934,200000,0,0,0,0,0,79,0),
+(200004,53601,100000,0,0,0,0,0,80,0),
+(200004,27153,130000,0,0,0,0,0,70,0),
+(200004,61411,200000,0,0,0,0,0,80,0),
+(200004,27149,130000,0,0,0,0,0,70,0),
+(200004,27141,100000,0,0,0,0,0,70,0),
+(200004,27140,200000,0,0,0,0,0,70,0),
+(200004,27136,130000,0,0,0,0,0,70,0),
+(200004,27154,110000,0,0,0,0,0,69,0),
+(200004,27139,110000,0,0,0,0,0,69,0),
+(200004,27180,100000,0,0,0,0,0,68,0),
+(200004,27152,100000,0,0,0,0,0,68,0),
+(200004,27138,100000,0,0,0,0,0,68,0),
+(200004,27150,83000,0,0,0,0,0,66,0),
+(200004,27137,83000,0,0,0,0,0,66,0),
+(200004,27143,75000,0,0,0,0,0,65,0),
+(200004,27142,75000,0,0,0,0,0,65,0),
+(200004,27174,3348,0,0,0,0,0,64,0),
+(200004,27151,61000,0,0,0,0,0,63,0),
+(200004,32223,55000,0,0,0,0,0,62,0),
+(200004,27135,55000,0,0,0,0,0,62,0),
+(200004,32699,2300,0,0,0,0,0,60,0),
+(200004,25918,46000,0,0,0,0,0,60,0),
+(200004,25916,46000,0,0,0,0,0,60,0),
+(200004,25899,2300,0,0,0,0,0,60,0),
+(200004,25898,2300,0,0,0,0,0,60,0),
+(200004,25292,46000,0,0,0,0,0,60,0),
+(200004,25291,50000,0,0,0,0,0,60,0),
+(200004,25290,50000,0,0,0,0,0,60,0),
+(200004,24239,46000,0,0,0,0,0,60,0),
+(200004,20928,2300,0,0,0,0,0,60,0),
+(200004,20924,46000,0,0,0,0,0,60,0),
+(200004,20773,46000,0,0,0,0,0,60,0),
+(200004,19900,46000,0,0,0,0,0,60,0),
+(200004,10318,46000,0,0,0,0,0,60,0),
+(200004,10314,46000,0,0,0,0,0,60,0),
+(200004,10293,46000,0,0,0,0,0,60,0),
+(200004,19943,44000,0,0,0,0,0,58,0),
+(200004,20930,2100,0,0,0,0,0,56,0),
+(200004,19898,42000,0,0,0,0,0,56,0),
+(200004,10301,42000,0,0,0,0,0,56,0),
+(200004,25894,46000,0,0,0,0,0,54,0),
+(200004,19854,40000,0,0,0,0,0,54,0),
+(200004,10329,40000,0,0,0,0,0,54,0),
+(200004,10308,40000,0,0,0,0,0,54,0),
+(200004,25782,46000,0,0,0,0,0,52,0),
+(200004,24274,34000,0,0,0,0,0,52,0),
+(200004,19896,34000,0,0,0,0,0,52,0),
+(200004,19838,34000,0,0,0,0,0,52,0),
+(200004,10313,34000,0,0,0,0,0,52,0),
+(200004,20927,1400,0,0,0,0,0,50,0),
+(200004,20923,28000,0,0,0,0,0,50,0),
+(200004,19942,28000,0,0,0,0,0,50,0),
+(200004,10310,28000,0,0,0,0,0,50,0),
+(200004,10292,28000,0,0,0,0,0,50,0),
+(200004,2812,28000,0,0,0,0,0,50,0),
+(200004,20929,1300,0,0,0,0,0,48,0),
+(200004,20772,26000,0,0,0,0,0,48,0),
+(200004,19899,26000,0,0,0,0,0,48,0),
+(200004,10328,24000,0,0,0,0,0,46,0),
+(200004,10300,24000,0,0,0,0,0,46,0),
+(200004,6940,24000,0,0,0,0,0,46,0),
+(200004,24275,22000,0,0,0,0,0,44,0),
+(200004,19897,22000,0,0,0,0,0,44,0),
+(200004,19853,22000,0,0,0,0,0,44,0),
+(200004,10312,22000,0,0,0,0,0,44,0),
+(200004,19941,21000,0,0,0,0,0,42,0),
+(200004,19837,21000,0,0,0,0,0,42,0),
+(200004,4987,21000,0,0,0,0,0,42,0),
+(200004,20922,20000,0,0,0,0,0,40,0),
+(200004,19895,20000,0,0,0,0,0,40,0),
+(200004,5589,20000,0,0,0,0,0,40,0),
+(200004,1032,20000,0,0,0,0,0,40,0),
+(200004,750,20000,0,0,0,0,0,40,0),
+(200004,20166,16000,0,0,0,0,0,38,0),
+(200004,10278,16000,0,0,0,0,0,38,0),
+(200004,3472,16000,0,0,0,0,0,38,0),
+(200004,19891,14000,0,0,0,0,0,36,0),
+(200004,10324,14000,0,0,0,0,0,36,0),
+(200004,10299,14000,0,0,0,0,0,36,0),
+(200004,5615,14000,0,0,0,0,0,36,0),
+(200004,19940,13000,0,0,0,0,0,34,0),
+(200004,19852,13000,0,0,0,0,0,34,0),
+(200004,642,13000,0,0,0,0,0,34,0),
+(200004,19888,12000,0,0,0,0,0,32,0),
+(200004,19836,12000,0,0,0,0,0,32,0),
+(200004,20165,11000,0,0,0,0,0,30,0),
+(200004,20116,11000,0,0,0,0,0,30,0),
+(200004,19752,11000,0,0,0,0,0,30,0),
+(200004,10291,11000,0,0,0,0,0,30,0),
+(200004,2800,11000,0,0,0,0,0,30,0),
+(200004,1042,11000,0,0,0,0,0,30,0),
+(200004,53407,9000,0,0,0,0,0,28,0),
+(200004,19876,9000,0,0,0,0,0,28,0),
+(200004,5614,9000,0,0,0,0,0,28,0),
+(200004,19939,6000,0,0,0,0,0,26,0),
+(200004,10298,6000,0,0,0,0,0,26,0),
+(200004,1038,6000,0,0,0,0,0,26,0),
+(200004,19850,5000,0,0,0,0,0,24,0),
+(200004,10326,5000,0,0,0,0,0,24,0),
+(200004,10322,5000,0,0,0,0,0,24,0),
+(200004,5599,5000,0,0,0,0,0,24,0),
+(200004,5588,5000,0,0,0,0,0,24,0),
+(200004,20164,4000,0,0,0,0,0,22,0),
+(200004,19835,4000,0,0,0,0,0,22,0),
+(200004,19746,4000,0,0,0,0,0,22,0),
+(200004,1026,4000,0,0,0,0,0,22,0),
+(200004,26573,4000,0,0,0,0,0,20,0),
+(200004,20217,4000,0,0,0,0,0,20,0),
+(200004,19750,4000,0,0,0,0,0,20,0),
+(200004,5502,4000,0,0,0,0,0,20,0),
+(200004,879,4000,0,0,0,0,0,20,0),
+(200004,643,4000,0,0,0,0,0,20,0),
+(200004,1044,3500,0,0,0,0,0,18,0),
+(200004,62124,3000,0,0,0,0,0,16,0),
+(200004,25780,3000,0,0,0,0,0,16,0),
+(200004,7294,3000,0,0,0,0,0,16,0),
+(200004,31789,4000,0,0,0,0,0,14,0),
+(200004,19742,2000,0,0,0,0,0,14,0),
+(200004,647,2000,0,0,0,0,0,14,0),
+(200004,53408,1000,0,0,0,0,0,12,0),
+(200004,19834,1000,0,0,0,0,0,12,0),
+(200004,10290,300,0,0,0,0,0,10,0),
+(200004,1022,300,0,0,0,0,0,10,0),
+(200004,633,300,0,0,0,0,0,10,0),
+(200004,3127,100,0,0,0,0,0,8,0),
+(200004,1152,100,0,0,0,0,0,8,0),
+(200004,853,100,0,0,0,0,0,8,0),
+(200004,32700,5000,0,0,0,0,0,70,0),
+(200005,5177,100,0,0,0,0,0,6,0),
+(200005,467,100,0,0,0,0,0,6,0),
+(200005,8921,100,0,0,0,0,0,4,0),
+(200005,774,100,0,0,0,0,0,4,0),
+(200005,1126,10,0,0,0,0,0,1,0),
+(200006,33983,1700,0,0,0,0,0,68,0),
+(200006,33987,1900,0,0,0,0,0,68,0),
+(200006,26979,90000,0,0,0,0,0,69,0),
+(200006,26982,90000,0,0,0,0,0,69,0),
+(200006,26985,90000,0,0,0,0,0,69,0),
+(200006,50464,200000,0,0,0,0,0,80,0),
+(200006,40120,200000,762,300,0,0,0,71,0),
+(200006,48565,10000,0,0,0,0,0,75,0),
+(200006,53226,10000,0,0,0,0,0,75,0),
+(200006,48575,200000,0,0,0,0,0,76,0),
+(200006,53199,10000,0,0,0,0,0,70,0),
+(200006,48470,200000,0,0,0,0,0,80,0),
+(200006,48462,200000,0,0,0,0,0,75,0),
+(200006,48561,200000,0,0,0,0,0,72,0),
+(200006,49800,200000,0,0,0,0,0,80,0),
+(200006,48576,200000,0,0,0,0,0,72,0),
+(200006,48562,200000,0,0,0,0,0,77,0),
+(200006,52610,200000,0,0,0,0,0,75,0),
+(200006,48573,200000,0,0,0,0,0,72,0),
+(200006,48468,200000,0,0,0,0,0,80,0),
+(200006,50763,200000,0,0,0,0,0,80,0),
+(200006,53307,200000,0,0,0,0,0,74,0),
+(200006,27012,100000,0,0,0,0,0,70,0),
+(200006,53225,1700,0,0,0,0,0,70,0),
+(200006,48572,200000,0,0,0,0,0,80,0),
+(200006,27013,200000,0,0,0,0,0,70,0),
+(200006,48571,200000,0,0,0,0,0,75,0),
+(200006,26994,90000,0,0,0,0,0,69,0),
+(200006,33786,100000,0,0,0,0,0,70,0),
+(200006,53249,10000,0,0,0,0,0,75,0),
+(200006,48566,10000,0,0,0,0,0,80,0),
+(200006,48568,200000,0,0,0,0,0,80,0),
+(200006,48467,200000,0,0,0,0,0,80,0),
+(200006,27004,90000,0,0,0,0,0,69,0),
+(200006,48451,200000,0,0,0,0,0,80,0),
+(200006,48480,200000,0,0,0,0,0,79,0),
+(200006,48563,10000,0,0,0,0,0,75,0),
+(200006,53248,1700,0,0,0,0,0,70,0),
+(200006,48447,200000,0,0,0,0,0,80,0),
+(200006,48441,200000,0,0,0,0,0,80,0),
+(200006,50213,200000,0,0,0,0,0,79,0),
+(200006,48579,200000,0,0,0,0,0,79,0),
+(200006,48570,200000,0,0,0,0,0,79,0),
+(200006,48378,200000,0,0,0,0,0,79,0),
+(200006,53312,200000,0,0,0,0,0,78,0),
+(200006,53308,200000,0,0,0,0,0,78,0),
+(200006,48577,200000,0,0,0,0,0,78,0),
+(200006,48574,200000,0,0,0,0,0,78,0),
+(200006,48465,200000,0,0,0,0,0,78,0),
+(200006,49803,200000,0,0,0,0,0,77,0),
+(200006,48477,200000,0,0,0,0,0,79,0),
+(200006,48461,200000,0,0,0,0,0,79,0),
+(200006,26991,100000,0,0,0,0,0,70,0),
+(200006,48564,10000,0,0,0,0,0,80,0),
+(200006,48443,200000,0,0,0,0,0,77,0),
+(200006,48463,200000,0,0,0,0,0,80,0),
+(200006,50764,90000,0,0,0,0,0,69,0),
+(200006,26988,100000,0,0,0,0,0,70,0),
+(200006,26990,100000,0,0,0,0,0,70,0),
+(200006,26983,100000,0,0,0,0,0,70,0),
+(200006,48446,200000,0,0,0,0,0,75,0),
+(200006,48440,200000,0,0,0,0,0,75,0),
+(200006,49802,200000,0,0,0,0,0,74,0),
+(200006,48377,200000,0,0,0,0,0,74,0),
+(200006,48578,200000,0,0,0,0,0,73,0),
+(200006,48569,200000,0,0,0,0,0,73,0),
+(200006,48479,200000,0,0,0,0,0,73,0),
+(200006,48567,200000,0,0,0,0,0,73,0),
+(200006,48559,200000,0,0,0,0,0,71,0),
+(200006,49799,200000,0,0,0,0,0,71,0),
+(200006,50212,200000,0,0,0,0,0,71,0),
+(200006,48459,200000,0,0,0,0,0,74,0),
+(200006,26995,100000,0,0,0,0,0,70,0),
+(200006,61384,10000,0,0,0,0,0,80,0),
+(200006,53251,10000,0,0,0,0,0,80,0),
+(200006,53201,10000,0,0,0,0,0,80,0),
+(200006,62078,200000,0,0,0,0,0,71,0),
+(200006,48450,200000,0,0,0,0,0,72,0),
+(200006,48464,200000,0,0,0,0,0,72,0),
+(200006,48442,200000,0,0,0,0,0,71,0),
+(200006,53200,10000,0,0,0,0,0,75,0),
+(200006,48560,200000,0,0,0,0,0,77,0),
+(200006,27002,100000,0,0,0,0,0,70,0),
+(200006,48469,200000,0,0,0,0,0,80,0),
+(200006,27005,66000,0,0,0,0,0,66,0),
+(200006,33950,34000,0,0,33391,0,0,60,0),
+(200006,27009,81000,0,0,0,0,0,68,0),
+(200006,26989,81000,0,0,0,0,0,68,0),
+(200006,27008,73000,0,0,0,0,0,67,0),
+(200006,27000,73000,0,0,0,0,0,67,0),
+(200006,26996,73000,0,0,0,0,0,67,0),
+(200006,26986,73000,0,0,0,0,0,67,0),
+(200006,33745,66000,0,0,0,0,0,66,0),
+(200006,27006,66000,0,0,0,0,0,66,0),
+(200006,33357,59000,0,0,0,0,0,65,0),
+(200006,26980,59000,0,0,0,0,0,65,0),
+(200006,33763,53000,0,0,0,0,0,64,0),
+(200006,27003,53000,0,0,0,0,0,64,0),
+(200006,26997,53000,0,0,0,0,0,64,0),
+(200006,26992,53000,0,0,0,0,0,64,0),
+(200006,26987,48000,0,0,0,0,0,63,0),
+(200006,26981,48000,0,0,0,0,0,63,0),
+(200006,24248,48000,0,0,0,0,0,63,0),
+(200006,26998,43000,0,0,0,0,0,62,0),
+(200006,26978,43000,0,0,0,0,0,62,0),
+(200006,22570,43000,0,0,0,0,0,62,0),
+(200006,27001,39000,0,0,0,0,0,61,0),
+(200006,26984,39000,0,0,0,0,0,61,0),
+(200006,53223,600,0,0,0,0,0,60,0),
+(200006,50765,34000,0,0,0,0,0,60,0),
+(200006,31709,34000,0,0,0,0,0,60,0),
+(200006,31018,30000,0,0,0,0,0,60,0),
+(200006,25299,34000,0,0,0,0,0,60,0),
+(200006,25298,34000,0,0,0,0,0,60,0),
+(200006,25297,34000,0,0,0,0,0,60,0),
+(200006,24977,34000,0,0,0,0,0,60,0),
+(200006,21850,34000,0,0,0,0,0,60,0),
+(200006,20748,34000,0,0,0,0,0,60,0),
+(200006,17402,34000,0,0,0,0,0,60,0),
+(200006,9896,34000,0,0,0,0,0,60,0),
+(200006,9885,34000,0,0,0,0,0,60,0),
+(200006,9863,34000,0,0,0,0,0,60,0),
+(200006,9858,34000,0,0,0,0,0,60,0),
+(200006,9846,34000,0,0,0,0,0,60,0),
+(200006,33986,1700,0,0,0,0,0,58,0),
+(200006,33982,1700,0,0,0,0,0,58,0),
+(200006,18658,32000,0,0,0,0,0,58,0),
+(200006,17329,32000,0,0,0,0,0,58,0),
+(200006,9881,32000,0,0,0,0,0,58,0),
+(200006,9876,32000,0,0,0,0,0,58,0),
+(200006,9867,32000,0,0,0,0,0,58,0),
+(200006,9853,32000,0,0,0,0,0,58,0),
+(200006,9850,32000,0,0,0,0,0,58,0),
+(200006,9841,32000,0,0,0,0,0,58,0),
+(200006,9835,32000,0,0,0,0,0,58,0),
+(200006,22829,30000,0,0,0,0,0,56,0),
+(200006,9889,30000,0,0,0,0,0,56,0),
+(200006,9827,30000,0,0,0,0,0,56,0),
+(200006,9912,28000,0,0,0,0,0,54,0),
+(200006,9910,28000,0,0,0,0,0,54,0),
+(200006,9908,28000,0,0,0,0,0,54,0),
+(200006,9904,28000,0,0,0,0,0,54,0),
+(200006,9901,28000,0,0,0,0,0,54,0),
+(200006,9857,28000,0,0,0,0,0,54,0),
+(200006,9830,28000,0,0,0,0,0,54,0),
+(200006,9898,26000,0,0,0,0,0,52,0),
+(200006,9894,26000,0,0,0,0,0,52,0),
+(200006,9892,26000,0,0,0,0,0,52,0),
+(200006,9840,26000,0,0,0,0,0,52,0),
+(200006,9834,26000,0,0,0,0,0,52,0),
+(200006,24976,12000,0,0,0,0,0,50,0),
+(200006,21849,23000,0,0,0,0,0,50,0),
+(200006,20747,23000,0,0,0,0,0,50,0),
+(200006,17401,23000,0,0,0,0,0,50,0),
+(200006,9888,23000,0,0,0,0,0,50,0),
+(200006,9884,23000,0,0,0,0,0,50,0),
+(200006,9880,23000,0,0,0,0,0,50,0),
+(200006,9875,23000,0,0,0,0,0,50,0),
+(200006,9866,23000,0,0,0,0,0,50,0),
+(200006,9862,23000,0,0,0,0,0,50,0),
+(200006,50766,22000,0,0,0,0,0,48,0),
+(200006,22828,22000,0,0,0,0,0,48,0),
+(200006,16813,22000,0,0,0,0,0,48,0),
+(200006,9856,22000,0,0,0,0,0,48,0),
+(200006,9852,22000,0,0,0,0,0,48,0),
+(200006,9849,22000,0,0,0,0,0,48,0),
+(200006,9845,22000,0,0,0,0,0,48,0),
+(200006,9839,20000,0,0,0,0,0,46,0),
+(200006,9833,20000,0,0,0,0,0,46,0),
+(200006,9829,20000,0,0,0,0,0,46,0),
+(200006,9823,20000,0,0,0,0,0,46,0),
+(200006,9821,20000,0,0,0,0,0,46,0),
+(200006,8983,20000,0,0,0,0,0,46,0),
+(200006,8905,20000,0,0,0,0,0,46,0),
+(200006,22812,18000,0,0,0,0,0,44,0),
+(200006,9758,18000,0,0,0,0,0,44,0),
+(200006,9756,18000,0,0,0,0,0,44,0),
+(200006,9754,18000,0,0,0,0,0,44,0),
+(200006,9752,18000,0,0,0,0,0,44,0),
+(200006,1824,18000,0,0,0,0,0,44,0),
+(200006,9750,16000,0,0,0,0,0,42,0),
+(200006,9747,16000,0,0,0,0,0,42,0),
+(200006,9745,16000,0,0,0,0,0,42,0),
+(200006,8951,16000,0,0,0,0,0,42,0),
+(200006,6787,16000,0,0,0,0,0,42,0),
+(200006,62600,4500,0,0,0,0,0,40,0),
+(200006,29166,14000,0,0,0,0,0,40,0),
+(200006,24975,14000,0,0,0,0,0,40,0),
+(200006,22827,14000,0,0,0,0,0,40,0),
+(200006,20742,14000,0,0,0,0,0,40,0),
+(200006,20719,14000,0,0,0,0,0,40,0),
+(200006,16914,14000,0,0,0,0,0,40,0),
+(200006,9634,14000,0,0,0,0,0,40,0),
+(200006,9000,14000,0,0,0,0,0,40,0),
+(200006,8929,14000,0,0,0,0,0,40,0),
+(200006,8918,14000,0,0,0,0,0,40,0),
+(200006,8910,14000,0,0,0,0,0,40,0),
+(200006,8907,14000,0,0,0,0,0,40,0),
+(200006,18657,12000,0,0,0,0,0,38,0),
+(200006,16812,12000,0,0,0,0,0,38,0),
+(200006,8992,12000,0,0,0,0,0,38,0),
+(200006,8955,12000,0,0,0,0,0,38,0),
+(200006,8903,12000,0,0,0,0,0,38,0),
+(200006,6780,12000,0,0,0,0,0,38,0),
+(200006,5201,12000,0,0,0,0,0,38,0),
+(200006,5196,12000,0,0,0,0,0,38,0),
+(200006,50767,11000,0,0,0,0,0,36,0),
+(200006,22842,11000,0,0,0,0,0,36,0),
+(200006,9493,11000,0,0,0,0,0,36,0),
+(200006,9005,11000,0,0,0,0,0,36,0),
+(200006,8941,11000,0,0,0,0,0,36,0),
+(200006,6793,11000,0,0,0,0,0,36,0),
+(200006,8972,10000,0,0,0,0,0,34,0),
+(200006,8950,10000,0,0,0,0,0,34,0),
+(200006,8928,10000,0,0,0,0,0,34,0),
+(200006,8914,10000,0,0,0,0,0,34,0),
+(200006,3627,10000,0,0,0,0,0,34,0),
+(200006,1823,10000,0,0,0,0,0,34,0),
+(200006,769,10000,0,0,0,0,0,34,0),
+(200006,22568,8000,0,0,0,0,0,32,0),
+(200006,9490,8000,0,0,0,0,0,32,0),
+(200006,6785,8000,0,0,0,0,0,32,0),
+(200006,6778,8000,0,0,0,0,0,32,0),
+(200006,5225,8000,0,0,0,0,0,32,0),
+(200006,24974,6000,0,0,0,0,0,30,0),
+(200006,20739,6000,0,0,0,0,0,30,0),
+(200006,8940,6000,0,0,0,0,0,30,0),
+(200006,6800,6000,0,0,0,0,0,30,0),
+(200006,6798,6000,0,0,0,0,0,30,0),
+(200006,5234,6000,0,0,0,0,0,30,0),
+(200006,5180,6000,0,0,0,0,0,30,0),
+(200006,740,6000,0,0,0,0,0,30,0),
+(200006,16811,5000,0,0,0,0,0,28,0),
+(200006,9492,5000,0,0,0,0,0,28,0),
+(200006,8998,5000,0,0,0,0,0,28,0),
+(200006,8927,5000,0,0,0,0,0,28,0),
+(200006,5209,5000,0,0,0,0,0,28,0),
+(200006,5195,5000,0,0,0,0,0,28,0),
+(200006,3029,5000,0,0,0,0,0,28,0),
+(200006,2091,5000,0,0,0,0,0,28,0),
+(200006,8949,4500,0,0,0,0,0,26,0),
+(200006,6809,4500,0,0,0,0,0,26,0),
+(200006,5189,4500,0,0,0,0,0,26,0),
+(200006,2893,4500,0,0,0,0,0,26,0),
+(200006,1850,4500,0,0,0,0,0,26,0),
+(200006,50768,4000,0,0,0,0,0,24,0),
+(200006,8939,4000,0,0,0,0,0,24,0),
+(200006,5217,4000,0,0,0,0,0,24,0),
+(200006,2782,4000,0,0,0,0,0,24,0),
+(200006,1822,4000,0,0,0,0,0,24,0),
+(200006,1075,4000,0,0,0,0,0,24,0),
+(200006,780,4000,0,0,0,0,0,24,0),
+(200006,8926,3000,0,0,0,0,0,22,0),
+(200006,5221,3000,0,0,0,0,0,22,0),
+(200006,5179,3000,0,0,0,0,0,22,0),
+(200006,2908,3000,0,0,0,0,0,22,0),
+(200006,2090,3000,0,0,0,0,0,22,0),
+(200006,20484,2000,0,0,0,0,0,20,0),
+(200006,6756,2000,0,0,0,0,0,20,0),
+(200006,5215,2000,0,0,0,0,0,20,0),
+(200006,5188,2000,0,0,0,0,0,20,0),
+(200006,2912,2000,0,0,0,0,0,20,0),
+(200006,1735,2000,0,0,0,0,0,20,0),
+(200006,1082,2000,0,0,0,0,0,20,0),
+(200006,1079,2000,0,0,0,0,0,20,0),
+(200006,768,2000,0,0,0,0,0,20,0),
+(200006,16857,1900,0,0,0,0,0,18,0),
+(200006,16810,1900,0,0,0,0,0,18,0),
+(200006,8938,1900,0,0,0,0,0,18,0),
+(200006,6808,1900,0,0,0,0,0,18,0),
+(200006,2637,1900,0,0,0,0,0,18,0),
+(200006,1062,1900,0,0,0,0,0,18,0),
+(200006,770,1900,0,0,0,0,0,18,0),
+(200006,8925,1800,0,0,0,0,0,16,0),
+(200006,1430,1800,0,0,0,0,0,16,0),
+(200006,1066,900,0,0,0,0,0,16,0),
+(200006,783,6000,0,0,0,0,0,16,0),
+(200006,779,1800,0,0,0,0,0,16,0),
+(200006,5211,900,0,0,0,0,0,14,0),
+(200006,5187,900,0,0,0,0,0,14,0),
+(200006,5178,900,0,0,0,0,0,14,0),
+(200006,782,900,0,0,0,0,0,14,0),
+(200006,50769,800,0,0,0,0,0,12,0),
+(200006,8936,800,0,0,0,0,0,12,0),
+(200006,5229,800,0,0,0,0,0,12,0),
+(200006,16689,300,0,0,0,0,0,10,0),
+(200006,8924,300,0,0,0,0,0,10,0),
+(200006,5232,300,0,0,0,0,0,10,0),
+(200006,1058,300,0,0,0,0,0,10,0),
+(200006,99,300,0,0,0,0,0,10,0),
+(200006,5186,200,0,0,0,0,0,8,0),
+(200006,339,200,0,0,0,0,0,8,0),
+(200007,5504,100,0,0,0,0,0,4,0),
+(200007,2136,100,0,0,0,0,0,6,0),
+(200007,116,100,0,0,0,0,0,4,0),
+(200007,1459,10,0,0,0,0,0,1,0),
+(200007,587,100,0,0,0,0,0,6,0),
+(200007,143,100,0,0,0,0,0,6,0),
+(200008,10157,38000,0,0,0,0,0,56,0),
+(200008,27075,57000,0,0,0,0,0,63,0),
+(200008,27071,57000,0,0,0,0,0,63,0),
+(200008,27124,110000,0,0,0,0,0,69,0),
+(200008,25306,42000,0,0,0,0,0,62,0),
+(200008,27078,46000,0,0,0,0,0,61,0),
+(200008,30449,120000,0,0,0,0,0,70,0),
+(200008,42846,150000,0,0,0,0,0,79,0),
+(200008,33717,150000,0,0,0,0,0,70,0),
+(200008,42920,150000,0,0,0,0,0,76,0),
+(200008,13020,1748,0,0,0,0,0,52,0),
+(200008,42873,150000,0,0,0,0,0,80,0),
+(200008,27079,120000,0,0,0,0,0,70,0),
+(200008,27074,120000,0,0,0,0,0,70,0),
+(200008,44781,15000,0,0,0,0,0,80,0),
+(200008,27072,110000,0,0,0,0,0,69,0),
+(200008,18809,2100,0,0,0,0,0,60,0),
+(200008,42832,150000,0,0,0,0,0,74,0),
+(200008,43002,150000,0,0,0,0,0,80,0),
+(200008,66,96000,0,0,0,0,0,68,0),
+(200008,33405,6000,0,0,0,0,0,70,0),
+(200008,44780,10000,0,0,0,0,0,70,0),
+(200008,33043,2500,0,0,0,0,0,70,0),
+(200008,43987,120000,0,0,0,0,0,70,0),
+(200008,1008,1800,0,0,0,0,0,18,0),
+(200008,33946,110000,0,0,0,0,0,69,0),
+(200008,8461,10000,0,0,0,0,0,32,0),
+(200008,33933,6000,0,0,0,0,0,70,0),
+(200008,8492,12000,0,0,0,0,0,34,0),
+(200008,8427,13000,0,0,0,0,0,36,0),
+(200008,8402,13000,0,0,0,0,0,36,0),
+(200008,8407,10000,0,0,0,0,0,32,0),
+(200008,8416,10000,0,0,0,0,0,32,0),
+(200008,8422,10000,0,0,0,0,0,32,0),
+(200008,10160,32000,0,0,0,0,0,50,0),
+(200008,10173,28000,0,0,0,0,0,48,0),
+(200008,10053,28000,0,0,0,0,0,48,0),
+(200008,10156,18000,0,0,0,0,0,42,0),
+(200008,10185,23000,0,0,0,0,0,44,0),
+(200008,10211,28000,0,0,0,0,0,48,0),
+(200008,22782,1400,0,0,0,0,0,46,0),
+(200008,13031,1700,0,0,0,0,0,46,0),
+(200008,10205,26000,0,0,0,0,0,46,0),
+(200008,10201,26000,0,0,0,0,0,46,0),
+(200008,10148,18000,0,0,0,0,0,42,0),
+(200008,13018,400,0,0,0,0,0,36,0),
+(200008,8495,13000,0,0,0,0,0,36,0),
+(200008,3552,14000,0,0,0,0,0,38,0),
+(200008,8451,13000,0,0,0,0,0,36,0),
+(200008,12824,2000,0,0,0,0,0,20,0),
+(200008,12051,2000,0,0,0,0,0,20,0),
+(200008,7322,2000,0,0,0,0,0,20,0),
+(200008,8400,4000,0,0,0,0,0,24,0),
+(200008,6129,10000,0,0,0,0,0,32,0),
+(200008,2948,3000,0,0,0,0,0,22,0),
+(200008,2138,3000,0,0,0,0,0,22,0),
+(200008,1461,7000,0,0,0,0,0,28,0),
+(200008,6143,3000,0,0,0,0,0,22,0),
+(200008,205,200,0,0,0,0,0,8,0),
+(200008,2120,1500,0,0,0,0,0,16,0),
+(200008,2137,900,0,0,0,0,0,14,0),
+(200008,604,600,0,0,0,0,0,12,0),
+(200008,5143,200,0,0,0,0,0,8,0),
+(200008,10150,36000,0,0,0,0,0,54,0),
+(200008,145,600,0,0,0,0,0,12,0),
+(200008,5505,400,0,0,0,0,0,10,0),
+(200008,23028,38000,0,0,0,0,0,56,0),
+(200008,10,2000,0,0,0,0,0,20,0),
+(200008,543,2000,0,0,0,0,0,20,0),
+(200008,42914,150000,0,0,0,0,0,78,0),
+(200008,130,600,0,0,0,0,0,12,0),
+(200008,12825,15000,0,0,0,0,0,40,0),
+(200008,27101,96000,0,0,0,0,0,68,0),
+(200008,42858,150000,0,0,0,0,0,73,0),
+(200008,42945,7500,0,0,0,0,0,80,0),
+(200008,42950,7500,0,0,0,0,0,80,0),
+(200008,8406,5000,0,0,0,0,0,26,0),
+(200008,38692,150000,0,0,0,0,0,70,0),
+(200008,43039,7500,0,0,0,0,0,80,0),
+(200008,42956,150000,0,0,0,0,0,80,0),
+(200008,6117,13000,0,0,0,0,0,34,0),
+(200008,8457,8000,0,0,0,0,0,30,0),
+(200008,8445,12000,0,0,0,0,0,34,0),
+(200008,865,5000,0,0,0,0,0,26,0),
+(200008,27134,2500,0,0,0,0,0,64,0),
+(200008,28609,42000,0,0,0,0,0,60,0),
+(200008,25345,42000,0,0,0,0,0,60,0),
+(200008,25304,42000,0,0,0,0,0,60,0),
+(200008,10139,32000,0,0,0,0,0,50,0),
+(200008,43017,150000,0,0,0,0,0,77,0),
+(200008,10230,36000,0,0,0,0,0,54,0),
+(200008,10202,36000,0,0,0,0,0,54,0),
+(200008,10186,35000,0,0,0,0,0,52,0),
+(200008,10199,36000,0,0,0,0,0,54,0),
+(200008,8458,15000,0,0,0,0,0,40,0),
+(200008,55359,5000,0,0,0,0,0,70,0),
+(200008,8437,3000,0,0,0,0,0,22,0),
+(200008,10212,38000,0,0,0,0,0,56,0),
+(200008,10181,38000,0,0,0,0,0,56,0),
+(200008,10206,35000,0,0,0,0,0,52,0),
+(200008,1460,900,0,0,0,0,0,14,0),
+(200008,1449,900,0,0,0,0,0,14,0),
+(200008,43010,150000,0,0,0,0,0,78,0),
+(200008,27131,96000,0,0,0,0,0,68,0),
+(200008,597,600,0,0,0,0,0,12,0),
+(200008,837,900,0,0,0,0,0,14,0),
+(200008,6127,8000,0,0,0,0,0,30,0),
+(200008,42940,150000,0,0,0,0,0,80,0),
+(200008,10216,38000,0,0,0,0,0,56,0),
+(200008,42843,150000,0,0,0,0,0,75,0),
+(200008,42917,150000,0,0,0,0,0,75,0),
+(200008,43023,150000,0,0,0,0,0,71,0),
+(200008,55342,150000,0,0,0,0,0,80,0),
+(200008,43038,7500,0,0,0,0,0,75,0),
+(200008,3140,1800,0,0,0,0,0,18,0),
+(200008,7300,400,0,0,0,0,0,10,0),
+(200008,27133,3500,0,0,0,0,0,65,0),
+(200008,27087,70000,0,0,0,0,0,65,0),
+(200008,27073,70000,0,0,0,0,0,65,0),
+(200008,33042,2200,0,0,0,0,0,64,0),
+(200008,30451,63000,0,0,0,0,0,64,0),
+(200008,32796,120000,0,0,0,0,0,70,0),
+(200008,38704,100000,0,0,0,0,0,70,0),
+(200008,27132,3900,0,0,0,0,0,66,0),
+(200008,27070,78000,0,0,0,0,0,66,0),
+(200008,42841,150000,0,0,0,0,0,75,0),
+(200008,12525,1400,0,0,0,0,0,48,0),
+(200008,42931,150000,0,0,0,0,0,79,0),
+(200008,13021,2100,0,0,0,0,0,60,0),
+(200008,12826,42000,0,0,0,0,0,60,0),
+(200008,10225,42000,0,0,0,0,0,60,0),
+(200008,10220,42000,0,0,0,0,0,60,0),
+(200008,10193,42000,0,0,0,0,0,60,0),
+(200008,10187,42000,0,0,0,0,0,60,0),
+(200008,10174,42000,0,0,0,0,0,60,0),
+(200008,10151,42000,0,0,0,0,0,60,0),
+(200008,10140,42000,0,0,0,0,0,60,0),
+(200008,42913,150000,0,0,0,0,0,72,0),
+(200008,10192,35000,0,0,0,0,0,52,0),
+(200008,42842,150000,0,0,0,0,0,79,0),
+(200008,43045,150000,0,0,0,0,0,71,0),
+(200008,33938,7500,0,0,0,0,0,70,0),
+(200008,38697,150000,0,0,0,0,0,70,0),
+(200008,42896,150000,0,0,0,0,0,76,0),
+(200008,10215,28000,0,0,0,0,0,48,0),
+(200008,42926,150000,0,0,0,0,0,79,0),
+(200008,8450,4000,0,0,0,0,0,24,0),
+(200008,10159,18000,0,0,0,0,0,42,0),
+(200008,33944,100000,0,0,0,0,0,67,0),
+(200008,42995,150000,0,0,0,0,0,80,0),
+(200008,42949,7500,0,0,0,0,0,75,0),
+(200008,45438,8000,0,0,0,0,0,30,0),
+(200008,42944,7500,0,0,0,0,0,75,0),
+(200008,42955,150000,0,0,0,0,0,75,0),
+(200008,6141,7000,0,0,0,0,0,28,0),
+(200008,118,200,0,0,0,0,0,8,0),
+(200008,759,7000,0,0,0,0,0,28,0),
+(200008,1463,2000,0,0,0,0,0,20,0),
+(200008,122,400,0,0,0,0,0,10,0),
+(200008,8438,8000,0,0,0,0,0,30,0),
+(200008,8444,7000,0,0,0,0,0,28,0),
+(200008,8401,8000,0,0,0,0,0,30,0),
+(200008,7302,8000,0,0,0,0,0,30,0),
+(200008,8412,8000,0,0,0,0,0,30,0),
+(200008,12522,400,0,0,0,0,0,30,0),
+(200008,120,5000,0,0,0,0,0,26,0),
+(200008,12505,100,0,0,0,0,0,24,0),
+(200008,10145,35000,0,0,0,0,0,52,0),
+(200008,42891,7500,0,0,0,0,0,77,0),
+(200008,43020,150000,0,0,0,0,0,79,0),
+(200008,42921,150000,0,0,0,0,0,80,0),
+(200008,42897,150000,0,0,0,0,0,80,0),
+(200008,27127,100000,0,0,0,0,0,70,0),
+(200008,43008,150000,0,0,0,0,0,79,0),
+(200008,58659,150000,0,0,0,0,0,80,0),
+(200008,38699,87000,0,0,0,0,0,69,0),
+(200008,10161,40000,0,0,0,0,0,58,0),
+(200008,10054,40000,0,0,0,0,0,58,0),
+(200008,33041,1900,0,0,0,0,0,56,0),
+(200008,28612,42000,0,0,0,0,0,60,0),
+(200008,27128,110000,0,0,0,0,0,69,0),
+(200008,27125,110000,0,0,0,0,0,69,0),
+(200008,13019,1148,0,0,0,0,0,44,0),
+(200008,10170,36000,0,0,0,0,0,54,0),
+(200008,10177,35000,0,0,0,0,0,52,0),
+(200008,55360,7500,0,0,0,0,0,80,0),
+(200008,12526,1800,0,0,0,0,0,54,0),
+(200008,42894,150000,0,0,0,0,0,71,0),
+(200008,10219,32000,0,0,0,0,0,50,0),
+(200008,10223,32000,0,0,0,0,0,50,0),
+(200008,42939,150000,0,0,0,0,0,74,0),
+(200008,42872,150000,0,0,0,0,0,74,0),
+(200008,43019,150000,0,0,0,0,0,73,0),
+(200008,10180,32000,0,0,0,0,0,50,0),
+(200008,42985,150000,0,0,0,0,0,77,0),
+(200008,42859,150000,0,0,0,0,0,78,0),
+(200008,42833,150000,0,0,0,0,0,78,0),
+(200008,22783,40000,0,0,0,0,0,58,0),
+(200008,13033,2000,0,0,0,0,0,58,0),
+(200008,10207,40000,0,0,0,0,0,58,0),
+(200008,30482,51000,0,0,0,0,0,62,0),
+(200008,27080,51000,0,0,0,0,0,62,0),
+(200008,43024,150000,0,0,0,0,0,79,0),
+(200008,12524,900,0,0,0,0,0,42,0),
+(200008,8408,14000,0,0,0,0,0,38,0),
+(200008,8417,15000,0,0,0,0,0,40,0),
+(200008,30455,78000,0,0,0,0,0,66,0),
+(200008,10144,18000,0,0,0,0,0,42,0),
+(200008,10138,15000,0,0,0,0,0,40,0),
+(200008,8462,18000,0,0,0,0,0,42,0),
+(200008,8446,15000,0,0,0,0,0,40,0),
+(200008,8413,14000,0,0,0,0,0,38,0),
+(200008,8423,15000,0,0,0,0,0,40,0),
+(200008,10191,23000,0,0,0,0,0,44,0),
+(200008,12523,650,0,0,0,0,0,36,0),
+(200008,8439,14000,0,0,0,0,0,38,0),
+(200008,8455,8000,0,0,0,0,0,30,0),
+(200008,27086,63000,0,0,0,0,0,64,0),
+(200008,27130,57000,0,0,0,0,0,63,0),
+(200008,6131,15000,0,0,0,0,0,40,0),
+(200008,990,3000,0,0,0,0,0,22,0),
+(200008,475,1800,0,0,0,0,0,18,0),
+(200008,5144,1500,0,0,0,0,0,16,0),
+(200008,8494,7000,0,0,0,0,0,28,0),
+(200008,2139,4000,0,0,0,0,0,24,0),
+(200008,2121,4000,0,0,0,0,0,24,0),
+(200008,27126,120000,0,0,0,0,0,70,0),
+(200008,27090,150000,0,0,0,0,0,70,0),
+(200008,27082,120000,0,0,0,0,0,70,0),
+(200008,47610,150000,0,0,0,0,0,80,0),
+(200008,27085,96000,0,0,0,0,0,68,0),
+(200008,13032,1748,0,0,0,0,0,52,0),
+(200008,44614,150000,0,0,0,0,0,75,0),
+(200008,37420,70000,0,0,0,0,0,65,0),
+(200008,27088,87000,0,0,0,0,0,67,0),
+(200008,7301,2000,0,0,0,0,0,20,0),
+(200008,5506,2000,0,0,0,0,0,20,0),
+(200008,1953,2000,0,0,0,0,0,20,0),
+(200008,10149,28000,0,0,0,0,0,48,0),
+(200008,10197,26000,0,0,0,0,0,46,0),
+(200008,7320,15000,0,0,0,0,0,40,0),
+(200008,5145,4000,0,0,0,0,0,24,0),
+(200008,10179,23000,0,0,0,0,0,44,0),
+(200008,10169,18000,0,0,0,0,0,42,0),
+(200008,42925,150000,0,0,0,0,0,72,0),
+(200008,42890,7500,0,0,0,0,0,73,0),
+(200008,43015,150000,0,0,0,0,0,76,0),
+(200008,43012,150000,0,0,0,0,0,79,0),
+(200008,43046,150000,0,0,0,0,0,79,0),
+(200008,42930,150000,0,0,0,0,0,72,0),
+(200009,1454,100,0,0,0,0,0,6,0),
+(200009,695,100,0,0,0,0,0,6,0),
+(200009,702,100,0,0,0,0,0,4,0),
+(200009,172,100,0,0,0,0,0,4,0),
+(200009,348,10,0,0,0,0,0,3,0),
+(200009,688,100,0,0,0,0,0,1,0),
+(200010,47859,160000,0,0,0,0,0,73,0),
+(200010,47864,160000,0,0,0,0,0,79,0),
+(200010,47892,160000,0,0,0,0,0,74,0),
+(200010,47837,100000,0,0,0,0,0,74,0),
+(200010,47814,160000,0,0,0,0,0,74,0),
+(200010,47847,8000,0,0,0,0,0,80,0),
+(200010,47871,160000,0,0,0,0,0,73,0),
+(200010,47863,160000,0,0,0,0,0,73,0),
+(200010,61191,70000,0,0,0,0,0,72,0),
+(200010,47890,160000,0,0,0,0,0,72,0),
+(200010,47888,160000,0,0,0,0,0,78,0),
+(200010,47865,160000,0,0,0,0,0,78,0),
+(200010,61290,10000,0,0,0,0,0,80,0),
+(200010,47811,160000,0,0,0,0,0,80,0),
+(200010,47893,160000,0,0,0,0,0,79,0),
+(200010,47878,160000,0,0,0,0,0,79,0),
+(200010,48018,160000,0,0,0,0,0,80,0),
+(200010,47812,160000,0,0,0,0,0,71,0),
+(200010,27238,78000,0,0,0,0,0,70,0),
+(200010,60220,160000,0,0,0,0,0,80,0),
+(200010,59172,8000,0,0,0,0,0,80,0),
+(200010,47808,160000,0,0,0,0,0,74,0),
+(200010,47815,160000,0,0,0,0,0,79,0),
+(200010,47809,160000,0,0,0,0,0,79,0),
+(200010,47891,160000,0,0,0,0,0,78,0),
+(200010,59161,2500,0,0,0,0,0,70,0),
+(200010,30910,78000,0,0,0,0,0,70,0),
+(200010,30546,3900,0,0,0,0,0,70,0),
+(200010,30545,78000,0,0,0,0,0,70,0),
+(200010,32231,78000,0,0,0,0,0,70,0),
+(200010,30459,78000,0,0,0,0,0,70,0),
+(200010,30414,2500,0,0,0,0,0,70,0),
+(200010,30405,2500,0,0,0,0,0,70,0),
+(200010,27265,1300,0,0,0,0,0,70,0),
+(200010,27260,78000,0,0,0,0,0,70,0),
+(200010,50511,160000,0,0,0,0,0,71,0),
+(200010,47886,160000,0,0,0,0,0,72,0),
+(200010,47819,160000,0,0,0,0,0,72,0),
+(200010,47846,8000,0,0,0,0,0,75,0),
+(200010,60219,160000,0,0,0,0,0,74,0),
+(200010,47884,160000,0,0,0,0,0,76,0),
+(200010,47856,160000,0,0,0,0,0,76,0),
+(200010,59163,8000,0,0,0,0,0,75,0),
+(200010,47897,10000,0,0,0,0,0,75,0),
+(200010,47836,160000,0,0,0,0,0,80,0),
+(200010,47825,160000,0,0,0,0,0,80,0),
+(200010,47889,160000,0,0,0,0,0,80,0),
+(200010,47867,160000,0,0,0,0,0,80,0),
+(200010,47827,8000,0,0,0,0,0,80,0),
+(200010,27243,78000,0,0,0,0,0,70,0),
+(200010,47843,8000,0,0,0,0,0,80,0),
+(200010,47838,100000,0,0,0,0,0,80,0),
+(200010,47820,160000,0,0,0,0,0,79,0),
+(200010,47793,160000,0,0,0,0,0,76,0),
+(200010,59171,8000,0,0,0,0,0,75,0),
+(200010,47824,160000,0,0,0,0,0,75,0),
+(200010,47810,160000,0,0,0,0,0,75,0),
+(200010,47860,160000,0,0,0,0,0,78,0),
+(200010,47857,160000,0,0,0,0,0,78,0),
+(200010,47823,160000,0,0,0,0,0,78,0),
+(200010,47855,160000,0,0,0,0,0,77,0),
+(200010,47813,160000,0,0,0,0,0,77,0),
+(200010,47841,8000,0,0,0,0,0,75,0),
+(200010,47835,160000,0,0,0,0,0,75,0),
+(200010,47826,8000,0,0,0,0,0,75,0),
+(200010,59164,8000,0,0,0,0,0,80,0),
+(200010,59092,160000,0,0,0,0,0,80,0),
+(200010,48020,160000,0,0,0,0,0,80,0),
+(200010,57946,160000,0,0,0,0,0,80,0),
+(200010,59170,2500,0,0,0,0,0,70,0),
+(200010,58887,160000,0,0,0,0,0,80,0),
+(200010,30909,70000,0,0,0,0,0,69,0),
+(200010,28189,70000,0,0,0,0,0,69,0),
+(200010,27228,70000,0,0,0,0,0,69,0),
+(200010,27220,70000,0,0,0,0,0,69,0),
+(200010,27215,70000,0,0,0,0,0,69,0),
+(200010,27212,70000,0,0,0,0,0,69,0),
+(200010,27209,70000,0,0,0,0,0,69,0),
+(200010,29893,63000,0,0,0,0,0,68,0),
+(200010,27230,63000,0,0,0,0,0,68,0),
+(200010,27223,63000,0,0,0,0,0,68,0),
+(200010,27222,56700,0,0,0,0,0,68,0),
+(200010,27213,63000,0,0,0,0,0,68,0),
+(200010,27259,57000,0,0,0,0,0,67,0),
+(200010,27218,57000,0,0,0,0,0,67,0),
+(200010,27217,57000,0,0,0,0,0,67,0),
+(200010,29858,51000,0,0,0,0,0,66,0),
+(200010,28172,51000,0,0,0,0,0,66,0),
+(200010,27250,51000,0,0,0,0,0,66,0),
+(200010,27216,46000,0,0,0,0,0,65,0),
+(200010,27210,46000,0,0,0,0,0,65,0),
+(200010,29722,42000,0,0,0,0,0,64,0),
+(200010,27211,42000,0,0,0,0,0,64,0),
+(200010,27263,1300,0,0,0,0,0,63,0),
+(200010,28176,34000,0,0,0,0,0,62,0),
+(200010,27219,30000,0,0,0,0,0,62,0),
+(200010,25307,26000,0,0,0,0,0,62,0),
+(200010,27224,30000,0,0,0,0,0,61,0),
+(200010,30413,2500,0,0,0,0,0,60,0),
+(200010,30404,2500,0,0,0,0,0,60,0),
+(200010,28610,34000,0,0,0,0,0,60,0),
+(200010,25311,26000,0,0,0,0,0,60,0),
+(200010,25309,26000,0,0,0,0,0,60,0),
+(200010,20757,26000,0,0,0,0,0,60,0),
+(200010,18938,1300,0,0,0,0,0,60,0),
+(200010,17728,26000,0,0,0,0,0,60,0),
+(200010,11735,26000,0,0,0,0,0,60,0),
+(200010,11722,26000,0,0,0,0,0,60,0),
+(200010,11695,26000,0,0,0,0,0,60,0),
+(200010,11668,26000,0,0,0,0,0,60,0),
+(200010,11661,26000,0,0,0,0,0,60,0),
+(200010,603,26000,0,0,0,0,0,60,0),
+(200010,17926,24000,0,0,0,0,0,58,0),
+(200010,17923,24000,0,0,0,0,0,58,0),
+(200010,11730,24000,0,0,0,0,0,58,0),
+(200010,11726,24000,0,0,0,0,0,58,0),
+(200010,11713,24000,0,0,0,0,0,58,0),
+(200010,11678,24000,0,0,0,0,0,58,0),
+(200010,18871,1100,0,0,0,0,0,56,0),
+(200010,17953,22000,0,0,0,0,0,56,0),
+(200010,17924,22000,0,0,0,0,0,56,0),
+(200010,11689,19800,0,0,0,0,0,56,0),
+(200010,6215,22000,0,0,0,0,0,56,0),
+(200010,17928,20000,0,0,0,0,0,54,0),
+(200010,11700,20000,0,0,0,0,0,54,0),
+(200010,11684,20000,0,0,0,0,0,54,0),
+(200010,11672,20000,0,0,0,0,0,54,0),
+(200010,11740,18000,0,0,0,0,0,52,0),
+(200010,11708,18000,0,0,0,0,0,52,0),
+(200010,11694,18000,0,0,0,0,0,52,0),
+(200010,11675,18000,0,0,0,0,0,52,0),
+(200010,11660,18000,0,0,0,0,0,52,0),
+(200010,20756,15000,0,0,0,0,0,50,0),
+(200010,18937,748,0,0,0,0,0,50,0),
+(200010,17925,15000,0,0,0,0,0,50,0),
+(200010,17922,15000,0,0,0,0,0,50,0),
+(200010,11734,15000,0,0,0,0,0,50,0),
+(200010,11719,15000,0,0,0,0,0,50,0),
+(200010,11667,15000,0,0,0,0,0,50,0),
+(200010,18870,700,0,0,0,0,0,48,0),
+(200010,18647,14000,0,0,0,0,0,48,0),
+(200010,17727,14000,0,0,0,0,0,48,0),
+(200010,11712,14000,0,0,0,0,0,48,0),
+(200010,6353,14000,0,0,0,0,0,48,0),
+(200010,17952,13000,0,0,0,0,0,46,0),
+(200010,11729,13000,0,0,0,0,0,46,0),
+(200010,11721,13000,0,0,0,0,0,46,0),
+(200010,11699,13000,0,0,0,0,0,46,0),
+(200010,11688,11700,0,0,0,0,0,46,0),
+(200010,11677,13000,0,0,0,0,0,46,0),
+(200010,11725,12000,0,0,0,0,0,44,0),
+(200010,11693,12000,0,0,0,0,0,44,0),
+(200010,11671,12000,0,0,0,0,0,44,0),
+(200010,11659,12000,0,0,0,0,0,44,0),
+(200010,17921,11000,0,0,0,0,0,42,0),
+(200010,11739,11000,0,0,0,0,0,42,0),
+(200010,11707,11000,0,0,0,0,0,42,0),
+(200010,11683,11000,0,0,0,0,0,42,0),
+(200010,6789,11000,0,0,0,0,0,42,0),
+(200010,23161,100000,0,0,0,0,0,40,0),
+(200010,20755,11000,0,0,0,0,0,40,0),
+(200010,18869,548,0,0,0,0,0,40,0),
+(200010,11733,11000,0,0,0,0,0,40,0),
+(200010,11665,11000,0,0,0,0,0,40,0),
+(200010,5484,11000,0,0,0,0,0,40,0),
+(200010,11711,10000,0,0,0,0,0,38,0),
+(200010,8289,10000,0,0,0,0,0,38,0),
+(200010,7651,10000,0,0,0,0,0,38,0),
+(200010,17951,9000,0,0,0,0,0,36,0),
+(200010,11687,8100,0,0,0,0,0,36,0),
+(200010,7641,9000,0,0,0,0,0,36,0),
+(200010,3700,9000,0,0,0,0,0,36,0),
+(200010,2362,9000,0,0,0,0,0,36,0),
+(200010,17920,8000,0,0,0,0,0,34,0),
+(200010,7648,8000,0,0,0,0,0,34,0),
+(200010,6219,8000,0,0,0,0,0,34,0),
+(200010,5699,8000,0,0,0,0,0,34,0),
+(200010,18868,348,0,0,0,0,0,32,0),
+(200010,7646,7000,0,0,0,0,0,32,0),
+(200010,6229,7000,0,0,0,0,0,32,0),
+(200010,6213,7000,0,0,0,0,0,32,0),
+(200010,1490,7000,0,0,0,0,0,32,0),
+(200010,20752,6000,0,0,0,0,0,30,0),
+(200010,2941,6000,0,0,0,0,0,30,0),
+(200010,1949,6000,0,0,0,0,0,30,0),
+(200010,1098,6000,0,0,0,0,0,30,0),
+(200010,1086,6000,0,0,0,0,0,30,0),
+(200010,709,6000,0,0,0,0,0,30,0),
+(200010,6366,5000,0,0,0,0,0,28,0),
+(200010,6217,5000,0,0,0,0,0,28,0),
+(200010,3699,5000,0,0,0,0,0,28,0),
+(200010,1106,5000,0,0,0,0,0,28,0),
+(200010,710,5000,0,0,0,0,0,28,0),
+(200010,17919,4000,0,0,0,0,0,26,0),
+(200010,1714,4000,0,0,0,0,0,26,0),
+(200010,1456,3600,0,0,0,0,0,26,0),
+(200010,132,4000,0,0,0,0,0,26,0),
+(200010,18867,148,0,0,0,0,0,24,0),
+(200010,8288,3000,0,0,0,0,0,24,0),
+(200010,6223,3000,0,0,0,0,0,24,0),
+(200010,5500,3000,0,0,0,0,0,24,0),
+(200010,5138,3000,0,0,0,0,0,24,0),
+(200010,6205,2500,0,0,0,0,0,22,0),
+(200010,6202,2500,0,0,0,0,0,22,0),
+(200010,699,2500,0,0,0,0,0,22,0),
+(200010,126,2500,0,0,0,0,0,22,0),
+(200010,5740,2000,0,0,0,0,0,20,0),
+(200010,3698,2000,0,0,0,0,0,20,0),
+(200010,1710,10000,0,0,0,0,0,20,0),
+(200010,1094,2000,0,0,0,0,0,20,0),
+(200010,1088,2000,0,0,0,0,0,20,0),
+(200010,706,2000,0,0,0,0,0,20,0),
+(200010,698,2000,0,0,0,0,0,20,0),
+(200010,5676,1500,0,0,0,0,0,18,0),
+(200010,1014,1500,0,0,0,0,0,18,0),
+(200010,693,1500,0,0,0,0,0,18,0),
+(200010,5697,1200,0,0,0,0,0,16,0),
+(200010,1455,1080,0,0,0,0,0,16,0),
+(200010,6222,900,0,0,0,0,0,14,0),
+(200010,689,900,0,0,0,0,0,14,0),
+(200010,1108,600,0,0,0,0,0,12,0),
+(200010,755,600,0,0,0,0,0,12,0),
+(200010,705,600,0,0,0,0,0,12,0),
+(200010,6201,300,0,0,0,0,0,10,0),
+(200010,1120,300,0,0,0,0,0,10,0),
+(200010,707,300,0,0,0,0,0,10,0),
+(200010,696,300,0,0,0,0,0,10,0),
+(200010,5782,200,0,0,0,0,0,8,0),
+(200010,980,200,0,0,0,0,0,8,0),
+(200011,591,100,0,0,0,0,0,6,0),
+(200011,17,100,0,0,0,0,0,6,0),
+(200011,2052,100,0,0,0,0,0,4,0),
+(200011,589,100,0,0,0,0,0,4,0),
+(200011,1243,10,0,0,0,0,0,1,0),
+(200012,64901,65000,0,0,0,0,0,80,0),
+(200012,64843,180000,0,0,0,0,0,80,0),
+(200012,53023,100000,0,0,0,0,0,80,0),
+(200012,53007,9000,0,0,0,0,0,80,0),
+(200012,48173,9000,0,0,0,0,0,80,0),
+(200012,48162,180000,0,0,0,0,0,80,0),
+(200012,48161,180000,0,0,0,0,0,80,0),
+(200012,48160,9000,0,0,0,0,0,80,0),
+(200012,48158,180000,0,0,0,0,0,80,0),
+(200012,48156,9000,0,0,0,0,0,80,0),
+(200012,48125,180000,0,0,0,0,0,80,0),
+(200012,48089,9000,0,0,0,0,0,80,0),
+(200012,48087,9000,0,0,0,0,0,80,0),
+(200012,48078,180000,0,0,0,0,0,80,0),
+(200012,48074,9000,0,0,0,0,0,80,0),
+(200012,48073,9000,0,0,0,0,0,80,0),
+(200012,48068,180000,0,0,0,0,0,80,0),
+(200012,48066,180000,0,0,0,0,0,80,0),
+(200012,48300,180000,0,0,0,0,0,79,0),
+(200012,48127,180000,0,0,0,0,0,79,0),
+(200012,48123,180000,0,0,0,0,0,79,0),
+(200012,48113,180000,0,0,0,0,0,79,0),
+(200012,48071,180000,0,0,0,0,0,79,0),
+(200012,48171,180000,0,0,0,0,0,78,0),
+(200012,48135,180000,0,0,0,0,0,78,0),
+(200012,48120,180000,0,0,0,0,0,78,0),
+(200012,48063,180000,0,0,0,0,0,78,0),
+(200012,48170,180000,0,0,0,0,0,77,0),
+(200012,48168,180000,0,0,0,0,0,77,0),
+(200012,48169,180000,0,0,0,0,0,76,0),
+(200012,48072,180000,0,0,0,0,0,76,0),
+(200012,53006,9000,0,0,0,0,0,75,0),
+(200012,48159,9000,0,0,0,0,0,75,0),
+(200012,48157,180000,0,0,0,0,0,75,0),
+(200012,48124,180000,0,0,0,0,0,75,0),
+(200012,48088,9000,0,0,0,0,0,75,0),
+(200012,48086,9000,0,0,0,0,0,75,0),
+(200012,48077,180000,0,0,0,0,0,75,0),
+(200012,48067,180000,0,0,0,0,0,75,0),
+(200012,48065,180000,0,0,0,0,0,75,0),
+(200012,48045,10000,0,0,0,0,0,75,0),
+(200012,48155,9000,0,0,0,0,0,74,0),
+(200012,48126,180000,0,0,0,0,0,74,0),
+(200012,48122,180000,0,0,0,0,0,74,0),
+(200012,48112,100000,0,0,0,0,0,74,0),
+(200012,48299,180000,0,0,0,0,0,73,0),
+(200012,48172,3250,0,0,0,0,0,73,0),
+(200012,48070,180000,0,0,0,0,0,73,0),
+(200012,48062,180000,0,0,0,0,0,73,0),
+(200012,48134,180000,0,0,0,0,0,72,0),
+(200012,48119,180000,0,0,0,0,0,72,0),
+(200012,48040,180000,0,0,0,0,0,71,0),
+(200012,53005,5000,0,0,0,0,0,70,0),
+(200012,39374,100000,0,0,0,0,0,70,0),
+(200012,34917,2300,0,0,0,0,0,70,0),
+(200012,34866,7000,0,0,0,0,0,70,0),
+(200012,32999,3400,0,0,0,0,0,70,0),
+(200012,32996,110000,0,0,0,0,0,70,0),
+(200012,32375,110000,0,0,0,0,0,70,0),
+(200012,28275,1500,0,0,0,0,0,70,0),
+(200012,25392,100000,0,0,0,0,0,70,0),
+(200012,25389,65000,0,0,0,0,0,70,0),
+(200012,25368,140000,0,0,0,0,0,70,0),
+(200012,25312,2300,0,0,0,0,0,70,0),
+(200012,25222,140000,0,0,0,0,0,70,0),
+(200012,25218,140000,0,0,0,0,0,70,0),
+(200012,25431,65000,0,0,0,0,0,69,0),
+(200012,25375,65000,0,0,0,0,0,69,0),
+(200012,25364,65000,0,0,0,0,0,69,0),
+(200012,33076,110000,0,0,0,0,0,68,0),
+(200012,25467,110000,0,0,0,0,0,68,0),
+(200012,25435,110000,0,0,0,0,0,68,0),
+(200012,25433,110000,0,0,0,0,0,68,0),
+(200012,25387,6500,0,0,0,0,0,68,0),
+(200012,25331,110000,0,0,0,0,0,68,0),
+(200012,25308,110000,0,0,0,0,0,68,0),
+(200012,25213,110000,0,0,0,0,0,68,0),
+(200012,25235,99000,0,0,0,0,0,67,0),
+(200012,34433,89000,0,0,0,0,0,66,0),
+(200012,25437,2200,0,0,0,0,0,66,0),
+(200012,25384,65000,0,0,0,0,0,66,0),
+(200012,34865,4000,0,0,0,0,0,65,0),
+(200012,25367,80000,0,0,0,0,0,65,0),
+(200012,25221,80000,0,0,0,0,0,65,0),
+(200012,25217,80000,0,0,0,0,0,65,0),
+(200012,32546,72000,0,0,0,0,0,64,0),
+(200012,25372,65000,0,0,0,0,0,63,0),
+(200012,25210,65000,0,0,0,0,0,63,0),
+(200012,32379,59000,0,0,0,0,0,62,0),
+(200012,25363,53000,0,0,0,0,0,61,0),
+(200012,25233,53000,0,0,0,0,0,61,0),
+(200012,34916,2300,0,0,0,0,0,60,0),
+(200012,34864,2300,0,0,0,0,0,60,0),
+(200012,27871,1500,0,0,0,0,0,60,0),
+(200012,27841,2300,0,0,0,0,0,60,0),
+(200012,27801,46000,0,0,0,0,0,60,0),
+(200012,27681,2300,0,0,0,0,0,60,0),
+(200012,25316,6500,0,0,0,0,0,60,0),
+(200012,25315,6500,0,0,0,0,0,60,0),
+(200012,25314,65000,0,0,0,0,0,60,0),
+(200012,21564,46000,0,0,0,0,0,60,0),
+(200012,19280,46000,0,0,0,0,0,60,0),
+(200012,18807,2300,0,0,0,0,0,60,0),
+(200012,15261,46000,0,0,0,0,0,60,0),
+(200012,10961,46000,0,0,0,0,0,60,0),
+(200012,10955,46000,0,0,0,0,0,60,0),
+(200012,10952,46000,0,0,0,0,0,60,0),
+(200012,10938,46000,0,0,0,0,0,60,0),
+(200012,10901,46000,0,0,0,0,0,60,0),
+(200012,20770,44000,0,0,0,0,0,58,0),
+(200012,19243,1500,0,0,0,0,0,58,0),
+(200012,10965,44000,0,0,0,0,0,58,0),
+(200012,10947,44000,0,0,0,0,0,58,0),
+(200012,10894,44000,0,0,0,0,0,58,0),
+(200012,34863,2100,0,0,0,0,0,56,0),
+(200012,27683,42000,0,0,0,0,0,56,0),
+(200012,10958,42000,0,0,0,0,0,56,0),
+(200012,10929,42000,0,0,0,0,0,56,0),
+(200012,10917,42000,0,0,0,0,0,56,0),
+(200012,10890,42000,0,0,0,0,0,56,0),
+(200012,15267,40000,0,0,0,0,0,54,0),
+(200012,10934,40000,0,0,0,0,0,54,0),
+(200012,10900,40000,0,0,0,0,0,54,0),
+(200012,27800,38000,0,0,0,0,0,52,0),
+(200012,19279,38000,0,0,0,0,0,52,0),
+(200012,17314,1900,0,0,0,0,0,52,0),
+(200012,10964,38000,0,0,0,0,0,52,0),
+(200012,10946,38000,0,0,0,0,0,52,0),
+(200012,27870,1200,0,0,0,0,0,50,0),
+(200012,19242,1100,0,0,0,0,0,50,0),
+(200012,14819,1500,0,0,0,0,0,50,0),
+(200012,10960,30000,0,0,0,0,0,50,0),
+(200012,10951,30000,0,0,0,0,0,50,0),
+(200012,10928,30000,0,0,0,0,0,50,0),
+(200012,10916,30000,0,0,0,0,0,50,0),
+(200012,10893,30000,0,0,0,0,0,50,0),
+(200012,21562,28000,0,0,0,0,0,48,0),
+(200012,15266,28000,0,0,0,0,0,48,0),
+(200012,10937,28000,0,0,0,0,0,48,0),
+(200012,10899,28000,0,0,0,0,0,48,0),
+(200012,10963,26000,0,0,0,0,0,46,0),
+(200012,10945,26000,0,0,0,0,0,46,0),
+(200012,10933,26000,0,0,0,0,0,46,0),
+(200012,10881,26000,0,0,0,0,0,46,0),
+(200012,27799,24000,0,0,0,0,0,44,0),
+(200012,19278,24000,0,0,0,0,0,44,0),
+(200012,17313,1200,0,0,0,0,0,44,0),
+(200012,10927,24000,0,0,0,0,0,44,0),
+(200012,10915,24000,0,0,0,0,0,44,0),
+(200012,10909,24000,0,0,0,0,0,44,0),
+(200012,19241,600,0,0,0,0,0,42,0),
+(200012,15265,22000,0,0,0,0,0,42,0),
+(200012,10957,22000,0,0,0,0,0,42,0),
+(200012,10898,22000,0,0,0,0,0,42,0),
+(200012,10892,22000,0,0,0,0,0,42,0),
+(200012,10888,22000,0,0,0,0,0,42,0),
+(200012,14818,900,0,0,0,0,0,40,0),
+(200012,9485,18000,0,0,0,0,0,40,0),
+(200012,8106,18000,0,0,0,0,0,40,0),
+(200012,2060,18000,0,0,0,0,0,40,0),
+(200012,1006,18000,0,0,0,0,0,40,0),
+(200012,996,18000,0,0,0,0,0,40,0),
+(200012,9474,16000,0,0,0,0,0,38,0),
+(200012,6078,16000,0,0,0,0,0,38,0),
+(200012,6060,16000,0,0,0,0,0,38,0),
+(200012,19277,14000,0,0,0,0,0,36,0),
+(200012,17312,700,0,0,0,0,0,36,0),
+(200012,15431,14000,0,0,0,0,0,36,0),
+(200012,15264,14000,0,0,0,0,0,36,0),
+(200012,6066,14000,0,0,0,0,0,36,0),
+(200012,2791,14000,0,0,0,0,0,36,0),
+(200012,988,14000,0,0,0,0,0,36,0),
+(200012,19240,300,0,0,0,0,0,34,0),
+(200012,10880,12000,0,0,0,0,0,34,0),
+(200012,8105,12000,0,0,0,0,0,34,0),
+(200012,6064,12000,0,0,0,0,0,34,0),
+(200012,2767,12000,0,0,0,0,0,34,0),
+(200012,1706,12000,0,0,0,0,0,34,0),
+(200012,9473,11000,0,0,0,0,0,32,0),
+(200012,6077,11000,0,0,0,0,0,32,0),
+(200012,552,11000,0,0,0,0,0,32,0),
+(200012,15263,10000,0,0,0,0,0,30,0),
+(200012,14752,600,0,0,0,0,0,30,0),
+(200012,6065,10000,0,0,0,0,0,30,0),
+(200012,1004,10000,0,0,0,0,0,30,0),
+(200012,976,10000,0,0,0,0,0,30,0),
+(200012,605,10000,0,0,0,0,0,30,0),
+(200012,602,10000,0,0,0,0,0,30,0),
+(200012,596,10000,0,0,0,0,0,30,0),
+(200012,19276,8000,0,0,0,0,0,28,0),
+(200012,17311,400,0,0,0,0,0,28,0),
+(200012,15430,8000,0,0,0,0,0,28,0),
+(200012,8124,8000,0,0,0,0,0,28,0),
+(200012,8104,8000,0,0,0,0,0,28,0),
+(200012,6063,8000,0,0,0,0,0,28,0),
+(200012,19238,60,0,0,0,0,0,26,0),
+(200012,9472,6000,0,0,0,0,0,26,0),
+(200012,6076,6000,0,0,0,0,0,26,0),
+(200012,992,6000,0,0,0,0,0,26,0),
+(200012,15262,5000,0,0,0,0,0,24,0),
+(200012,8129,5000,0,0,0,0,0,24,0),
+(200012,3747,5000,0,0,0,0,0,24,0),
+(200012,1245,5000,0,0,0,0,0,24,0),
+(200012,8103,4000,0,0,0,0,0,22,0),
+(200012,2096,4000,0,0,0,0,0,22,0),
+(200012,2055,4000,0,0,0,0,0,22,0),
+(200012,2010,4000,0,0,0,0,0,22,0),
+(200012,984,4000,0,0,0,0,0,22,0),
+(200012,15237,3000,0,0,0,0,0,20,0),
+(200012,14914,3000,0,0,0,0,0,20,0),
+(200012,9484,3000,0,0,0,0,0,20,0),
+(200012,7128,3000,0,0,0,0,0,20,0),
+(200012,6346,800,0,0,0,0,0,20,0),
+(200012,6075,3000,0,0,0,0,0,20,0),
+(200012,2944,3000,0,0,0,0,0,20,0),
+(200012,2061,3000,0,0,0,0,0,20,0),
+(200012,453,3000,0,0,0,0,0,20,0),
+(200012,970,2000,0,0,0,0,0,18,0),
+(200012,600,2000,0,0,0,0,0,18,0),
+(200012,527,2000,0,0,0,0,0,18,0),
+(200012,8102,1600,0,0,0,0,0,16,0),
+(200012,2054,1600,0,0,0,0,0,16,0),
+(200012,8122,1200,0,0,0,0,0,14,0),
+(200012,6074,1200,0,0,0,0,0,14,0),
+(200012,598,1200,0,0,0,0,0,14,0),
+(200012,528,1200,0,0,0,0,0,14,0),
+(200012,1244,800,0,0,0,0,0,12,0),
+(200012,592,800,0,0,0,0,0,12,0),
+(200012,588,800,0,0,0,0,0,12,0),
+(200012,8092,300,0,0,0,0,0,10,0),
+(200012,2053,300,0,0,0,0,0,10,0),
+(200012,2006,300,0,0,0,0,0,10,0),
+(200012,594,300,0,0,0,0,0,10,0),
+(200012,586,200,0,0,0,0,0,8,0),
+(200012,139,200,0,0,0,0,0,8,0),
+(200013,3044,100,0,0,0,0,0,6,0),
+(200013,1130,100,0,0,0,0,0,6,0),
+(200013,13163,100,0,0,0,0,0,4,0),
+(200013,1978,100,0,0,0,0,0,4,0),
+(200013,1494,10,0,0,0,0,0,2,0),
+(200014,49047,300000,0,0,0,0,0,74,0),
+(200014,49011,100000,0,0,0,0,0,75,0),
+(200014,61846,300000,0,0,0,0,0,74,0),
+(200014,48989,300000,0,0,0,0,0,74,0),
+(200014,49044,300000,0,0,0,0,0,73,0),
+(200014,53351,300000,0,0,0,0,0,71,0),
+(200014,53271,10000,0,0,0,0,0,75,0),
+(200014,48998,15000,0,0,0,0,0,72,0),
+(200014,49055,300000,0,0,0,0,0,72,0),
+(200014,49000,300000,0,0,0,0,0,73,0),
+(200014,49051,300000,0,0,0,0,0,71,0),
+(200014,49066,300000,0,0,0,0,0,71,0),
+(200014,60192,100000,0,0,0,0,0,80,0),
+(200014,61006,300000,0,0,0,0,0,80,0),
+(200014,60051,400,0,0,0,0,0,70,0),
+(200014,48995,300000,0,0,0,0,0,71,0),
+(200014,60052,400,0,0,0,0,0,75,0),
+(200014,61005,300000,0,0,0,0,0,75,0),
+(200014,49071,300000,0,0,0,0,0,76,0),
+(200014,53338,10000,0,0,0,0,0,76,0),
+(200014,48996,300000,0,0,0,0,0,77,0),
+(200014,49052,300000,0,0,0,0,0,77,0),
+(200014,49067,300000,0,0,0,0,0,77,0),
+(200014,48999,15000,0,0,0,0,0,78,0),
+(200014,49056,300000,0,0,0,0,0,78,0),
+(200014,49001,300000,0,0,0,0,0,79,0),
+(200014,49045,300000,0,0,0,0,0,79,0),
+(200014,48990,300000,0,0,0,0,0,80,0),
+(200014,58431,300000,0,0,0,0,0,74,0),
+(200014,49049,10000,0,0,0,0,0,75,0),
+(200014,61847,300000,0,0,0,0,0,80,0),
+(200014,62757,300000,0,0,0,0,0,80,0),
+(200014,49012,100000,0,0,0,0,0,80,0),
+(200014,49048,300000,0,0,0,0,0,80,0),
+(200014,49050,10000,0,0,0,0,0,80,0),
+(200014,53339,300000,0,0,0,0,0,80,0),
+(200014,60053,100000,0,0,0,0,0,80,0),
+(200014,58434,300000,0,0,0,0,0,80,0),
+(200014,36916,300000,0,0,0,0,0,70,0),
+(200014,34477,190000,0,0,0,0,0,70,0),
+(200014,27068,5000,0,0,0,0,0,70,0),
+(200014,27065,10000,0,0,0,0,0,70,0),
+(200014,27019,170000,0,0,0,0,0,69,0),
+(200014,34600,150000,0,0,0,0,0,68,0),
+(200014,27046,150000,0,0,0,0,0,68,0),
+(200014,27045,150000,0,0,0,0,0,68,0),
+(200014,27044,150000,0,0,0,0,0,68,0),
+(200014,27022,140000,0,0,0,0,0,67,0),
+(200014,27021,140000,0,0,0,0,0,67,0),
+(200014,27016,140000,0,0,0,0,0,67,0),
+(200014,34026,120000,0,0,0,0,0,66,0),
+(200014,27067,2500,0,0,0,0,0,66,0),
+(200014,27023,110000,0,0,0,0,0,65,0),
+(200014,27014,87000,0,0,0,0,0,63,0),
+(200014,34120,70000,0,0,0,0,0,62,0),
+(200014,27025,68000,0,0,0,0,0,61,0),
+(200014,25296,50000,0,0,0,0,0,60,0),
+(200014,25295,50000,0,0,0,0,0,60,0),
+(200014,25294,50000,0,0,0,0,0,60,0),
+(200014,24133,2500,0,0,0,0,0,60,0),
+(200014,20904,2500,0,0,0,0,0,60,0),
+(200014,19801,50000,0,0,0,0,0,60,0),
+(200014,19263,2200,0,0,0,0,0,60,0),
+(200014,14311,50000,0,0,0,0,0,60,0),
+(200014,14287,50000,0,0,0,0,0,60,0),
+(200014,13544,50000,0,0,0,0,0,60,0),
+(200014,14325,48000,0,0,0,0,0,58,0),
+(200014,14322,48000,0,0,0,0,0,58,0),
+(200014,14295,48000,0,0,0,0,0,58,0),
+(200014,14271,48000,0,0,0,0,0,58,0),
+(200014,13555,48000,0,0,0,0,0,58,0),
+(200014,20190,46000,0,0,0,0,0,56,0),
+(200014,14305,46000,0,0,0,0,0,56,0),
+(200014,14266,46000,0,0,0,0,0,56,0),
+(200014,20910,2100,0,0,0,0,0,54,0),
+(200014,14317,42000,0,0,0,0,0,54,0),
+(200014,14290,42000,0,0,0,0,0,54,0),
+(200014,20903,2000,0,0,0,0,0,52,0),
+(200014,14286,40000,0,0,0,0,0,52,0),
+(200014,13543,40000,0,0,0,0,0,52,0),
+(200014,56641,36000,0,0,0,0,0,50,0),
+(200014,24132,1800,0,0,0,0,0,50,0),
+(200014,19879,36000,0,0,0,0,0,50,0),
+(200014,14294,36000,0,0,0,0,0,50,0),
+(200014,13554,36000,0,0,0,0,0,50,0),
+(200014,14321,32000,0,0,0,0,0,48,0),
+(200014,14265,32000,0,0,0,0,0,48,0),
+(200014,20043,28000,0,0,0,0,0,46,0),
+(200014,14327,28000,0,0,0,0,0,46,0),
+(200014,14304,28000,0,0,0,0,0,46,0),
+(200014,20902,1300,0,0,0,0,0,44,0),
+(200014,14316,26000,0,0,0,0,0,44,0),
+(200014,14285,26000,0,0,0,0,0,44,0),
+(200014,14270,26000,0,0,0,0,0,44,0),
+(200014,13542,26000,0,0,0,0,0,44,0),
+(200014,20909,1200,0,0,0,0,0,42,0),
+(200014,14289,24000,0,0,0,0,0,42,0),
+(200014,13553,24000,0,0,0,0,0,42,0),
+(200014,19882,18000,0,0,0,0,0,40,0),
+(200014,14324,18000,0,0,0,0,0,40,0),
+(200014,14310,18000,0,0,0,0,0,40,0),
+(200014,14264,18000,0,0,0,0,0,40,0),
+(200014,13159,18000,0,0,0,0,0,40,0),
+(200014,8737,18000,0,0,0,0,0,40,0),
+(200014,1510,18000,0,0,0,0,0,40,0),
+(200014,14320,16000,0,0,0,0,0,38,0),
+(200014,20901,700,0,0,0,0,0,36,0),
+(200014,14303,14000,0,0,0,0,0,36,0),
+(200014,14284,14000,0,0,0,0,0,36,0),
+(200014,3662,14000,0,0,0,0,0,36,0),
+(200014,3034,14000,0,0,0,0,0,36,0),
+(200014,13813,12000,0,0,0,0,0,34,0),
+(200014,13552,12000,0,0,0,0,0,34,0),
+(200014,19878,10000,0,0,0,0,0,32,0),
+(200014,14263,10000,0,0,0,0,0,32,0),
+(200014,1543,10000,0,0,0,0,0,32,0),
+(200014,14326,8000,0,0,0,0,0,30,0),
+(200014,14288,8000,0,0,0,0,0,30,0),
+(200014,14269,8000,0,0,0,0,0,30,0),
+(200014,13161,8000,0,0,0,0,0,30,0),
+(200014,5384,8000,0,0,0,0,0,30,0),
+(200014,20900,400,0,0,0,0,0,28,0),
+(200014,14319,8000,0,0,0,0,0,28,0),
+(200014,14283,8000,0,0,0,0,0,28,0),
+(200014,13809,8000,0,0,0,0,0,28,0),
+(200014,3661,8000,0,0,0,0,0,28,0),
+(200014,19880,7000,0,0,0,0,0,26,0),
+(200014,14302,7000,0,0,0,0,0,26,0),
+(200014,13551,7000,0,0,0,0,0,26,0),
+(200014,3045,7000,0,0,0,0,0,26,0),
+(200014,19885,7000,0,0,0,0,0,24,0),
+(200014,14262,7000,0,0,0,0,0,24,0),
+(200014,1462,7000,0,0,0,0,0,24,0),
+(200014,14323,6000,0,0,0,0,0,22,0),
+(200014,3043,6000,0,0,0,0,0,22,0),
+(200014,34074,2200,0,0,0,0,0,20,0),
+(200014,14282,2200,0,0,0,0,0,20,0),
+(200014,3111,2200,0,0,0,0,0,20,0),
+(200014,1499,2200,0,0,0,0,0,20,0),
+(200014,781,2200,0,0,0,0,0,20,0),
+(200014,674,2200,0,0,0,0,0,20,0),
+(200014,19884,2000,0,0,0,0,0,18,0),
+(200014,14318,2000,0,0,0,0,0,18,0),
+(200014,13550,2000,0,0,0,0,0,18,0),
+(200014,2643,2000,0,0,0,0,0,18,0),
+(200014,14261,1800,0,0,0,0,0,16,0),
+(200014,13795,1800,0,0,0,0,0,16,0),
+(200014,5118,2200,0,0,0,0,0,16,0),
+(200014,1495,1800,0,0,0,0,0,16,0),
+(200014,6197,1200,0,0,0,0,0,14,0),
+(200014,1513,1200,0,0,0,0,0,14,0),
+(200014,1002,1200,0,0,0,0,0,14,0),
+(200014,20736,600,0,0,0,0,0,12,0),
+(200014,14281,600,0,0,0,0,0,12,0),
+(200014,2974,600,0,0,0,0,0,12,0),
+(200014,136,600,0,0,0,0,0,12,0),
+(200014,19883,400,0,0,0,0,0,10,0),
+(200014,13549,400,0,0,0,0,0,10,0),
+(200014,13165,400,0,0,0,0,0,10,0),
+(200014,14260,200,0,0,0,0,0,8,0),
+(200014,5116,200,0,0,0,0,0,8,0),
+(200014,3127,200,0,0,0,0,0,8,0),
+(200014,63668,1800,0,0,0,0,0,57,0),
+(200014,63669,7000,0,0,0,0,0,63,0),
+(200014,63670,10000,0,0,0,0,0,69,0),
+(200014,63671,10000,0,0,0,0,0,75,0),
+(200014,63672,10000,0,0,0,0,0,80,0),
+(200015,921,100,0,0,0,0,0,4,0),
+(200015,1776,100,0,0,0,0,0,6,0),
+(200015,53,100,0,0,0,0,0,4,0),
+(200015,1784,10,0,0,0,0,0,1,0),
+(200015,1757,100,0,0,0,0,0,6,0),
+(200016,2070,8000,0,0,0,0,0,28,0),
+(200016,1842,10000,0,0,0,0,0,30,0),
+(200016,11274,46000,0,0,0,0,0,52,0),
+(200016,51722,3000,0,0,0,0,0,20,0),
+(200016,1760,10000,0,0,0,0,0,30,0),
+(200016,408,10000,0,0,0,0,0,30,0),
+(200016,8696,14000,0,0,0,0,0,34,0),
+(200016,48667,300000,0,0,0,0,0,73,0),
+(200016,1856,4000,0,0,0,0,0,22,0),
+(200016,48660,15000,0,0,0,0,0,80,0),
+(200016,17348,650,0,0,0,0,0,58,0),
+(200016,26839,50000,0,0,0,0,0,61,0),
+(200016,11279,29000,0,0,0,0,0,44,0),
+(200016,11294,48000,0,0,0,0,0,54,0),
+(200016,1833,6000,0,0,0,0,0,26,0),
+(200016,2094,14000,0,0,0,0,0,34,0),
+(200016,8623,12000,0,0,0,0,0,32,0),
+(200016,34413,7500,0,0,0,0,0,70,0),
+(200016,26867,120000,0,0,0,0,0,68,0),
+(200016,25302,50000,0,0,0,0,0,60,0),
+(200016,48690,300000,0,0,0,0,0,75,0),
+(200016,26889,59000,0,0,0,0,0,62,0),
+(200016,26861,50000,0,0,0,0,0,62,0),
+(200016,8724,6000,0,0,0,0,0,26,0),
+(200016,32684,100000,0,0,0,0,0,69,0),
+(200016,8633,18000,0,0,0,0,0,38,0),
+(200016,48663,15000,0,0,0,0,0,75,0),
+(200016,2836,5000,0,0,0,0,0,24,0),
+(200016,48637,300000,0,0,0,0,0,76,0),
+(200016,48671,300000,0,0,0,0,0,74,0),
+(200016,26863,110000,0,0,0,0,0,68,0),
+(200016,25300,72000,0,0,0,0,0,60,0),
+(200016,34412,6500,0,0,0,0,0,60,0),
+(200016,48668,300000,0,0,0,0,0,79,0),
+(200016,32645,59000,0,0,0,0,0,62,0),
+(200016,57993,300000,0,0,0,0,0,80,0),
+(200016,48675,300000,0,0,0,0,0,75,0),
+(200016,11273,29000,0,0,0,0,0,44,0),
+(200016,11267,27000,0,0,0,0,0,42,0),
+(200016,1857,27000,0,0,0,0,0,42,0),
+(200016,8637,20000,0,0,0,0,0,40,0),
+(200016,11305,52000,0,0,0,0,0,58,0),
+(200016,8624,20000,0,0,0,0,0,40,0),
+(200016,48674,300000,0,0,0,0,0,76,0),
+(200016,5938,100000,0,0,0,0,0,70,0),
+(200016,8643,35000,0,0,0,0,0,50,0),
+(200016,11299,33000,0,0,0,0,0,48,0),
+(200016,11297,33000,0,0,0,0,0,48,0),
+(200016,8640,16000,0,0,0,0,0,36,0),
+(200016,1725,4000,0,0,0,0,0,22,0),
+(200016,1759,4000,0,0,0,0,0,22,0),
+(200016,11281,54000,0,0,0,0,0,60,0),
+(200016,2590,3000,0,0,0,0,0,20,0),
+(200016,1943,3000,0,0,0,0,0,20,0),
+(200016,8725,14000,0,0,0,0,0,34,0),
+(200016,703,1200,0,0,0,0,0,14,0),
+(200016,3127,800,0,0,0,0,0,12,0),
+(200016,2589,800,0,0,0,0,0,12,0),
+(200016,1766,800,0,0,0,0,0,12,0),
+(200016,6770,300,0,0,0,0,0,10,0),
+(200016,5171,300,0,0,0,0,0,10,0),
+(200016,2983,300,0,0,0,0,0,10,0),
+(200016,674,300,0,0,0,0,0,10,0),
+(200016,6760,200,0,0,0,0,0,8,0),
+(200016,11290,48000,0,0,0,0,0,54,0),
+(200016,11300,50000,0,0,0,0,0,56,0),
+(200016,11303,46000,0,0,0,0,0,52,0),
+(200016,11280,46000,0,0,0,0,0,52,0),
+(200016,48659,300000,0,0,0,0,0,78,0),
+(200016,48689,140000,0,0,0,0,0,70,0),
+(200016,51723,300000,0,0,0,0,0,80,0),
+(200016,51724,300000,0,0,0,0,0,71,0),
+(200016,48676,300000,0,0,0,0,0,80,0),
+(200016,26862,100000,0,0,0,0,0,70,0),
+(200016,31016,65000,0,0,0,0,0,60,0),
+(200016,5277,200,0,0,0,0,0,8,0),
+(200016,48666,15000,0,0,0,0,0,80,0),
+(200016,1860,20000,0,0,0,0,0,40,0),
+(200016,6762,5000,0,0,0,0,0,24,0),
+(200016,8631,4000,0,0,0,0,0,22,0),
+(200016,48658,300000,0,0,0,0,0,72,0),
+(200016,48657,300000,0,0,0,0,0,80,0),
+(200016,11275,54000,0,0,0,0,0,60,0),
+(200016,57934,300000,0,0,0,0,0,75,0),
+(200016,48673,100000,0,0,0,0,0,70,0),
+(200016,26864,2700,0,0,0,0,0,70,0),
+(200016,48672,300000,0,0,0,0,0,79,0),
+(200016,48638,300000,0,0,0,0,0,80,0),
+(200016,8639,8000,0,0,0,0,0,28,0),
+(200016,2591,8000,0,0,0,0,0,28,0),
+(200016,6768,8000,0,0,0,0,0,28,0),
+(200016,48656,300000,0,0,0,0,0,74,0),
+(200016,31224,89000,0,0,0,0,0,66,0),
+(200016,57992,300000,0,0,0,0,0,74,0),
+(200016,27441,80000,0,0,0,0,0,66,0),
+(200016,27448,72000,0,0,0,0,0,64,0),
+(200016,26865,140000,0,0,0,0,0,64,0),
+(200016,26679,72000,0,0,0,0,0,64,0),
+(200016,34411,5500,0,0,0,0,0,50,0),
+(200016,26669,35000,0,0,0,0,0,50,0),
+(200016,26884,100000,0,0,0,0,0,70,0),
+(200016,11268,35000,0,0,0,0,0,50,0),
+(200016,6774,27000,0,0,0,0,0,42,0),
+(200016,17347,384,0,0,0,0,0,46,0),
+(200016,11293,31000,0,0,0,0,0,46,0),
+(200016,11289,31000,0,0,0,0,0,46,0),
+(200016,8676,2900,0,0,0,0,0,18,0),
+(200016,1966,1800,0,0,0,0,0,16,0),
+(200016,6761,1800,0,0,0,0,0,16,0),
+(200016,8721,16000,0,0,0,0,0,36,0),
+(200016,8621,18000,0,0,0,0,0,38,0),
+(200016,8632,10000,0,0,0,0,0,30,0),
+(200016,11269,52000,0,0,0,0,0,58,0),
+(200016,48691,300000,0,0,0,0,0,80,0),
+(200016,1804,1800,0,0,0,0,0,16,0),
+(200016,8647,1200,0,0,0,0,0,14,0),
+(200016,1758,1200,0,0,0,0,0,14,0),
+(200017,2484,100,0,0,0,0,0,6,0),
+(200017,332,100,0,0,0,0,0,6,0),
+(200017,8042,100,0,0,0,0,0,4,0),
+(200017,8017,10,0,0,0,0,0,1,0),
+(200018,58652,180000,0,0,0,0,0,75,0),
+(200018,58794,180000,0,0,0,0,0,71,0),
+(200018,58785,180000,0,0,0,0,0,71,0),
+(200018,58771,180000,0,0,0,0,0,71,0),
+(200018,25547,88000,0,0,0,0,0,70,0),
+(200018,25509,88000,0,0,0,0,0,70,0),
+(200018,57721,5200,0,0,0,0,0,70,0),
+(200018,58643,180000,0,0,0,0,0,80,0),
+(200018,25396,88000,0,0,0,0,0,70,0),
+(200018,58741,180000,0,0,0,0,0,75,0),
+(200018,58737,180000,0,0,0,0,0,75,0),
+(200018,58703,180000,0,0,0,0,0,75,0),
+(200018,49283,9000,0,0,0,0,0,75,0),
+(200018,49280,180000,0,0,0,0,0,75,0),
+(200018,25590,79000,0,0,0,0,0,69,0),
+(200018,25457,88000,0,0,0,0,0,70,0),
+(200018,25442,88000,0,0,0,0,0,70,0),
+(200018,51993,71000,0,0,0,0,0,70,0),
+(200018,32594,5000,0,0,0,0,0,70,0),
+(200018,58581,180000,0,0,0,0,0,75,0),
+(200018,57622,180000,0,0,0,0,0,75,0),
+(200018,51505,180000,0,0,0,0,0,75,0),
+(200018,58751,180000,0,0,0,0,0,73,0),
+(200018,58731,180000,0,0,0,0,0,73,0),
+(200018,49237,180000,0,0,0,0,0,73,0),
+(200018,58755,180000,0,0,0,0,0,71,0),
+(200018,58699,180000,0,0,0,0,0,71,0),
+(200018,58649,180000,0,0,0,0,0,71,0),
+(200018,49235,180000,0,0,0,0,0,73,0),
+(200018,49275,180000,0,0,0,0,0,72,0),
+(200018,58801,180000,0,0,0,0,0,71,0),
+(200018,58746,180000,0,0,0,0,0,75,0),
+(200018,58790,180000,0,0,0,0,0,80,0),
+(200018,58774,180000,0,0,0,0,0,80,0),
+(200018,58757,180000,0,0,0,0,0,80,0),
+(200018,59159,180000,0,0,0,0,0,80,0),
+(200018,58804,180000,0,0,0,0,0,80,0),
+(200018,58796,180000,0,0,0,0,0,80,0),
+(200018,58753,180000,0,0,0,0,0,78,0),
+(200018,61301,9000,0,0,0,0,0,80,0),
+(200018,60043,180000,0,0,0,0,0,80,0),
+(200018,49232,180000,0,0,0,0,0,75,0),
+(200018,55458,180000,0,0,0,0,0,74,0),
+(200018,49270,180000,0,0,0,0,0,74,0),
+(200018,49230,180000,0,0,0,0,0,74,0),
+(200018,32182,88000,0,0,0,0,0,70,0),
+(200018,49233,180000,0,0,0,0,0,80,0),
+(200018,49273,180000,0,0,0,0,0,80,0),
+(200018,49238,180000,0,0,0,0,0,79,0),
+(200018,49231,180000,0,0,0,0,0,79,0),
+(200018,57722,10000,0,0,0,0,0,80,0),
+(200018,33736,79000,0,0,0,0,0,69,0),
+(200018,58773,180000,0,0,0,0,0,76,0),
+(200018,57960,180000,0,0,0,0,0,76,0),
+(200018,61649,180000,0,0,0,0,0,75,0),
+(200018,58789,180000,0,0,0,0,0,76,0),
+(200018,61300,9000,0,0,0,0,0,75,0),
+(200018,58580,180000,0,0,0,0,0,71,0),
+(200018,61299,9000,0,0,0,0,0,70,0),
+(200018,59156,88000,0,0,0,0,0,70,0),
+(200018,25472,88000,0,0,0,0,0,70,0),
+(200018,58756,180000,0,0,0,0,0,76,0),
+(200018,49281,180000,0,0,0,0,0,80,0),
+(200018,61657,180000,0,0,0,0,0,80,0),
+(200018,55459,180000,0,0,0,0,0,80,0),
+(200018,51994,180000,0,0,0,0,0,80,0),
+(200018,51514,180000,0,0,0,0,0,80,0),
+(200018,49284,9000,0,0,0,0,0,80,0),
+(200018,25567,79000,0,0,0,0,0,69,0),
+(200018,25533,79000,0,0,0,0,0,69,0),
+(200018,25574,79000,0,0,0,0,0,69,0),
+(200018,49271,180000,0,0,0,0,0,80,0),
+(200018,58734,180000,0,0,0,0,0,78,0),
+(200018,59158,180000,0,0,0,0,0,75,0),
+(200018,58582,180000,0,0,0,0,0,78,0),
+(200018,49236,180000,0,0,0,0,0,78,0),
+(200018,49276,180000,0,0,0,0,0,77,0),
+(200018,58803,180000,0,0,0,0,0,76,0),
+(200018,58795,180000,0,0,0,0,0,76,0),
+(200018,49272,180000,0,0,0,0,0,75,0),
+(200018,58749,180000,0,0,0,0,0,80,0),
+(200018,58745,180000,0,0,0,0,0,80,0),
+(200018,58656,180000,0,0,0,0,0,80,0),
+(200018,58739,180000,0,0,0,0,0,80,0),
+(200018,58704,180000,0,0,0,0,0,80,0),
+(200018,49277,180000,0,0,0,0,0,80,0),
+(200018,25563,71000,0,0,0,0,0,68,0),
+(200018,25464,71000,0,0,0,0,0,68,0),
+(200018,25423,71000,0,0,0,0,0,68,0),
+(200018,2894,71000,0,0,0,0,0,68,0),
+(200018,25560,64000,0,0,0,0,0,67,0),
+(200018,25557,64000,0,0,0,0,0,67,0),
+(200018,25525,64000,0,0,0,0,0,67,0),
+(200018,25449,64000,0,0,0,0,0,67,0),
+(200018,25500,58000,0,0,0,0,0,66,0),
+(200018,25420,58000,0,0,0,0,0,66,0),
+(200018,2062,58000,0,0,0,0,0,66,0),
+(200018,25570,52000,0,0,0,0,0,65,0),
+(200018,25552,52000,0,0,0,0,0,65,0),
+(200018,25528,52000,0,0,0,0,0,65,0),
+(200018,25489,47000,0,0,0,0,0,64,0),
+(200018,3738,47000,0,0,0,0,0,64,0),
+(200018,25508,42000,0,0,0,0,0,63,0),
+(200018,25469,42000,0,0,0,0,0,63,0),
+(200018,25439,42000,0,0,0,0,0,63,0),
+(200018,25391,42000,0,0,0,0,0,63,0),
+(200018,25448,38000,0,0,0,0,0,62,0),
+(200018,24398,38000,0,0,0,0,0,62,0),
+(200018,25546,34000,0,0,0,0,0,61,0),
+(200018,25422,34000,0,0,0,0,0,61,0),
+(200018,57720,3400,0,0,0,0,0,60,0),
+(200018,51992,34000,0,0,0,0,0,60,0),
+(200018,32593,1700,0,0,0,0,0,60,0),
+(200018,29228,65000,0,0,0,0,0,60,0),
+(200018,25361,34000,0,0,0,0,0,60,0),
+(200018,25357,6500,0,0,0,0,0,60,0),
+(200018,20777,34000,0,0,0,0,0,60,0),
+(200018,16362,34000,0,0,0,0,0,60,0),
+(200018,10601,34000,0,0,0,0,0,60,0),
+(200018,10468,34000,0,0,0,0,0,60,0),
+(200018,10463,34000,0,0,0,0,0,60,0),
+(200018,10438,34000,0,0,0,0,0,60,0),
+(200018,10414,34000,0,0,0,0,0,60,0),
+(200018,16387,32000,0,0,0,0,0,58,0),
+(200018,16356,32000,0,0,0,0,0,58,0),
+(200018,10538,32000,0,0,0,0,0,58,0),
+(200018,10473,32000,0,0,0,0,0,58,0),
+(200018,10428,32000,0,0,0,0,0,58,0),
+(200018,16342,30000,0,0,0,0,0,56,0),
+(200018,15208,30000,0,0,0,0,0,56,0),
+(200018,10605,30000,0,0,0,0,0,56,0),
+(200018,10587,30000,0,0,0,0,0,56,0),
+(200018,10497,30000,0,0,0,0,0,56,0),
+(200018,10432,30000,0,0,0,0,0,56,0),
+(200018,10396,30000,0,0,0,0,0,56,0),
+(200018,52138,29000,0,0,0,0,0,55,0),
+(200018,10623,29000,0,0,0,0,0,54,0),
+(200018,10479,29000,0,0,0,0,0,54,0),
+(200018,10408,29000,0,0,0,0,0,54,0),
+(200018,11315,27000,0,0,0,0,0,52,0),
+(200018,10467,27000,0,0,0,0,0,52,0),
+(200018,10448,27000,0,0,0,0,0,52,0),
+(200018,10442,27000,0,0,0,0,0,52,0),
+(200018,66844,700,0,0,0,0,0,50,0),
+(200018,51991,24000,0,0,0,0,0,50,0),
+(200018,15207,24000,0,0,0,0,0,50,0),
+(200018,10486,24000,0,0,0,0,0,50,0),
+(200018,10462,24000,0,0,0,0,0,50,0),
+(200018,10437,24000,0,0,0,0,0,50,0),
+(200018,52136,22000,0,0,0,0,0,48,0),
+(200018,20776,22000,0,0,0,0,0,48,0),
+(200018,16355,22000,0,0,0,0,0,48,0),
+(200018,10526,22000,0,0,0,0,0,48,0),
+(200018,10431,22000,0,0,0,0,0,48,0),
+(200018,10427,22000,0,0,0,0,0,48,0),
+(200018,10413,22000,0,0,0,0,0,48,0),
+(200018,10395,22000,0,0,0,0,0,48,0),
+(200018,2860,22000,0,0,0,0,0,48,0),
+(200018,16341,20000,0,0,0,0,0,46,0),
+(200018,10622,20000,0,0,0,0,0,46,0),
+(200018,10586,20000,0,0,0,0,0,46,0),
+(200018,10496,20000,0,0,0,0,0,46,0),
+(200018,10472,20000,0,0,0,0,0,46,0),
+(200018,10600,18000,0,0,0,0,0,44,0),
+(200018,10466,18000,0,0,0,0,0,44,0),
+(200018,10407,18000,0,0,0,0,0,44,0),
+(200018,10392,18000,0,0,0,0,0,44,0),
+(200018,11314,16000,0,0,0,0,0,42,0),
+(200018,10537,16000,0,0,0,0,0,42,0),
+(200018,52134,12000,0,0,0,0,0,41,0),
+(200018,66843,700,0,0,0,0,0,40,0),
+(200018,51988,12000,0,0,0,0,0,40,0),
+(200018,10447,12000,0,0,0,0,0,40,0),
+(200018,8737,12000,0,0,0,0,0,40,0),
+(200018,8235,12000,0,0,0,0,0,40,0),
+(200018,8134,12000,0,0,0,0,0,40,0),
+(200018,8005,12000,0,0,0,0,0,40,0),
+(200018,6377,12000,0,0,0,0,0,40,0),
+(200018,6365,12000,0,0,0,0,0,40,0),
+(200018,1064,12000,0,0,0,0,0,40,0),
+(200018,930,12000,0,0,0,0,0,40,0),
+(200018,10478,11000,0,0,0,0,0,38,0),
+(200018,10456,11000,0,0,0,0,0,38,0),
+(200018,10391,11000,0,0,0,0,0,38,0),
+(200018,8249,11000,0,0,0,0,0,38,0),
+(200018,8170,11000,0,0,0,0,0,38,0),
+(200018,8161,11000,0,0,0,0,0,38,0),
+(200018,6392,11000,0,0,0,0,0,38,0),
+(200018,20610,10000,0,0,0,0,0,36,0),
+(200018,16339,10000,0,0,0,0,0,36,0),
+(200018,10585,10000,0,0,0,0,0,36,0),
+(200018,10495,10000,0,0,0,0,0,36,0),
+(200018,10412,10000,0,0,0,0,0,36,0),
+(200018,8010,10000,0,0,0,0,0,36,0),
+(200018,52131,9000,0,0,0,0,0,34,0),
+(200018,10406,9000,0,0,0,0,0,34,0),
+(200018,8058,9000,0,0,0,0,0,34,0),
+(200018,6495,9000,0,0,0,0,0,34,0),
+(200018,8512,8000,0,0,0,0,0,32,0),
+(200018,8499,8000,0,0,0,0,0,32,0),
+(200018,8012,8000,0,0,0,0,0,32,0),
+(200018,6041,8000,0,0,0,0,0,32,0),
+(200018,959,8000,0,0,0,0,0,32,0),
+(200018,945,8000,0,0,0,0,0,32,0),
+(200018,421,8000,0,0,0,0,0,32,0),
+(200018,66842,700,0,0,0,0,0,30,0),
+(200018,51730,7000,0,0,0,0,0,30,0),
+(200018,36936,7000,0,0,0,0,0,30,0),
+(200018,20608,7000,0,0,0,0,0,30,0),
+(200018,10595,7000,0,0,0,0,0,30,0),
+(200018,8232,7000,0,0,0,0,0,30,0),
+(200018,8177,7000,0,0,0,0,0,30,0),
+(200018,6375,7000,0,0,0,0,0,30,0),
+(200018,6364,7000,0,0,0,0,0,30,0),
+(200018,556,7000,0,0,0,0,0,30,0),
+(200018,52129,6000,0,0,0,0,0,28,0),
+(200018,8227,6000,0,0,0,0,0,28,0),
+(200018,8184,6000,0,0,0,0,0,28,0),
+(200018,8053,6000,0,0,0,0,0,28,0),
+(200018,8038,6000,0,0,0,0,0,28,0),
+(200018,8008,6000,0,0,0,0,0,28,0),
+(200018,6391,6000,0,0,0,0,0,28,0),
+(200018,546,6000,0,0,0,0,0,28,0),
+(200018,8190,4000,0,0,0,0,0,26,0),
+(200018,8030,4000,0,0,0,0,0,26,0),
+(200018,6196,4000,0,0,0,0,0,26,0),
+(200018,5675,4000,0,0,0,0,0,26,0),
+(200018,943,4000,0,0,0,0,0,26,0),
+(200018,20609,3500,0,0,0,0,0,24,0),
+(200018,10399,3500,0,0,0,0,0,24,0),
+(200018,8181,3500,0,0,0,0,0,24,0),
+(200018,8160,3500,0,0,0,0,0,24,0),
+(200018,8155,3500,0,0,0,0,0,24,0),
+(200018,8046,3500,0,0,0,0,0,24,0),
+(200018,939,3500,0,0,0,0,0,24,0),
+(200018,905,3500,0,0,0,0,0,24,0),
+(200018,8498,3000,0,0,0,0,0,22,0),
+(200018,131,3000,0,0,0,0,0,22,0),
+(200018,52127,2200,0,0,0,0,0,20,0),
+(200018,8056,2200,0,0,0,0,0,20,0),
+(200018,8033,2200,0,0,0,0,0,20,0),
+(200018,8004,2200,0,0,0,0,0,20,0),
+(200018,6363,2200,0,0,0,0,0,20,0),
+(200018,915,2200,0,0,0,0,0,20,0),
+(200018,8143,2000,0,0,0,0,0,18,0),
+(200018,8052,2000,0,0,0,0,0,18,0),
+(200018,8027,2000,0,0,0,0,0,18,0),
+(200018,6390,2000,0,0,0,0,0,18,0),
+(200018,913,2000,0,0,0,0,0,18,0),
+(200018,57994,2500,0,0,0,0,0,16,0),
+(200018,8019,1800,0,0,0,0,0,16,0),
+(200018,2645,2200,0,0,0,0,0,16,0),
+(200018,526,1800,0,0,0,0,0,16,0),
+(200018,325,1800,0,0,0,0,0,16,0),
+(200018,8154,900,0,0,0,0,0,14,0),
+(200018,8045,900,0,0,0,0,0,14,0),
+(200018,548,900,0,0,0,0,0,14,0),
+(200018,2008,800,0,0,0,0,0,12,0),
+(200018,1535,800,0,0,0,0,0,12,0),
+(200018,547,800,0,0,0,0,0,12,0),
+(200018,370,800,0,0,0,0,0,12,0),
+(200018,8075,400,0,0,0,0,0,10,0),
+(200018,8050,400,0,0,0,0,0,10,0),
+(200018,8024,400,0,0,0,0,0,10,0),
+(200018,8044,100,0,0,0,0,0,8,0),
+(200018,8018,100,0,0,0,0,0,8,0),
+(200018,5730,100,0,0,0,0,0,8,0),
+(200018,529,100,0,0,0,0,0,8,0),
+(200018,324,100,0,0,0,0,0,8,0),
+(200018,25454,79000,0,0,0,0,0,69,0),
+(200018,25505,71000,0,0,0,0,0,68,0),
+(200018,2825,88000,0,0,0,0,0,70,0),
+(200019,48265,360000,0,0,0,0,0,70,0),
+(200019,47476,5900,0,0,0,0,0,59,0),
+(200019,55271,18000,0,0,0,0,0,79,0),
+(200019,55270,18000,0,0,0,0,0,73,0),
+(200019,55265,18000,0,0,0,0,0,67,0),
+(200019,56815,67000,0,0,0,0,0,67,0),
+(200019,62158,360000,0,0,0,0,0,72,0),
+(200019,70164,360000,0,0,0,0,0,72,0),
+(200019,53344,360000,0,0,0,0,0,70,0),
+(200019,53323,63000,0,0,0,0,0,63,0),
+(200019,54446,68000,0,0,0,0,0,63,0),
+(200019,53342,5700,0,0,0,0,0,57,0),
+(200019,54447,5700,0,0,0,0,0,57,0),
+(200019,53343,55000,0,0,0,0,0,55,0),
+(200019,53331,6000,0,0,0,0,0,60,0),
+(200019,53341,55000,0,0,0,0,0,55,0),
+(200019,46584,5600,0,0,0,0,0,56,0),
+(200019,61999,360000,0,0,0,0,0,72,0),
+(200019,49921,360000,0,0,0,0,0,80,0),
+(200019,49920,360000,0,0,0,0,0,75,0),
+(200019,49919,360000,0,0,0,0,0,70,0),
+(200019,49918,65000,0,0,0,0,0,65,0),
+(200019,49917,5800,0,0,0,0,0,60,0),
+(200019,50842,5600,0,0,0,0,0,56,0),
+(200019,3714,61000,0,0,0,0,0,61,0),
+(200019,51425,360000,0,0,0,0,0,79,0),
+(200019,51424,360000,0,0,0,0,0,73,0),
+(200019,51423,67000,0,0,0,0,0,67,0),
+(200019,49020,61000,0,0,0,0,0,61,0),
+(200019,47528,5700,0,0,0,0,0,57,0),
+(200019,49909,360000,0,0,0,0,0,78,0),
+(200019,49904,360000,0,0,0,0,0,73,0),
+(200019,49903,67000,0,0,0,0,0,67,0),
+(200019,49896,61000,0,0,0,0,0,61,0),
+(200019,48792,62000,0,0,0,0,0,62,0),
+(200019,51411,10000,0,0,0,0,0,80,0),
+(200019,51410,10000,0,0,0,0,0,75,0),
+(200019,51409,6500,0,0,0,0,0,70,0),
+(200019,57623,360000,0,0,0,0,0,75,0),
+(200019,57330,65000,0,0,0,0,0,65,0),
+(200019,55262,18000,0,0,0,0,0,80,0),
+(200019,55261,18000,0,0,0,0,0,74,0),
+(200019,55260,3450,0,0,0,0,0,69,0),
+(200019,55259,3200,0,0,0,0,0,64,0),
+(200019,55258,5900,0,0,0,0,0,59,0),
+(200019,55268,18000,0,0,0,0,0,80,0),
+(200019,51419,18000,0,0,0,0,0,75,0),
+(200019,51418,18000,0,0,0,0,0,70,0),
+(200019,51417,3250,0,0,0,0,0,65,0),
+(200019,51416,6200,0,0,0,0,0,60,0),
+(200019,48263,5700,0,0,0,0,0,57,0),
+(200019,47568,360000,0,0,0,0,0,75,0),
+(200019,49999,65000,0,0,0,0,0,63,0),
+(200019,49998,5600,0,0,0,0,0,56,0),
+(200019,49924,360000,0,0,0,0,0,80,0),
+(200019,49923,360000,0,0,0,0,0,75,0),
+(200019,45463,63000,0,0,0,0,0,70,0),
+(200019,48743,66000,0,0,0,0,0,66,0),
+(200019,49895,360000,0,0,0,0,0,80,0),
+(200019,49894,360000,0,0,0,0,0,76,0),
+(200019,49893,68000,0,0,0,0,0,68,0),
+(200019,49892,59000,0,0,0,0,0,62,0),
+(200019,49938,360000,0,0,0,0,0,80,0),
+(200019,49937,360000,0,0,0,0,0,73,0),
+(200019,49936,68000,0,0,0,0,0,67,0),
+(200019,43265,6000,0,0,0,0,0,60,0),
+(200019,56222,65000,0,0,0,0,0,65,0),
+(200019,51328,18000,0,0,0,0,0,80,0),
+(200019,51327,18000,0,0,0,0,0,75,0),
+(200019,51326,18000,0,0,0,0,0,70,0),
+(200019,51325,300,0,0,0,0,0,60,0),
+(200019,45524,5800,0,0,0,0,0,58,0),
+(200019,45529,64000,0,0,0,0,0,64,0),
+(200019,49930,360000,0,0,0,0,0,80,0),
+(200019,49929,360000,0,0,0,0,0,74,0),
+(200019,49928,69000,0,0,0,0,0,69,0),
+(200019,49927,64000,0,0,0,0,0,64,0),
+(200019,49926,5900,0,0,0,0,0,59,0),
+(200019,49941,360000,0,0,0,0,0,78,0),
+(200019,49940,360000,0,0,0,0,0,72,0),
+(200019,49939,66000,0,0,0,0,0,66,0),
+(200019,48721,5800,0,0,0,0,0,58,0),
+(200019,42650,360000,0,0,0,0,0,80,0),
+(200019,48707,68000,0,0,0,0,0,68,0),
+(200020,31801,67000,0,0,0,0,0,64,0),
+(200020,23214,3500,0,0,0,0,0,40,0),
+(200020,13820,3500,0,0,0,0,0,20,0),
+(200021,34768,3500,0,0,0,0,0,20,0),
+(200021,34767,3500,0,0,0,0,0,40,0),
+(200021,53736,100000,0,0,0,0,0,66,0),
+(201001,17573,20000,171,285,0,0,0,0,0),
+(201001,17572,20000,171,285,0,0,0,0,0),
+(201001,17557,20000,171,275,0,0,0,0,0),
+(201001,17556,20000,171,275,0,0,0,0,0),
+(201001,17555,15000,171,270,0,0,0,0,0),
+(201001,17553,15000,171,260,0,0,0,0,0),
+(201001,17552,15000,171,255,0,0,0,0,0),
+(201001,17551,15000,171,250,0,0,0,0,0),
+(201001,11478,14000,171,250,0,0,0,0,0),
+(201001,11467,12000,171,240,0,0,0,0,0),
+(201001,11465,12000,171,235,0,0,0,0,0),
+(201001,11461,10000,171,235,0,0,0,0,0),
+(201001,15833,10000,171,230,0,0,0,0,0),
+(201001,11460,5000,171,230,0,0,0,0,0),
+(201001,22808,10000,171,215,0,0,0,0,0),
+(201001,11457,10000,171,215,0,0,0,0,0),
+(201001,11451,8000,171,205,0,0,0,0,0),
+(201001,11448,9000,171,205,0,0,0,0,0),
+(201001,12609,8000,171,200,0,0,0,0,0),
+(201001,11612,50000,171,200,3464,0,0,35,0),
+(201001,11450,7500,171,195,0,0,0,0,0),
+(201001,11449,6500,171,185,0,0,0,0,0),
+(201001,3450,6000,171,175,0,0,0,0,0),
+(201001,3448,5000,171,165,0,0,0,0,0),
+(201001,3452,5000,171,160,0,0,0,0,0),
+(201001,7181,5000,171,155,0,0,0,0,0),
+(201001,7845,3000,171,140,0,0,0,0,0),
+(201001,63732,2000,171,135,0,0,0,0,0),
+(201001,7837,1000,171,130,0,0,0,0,0),
+(201001,3177,2000,171,130,0,0,0,0,0),
+(201001,3465,5000,171,125,3101,0,0,20,0),
+(201001,3176,1500,171,125,0,0,0,0,0),
+(201001,3173,1500,171,120,0,0,0,0,0),
+(201001,3447,4000,171,110,0,0,0,0,0),
+(201001,7841,1000,171,100,0,0,0,0,0),
+(201001,7179,450,171,90,0,0,0,0,0),
+(201001,3171,500,171,90,0,0,0,0,0),
+(201001,7836,250,171,80,0,0,0,0,0),
+(201001,2337,1000,171,55,0,0,0,0,0),
+(201001,53042,10000,171,50,0,0,0,0,0),
+(201001,2334,250,171,50,0,0,0,0,0),
+(201001,2280,500,171,50,2259,0,0,10,0),
+(201001,2332,150,171,40,0,0,0,0,0),
+(201001,2331,100,171,25,0,0,0,0,0),
+(201001,3170,50,171,15,0,0,0,0,0),
+(201001,2275,10,0,0,0,0,0,5,0),
+(201002,38070,20000,171,325,0,0,0,0,0),
+(201002,45061,30000,171,325,0,0,0,0,0),
+(201002,28551,50000,171,325,0,0,0,0,0),
+(201002,39638,30000,171,320,0,0,0,0,0),
+(201002,33741,30000,171,315,0,0,0,0,0),
+(201002,39636,25000,171,310,0,0,0,0,0),
+(201002,33733,25000,171,310,0,0,0,0,0),
+(201002,28545,25000,171,310,0,0,0,0,0),
+(201002,28544,25000,171,305,0,0,0,0,0),
+(201002,33740,20000,171,300,0,0,0,0,0),
+(201002,33738,20000,171,300,0,0,0,0,0),
+(201002,33732,20000,171,300,0,0,0,0,0),
+(201002,28597,100000,171,275,11611,0,0,50,0),
+(201003,62213,120000,171,385,0,0,0,0,0),
+(201003,66664,150000,171,450,0,0,0,0,0),
+(201003,51303,350000,171,350,28596,0,0,65,0),
+(201003,53841,40000,171,355,0,0,0,0,0),
+(201003,53042,10000,171,50,0,0,0,0,0),
+(201003,53839,40000,171,360,0,0,0,0,0),
+(201003,53838,40000,171,350,0,0,0,0,0),
+(201003,53898,120000,171,390,0,0,0,0,0),
+(201003,53899,60000,171,375,0,0,0,0,0),
+(201003,53900,120000,171,380,0,0,0,0,0),
+(201003,53848,60000,171,375,0,0,0,0,0),
+(201003,53840,120000,171,395,0,0,0,0,0),
+(201003,53905,120000,171,395,0,0,0,0,0),
+(201003,54218,120000,171,385,0,0,0,0,0),
+(201003,53901,180000,171,435,0,0,0,0,0),
+(201003,58868,150000,171,410,0,0,0,0,0),
+(201003,60350,150000,171,395,0,0,0,0,0),
+(201003,53847,65000,171,385,0,0,0,0,0),
+(201003,67025,100000,171,425,0,0,0,0,0),
+(201003,53842,40000,171,365,0,0,0,0,0),
+(201003,60403,200000,171,400,0,0,0,0,0),
+(201003,60367,120000,171,395,0,0,0,0,0),
+(201003,60405,200000,171,400,0,0,0,0,0),
+(201003,60893,200000,171,400,0,0,0,0,0),
+(201003,58871,150000,171,410,0,0,0,0,0),
+(201003,53902,150000,171,435,0,0,0,0,0),
+(201003,60396,200000,171,400,0,0,0,0,0),
+(201003,62409,60000,171,375,0,0,0,0,0),
+(201003,53837,150000,171,410,0,0,0,0,0),
+(201003,53836,150000,171,405,0,0,0,0,0),
+(201003,66660,150000,171,450,0,0,0,0,0),
+(201003,53903,180000,171,435,0,0,0,0,0),
+(201003,66658,150000,171,450,0,0,0,0,0),
+(201003,54213,150000,171,435,0,0,0,0,0),
+(201003,57427,150000,171,425,0,0,0,0,0),
+(201003,57425,150000,171,430,0,0,0,0,0),
+(201003,66663,150000,171,450,0,0,0,0,0),
+(201003,66662,150000,171,450,0,0,0,0,0),
+(201003,53812,60000,171,375,0,0,0,0,0),
+(201004,34982,10000,164,300,0,0,0,0,0),
+(201004,16662,12000,164,300,0,0,0,0,0),
+(201004,16971,15000,164,280,0,0,0,0,0),
+(201004,16653,10000,164,280,0,0,0,0,0),
+(201004,16652,10000,164,280,0,0,0,0,0),
+(201004,20201,10000,164,275,0,0,0,0,0),
+(201004,19669,10000,164,275,0,0,0,0,0),
+(201004,16969,15000,164,275,0,0,0,0,0),
+(201004,16644,10000,164,255,0,0,0,0,0),
+(201004,16643,10000,164,250,0,0,0,0,0),
+(201004,16642,10000,164,250,0,0,0,0,0),
+(201004,16641,10000,164,250,0,0,0,0,0),
+(201004,16640,10000,164,250,0,0,0,0,0),
+(201004,16639,10000,164,250,0,0,0,0,0),
+(201004,9968,20000,164,235,0,0,0,0,0),
+(201004,10001,15000,164,230,0,0,0,0,0),
+(201004,9961,15000,164,230,0,0,0,0,0),
+(201004,9959,15000,164,230,0,0,0,0,0),
+(201004,9935,5000,164,215,0,0,0,0,0),
+(201004,9993,10000,164,210,0,0,0,0,0),
+(201004,9931,5000,164,210,0,0,0,0,0),
+(201004,9928,5000,164,205,0,0,0,0,0),
+(201004,9926,5000,164,205,0,0,0,0,0),
+(201004,34981,7500,164,200,0,0,0,0,0),
+(201004,19668,2500,164,200,0,0,0,0,0),
+(201004,14380,2500,164,200,0,0,0,0,0),
+(201004,9921,2500,164,200,0,0,0,0,0),
+(201004,9920,2500,164,200,0,0,0,0,0),
+(201004,9918,2500,164,200,0,0,0,0,0),
+(201004,9916,2500,164,200,0,0,0,0,0),
+(201004,9786,50000,164,200,3538,0,0,35,0),
+(201004,7223,1000,164,185,0,0,0,0,0),
+(201004,15972,7500,164,180,0,0,0,0,0),
+(201004,3508,7500,164,180,0,0,0,0,0),
+(201004,3502,1250,164,170,0,0,0,0,0),
+(201004,3501,1000,164,165,0,0,0,0,0),
+(201004,3506,5000,164,155,0,0,0,0,0),
+(201004,19667,250,164,150,0,0,0,0,0),
+(201004,14379,250,164,150,0,0,0,0,0),
+(201004,8768,250,164,150,0,0,0,0,0),
+(201004,2675,1000,164,145,0,0,0,0,0),
+(201004,9987,500,164,135,0,0,0,0,0),
+(201004,3333,1000,164,135,0,0,0,0,0),
+(201004,9986,500,164,130,0,0,0,0,0),
+(201004,3331,500,164,130,0,0,0,0,0),
+(201004,3296,1000,164,130,0,0,0,0,0),
+(201004,9985,250,164,125,0,0,0,0,0),
+(201004,3539,5000,164,125,3100,0,0,20,0),
+(201004,3337,1000,164,125,0,0,0,0,0),
+(201004,3117,1000,164,125,0,0,0,0,0),
+(201004,2674,1000,164,125,0,0,0,0,0),
+(201004,2742,200,164,120,0,0,0,0,0),
+(201004,2672,500,164,120,0,0,0,0,0),
+(201004,2741,200,164,115,0,0,0,0,0),
+(201004,6517,800,164,110,0,0,0,0,0),
+(201004,3328,500,164,110,0,0,0,0,0),
+(201004,2740,200,164,110,0,0,0,0,0),
+(201004,3491,600,164,105,0,0,0,0,0),
+(201004,2670,500,164,105,0,0,0,0,0),
+(201004,2668,300,164,105,0,0,0,0,0),
+(201004,34979,600,164,100,0,0,0,0,0),
+(201004,19666,100,164,100,0,0,0,0,0),
+(201004,7818,100,164,100,0,0,0,0,0),
+(201004,7817,200,164,95,0,0,0,0,0),
+(201004,3292,500,164,95,0,0,0,0,0),
+(201004,2664,500,164,90,0,0,0,0,0),
+(201004,3326,250,164,75,0,0,0,0,0),
+(201004,3294,500,164,70,0,0,0,0,0),
+(201004,2666,200,164,70,0,0,0,0,0),
+(201004,7408,300,164,65,0,0,0,0,0),
+(201004,3116,100,164,65,0,0,0,0,0),
+(201004,2665,100,164,65,0,0,0,0,0),
+(201004,2021,500,164,50,2018,0,0,10,0),
+(201004,3324,200,164,45,0,0,0,0,0),
+(201004,3323,100,164,40,0,0,0,0,0),
+(201004,3293,250,164,35,0,0,0,0,0),
+(201004,2661,100,164,35,0,0,0,0,0),
+(201004,9983,100,164,30,0,0,0,0,0),
+(201004,8880,100,164,30,0,0,0,0,0),
+(201004,3320,100,164,25,0,0,0,0,0),
+(201004,2739,50,164,25,0,0,0,0,0),
+(201004,3319,50,164,20,0,0,0,0,0),
+(201004,2738,50,164,20,0,0,0,0,0),
+(201004,2737,50,164,15,0,0,0,0,0),
+(201004,2662,50,164,1,0,0,0,0,0),
+(201004,2020,10,0,0,0,0,0,5,0),
+(201005,34983,50000,164,350,0,0,0,0,0),
+(201005,32284,25000,164,325,0,0,0,0,0),
+(201005,29550,25000,164,325,0,0,0,0,0),
+(201005,29565,22000,164,320,0,0,0,0,0),
+(201005,29556,22000,164,320,0,0,0,0,0),
+(201005,29558,20000,164,315,0,0,0,0,0),
+(201005,29553,20000,164,315,0,0,0,0,0),
+(201005,29549,20000,164,315,0,0,0,0,0),
+(201005,29548,20000,164,315,0,0,0,0,0),
+(201005,29557,18000,164,310,0,0,0,0,0),
+(201005,29552,18000,164,310,0,0,0,0,0),
+(201005,29547,15000,164,305,0,0,0,0,0),
+(201005,34607,15000,164,300,0,0,0,0,0),
+(201005,32655,10000,164,300,0,0,0,0,0),
+(201005,29654,15000,164,300,0,0,0,0,0),
+(201005,29551,15000,164,300,0,0,0,0,0),
+(201005,29545,15000,164,300,0,0,0,0,0),
+(201005,29845,100000,164,275,9785,0,0,50,0),
+(201006,63182,150000,164,440,0,0,0,0,0),
+(201006,56400,150000,164,440,0,0,0,0,0),
+(201006,56234,150000,164,440,0,0,0,0,0),
+(201006,55377,120000,164,440,0,0,0,0,0),
+(201006,55376,120000,164,440,0,0,0,0,0),
+(201006,55375,120000,164,440,0,0,0,0,0),
+(201006,55374,120000,164,440,0,0,0,0,0),
+(201006,55373,120000,164,440,0,0,0,0,0),
+(201006,55372,120000,164,440,0,0,0,0,0),
+(201006,55371,150000,164,440,0,0,0,0,0),
+(201006,55370,150000,164,440,0,0,0,0,0),
+(201006,55369,180000,164,440,0,0,0,0,0),
+(201006,59406,45000,164,430,0,0,0,0,0),
+(201006,61008,120000,164,425,0,0,0,0,0),
+(201006,56556,45000,164,425,0,0,0,0,0),
+(201006,56555,45000,164,425,0,0,0,0,0),
+(201006,56554,45000,164,425,0,0,0,0,0),
+(201006,55312,45000,164,425,0,0,0,0,0),
+(201006,55311,45000,164,425,0,0,0,0,0),
+(201006,55310,45000,164,425,0,0,0,0,0),
+(201006,55304,45000,164,425,0,0,0,0,0),
+(201006,55303,45000,164,425,0,0,0,0,0),
+(201006,55302,45000,164,425,0,0,0,0,0),
+(201006,61010,120000,164,420,0,0,0,0,0),
+(201006,61009,120000,164,420,0,0,0,0,0),
+(201006,56553,45000,164,420,0,0,0,0,0),
+(201006,56552,45000,164,420,0,0,0,0,0),
+(201006,56551,45000,164,420,0,0,0,0,0),
+(201006,56550,45000,164,420,0,0,0,0,0),
+(201006,56549,45000,164,420,0,0,0,0,0),
+(201006,56357,42000,164,420,0,0,0,0,0),
+(201006,55839,42000,164,420,0,0,0,0,0),
+(201006,55732,42000,164,420,0,0,0,0,0),
+(201006,55309,45000,164,420,0,0,0,0,0),
+(201006,55308,45000,164,420,0,0,0,0,0),
+(201006,55307,45000,164,420,0,0,0,0,0),
+(201006,55306,45000,164,420,0,0,0,0,0),
+(201006,55305,45000,164,420,0,0,0,0,0),
+(201006,55301,45000,164,420,0,0,0,0,0),
+(201006,55300,45000,164,420,0,0,0,0,0),
+(201006,55298,45000,164,420,0,0,0,0,0),
+(201006,59441,45000,164,415,0,0,0,0,0),
+(201006,55656,50000,164,415,0,0,0,0,0),
+(201006,55058,45000,164,415,0,0,0,0,0),
+(201006,55015,40000,164,415,0,0,0,0,0),
+(201006,59442,40000,164,410,0,0,0,0,0),
+(201006,56280,40000,164,410,0,0,0,0,0),
+(201006,55182,40000,164,410,0,0,0,0,0),
+(201006,55017,40000,164,410,0,0,0,0,0),
+(201006,55014,35000,164,410,0,0,0,0,0),
+(201006,59440,40000,164,405,0,0,0,0,0),
+(201006,55206,40000,164,405,0,0,0,0,0),
+(201006,55181,50000,164,405,0,0,0,0,0),
+(201006,55057,40000,164,405,0,0,0,0,0),
+(201006,54556,40000,164,405,0,0,0,0,0),
+(201006,54555,40000,164,405,0,0,0,0,0),
+(201006,59438,40000,164,400,0,0,0,0,0),
+(201006,55641,45000,164,400,0,0,0,0,0),
+(201006,55628,45000,164,400,0,0,0,0,0),
+(201006,55179,50000,164,400,0,0,0,0,0),
+(201006,55056,40000,164,400,0,0,0,0,0),
+(201006,54949,30000,164,400,0,0,0,0,0),
+(201006,54948,30000,164,400,0,0,0,0,0),
+(201006,54553,40000,164,400,0,0,0,0,0),
+(201006,54552,40000,164,400,0,0,0,0,0),
+(201006,59436,40000,164,395,0,0,0,0,0),
+(201006,55177,50000,164,395,0,0,0,0,0),
+(201006,55055,40000,164,395,0,0,0,0,0),
+(201006,54947,35000,164,395,0,0,0,0,0),
+(201006,54946,30000,164,395,0,0,0,0,0),
+(201006,54554,40000,164,395,0,0,0,0,0),
+(201006,54551,40000,164,395,0,0,0,0,0),
+(201006,55204,35000,164,390,0,0,0,0,0),
+(201006,55174,50000,164,390,0,0,0,0,0),
+(201006,55013,40000,164,390,0,0,0,0,0),
+(201006,54945,35000,164,390,0,0,0,0,0),
+(201006,54557,40000,164,390,0,0,0,0,0),
+(201006,55203,35000,164,385,0,0,0,0,0),
+(201006,55202,35000,164,385,0,0,0,0,0),
+(201006,54944,30000,164,385,0,0,0,0,0),
+(201006,54941,30000,164,385,0,0,0,0,0),
+(201006,55201,35000,164,380,0,0,0,0,0),
+(201006,55200,35000,164,380,0,0,0,0,0),
+(201006,54918,30000,164,380,0,0,0,0,0),
+(201006,54917,30000,164,375,0,0,0,0,0),
+(201006,52570,30000,164,375,0,0,0,0,0),
+(201006,55835,30000,164,370,0,0,0,0,0),
+(201006,52571,30000,164,370,0,0,0,0,0),
+(201006,52567,30000,164,370,0,0,0,0,0),
+(201006,55834,30000,164,360,0,0,0,0,0),
+(201006,54550,30000,164,360,0,0,0,0,0),
+(201006,52572,30000,164,360,0,0,0,0,0),
+(201006,59405,30000,164,350,0,0,0,0,0),
+(201006,52569,30000,164,350,0,0,0,0,0),
+(201006,52568,30000,164,350,0,0,0,0,0),
+(201006,51298,350000,164,350,29844,0,0,60,0),
+(201007,34534,250000,164,375,0,0,0,0,0),
+(201007,36257,500000,164,375,0,0,0,0,0),
+(201007,36256,500000,164,375,0,0,0,0,0),
+(201007,34530,250000,164,375,0,0,0,0,0),
+(201007,55186,50000,164,415,0,0,0,0,0),
+(201007,55187,50000,164,415,0,0,0,0,0),
+(201007,34529,100000,164,350,0,0,0,0,0),
+(201007,34533,100000,164,350,0,0,0,0,0),
+(201007,36130,40000,164,330,0,0,0,0,0),
+(201007,36129,40000,164,330,0,0,0,0,0),
+(201007,36124,10000,164,260,0,0,0,0,0),
+(201007,36122,10000,164,260,0,0,0,0,0),
+(201007,9954,8000,164,245,0,0,0,0,0),
+(201007,9974,1000,164,245,0,0,0,0,0),
+(201008,10003,15000,164,235,0,0,0,0,0),
+(201008,10007,15000,164,245,0,0,0,0,0),
+(201008,10011,15000,164,250,0,0,0,0,0),
+(201008,36125,10000,164,260,0,0,0,0,0),
+(201008,36128,10000,164,260,0,0,0,0,0),
+(201008,36126,10000,164,260,0,0,0,0,0),
+(201008,10015,15000,164,260,0,0,0,0,0),
+(201008,36137,40000,164,330,0,0,0,0,0),
+(201008,36136,40000,164,330,0,0,0,0,0),
+(201008,36135,40000,164,330,0,0,0,0,0),
+(201008,36133,40000,164,330,0,0,0,0,0),
+(201008,36134,40000,164,330,0,0,0,0,0),
+(201008,36131,40000,164,330,0,0,0,0,0),
+(201008,34545,100000,164,350,0,0,0,0,0),
+(201008,34535,100000,164,350,0,0,0,0,0),
+(201008,34538,100000,164,350,0,0,0,0,0),
+(201008,34543,100000,164,350,0,0,0,0,0),
+(201008,34541,100000,164,350,0,0,0,0,0),
+(201008,34547,500000,164,350,0,0,0,0,0),
+(201008,34542,250000,164,375,0,0,0,0,0),
+(201008,36258,500000,164,375,0,0,0,0,0),
+(201008,34537,250000,164,375,0,0,0,0,0),
+(201008,36261,500000,164,375,0,0,0,0,0),
+(201008,34548,250000,164,375,0,0,0,0,0),
+(201008,34546,250000,164,375,0,0,0,0,0),
+(201008,36262,500000,164,375,0,0,0,0,0),
+(201008,34540,250000,164,375,0,0,0,0,0),
+(201008,36259,500000,164,375,0,0,0,0,0),
+(201008,34544,250000,164,375,0,0,0,0,0),
+(201008,36263,500000,164,375,0,0,0,0,0),
+(201008,36260,500000,164,375,0,0,0,0,0),
+(201008,55183,50000,164,415,0,0,0,0,0),
+(201008,55184,50000,164,415,0,0,0,0,0),
+(201008,55185,50000,164,415,0,0,0,0,0),
+(201009,20023,20000,333,295,0,0,0,0,0),
+(201009,20013,20000,333,295,0,0,0,0,0),
+(201009,20028,15000,333,290,0,0,0,0,0),
+(201009,20016,15000,333,280,0,0,0,0,0),
+(201009,20012,10000,333,270,0,0,0,0,0),
+(201009,20014,10000,333,265,0,0,0,0,0),
+(201009,20008,10000,333,255,0,0,0,0,0),
+(201009,17181,10000,333,250,0,0,0,0,0),
+(201009,17180,10000,333,250,0,0,0,0,0),
+(201009,13948,6500,333,250,0,0,0,0,0),
+(201009,13943,6200,333,245,0,0,0,0,0),
+(201009,13941,6200,333,245,0,0,0,0,0),
+(201009,13939,6200,333,240,0,0,0,0,0),
+(201009,13937,6200,333,240,0,0,0,0,0),
+(201009,13935,5800,333,235,0,0,0,0,0),
+(201009,13917,5400,333,230,0,0,0,0,0),
+(201009,13905,5400,333,230,0,0,0,0,0),
+(201009,13890,5000,333,225,0,0,0,0,0),
+(201009,13887,5000,333,225,0,0,0,0,0),
+(201009,13858,4800,333,220,0,0,0,0,0),
+(201009,13836,4600,333,215,0,0,0,0,0),
+(201009,13822,4400,333,210,0,0,0,0,0),
+(201009,13815,4400,333,210,0,0,0,0,0),
+(201009,13794,4200,333,205,0,0,0,0,0),
+(201009,13746,4200,333,205,0,0,0,0,0),
+(201009,13921,50000,333,200,7413,0,0,35,0),
+(201009,13702,4000,333,200,0,0,0,0,0),
+(201009,13700,4000,333,200,0,0,0,0,0),
+(201009,13695,4000,333,200,0,0,0,0,0),
+(201009,13693,4000,333,195,0,0,0,0,0),
+(201009,13663,3800,333,185,0,0,0,0,0),
+(201009,13661,3600,333,180,0,0,0,0,0),
+(201009,13659,3200,333,180,0,0,0,0,0),
+(201009,14810,3000,333,175,0,0,0,0,0),
+(201009,13657,3000,333,175,0,0,0,0,0),
+(201009,13648,2800,333,170,0,0,0,0,0),
+(201009,13644,2800,333,170,0,0,0,0,0),
+(201009,13642,2800,333,165,0,0,0,0,0),
+(201009,13640,2700,333,160,0,0,0,0,0),
+(201009,13637,2800,333,160,0,0,0,0,0),
+(201009,14809,2600,333,155,0,0,0,0,0),
+(201009,13635,2600,333,155,0,0,0,0,0),
+(201009,13631,2600,333,155,0,0,0,0,0),
+(201009,13628,2500,333,150,0,0,0,0,0),
+(201009,13626,2500,333,150,0,0,0,0,0),
+(201009,13622,2500,333,150,0,0,0,0,0),
+(201009,13607,2400,333,145,0,0,0,0,0),
+(201009,13529,2400,333,145,0,0,0,0,0),
+(201009,13538,2500,333,140,0,0,0,0,0),
+(201009,13503,2000,333,140,0,0,0,0,0),
+(201009,13501,1500,333,130,0,0,0,0,0),
+(201009,13485,1500,333,130,0,0,0,0,0),
+(201009,7863,1400,333,125,0,0,0,0,0),
+(201009,7861,1250,333,125,0,0,0,0,0),
+(201009,7416,5000,333,125,7412,0,0,20,0),
+(201009,7857,1000,333,120,0,0,0,0,0),
+(201009,13421,800,333,115,0,0,0,0,0),
+(201009,13378,600,333,105,0,0,0,0,0),
+(201009,7795,1000,333,100,0,0,0,0,0),
+(201009,7745,500,333,100,0,0,0,0,0),
+(201009,7788,500,333,90,0,0,0,0,0),
+(201009,7779,400,333,80,0,0,0,0,0),
+(201009,14807,200,333,70,0,0,0,0,0),
+(201009,7771,200,333,70,0,0,0,0,0),
+(201009,7748,250,333,60,0,0,0,0,0),
+(201009,7457,250,333,50,0,0,0,0,0),
+(201009,7415,500,333,50,7411,0,0,10,0),
+(201009,7454,100,333,45,0,0,0,0,0),
+(201009,7426,100,333,40,0,0,0,0,0),
+(201009,7428,100,333,20,0,0,0,0,0),
+(201009,7420,50,333,15,0,0,0,0,0),
+(201009,14293,50,333,10,0,0,0,0,0),
+(201009,7414,10,0,0,0,0,0,5,0),
+(201009,63746,5000,333,225,0,0,0,0,0),
+(201010,28028,80000,333,350,0,0,0,0,0),
+(201010,33995,25000,333,340,0,0,0,0,0),
+(201010,42615,40000,333,335,0,0,0,0,0),
+(201010,44383,30000,333,330,0,0,0,0,0),
+(201010,28027,40000,333,325,0,0,0,0,0),
+(201010,33990,20000,333,320,0,0,0,0,0),
+(201010,27957,17500,333,315,0,0,0,0,0),
+(201010,27905,15000,333,315,0,0,0,0,0),
+(201010,27944,15000,333,310,0,0,0,0,0),
+(201010,33996,15000,333,310,0,0,0,0,0),
+(201010,27961,15000,333,310,0,0,0,0,0),
+(201010,34004,15000,333,310,0,0,0,0,0),
+(201010,33993,15000,333,305,0,0,0,0,0),
+(201010,34001,15000,333,305,0,0,0,0,0),
+(201010,27899,15000,333,305,0,0,0,0,0),
+(201010,32664,10000,333,300,0,0,0,0,0),
+(201010,42613,1000,333,300,0,0,0,0,0),
+(201010,33991,12500,333,300,0,0,0,0,0),
+(201010,34002,15000,333,300,0,0,0,0,0),
+(201010,28030,100000,333,275,13920,0,0,50,0),
+(201011,60619,150000,333,425,0,0,0,0,0),
+(201011,60668,150000,333,425,0,0,0,60,0),
+(201011,47900,150000,333,425,0,0,0,60,0),
+(201011,44489,150000,333,420,0,0,0,60,0),
+(201011,60663,150000,333,420,0,0,0,60,0),
+(201011,44509,150000,333,420,0,0,0,60,0),
+(201011,44593,150000,333,420,0,0,0,60,0),
+(201011,44529,150000,333,415,0,0,0,60,0),
+(201011,44598,150000,333,415,0,0,0,60,0),
+(201011,44589,150000,333,415,0,0,0,60,0),
+(201011,44510,150000,333,410,0,0,0,60,0),
+(201011,44633,150000,333,410,0,0,0,60,0),
+(201011,44488,150000,333,410,0,0,0,60,0),
+(201011,44508,150000,333,410,0,0,0,60,0),
+(201011,44484,150000,333,405,0,0,0,60,0),
+(201011,44584,150000,333,405,0,0,0,60,0),
+(201011,59636,100000,333,400,0,0,0,60,0),
+(201011,44636,100000,333,400,0,0,0,60,0),
+(201011,44645,100000,333,400,0,0,0,60,0),
+(201011,47766,100000,333,400,0,0,0,60,0),
+(201011,44616,100000,333,400,0,0,0,60,0),
+(201011,44629,100000,333,395,0,0,0,60,0),
+(201011,60653,100000,333,395,0,0,0,60,0),
+(201011,44513,100000,333,395,0,0,0,60,0),
+(201011,44500,100000,333,395,0,0,0,60,0),
+(201011,44582,100000,333,395,0,0,0,60,0),
+(201011,44492,100000,333,395,0,0,0,60,0),
+(201011,44635,100000,333,395,0,0,0,60,0),
+(201011,44630,80000,333,390,0,0,0,60,0),
+(201011,62959,90000,333,385,0,0,0,60,0),
+(201011,60623,90000,333,385,0,0,0,60,0),
+(201011,44528,90000,333,385,0,0,0,60,0),
+(201011,60621,80000,333,380,0,0,0,60,0),
+(201011,32667,50000,333,375,0,0,0,35,0),
+(201011,44506,50000,333,375,0,0,0,60,0),
+(201011,44555,50000,333,375,0,0,0,60,0),
+(201011,60606,50000,333,375,0,0,0,60,0),
+(201011,44623,50000,333,370,0,0,0,60,0),
+(201011,44592,50000,333,360,0,0,0,60,0),
+(201011,60616,50000,333,360,0,0,0,60,0),
+(201011,51312,350000,333,350,28029,0,0,65,0),
+(201011,60609,50000,333,350,0,0,0,60,0),
+(201011,27958,50000,333,350,0,0,0,60,0),
+(201011,69412,150000,333,445,0,0,0,60,0),
+(201012,19795,10000,202,275,0,0,0,0,0),
+(201012,19788,4000,202,250,0,0,0,0,0),
+(201012,19794,20000,202,270,0,0,0,0,0),
+(201012,19800,10000,202,285,0,0,0,0,0),
+(201012,19792,10000,202,260,0,0,0,0,0),
+(201012,19567,4000,202,250,0,0,0,0,0),
+(201012,23070,5000,202,250,0,0,0,0,0),
+(201012,23071,5000,202,260,0,0,0,0,0),
+(201012,19790,10000,202,260,0,0,0,0,0),
+(201012,19791,5000,202,260,0,0,0,0,0),
+(201012,19825,20000,202,290,0,0,0,0,0),
+(201012,3922,115,202,30,0,0,0,0,0),
+(201012,3923,130,202,30,0,0,0,0,0),
+(201012,3924,150,202,50,0,0,0,0,0),
+(201012,3925,150,202,50,0,0,0,0,0),
+(201012,4040,500,202,50,4036,0,0,10,0),
+(201012,7430,150,202,50,0,0,0,0,0),
+(201012,3977,200,202,60,0,0,0,0,0),
+(201012,3926,225,202,65,0,0,0,0,0),
+(201012,3929,250,202,75,0,0,0,0,0),
+(201012,3930,250,202,75,0,0,0,0,0),
+(201012,3931,250,202,75,0,0,0,0,0),
+(201012,3973,300,202,90,0,0,0,0,0),
+(201012,6458,400,202,135,0,0,0,0,0),
+(201012,3950,600,202,140,0,0,0,0,0),
+(201012,3955,750,202,150,0,0,0,0,0),
+(201012,3932,300,202,85,0,0,0,0,0),
+(201012,3953,600,202,145,0,0,0,0,0),
+(201012,3934,400,202,100,0,0,0,0,0),
+(201012,8334,300,202,100,0,0,0,0,0),
+(201012,3956,450,202,150,0,0,0,0,0),
+(201012,9271,500,202,150,0,0,0,0,0),
+(201012,3958,800,202,160,0,0,0,0,0),
+(201012,12584,1000,202,150,0,0,0,0,0),
+(201012,3936,420,202,105,0,0,0,0,0),
+(201012,3937,450,202,105,0,0,0,0,0),
+(201012,3961,900,202,170,0,0,0,0,0),
+(201012,3962,1000,202,175,0,0,0,0,0),
+(201012,3941,500,202,120,0,0,0,0,0),
+(201012,3963,1000,202,175,0,0,0,0,0),
+(201012,3965,1200,202,185,0,0,0,0,0),
+(201012,12586,1000,202,175,0,0,0,0,0),
+(201012,12590,1000,202,175,0,0,0,0,0),
+(201012,12585,1000,202,175,0,0,0,0,0),
+(201012,3967,1400,202,190,0,0,0,0,0),
+(201012,3947,300,202,125,0,0,0,0,0),
+(201012,12657,50000,202,200,4038,0,0,35,0),
+(201012,12591,1500,202,200,0,0,0,0,0),
+(201012,12589,1300,202,195,0,0,0,0,0),
+(201012,15255,1500,202,200,0,0,0,0,0),
+(201012,3938,450,202,105,0,0,0,0,0),
+(201012,3949,550,202,130,0,0,0,0,0),
+(201012,12594,1600,202,205,0,0,0,0,0),
+(201012,12595,1600,202,205,0,0,0,0,0),
+(201012,12596,1700,202,210,0,0,0,0,0),
+(201012,12599,1800,202,215,0,0,0,0,0),
+(201012,12603,1800,202,215,0,0,0,0,0),
+(201012,4041,5000,202,125,4037,0,0,20,0),
+(201012,12618,2200,202,230,0,0,0,0,0),
+(201012,12615,2500,202,225,0,0,0,0,0),
+(201012,3978,475,202,110,0,0,0,0,0),
+(201012,12619,2400,202,235,0,0,0,0,0),
+(201012,12621,2800,202,245,0,0,0,0,0),
+(201012,4039,10,0,0,0,0,0,5,0),
+(201012,3942,500,202,125,0,0,0,0,0),
+(201012,3945,500,202,125,0,0,0,0,0),
+(201012,3946,500,202,125,0,0,0,0,0),
+(201012,12622,2800,202,245,0,0,0,0,0),
+(201012,63750,5000,202,250,0,0,0,0,0),
+(201013,30304,10000,202,300,0,0,0,0,0),
+(201013,30351,100000,202,275,12656,0,0,50,0),
+(201013,30303,10000,202,300,0,0,0,0,0),
+(201013,44155,50000,202,300,0,0,0,60,0),
+(201013,30346,15000,202,310,0,0,0,0,0),
+(201013,30312,20000,202,320,0,0,0,0,0),
+(201013,30306,20000,202,325,0,0,0,0,0),
+(201013,39971,20000,202,335,0,0,0,0,0),
+(201013,30307,50000,202,340,0,0,0,0,0),
+(201013,30311,25000,202,325,0,0,0,0,0),
+(201013,30305,10000,202,300,0,0,0,0,0),
+(201013,30309,50000,202,340,0,0,0,0,0),
+(201013,30310,15000,202,300,0,0,0,0,0),
+(201013,30308,50000,202,340,0,0,0,0,0),
+(201013,41307,50000,202,375,0,0,0,0,0),
+(201014,61483,125000,202,420,0,0,0,0,0),
+(201014,61482,125000,202,420,0,0,0,0,0),
+(201014,41311,50000,202,350,0,0,0,0,0),
+(201014,41312,50000,202,350,0,0,0,0,0),
+(201014,41314,50000,202,350,0,0,0,0,0),
+(201014,41315,50000,202,350,0,0,0,0,0),
+(201014,41316,50000,202,350,0,0,0,0,0),
+(201014,41317,50000,202,350,0,0,0,0,0),
+(201014,41318,50000,202,350,0,0,0,0,0),
+(201014,41319,50000,202,350,0,0,0,0,0),
+(201014,41320,50000,202,350,0,0,0,0,0),
+(201014,41321,50000,202,350,0,0,0,0,0),
+(201014,53281,50000,202,350,0,0,0,0,0),
+(201014,56460,50000,202,350,0,0,0,0,0),
+(201014,54999,125000,202,400,0,0,0,0,0),
+(201014,63770,125000,202,400,0,0,0,0,0),
+(201014,56468,125000,202,405,0,0,0,0,0),
+(201014,56349,50000,202,350,0,0,0,0,0),
+(201014,55016,125000,202,405,0,0,0,0,0),
+(201014,61464,350000,202,350,30350,0,0,65,0),
+(201014,56459,100000,202,375,0,0,0,0,0),
+(201014,56474,125000,202,410,0,0,0,0,0),
+(201014,56476,125000,202,410,0,0,0,0,0),
+(201014,67839,100000,202,410,0,0,0,0,0),
+(201014,67326,100000,202,410,0,0,0,0,0),
+(201014,56461,50000,202,375,0,0,0,0,0),
+(201014,56463,100000,202,375,0,0,0,0,0),
+(201014,56475,125000,202,415,0,0,0,0,0),
+(201014,56477,125000,202,415,0,0,0,0,0),
+(201014,55002,100000,202,380,0,0,0,0,0),
+(201014,56466,125000,202,420,0,0,0,0,0),
+(201014,56469,150000,202,425,0,0,0,0,0),
+(201014,61481,125000,202,420,0,0,0,0,0),
+(201014,56465,125000,202,420,0,0,0,0,0),
+(201014,56467,125000,202,420,0,0,0,0,0),
+(201014,56470,150000,202,425,0,0,0,0,0),
+(201014,61471,100000,202,390,0,0,0,0,0),
+(201014,56462,150000,202,435,0,0,0,0,0),
+(201014,56478,200000,202,430,0,0,0,0,0),
+(201014,56472,150000,202,425,0,0,0,0,0),
+(201014,67920,150000,202,435,0,0,0,0,0),
+(201014,56464,100000,202,375,0,0,0,0,0),
+(201014,54998,125000,202,400,0,0,0,0,0),
+(201014,56480,150000,202,440,0,0,0,0,0),
+(201014,56481,150000,202,440,0,0,0,0,0),
+(201014,56483,150000,202,440,0,0,0,0,0),
+(201014,56484,150000,202,440,0,0,0,0,0),
+(201014,56486,150000,202,440,0,0,0,0,0),
+(201014,54353,125000,202,400,0,0,0,0,0),
+(201014,56574,150000,202,440,0,0,0,0,0),
+(201014,56487,150000,202,440,0,0,0,0,0),
+(201014,54793,100000,202,380,0,0,0,0,0),
+(201014,62271,150000,202,440,0,0,0,0,0),
+(201014,56479,200000,202,450,0,0,0,0,0),
+(201014,40274,50000,202,350,0,0,0,0,0),
+(201014,63765,100000,202,380,0,0,0,0,0),
+(201014,54736,100000,202,390,0,0,0,0,0),
+(201014,56471,100000,202,390,0,0,0,0,0),
+(201014,60874,200000,202,450,0,0,0,0,0),
+(201015,12908,2800,202,240,0,0,0,0,0),
+(201015,30560,35000,202,340,0,0,0,0,0),
+(201015,12758,2600,202,245,0,0,0,0,0),
+(201015,56514,150000,202,425,0,0,0,70,0),
+(201015,30563,50000,202,350,0,0,0,70,0),
+(201015,12755,2400,202,230,0,0,0,0,0),
+(201015,30566,100000,202,375,0,0,0,70,0),
+(201015,30565,100000,202,375,0,0,0,70,0),
+(201015,8895,2200,202,225,0,0,0,0,0),
+(201015,12718,1500,202,205,0,0,0,0,0),
+(201015,12760,1500,202,205,0,0,0,0,0),
+(201015,12717,1500,202,205,0,0,0,0,0),
+(201015,30558,25000,202,325,0,0,0,65,0),
+(201015,12715,1500,202,205,0,0,0,0,0),
+(201015,12754,2250,202,235,0,0,0,0,0),
+(201016,12895,1500,202,200,0,0,0,0,0),
+(201016,12897,1500,202,210,0,0,0,0,0),
+(201016,12899,1500,202,205,0,0,0,0,0),
+(201016,12905,2200,202,225,0,0,0,0,0),
+(201016,12906,2400,202,230,0,0,0,0,0),
+(201016,12907,2600,202,235,0,0,0,0,0),
+(201016,12759,2800,202,240,0,0,0,0,0),
+(201016,30569,35000,202,340,0,0,0,0,0),
+(201016,30570,50000,202,350,0,0,0,0,0),
+(201016,30568,25000,202,325,0,0,0,0,0),
+(201016,12902,1800,202,210,0,0,0,0,0),
+(201016,30575,100000,202,375,0,0,0,0,0),
+(201016,12903,2000,202,215,0,0,0,0,0),
+(201016,30574,100000,202,375,0,0,0,0,0),
+(201016,56473,150000,202,425,0,0,0,0,0),
+(201017,44155,60000,202,300,0,0,0,60,0),
+(201017,44157,180000,202,375,0,0,0,70,0),
+(201018,2372,10,0,0,0,0,0,5,0),
+(201018,2373,500,182,50,2366,0,0,10,0),
+(201018,3571,5000,182,125,2368,0,0,10,0),
+(201018,11994,50000,182,200,3570,0,0,25,0),
+(201019,28696,100000,182,275,11993,0,0,50,0),
+(201020,50301,350000,182,350,28695,0,0,55,0),
+(201021,64261,10000,773,250,0,0,0,0,0),
+(201021,67600,400,773,100,0,0,0,0,0),
+(201021,56991,20000,773,315,0,0,0,0,0),
+(201021,64267,10000,773,280,0,0,0,0,0),
+(201021,64262,10000,773,255,0,0,0,0,0),
+(201021,64266,10000,773,275,0,0,0,0,0),
+(201021,64259,10000,773,255,0,0,0,0,0),
+(201021,64258,10000,773,250,0,0,0,0,0),
+(201021,50602,19000,773,310,0,0,0,0,0),
+(201021,58481,19000,773,310,0,0,0,0,0),
+(201021,58489,19000,773,305,0,0,0,0,0),
+(201021,50609,19000,773,295,0,0,0,0,0),
+(201021,50618,19000,773,290,0,0,0,0,0),
+(201021,57713,19000,773,290,0,0,0,0,0),
+(201021,57133,14250,773,285,0,0,0,0,0),
+(201021,57156,14250,773,285,0,0,0,0,0),
+(201021,57213,14250,773,285,0,0,0,0,0),
+(201021,56985,9500,773,280,0,0,0,0,0),
+(201021,57219,9500,773,280,0,0,0,0,0),
+(201021,59493,9500,773,275,0,0,0,0,0),
+(201021,59494,9500,773,275,0,0,0,0,0),
+(201021,57712,9500,773,275,0,0,0,0,0),
+(201021,57251,9500,773,275,0,0,0,0,0),
+(201021,57272,9500,773,275,0,0,0,0,0),
+(201021,59502,9500,773,275,0,0,0,0,0),
+(201021,58480,9500,773,270,0,0,0,0,0),
+(201021,57216,9500,773,270,0,0,0,0,0),
+(201021,57185,9500,773,270,0,0,0,0,0),
+(201021,58488,9500,773,265,0,0,0,0,0),
+(201021,57025,9500,773,265,0,0,0,0,0),
+(201021,57210,9500,773,265,0,0,0,0,0),
+(201021,50601,9500,773,260,0,0,0,0,0),
+(201021,56957,9500,773,260,0,0,0,0,0),
+(201021,57002,9500,773,260,0,0,0,0,0),
+(201021,50608,9500,773,255,0,0,0,0,0),
+(201021,57711,9500,773,250,0,0,0,0,0),
+(201021,50617,9500,773,250,0,0,0,0,0),
+(201021,57274,7125,773,240,0,0,0,0,0),
+(201021,57154,7125,773,240,0,0,0,0,0),
+(201021,59488,5700,773,235,0,0,0,0,0),
+(201021,57132,5700,773,235,0,0,0,0,0),
+(201021,57244,5700,773,235,0,0,0,0,0),
+(201021,57183,5700,773,230,0,0,0,0,0),
+(201021,57024,5700,773,230,0,0,0,0,0),
+(201021,59491,5700,773,225,0,0,0,0,0),
+(201021,58478,4275,773,225,0,0,0,0,0),
+(201021,56979,5700,773,225,0,0,0,0,0),
+(201021,57001,5700,773,225,0,0,0,0,0),
+(201021,59489,5700,773,225,0,0,0,0,0),
+(201021,57710,5700,773,225,0,0,0,0,0),
+(201021,59490,5700,773,225,0,0,0,0,0),
+(201021,58487,4275,773,220,0,0,0,0,0),
+(201021,56959,4275,773,220,0,0,0,0,0),
+(201021,57151,4275,773,220,0,0,0,0,0),
+(201021,50600,4275,773,215,0,0,0,0,0),
+(201021,57270,4275,773,215,0,0,0,0,0),
+(201021,57242,4275,773,215,0,0,0,0,0),
+(201021,50607,4275,773,210,0,0,0,0,0),
+(201021,57201,4275,773,210,0,0,0,0,0),
+(201021,57131,4275,773,210,0,0,0,0,0),
+(201021,50616,4275,773,205,0,0,0,0,0),
+(201021,56982,4275,773,205,0,0,0,0,0),
+(201021,57023,4275,773,205,0,0,0,0,0),
+(201021,60336,2850,773,200,0,0,0,0,0),
+(201021,56956,2850,773,200,0,0,0,0,0),
+(201021,57000,2850,773,200,0,0,0,0,0),
+(201021,59387,2850,773,200,0,0,0,0,0),
+(201021,57709,2850,773,200,0,0,0,0,0),
+(201021,45378,47500,773,200,45359,0,0,35,0),
+(201021,59499,2850,773,200,0,0,0,0,0),
+(201021,57277,2850,773,190,0,0,0,0,0),
+(201021,57165,2850,773,190,0,0,0,0,0),
+(201021,57129,2850,773,185,0,0,0,0,0),
+(201021,57241,2850,773,185,0,0,0,0,0),
+(201021,57200,950,773,180,0,0,0,0,0),
+(201021,57020,950,773,180,0,0,0,0,0),
+(201021,59484,712,773,175,0,0,0,0,0),
+(201021,58476,712,773,175,0,0,0,0,0),
+(201021,57708,712,773,175,0,0,0,0,0),
+(201021,59486,712,773,175,0,0,0,0,0),
+(201021,56981,950,773,175,0,0,0,0,0),
+(201021,56994,950,773,175,0,0,0,0,0),
+(201021,59487,712,773,175,0,0,0,0,0),
+(201021,58486,712,773,170,0,0,0,0,0),
+(201021,56953,950,773,170,0,0,0,0,0),
+(201021,57161,950,773,170,0,0,0,0,0),
+(201021,50599,712,773,165,0,0,0,0,0),
+(201021,57271,712,773,165,0,0,0,0,0),
+(201021,57249,712,773,165,0,0,0,0,0),
+(201021,50606,712,773,160,0,0,0,0,0),
+(201021,57197,712,773,160,0,0,0,0,0),
+(201021,57125,712,773,160,0,0,0,0,0),
+(201021,50614,712,773,155,0,0,0,0,0),
+(201021,57032,712,773,155,0,0,0,0,0),
+(201021,56974,712,773,155,0,0,0,0,0),
+(201021,57707,712,773,150,0,0,0,0,0),
+(201021,57007,712,773,150,0,0,0,0,0),
+(201021,56948,712,773,150,0,0,0,0,0),
+(201021,57167,712,773,140,0,0,0,0,0),
+(201021,57245,712,773,140,0,0,0,0,0),
+(201021,57269,712,773,140,0,0,0,0,0),
+(201021,57188,712,773,135,0,0,0,0,0),
+(201021,57123,712,773,135,0,0,0,0,0),
+(201021,57031,712,773,135,0,0,0,0,0),
+(201021,56951,712,773,130,0,0,0,0,0),
+(201021,57005,712,773,130,0,0,0,0,0),
+(201021,56973,712,773,130,0,0,0,0,0),
+(201021,59475,712,773,125,0,0,0,0,0),
+(201021,59480,712,773,125,0,0,0,0,0),
+(201021,57157,712,773,125,0,0,0,0,0),
+(201021,57240,712,773,125,0,0,0,0,0),
+(201021,57262,712,773,125,0,0,0,0,0),
+(201021,45377,4750,773,125,45358,0,0,20,0),
+(201021,57706,712,773,125,0,0,0,0,0),
+(201021,59478,712,773,125,0,0,0,0,0),
+(201021,57030,475,773,120,0,0,0,0,0),
+(201021,57186,475,773,120,0,0,0,0,0),
+(201021,57121,475,773,120,0,0,0,0,0),
+(201021,56997,475,773,115,0,0,0,0,0),
+(201021,56945,475,773,115,0,0,0,0,0),
+(201021,56971,475,773,115,0,0,0,0,0),
+(201021,58565,475,773,110,0,0,0,0,0),
+(201021,48247,475,773,110,0,0,0,0,0),
+(201021,57163,475,773,110,0,0,0,0,0),
+(201021,57265,475,773,110,0,0,0,0,0),
+(201021,57238,475,773,110,0,0,0,0,0),
+(201021,57029,475,773,105,0,0,0,0,0),
+(201021,57184,475,773,105,0,0,0,0,0),
+(201021,57120,475,773,105,0,0,0,0,0),
+(201021,57704,380,773,100,0,0,0,0,0),
+(201021,48121,380,773,100,0,0,0,0,0),
+(201021,56995,380,773,100,0,0,0,0,0),
+(201021,56968,380,773,100,0,0,0,0,0),
+(201021,57196,380,773,95,0,0,0,0,0),
+(201021,57246,380,773,95,0,0,0,0,0),
+(201021,57158,380,773,95,0,0,0,0,0),
+(201021,57266,380,773,95,0,0,0,0,0),
+(201021,57119,380,773,95,0,0,0,0,0),
+(201021,57009,380,773,90,0,0,0,0,0),
+(201021,56961,380,773,90,0,0,0,0,0),
+(201021,56978,380,773,90,0,0,0,0,0),
+(201021,57027,380,773,90,0,0,0,0,0),
+(201021,58473,380,773,85,0,0,0,0,0),
+(201021,57703,380,773,85,0,0,0,0,0),
+(201021,56963,285,773,85,0,0,0,0,0),
+(201021,57162,285,773,85,0,0,0,0,0),
+(201021,57239,285,773,85,0,0,0,0,0),
+(201021,57259,285,773,85,0,0,0,0,0),
+(201021,58485,380,773,80,0,0,0,0,0),
+(201021,57022,285,773,80,0,0,0,0,0),
+(201021,56955,285,773,80,0,0,0,0,0),
+(201021,57194,285,773,80,0,0,0,0,0),
+(201021,57004,285,773,80,0,0,0,0,0),
+(201021,56976,285,773,80,0,0,0,0,0),
+(201021,57114,285,773,80,0,0,0,0,0),
+(201021,52840,380,773,75,0,0,0,0,0),
+(201021,50612,380,773,75,0,0,0,0,0),
+(201021,50605,380,773,75,0,0,0,0,0),
+(201021,50598,380,773,75,0,0,0,0,0),
+(201021,61288,950,773,75,0,0,0,0,0),
+(201021,53462,285,773,75,0,0,0,0,0),
+(201021,45376,950,773,50,45357,0,0,10,0),
+(201021,48248,47,773,35,0,0,0,0,0),
+(201021,52843,47,773,35,0,0,0,0,0),
+(201021,52739,142,773,35,0,0,0,0,0),
+(201021,58484,47,773,15,0,0,0,0,0),
+(201021,58472,47,773,15,0,0,0,0,0),
+(201021,45375,10,0,0,0,0,0,5,0),
+(201021,64260,10000,773,255,0,0,0,0,0),
+(201022,57257,30000,773,350,0,0,0,0,0),
+(201022,57222,30000,773,350,0,0,0,0,0),
+(201022,57192,30000,773,350,0,0,0,0,0),
+(201022,57003,30000,773,350,0,0,0,0,0),
+(201022,56943,30000,773,350,0,0,0,0,0),
+(201022,57227,30000,773,345,0,0,0,0,0),
+(201022,57172,30000,773,345,0,0,0,0,0),
+(201022,59340,30000,773,340,0,0,0,0,0),
+(201022,57113,30000,773,340,0,0,0,0,0),
+(201022,57033,30000,773,335,0,0,0,0,0),
+(201022,56972,30000,773,335,0,0,0,0,0),
+(201022,57252,30000,773,330,0,0,0,0,0),
+(201022,57224,30000,773,330,0,0,0,0,0),
+(201022,59503,20000,773,325,0,0,0,0,0),
+(201022,59496,20000,773,325,0,0,0,0,0),
+(201022,59495,20000,773,325,0,0,0,0,0),
+(201022,57714,20000,773,325,0,0,0,0,0),
+(201022,57275,30000,773,325,0,0,0,0,0),
+(201022,56984,30000,773,325,0,0,0,0,0),
+(201022,59339,20000,773,320,0,0,0,0,0),
+(201022,57168,20000,773,320,0,0,0,0,0),
+(201022,57187,20000,773,315,0,0,0,0,0),
+(201022,57008,20000,773,315,0,0,0,0,0),
+(201022,59338,20000,773,310,0,0,0,0,0),
+(201022,56952,20000,773,310,0,0,0,0,0),
+(201022,57226,20000,773,305,0,0,0,0,0),
+(201022,57122,20000,773,305,0,0,0,0,0),
+(201022,57236,20000,773,300,0,0,0,0,0),
+(201022,57221,20000,773,300,0,0,0,0,0),
+(201022,57026,20000,773,300,0,0,0,0,0),
+(201022,45379,100000,773,275,45360,0,0,50,0),
+(201023,69385,200000,773,440,0,0,0,0,0),
+(201023,58483,60000,773,420,0,0,0,0,0),
+(201023,58491,60000,773,415,0,0,0,0,0),
+(201023,50604,60000,773,410,0,0,0,0,0),
+(201023,50611,60000,773,405,0,0,0,0,0),
+(201023,61120,75000,773,400,0,0,0,35,0),
+(201023,61119,75000,773,400,0,0,0,35,0),
+(201023,61118,75000,773,400,0,0,0,35,0),
+(201023,61117,75000,773,400,0,0,0,35,0),
+(201023,59504,50000,773,400,0,0,0,0,0),
+(201023,59501,100000,773,400,0,0,0,0,0),
+(201023,59498,50000,773,400,0,0,0,0,0),
+(201023,59497,50000,773,400,0,0,0,0,0),
+(201023,56987,125000,773,400,0,0,0,0,0),
+(201023,50620,60000,773,400,0,0,0,0,0),
+(201023,61177,100000,773,385,0,0,0,0,0),
+(201023,57716,50000,773,375,0,0,0,0,0),
+(201023,57248,50000,773,375,0,0,0,0,0),
+(201023,57225,50000,773,375,0,0,0,0,0),
+(201023,57198,50000,773,375,0,0,0,0,0),
+(201023,57036,50000,773,375,0,0,0,0,0),
+(201023,57006,50000,773,375,0,0,0,0,0),
+(201023,56980,50000,773,375,0,0,0,0,0),
+(201023,58482,50000,773,370,0,0,0,0,0),
+(201023,58490,50000,773,365,0,0,0,0,0),
+(201023,50603,50000,773,360,0,0,0,0,0),
+(201023,50610,50000,773,355,0,0,0,0,0),
+(201023,64053,50000,773,350,0,0,0,0,0),
+(201023,60337,50000,773,350,0,0,0,0,0),
+(201023,59500,50000,773,350,0,0,0,0,0),
+(201023,57715,50000,773,350,0,0,0,0,0),
+(201023,50619,50000,773,350,0,0,0,0,0),
+(201023,45380,350000,773,350,45361,0,0,65,0),
+(201023,62162,50000,773,375,0,0,0,0,0),
+(201024,34961,10000,755,290,0,0,0,0,0),
+(201024,26911,15000,755,290,0,0,0,0,0),
+(201024,34960,10000,755,280,0,0,0,0,0),
+(201024,26908,12000,755,280,0,0,0,0,0),
+(201024,26907,10000,755,280,0,0,0,0,0),
+(201024,26903,10000,755,275,0,0,0,0,0),
+(201024,36526,10000,755,265,0,0,0,0,0),
+(201024,26902,10000,755,260,0,0,0,0,0),
+(201024,26885,5000,755,240,0,0,0,0,0),
+(201024,26883,4000,755,235,0,0,0,0,0),
+(201024,36525,4000,755,230,0,0,0,0,0),
+(201024,32809,3500,755,225,0,0,0,0,0),
+(201024,26880,3500,755,225,0,0,0,0,0),
+(201024,26876,3000,755,220,0,0,0,0,0),
+(201024,26874,5000,755,210,0,0,0,0,0),
+(201024,63743,3000,755,200,0,0,0,0,0),
+(201024,34959,3000,755,200,0,0,0,0,0),
+(201024,28899,50000,755,200,28894,0,0,35,0),
+(201024,26872,2500,755,200,0,0,0,0,0),
+(201024,34955,2500,755,180,0,0,0,0,0),
+(201024,25621,2000,755,180,0,0,0,0,0),
+(201024,32808,2000,755,175,0,0,0,0,0),
+(201024,25620,2000,755,170,0,0,0,0,0),
+(201024,25615,1500,755,150,0,0,0,0,0),
+(201024,25613,1200,755,135,0,0,0,0,0),
+(201024,28896,5000,755,125,25230,0,0,20,0),
+(201024,25321,1500,755,120,0,0,0,0,0),
+(201024,32807,600,755,110,0,0,0,0,0),
+(201024,25498,600,755,110,0,0,0,0,0),
+(201024,36524,800,755,105,0,0,0,0,0),
+(201024,25318,800,755,100,0,0,0,0,0),
+(201024,25305,1000,755,90,0,0,0,0,0),
+(201024,38175,650,755,80,0,0,0,0,0),
+(201024,25317,600,755,80,0,0,0,0,0),
+(201024,36523,600,755,75,0,0,0,0,0),
+(201024,25287,400,755,70,0,0,0,0,0),
+(201024,37818,500,755,65,0,0,0,0,0),
+(201024,25284,400,755,60,0,0,0,0,0),
+(201024,32801,200,755,50,0,0,0,0,0),
+(201024,26927,300,755,50,0,0,0,0,0),
+(201024,25490,300,755,50,0,0,0,0,0),
+(201024,25280,200,755,50,0,0,0,0,0),
+(201024,25278,200,755,50,0,0,0,0,0),
+(201024,25246,500,755,50,25229,0,0,10,0),
+(201024,26928,100,755,30,0,0,0,0,0),
+(201024,25283,100,755,30,0,0,0,0,0),
+(201024,32179,100,755,20,0,0,0,0,0),
+(201024,32178,100,755,20,0,0,0,0,0),
+(201024,31252,100,755,20,0,0,0,5,0),
+(201024,26926,50,755,5,0,0,0,0,0),
+(201024,25245,10,0,0,0,0,0,5,0),
+(201025,31048,20000,755,310,0,0,0,0,0),
+(201025,26916,20000,755,310,0,0,0,0,0),
+(201025,34590,10000,755,305,0,0,0,0,0),
+(201025,28953,10000,755,305,0,0,0,0,0),
+(201025,28917,10000,755,305,0,0,0,0,0),
+(201025,28905,10000,755,305,0,0,0,0,0),
+(201025,62941,10000,755,300,0,0,0,0,0),
+(201025,28950,10000,755,300,0,0,0,0,0),
+(201025,28938,10000,755,300,0,0,0,0,0),
+(201025,28925,10000,755,300,0,0,0,0,0),
+(201025,28916,10000,755,300,0,0,0,0,0),
+(201025,28910,10000,755,300,0,0,0,0,0),
+(201025,28903,10000,755,300,0,0,0,0,0),
+(201025,28901,100000,755,275,28895,0,0,50,0),
+(201025,41418,30000,755,365,0,0,0,0,0),
+(201025,47280,30000,755,350,0,0,0,0,0),
+(201025,41429,10000,755,350,0,0,0,0,0),
+(201025,40514,8500,755,340,0,0,0,0,0),
+(201025,31052,30000,755,335,0,0,0,0,0),
+(201025,31051,30000,755,335,0,0,0,0,0),
+(201025,41415,10000,755,330,0,0,0,0,0),
+(201025,41420,8500,755,325,0,0,0,0,0),
+(201025,41414,10000,755,325,0,0,0,0,0),
+(201025,38068,20000,755,325,0,0,0,0,0),
+(201025,34069,10000,755,325,0,0,0,0,0),
+(201025,28948,10000,755,325,0,0,0,0,0),
+(201025,28936,10000,755,325,0,0,0,0,0),
+(201025,31050,25000,755,320,0,0,0,0,0),
+(201025,28914,10000,755,315,0,0,0,0,0),
+(201025,31049,20000,755,310,0,0,0,0,0),
+(201026,58143,30000,755,370,0,0,0,0,0),
+(201026,56195,120000,755,380,0,0,0,0,0),
+(201026,56208,20000,755,370,0,0,0,0,0),
+(201026,58144,30000,755,370,0,0,0,0,0),
+(201026,56530,20000,755,360,0,0,0,0,0),
+(201026,56206,20000,755,360,0,0,0,0,0),
+(201026,53891,10000,755,360,0,0,0,0,0),
+(201026,53868,10000,755,360,0,0,0,0,0),
+(201026,53843,10000,755,360,0,0,0,0,0),
+(201026,58142,30000,755,350,0,0,0,0,0),
+(201026,58141,30000,755,350,0,0,0,0,0),
+(201026,56205,10000,755,350,0,0,0,0,0),
+(201026,56194,30000,755,350,0,0,0,0,0),
+(201026,56193,30000,755,350,0,0,0,0,0),
+(201026,54017,10000,755,350,0,0,0,0,0),
+(201026,53941,10000,755,350,0,0,0,0,0),
+(201026,53940,10000,755,350,0,0,0,0,0),
+(201026,53934,10000,755,350,0,0,0,0,0),
+(201026,53931,10000,755,350,0,0,0,0,0),
+(201026,53930,10000,755,350,0,0,0,0,0),
+(201026,53928,10000,755,350,0,0,0,0,0),
+(201026,53927,10000,755,350,0,0,0,0,0),
+(201026,53926,10000,755,350,0,0,0,0,0),
+(201026,53925,10000,755,350,0,0,0,0,0),
+(201026,53923,10000,755,350,0,0,0,0,0),
+(201026,53922,10000,755,350,0,0,0,0,0),
+(201026,53920,10000,755,350,0,0,0,0,0),
+(201026,53918,10000,755,350,0,0,0,0,0),
+(201026,53916,10000,755,350,0,0,0,0,0),
+(201026,53894,10000,755,350,0,0,0,0,0),
+(201026,53893,10000,755,350,0,0,0,0,0),
+(201026,53892,10000,755,350,0,0,0,0,0),
+(201026,53890,10000,755,350,0,0,0,0,0),
+(201026,53889,10000,755,350,0,0,0,0,0),
+(201026,53887,10000,755,350,0,0,0,0,0),
+(201026,53886,10000,755,350,0,0,0,0,0),
+(201026,53883,10000,755,350,0,0,0,0,0),
+(201026,53882,10000,755,350,0,0,0,0,0),
+(201026,53881,10000,755,350,0,0,0,0,0),
+(201026,53880,10000,755,350,0,0,0,0,0),
+(201026,53878,10000,755,350,0,0,0,0,0),
+(201026,53876,10000,755,350,0,0,0,0,0),
+(201026,53874,10000,755,350,0,0,0,0,0),
+(201026,53873,10000,755,350,0,0,0,0,0),
+(201026,53872,10000,755,350,0,0,0,0,0),
+(201026,53871,10000,755,350,0,0,0,0,0),
+(201026,53870,10000,755,350,0,0,0,0,0),
+(201026,53867,10000,755,350,0,0,0,0,0),
+(201026,53866,10000,755,350,0,0,0,0,0),
+(201026,53864,10000,755,350,0,0,0,0,0),
+(201026,53863,10000,755,350,0,0,0,0,0),
+(201026,53862,10000,755,350,0,0,0,0,0),
+(201026,53861,10000,755,350,0,0,0,0,0),
+(201026,53860,10000,755,350,0,0,0,0,0),
+(201026,53859,10000,755,350,0,0,0,0,0),
+(201026,53856,10000,755,350,0,0,0,0,0),
+(201026,53855,10000,755,350,0,0,0,0,0),
+(201026,53854,10000,755,350,0,0,0,0,0),
+(201026,53853,10000,755,350,0,0,0,0,0),
+(201026,53852,10000,755,350,0,0,0,0,0),
+(201026,53845,10000,755,350,0,0,0,0,0),
+(201026,53844,10000,755,350,0,0,0,0,0),
+(201026,53835,10000,755,350,0,0,0,0,0),
+(201026,53834,10000,755,350,0,0,0,0,0),
+(201026,53832,10000,755,350,0,0,0,0,0),
+(201026,53831,10000,755,350,0,0,0,0,0),
+(201026,51310,350000,755,350,28897,0,0,60,0),
+(201026,62242,150000,755,425,0,0,0,0,0),
+(201026,64728,100000,755,420,0,0,0,0,0),
+(201026,64727,100000,755,420,0,0,0,0,0),
+(201026,64726,100000,755,420,0,0,0,0,0),
+(201026,64725,100000,755,420,0,0,0,0,0),
+(201026,56197,100000,755,420,0,0,0,0,0),
+(201026,55402,120000,755,420,0,0,0,0,0),
+(201026,55399,120000,755,420,0,0,0,0,0),
+(201026,55394,120000,755,420,0,0,0,0,0),
+(201026,55386,120000,755,420,0,0,0,0,0),
+(201026,59759,150000,755,400,0,0,0,0,0),
+(201026,56203,150000,755,400,0,0,0,0,0),
+(201026,56202,150000,755,400,0,0,0,0,0),
+(201026,56201,150000,755,400,0,0,0,0,0),
+(201026,56199,150000,755,400,0,0,0,0,0),
+(201026,58146,50000,755,390,0,0,0,0,0),
+(201026,58145,50000,755,390,0,0,0,0,0),
+(201026,56531,100000,755,390,0,0,0,0,0),
+(201026,54007,100000,755,390,0,0,0,0,0),
+(201026,53989,100000,755,390,0,0,0,0,0),
+(201026,53969,100000,755,390,0,0,0,0,0),
+(201026,53956,100000,755,390,0,0,0,0,0),
+(201026,53947,100000,755,390,0,0,0,0,0),
+(201026,56196,80000,755,380,0,0,0,0,0),
+(201026,53953,100000,755,390,0,0,0,0,0),
+(201027,19103,15000,165,300,0,0,0,0,0),
+(201027,19102,15000,165,300,0,0,0,0,0),
+(201027,19098,15000,165,300,0,0,0,0,0),
+(201027,19092,15000,165,300,0,0,0,0,0),
+(201027,19091,15000,165,300,0,0,0,0,0),
+(201027,19083,15000,165,290,0,0,0,0,0),
+(201027,19082,15000,165,290,0,0,0,0,0),
+(201027,19072,10000,165,280,0,0,0,0,0),
+(201027,19071,10000,165,280,0,0,0,0,0),
+(201027,19065,10000,165,275,0,0,0,0,0),
+(201027,19055,10000,165,270,0,0,0,0,0),
+(201027,19052,10000,165,265,0,0,0,0,0),
+(201027,22331,5000,165,250,0,0,0,0,0),
+(201027,19058,5000,165,250,0,0,0,0,0),
+(201027,19047,5000,165,250,0,0,0,0,0),
+(201027,10558,4500,165,235,0,0,0,0,0),
+(201027,10556,4500,165,235,0,0,0,0,0),
+(201027,10552,4000,165,230,0,0,0,0,0),
+(201027,10548,4000,165,230,0,0,0,0,0),
+(201027,14932,4000,165,225,0,0,0,0,0),
+(201027,14930,4000,165,225,0,0,0,0,0),
+(201027,10518,3500,165,210,0,0,0,0,0),
+(201027,10511,3000,165,210,0,0,0,0,0),
+(201027,10507,3000,165,205,0,0,0,0,0),
+(201027,10499,3000,165,205,0,0,0,0,0),
+(201027,20650,4000,165,200,0,0,0,0,0),
+(201027,10663,50000,165,200,3811,0,0,35,0),
+(201027,10487,2000,165,200,0,0,0,0,0),
+(201027,10482,2000,165,200,0,0,0,0,0),
+(201027,9206,2500,165,195,0,0,0,0,0),
+(201027,7156,2400,165,190,0,0,0,0,0),
+(201027,6661,2000,165,190,0,0,0,0,0),
+(201027,9201,2000,165,185,0,0,0,0,0),
+(201027,9198,2000,165,180,0,0,0,0,0),
+(201027,3776,1200,165,180,0,0,0,0,0),
+(201027,9196,1500,165,175,0,0,0,0,0),
+(201027,7151,1200,165,175,0,0,0,0,0),
+(201027,7147,1000,165,160,0,0,0,0,0),
+(201027,3774,1000,165,160,0,0,0,0,0),
+(201027,20649,1000,165,150,0,0,0,0,0),
+(201027,9194,500,165,150,0,0,0,0,0),
+(201027,9193,500,165,150,0,0,0,0,0),
+(201027,3818,500,165,150,0,0,0,0,0),
+(201027,3780,750,165,150,0,0,0,0,0),
+(201027,3760,600,165,150,0,0,0,0,0),
+(201027,3764,500,165,145,0,0,0,0,0),
+(201027,3770,500,165,135,0,0,0,0,0),
+(201027,3768,500,165,130,0,0,0,0,0),
+(201027,9145,500,165,125,0,0,0,0,0),
+(201027,3812,5000,165,125,3104,0,0,20,0),
+(201027,3766,400,165,125,0,0,0,0,0),
+(201027,9074,500,165,120,0,0,0,0,0),
+(201027,2166,450,165,120,0,0,0,0,0),
+(201027,7135,400,165,115,0,0,0,0,0),
+(201027,2168,350,165,110,0,0,0,0,0),
+(201027,20648,500,165,100,0,0,0,0,0),
+(201027,3817,200,165,100,0,0,0,0,0),
+(201027,2167,350,165,100,0,0,0,0,0),
+(201027,2165,250,165,100,0,0,0,0,0),
+(201027,9068,400,165,95,0,0,0,0,0),
+(201027,3761,350,165,85,0,0,0,0,0),
+(201027,2159,250,165,85,0,0,0,0,0),
+(201027,3763,300,165,80,0,0,0,0,0),
+(201027,3759,200,165,75,0,0,0,0,0),
+(201027,9065,150,165,70,0,0,0,0,0),
+(201027,2162,100,165,60,0,0,0,0,0),
+(201027,3756,150,165,55,0,0,0,0,0),
+(201027,2161,100,165,55,0,0,0,0,0),
+(201027,2154,500,165,50,2108,0,0,10,0),
+(201027,2160,100,165,40,0,0,0,0,0),
+(201027,3816,50,165,35,0,0,0,0,0),
+(201027,9062,100,165,30,0,0,0,0,0),
+(201027,9060,100,165,30,0,0,0,0,0),
+(201027,3753,75,165,25,0,0,0,0,0),
+(201027,2153,50,165,15,0,0,0,0,0),
+(201027,2155,10,0,0,0,0,0,5,0),
+(201028,44970,50000,165,350,0,0,0,0,0),
+(201028,44770,50000,165,350,0,0,0,0,0),
+(201028,35540,20000,165,340,0,0,0,0,0),
+(201028,32469,25000,165,335,0,0,0,0,0),
+(201028,32465,25000,165,335,0,0,0,0,0),
+(201028,32481,25000,165,330,0,0,0,0,0),
+(201028,32473,25000,165,330,0,0,0,0,0),
+(201028,32455,20000,165,325,0,0,0,0,0),
+(201028,32468,20000,165,325,0,0,0,0,0),
+(201028,32480,20000,165,320,0,0,0,0,0),
+(201028,32472,20000,165,320,0,0,0,0,0),
+(201028,32464,20000,165,320,0,0,0,0,0),
+(201028,44344,18000,165,315,0,0,0,0,0),
+(201028,44343,18000,165,315,0,0,0,0,0),
+(201028,32471,20000,165,315,0,0,0,0,0),
+(201028,32479,20000,165,310,0,0,0,0,0),
+(201028,32467,20000,165,310,0,0,0,0,0),
+(201028,32463,20000,165,310,0,0,0,0,0),
+(201028,45100,15000,165,300,0,0,0,0,0),
+(201028,32478,15000,165,300,0,0,0,0,0),
+(201028,32470,15000,165,300,0,0,0,0,0),
+(201028,32466,15000,165,300,0,0,0,0,0),
+(201028,32462,15000,165,300,0,0,0,0,0),
+(201028,32456,15000,165,300,0,0,0,0,0),
+(201028,32454,10000,165,300,0,0,0,0,0),
+(201028,32550,100000,165,275,10662,0,0,50,0),
+(201029,69388,200000,165,450,0,0,0,0,0),
+(201029,69386,200000,165,450,0,0,0,0,0),
+(201029,60640,200000,165,440,0,0,0,0,0),
+(201029,60637,200000,165,440,0,0,0,0,0),
+(201029,62448,80000,165,425,0,0,0,0,0),
+(201029,60669,100000,165,425,0,0,0,0,0),
+(201029,60660,100000,165,425,0,0,0,0,0),
+(201029,60655,200000,165,425,0,0,0,0,0),
+(201029,60649,100000,165,425,0,0,0,0,0),
+(201029,50967,80000,165,425,0,0,0,0,0),
+(201029,50965,80000,165,425,0,0,0,0,0),
+(201029,60671,100000,165,420,0,0,0,0,0),
+(201029,60666,80000,165,420,0,0,0,0,0),
+(201029,60665,100000,165,420,0,0,0,0,0),
+(201029,60658,200000,165,420,0,0,0,0,0),
+(201029,60652,100000,165,420,0,0,0,0,0),
+(201029,60651,100000,165,420,0,0,0,0,0),
+(201029,60643,50000,165,415,0,0,0,0,0),
+(201029,60583,50000,165,405,0,0,0,0,0),
+(201029,50964,50000,165,405,0,0,0,0,0),
+(201029,60630,80000,165,400,0,0,0,0,0),
+(201029,60620,100000,165,400,0,0,0,0,0),
+(201029,60605,100000,165,400,0,0,0,0,0),
+(201029,60584,50000,165,400,0,0,0,0,0),
+(201029,57691,70000,165,400,0,0,0,0,0),
+(201029,57690,70000,165,400,0,0,0,0,0),
+(201029,57683,70000,165,400,0,0,0,0,0),
+(201029,51568,100000,165,400,0,0,0,0,0),
+(201029,50966,50000,165,400,0,0,0,0,0),
+(201029,60629,80000,165,395,0,0,0,0,0),
+(201029,60627,80000,165,395,0,0,0,0,0),
+(201029,60613,80000,165,395,0,0,0,0,0),
+(201029,60611,80000,165,395,0,0,0,0,0),
+(201029,60604,80000,165,395,0,0,0,0,0),
+(201029,60601,80000,165,395,0,0,0,0,0),
+(201029,55199,80000,165,395,0,0,0,0,0),
+(201029,51570,80000,165,395,0,0,0,0,0),
+(201029,51569,80000,165,395,0,0,0,0,0),
+(201029,50963,80000,165,395,0,0,0,0,0),
+(201029,50936,80000,165,390,0,0,0,0,0),
+(201029,60624,30000,165,385,0,0,0,0,0),
+(201029,60622,30000,165,385,0,0,0,0,0),
+(201029,60608,30000,165,385,0,0,0,0,0),
+(201029,60607,30000,165,385,0,0,0,0,0),
+(201029,60600,30000,165,385,0,0,0,0,0),
+(201029,60599,30000,165,385,0,0,0,0,0),
+(201029,51572,30000,165,385,0,0,0,0,0),
+(201029,51571,30000,165,385,0,0,0,0,0),
+(201029,60631,80000,165,380,0,0,0,0,0),
+(201029,50960,30000,165,380,0,0,0,0,0),
+(201029,50958,30000,165,380,0,0,0,0,0),
+(201029,50954,30000,165,380,0,0,0,0,0),
+(201029,50953,30000,165,380,0,0,0,0,0),
+(201029,50949,30000,165,380,0,0,0,0,0),
+(201029,50946,30000,165,380,0,0,0,0,0),
+(201029,50943,30000,165,380,0,0,0,0,0),
+(201029,50940,30000,165,380,0,0,0,0,0),
+(201029,50961,30000,165,375,0,0,0,0,0),
+(201029,50956,30000,165,375,0,0,0,0,0),
+(201029,50952,30000,165,375,0,0,0,0,0),
+(201029,50950,30000,165,375,0,0,0,0,0),
+(201029,50947,30000,165,375,0,0,0,0,0),
+(201029,50945,30000,165,375,0,0,0,0,0),
+(201029,50942,30000,165,375,0,0,0,0,0),
+(201029,50938,30000,165,375,0,0,0,0,0),
+(201029,50959,30000,165,370,0,0,0,0,0),
+(201029,50957,30000,165,370,0,0,0,0,0),
+(201029,50955,30000,165,370,0,0,0,0,0),
+(201029,50951,30000,165,370,0,0,0,0,0),
+(201029,50948,30000,165,370,0,0,0,0,0),
+(201029,50944,30000,165,370,0,0,0,0,0),
+(201029,50941,30000,165,370,0,0,0,0,0),
+(201029,50939,30000,165,370,0,0,0,0,0),
+(201029,51301,350000,165,350,32549,0,0,65,0),
+(201029,50962,50000,165,350,0,0,0,0,0),
+(201029,64661,50000,165,350,0,0,0,0,0),
+(201029,32550,100000,165,275,10662,0,0,50,0),
+(201029,10663,50000,165,200,3811,0,0,35,0),
+(201029,3812,5000,165,125,3104,0,0,20,0),
+(201029,2154,500,165,50,2108,0,0,10,0),
+(201029,2155,10,0,0,0,0,0,5,0),
+(201030,35588,100000,165,375,0,0,0,0,0),
+(201030,35587,100000,165,375,0,0,0,0,0),
+(201030,35585,100000,165,375,0,0,0,0,0),
+(201030,36078,20000,165,330,0,0,0,0,0),
+(201030,36075,10000,165,260,0,0,0,0,0),
+(201030,10647,10000,165,250,0,0,0,0,0),
+(201030,10621,10000,165,225,0,0,0,0,0),
+(201031,35584,100000,165,375,0,0,0,0,0),
+(201031,35582,100000,165,375,0,0,0,0,0),
+(201031,35580,100000,165,375,0,0,0,0,0),
+(201031,35577,100000,165,375,0,0,0,0,0),
+(201031,35576,100000,165,375,0,0,0,0,0),
+(201031,35575,100000,165,375,0,0,0,0,0),
+(201031,36079,40000,165,330,0,0,0,0,0),
+(201031,24654,50000,165,300,0,0,0,0,0),
+(201031,24655,30000,165,280,0,0,0,0,0),
+(201031,36076,10000,165,260,0,0,0,0,0),
+(201031,10650,10000,165,255,0,0,0,0,0),
+(201031,10619,10000,165,225,0,0,0,0,0),
+(201032,35591,100000,165,375,0,0,0,0,0),
+(201032,35590,100000,165,375,0,0,0,0,0),
+(201032,35589,100000,165,375,0,0,0,0,0),
+(201032,36077,20000,165,330,0,0,0,0,0),
+(201032,36074,10000,165,260,0,0,0,0,0),
+(201032,10632,10000,165,250,0,0,0,0,0),
+(201032,10630,10000,165,230,0,0,0,0,0),
+(201033,2581,10,186,0,0,0,0,5,0),
+(201033,2582,500,186,50,2575,0,0,10,0),
+(201033,2659,200,186,65,0,0,0,0,0),
+(201033,2658,200,186,75,0,0,0,0,0),
+(201033,3304,50,186,65,0,0,0,0,0),
+(201033,3307,500,186,125,0,0,0,0,0),
+(201033,3568,5000,186,125,2576,0,0,10,0),
+(201033,3308,2500,186,155,0,0,0,0,0),
+(201033,3569,2500,186,165,0,0,0,0,0),
+(201033,10249,50000,186,200,3564,0,0,25,0),
+(201033,10097,5000,186,175,0,0,0,0,0),
+(201033,10098,10000,186,230,0,0,0,0,0),
+(201033,16153,20000,186,250,0,0,0,0,0),
+(201033,70524,10000,186,250,0,0,0,0,0),
+(201034,29361,100000,186,350,0,0,0,0,0),
+(201034,29360,40000,186,350,0,0,0,0,0),
+(201034,29359,40000,186,350,0,0,0,0,0),
+(201034,29358,40000,186,325,0,0,0,0,0),
+(201034,35751,10000,186,300,0,0,0,0,0),
+(201034,35750,10000,186,300,0,0,0,0,0),
+(201034,29356,40000,186,300,0,0,0,0,0),
+(201034,29355,100000,186,275,10248,0,0,0,0),
+(201034,29686,100000,186,375,0,0,0,0,0),
+(201035,55211,200000,186,450,0,0,0,0,0),
+(201035,55208,200000,186,450,0,0,0,0,0),
+(201035,49258,150000,186,400,0,0,0,0,0),
+(201035,50309,350000,186,350,29354,0,0,0,0),
+(201035,49252,100000,186,350,0,0,0,0,0),
+(201036,10769,50000,393,200,8618,0,0,25,0),
+(201036,8620,5000,393,125,8617,0,0,10,0),
+(201036,8619,500,393,50,8613,0,0,0,0),
+(201036,8615,10,0,0,0,0,0,0,0),
+(201037,32679,100000,393,275,10768,0,0,40,0),
+(201038,50307,350000,393,350,32678,0,0,55,0),
+(201039,18453,15000,197,300,0,0,0,0,0),
+(201039,18451,15000,197,300,0,0,0,0,0),
+(201039,18450,15000,197,300,0,0,0,0,0),
+(201039,18449,15000,197,300,0,0,0,0,0),
+(201039,18446,15000,197,300,0,0,0,0,0),
+(201039,18444,15000,197,295,0,0,0,0,0),
+(201039,18442,15000,197,290,0,0,0,0,0),
+(201039,18441,15000,197,290,0,0,0,0,0),
+(201039,18438,15000,197,285,0,0,0,0,0),
+(201039,18437,15000,197,285,0,0,0,0,0),
+(201039,18424,15000,197,280,0,0,0,0,0),
+(201039,18423,15000,197,280,0,0,0,0,0),
+(201039,18421,12500,197,275,0,0,0,0,0),
+(201039,18420,12500,197,275,0,0,0,0,0),
+(201039,18417,12500,197,275,0,0,0,0,0),
+(201039,18416,12500,197,275,0,0,0,0,0),
+(201039,18415,10000,197,270,0,0,0,0,0),
+(201039,18414,10000,197,270,0,0,0,0,0),
+(201039,18413,10000,197,270,0,0,0,0,0),
+(201039,18411,10000,197,265,0,0,0,0,0),
+(201039,18410,10000,197,265,0,0,0,0,0),
+(201039,18409,10000,197,265,0,0,0,0,0),
+(201039,18407,10000,197,260,0,0,0,0,0),
+(201039,18406,10000,197,260,0,0,0,0,0),
+(201039,18403,10000,197,255,0,0,0,0,0),
+(201039,18402,10000,197,255,0,0,0,0,0),
+(201039,18401,10000,197,250,0,0,0,0,0),
+(201039,12092,7500,197,250,0,0,0,0,0),
+(201039,12088,7500,197,245,0,0,0,0,0),
+(201039,12079,6500,197,235,0,0,0,0,0),
+(201039,12077,5000,197,235,0,0,0,0,0),
+(201039,12074,6000,197,230,0,0,0,0,0),
+(201039,12073,6000,197,230,0,0,0,0,0),
+(201039,12072,6000,197,230,0,0,0,0,0),
+(201039,12070,5000,197,225,0,0,0,0,0),
+(201039,12069,5000,197,225,0,0,0,0,0),
+(201039,12067,5000,197,225,0,0,0,0,0),
+(201039,12065,5000,197,225,0,0,0,0,0),
+(201039,12061,2500,197,215,0,0,0,0,0),
+(201039,12053,5000,197,215,0,0,0,0,0),
+(201039,12050,4000,197,210,0,0,0,0,0),
+(201039,8804,5000,197,210,0,0,0,0,0),
+(201039,12049,4000,197,205,0,0,0,0,0),
+(201039,12048,4000,197,205,0,0,0,0,0),
+(201039,12181,50000,197,200,3910,0,0,35,0),
+(201039,8799,3000,197,195,0,0,0,0,0),
+(201039,8770,1000,197,190,0,0,0,0,0),
+(201039,8791,2500,197,185,0,0,0,0,0),
+(201039,3861,1000,197,185,0,0,0,0,0),
+(201039,8774,1000,197,180,0,0,0,0,0),
+(201039,8772,1000,197,175,0,0,0,0,0),
+(201039,8766,1000,197,175,0,0,0,0,0),
+(201039,8489,750,197,175,0,0,0,0,0),
+(201039,3865,1000,197,175,0,0,0,0,0),
+(201039,8764,900,197,170,0,0,0,0,0),
+(201039,3871,500,197,170,0,0,0,0,0),
+(201039,8762,750,197,160,0,0,0,0,0),
+(201039,8483,500,197,160,0,0,0,0,0),
+(201039,3859,750,197,150,0,0,0,0,0),
+(201039,3813,800,197,150,0,0,0,0,0),
+(201039,8760,600,197,145,0,0,0,0,0),
+(201039,8758,600,197,140,0,0,0,0,0),
+(201039,6690,1000,197,135,0,0,0,0,0),
+(201039,3852,750,197,130,0,0,0,0,0),
+(201039,63742,750,197,125,0,0,0,0,0),
+(201039,3913,5000,197,125,3909,0,0,20,0),
+(201039,3855,750,197,125,0,0,0,0,0),
+(201039,3839,500,197,125,0,0,0,0,0),
+(201039,8467,250,197,110,0,0,0,0,0),
+(201039,3866,250,197,110,0,0,0,0,0),
+(201039,3850,500,197,110,0,0,0,0,0),
+(201039,3848,500,197,110,0,0,0,0,0),
+(201039,2406,200,197,100,0,0,0,0,0),
+(201039,2401,300,197,95,0,0,0,0,0),
+(201039,6521,400,197,90,0,0,0,0,0),
+(201039,3843,400,197,85,0,0,0,0,0),
+(201039,2399,300,197,85,0,0,0,0,0),
+(201039,3845,300,197,80,0,0,0,0,0),
+(201039,3757,200,197,80,0,0,0,0,0),
+(201039,12046,300,197,75,0,0,0,0,0),
+(201039,2964,100,197,75,0,0,0,0,0),
+(201039,2402,250,197,75,0,0,0,0,0),
+(201039,3842,300,197,70,0,0,0,0,0),
+(201039,2396,200,197,70,0,0,0,0,0),
+(201039,2395,300,197,70,0,0,0,0,0),
+(201039,2386,200,197,65,0,0,0,0,0),
+(201039,3841,200,197,60,0,0,0,0,0),
+(201039,2397,200,197,60,0,0,0,0,0),
+(201039,3912,500,197,50,3908,0,0,10,0),
+(201039,3755,100,197,45,0,0,0,0,0),
+(201039,8465,50,197,40,0,0,0,0,0),
+(201039,2394,50,197,40,0,0,0,0,0),
+(201039,2392,50,197,40,0,0,0,0,0),
+(201039,3840,100,197,35,0,0,0,0,0),
+(201039,7624,50,197,30,0,0,0,0,0),
+(201039,7623,50,197,30,0,0,0,0,0),
+(201039,3914,50,197,30,0,0,0,0,0),
+(201039,12045,50,197,20,0,0,0,0,0),
+(201039,8776,50,197,15,0,0,0,0,0),
+(201039,2385,50,197,10,0,0,0,0,0),
+(201039,3915,25,197,1,0,0,0,0,0),
+(201039,2393,25,197,1,0,0,0,0,0),
+(201039,3911,10,0,0,0,0,0,5,0),
+(201040,26772,20000,197,335,0,0,0,0,0),
+(201040,26771,20000,197,325,0,0,0,0,0),
+(201040,26770,20000,197,320,0,0,0,0,0),
+(201040,26746,15000,197,315,0,0,0,0,0),
+(201040,26765,15000,197,310,0,0,0,0,0),
+(201040,26764,15000,197,310,0,0,0,0,0),
+(201040,31460,20000,197,300,0,0,0,0,0),
+(201040,26745,20000,197,300,0,0,0,0,0),
+(201040,26791,100000,197,275,12180,0,0,50,0),
+(201041,64729,100000,197,400,0,0,0,0,0),
+(201041,56028,200000,197,440,0,0,0,0,0),
+(201041,56026,200000,197,440,0,0,0,0,0),
+(201041,56024,200000,197,440,0,0,0,0,0),
+(201041,56029,200000,197,435,0,0,0,0,0),
+(201041,56027,200000,197,435,0,0,0,0,0),
+(201041,56025,200000,197,435,0,0,0,0,0),
+(201041,60993,180000,197,425,0,0,0,0,0),
+(201041,60971,150000,197,425,0,0,0,0,0),
+(201041,56021,100000,197,425,0,0,0,0,0),
+(201041,56018,100000,197,425,0,0,0,0,0),
+(201041,60994,180000,197,420,0,0,0,0,0),
+(201041,60990,180000,197,420,0,0,0,0,0),
+(201041,59589,120000,197,420,0,0,0,0,0),
+(201041,59588,120000,197,420,0,0,0,0,0),
+(201041,59587,100000,197,420,0,0,0,0,0),
+(201041,59586,100000,197,420,0,0,0,0,0),
+(201041,59585,100000,197,420,0,0,0,0,0),
+(201041,59584,100000,197,420,0,0,0,0,0),
+(201041,56023,100000,197,420,0,0,0,0,0),
+(201041,56022,100000,197,420,0,0,0,0,0),
+(201041,56020,100000,197,420,0,0,0,0,0),
+(201041,56019,100000,197,420,0,0,0,0,0),
+(201041,55941,125000,197,420,0,0,0,0,0),
+(201041,55777,125000,197,420,0,0,0,0,0),
+(201041,55769,125000,197,420,0,0,0,0,0),
+(201041,55642,125000,197,420,0,0,0,0,0),
+(201041,59583,100000,197,415,0,0,0,0,0),
+(201041,59582,100000,197,415,0,0,0,0,0),
+(201041,56003,100000,197,415,0,0,0,0,0),
+(201041,56002,100000,197,415,0,0,0,0,0),
+(201041,56001,100000,197,415,0,0,0,0,0),
+(201041,55943,125000,197,415,0,0,0,0,0),
+(201041,55925,125000,197,415,0,0,0,0,0),
+(201041,60969,105000,197,300,0,0,0,0,0),
+(201041,56007,80000,197,410,0,0,0,0,0),
+(201041,55924,125000,197,410,0,0,0,0,0),
+(201041,55923,100000,197,410,0,0,0,0,0),
+(201041,64730,100000,197,405,0,0,0,0,0),
+(201041,56039,100000,197,405,0,0,0,0,0),
+(201041,56034,100000,197,405,0,0,0,0,0),
+(201041,55922,100000,197,405,0,0,0,0,0),
+(201041,55921,100000,197,405,0,0,0,0,0),
+(201041,56010,100000,197,400,0,0,0,0,0),
+(201041,56008,100000,197,400,0,0,0,0,0),
+(201041,56000,50000,197,400,0,0,0,0,0),
+(201041,55995,50000,197,400,0,0,0,0,0),
+(201041,55920,50000,197,400,0,0,0,0,0),
+(201041,55900,125000,197,400,0,0,0,0,0),
+(201041,56015,100000,197,395,0,0,0,0,0),
+(201041,55919,100000,197,395,0,0,0,0,0),
+(201041,55914,50000,197,395,0,0,0,0,0),
+(201041,55901,50000,197,395,0,0,0,0,0),
+(201041,56014,100000,197,390,0,0,0,0,0),
+(201041,55911,80000,197,390,0,0,0,0,0),
+(201041,55913,80000,197,385,0,0,0,0,0),
+(201041,55910,80000,197,385,0,0,0,0,0),
+(201041,56030,50000,197,380,0,0,0,0,0),
+(201041,55907,50000,197,380,0,0,0,0,0),
+(201041,55906,50000,197,375,0,0,0,0,0),
+(201041,55908,50000,197,370,0,0,0,0,0),
+(201041,55904,50000,197,360,0,0,0,0,0),
+(201041,55903,50000,197,360,0,0,0,0,0),
+(201041,55898,50000,197,360,0,0,0,0,0),
+(201041,56031,50000,197,350,0,0,0,0,0),
+(201041,55902,50000,197,350,0,0,0,0,0),
+(201041,55899,50000,197,350,0,0,0,0,0),
+(201041,51308,350000,197,350,26790,0,0,65,0),
+(201042,12082,7000,197,240,0,0,0,0,0),
+(201042,12076,6500,197,235,0,0,0,0,0),
+(201042,12071,6000,197,225,0,0,0,0,0),
+(201042,12055,5500,197,215,0,0,0,0,0),
+(201042,12052,5000,197,210,0,0,0,0,0),
+(202001,18249,25000,356,200,7732,0,0,10,0),
+(202001,54083,10000,356,125,7731,0,0,10,0),
+(202001,7733,100,0,0,0,0,0,5,0),
+(202001,7734,500,356,50,7620,0,0,10,0),
+(202002,54084,100000,356,275,18248,0,0,10,0),
+(202003,51293,350000,356,350,33095,0,0,10,0),
+(202004,21175,4000,185,200,0,0,0,0,0),
+(202004,6500,300,185,125,0,0,0,0,0),
+(202004,2546,150,185,80,0,0,0,0,0),
+(202004,2544,200,185,75,0,0,0,0,0),
+(202004,6499,100,185,50,0,0,0,0,0),
+(202004,2541,100,185,50,0,0,0,0,0),
+(202004,2539,50,185,10,0,0,0,0,0),
+(202004,37836,10,185,1,0,0,0,0,0),
+(202004,18261,25000,185,200,3413,0,0,0,0),
+(202004,54257,1000,185,125,3102,0,0,0,0),
+(202004,3412,500,185,50,2550,0,0,0,0),
+(202004,2551,100,0,0,0,0,0,0,0),
+(202005,54256,100000,185,275,18260,0,0,0,0),
+(202006,64358,50000,185,400,0,0,0,0,0),
+(202006,45554,50000,185,375,0,0,0,0,0),
+(202006,45569,20000,185,350,0,0,0,0,0),
+(202006,45566,20000,185,350,0,0,0,0,0),
+(202006,45565,20000,185,350,0,0,0,0,0),
+(202006,45564,20000,185,350,0,0,0,0,0),
+(202006,45563,20000,185,350,0,0,0,0,0),
+(202006,45562,10000,185,350,0,0,0,0,0),
+(202006,45561,10000,185,350,0,0,0,0,0),
+(202006,45560,10000,185,350,0,0,0,0,0),
+(202006,45553,20000,185,350,0,0,0,0,0),
+(202006,45552,20000,185,350,0,0,0,0,0),
+(202006,45551,20000,185,350,0,0,0,0,0),
+(202006,45550,20000,185,350,0,0,0,0,0),
+(202006,45549,20000,185,350,0,0,0,0,0),
+(202006,51295,350000,185,350,33359,0,0,0,0),
+(202006,58065,20000,185,350,0,0,0,0,0),
+(202007,18630,20000,129,290,0,0,0,0,0),
+(202007,10841,10000,129,240,0,0,0,0,0),
+(202007,18629,20000,129,260,0,0,0,0,0),
+(202007,7934,250,129,80,0,0,0,0,0),
+(202007,10840,10000,129,210,0,0,0,0,0),
+(202007,7929,5000,129,180,0,0,0,0,0),
+(202007,7928,5000,129,150,0,0,0,0,0),
+(202007,3278,1000,129,115,0,0,0,0,0),
+(202007,3277,250,129,80,0,0,0,0,0),
+(202007,54254,1000,129,125,3274,0,0,0,0),
+(202007,3276,100,129,40,0,0,0,0,0),
+(202007,10847,25000,129,200,7924,0,0,35,0),
+(202007,3280,500,129,50,3273,0,0,0,0),
+(202007,3279,100,0,0,0,0,0,0,0),
+(202008,27033,20000,129,330,0,0,0,0,0),
+(202008,27032,20000,129,300,0,0,0,0,0),
+(202008,54255,20000,129,275,10846,0,0,0,0),
+(202009,45545,40000,129,350,0,0,0,0,0),
+(202009,50299,350000,129,350,27028,0,0,0,0),
+(202010,33391,500000,762,75,0,0,0,40,0),
+(202010,33388,40000,762,0,0,0,0,20,0),
+(202011,34091,50000000,762,225,0,0,0,70,0),
+(202011,34090,2500000,762,150,0,0,0,60,0),
+(202012,54197,10000000,762,225,0,0,0,77,0),
+(3690,33388,40000,762,0,0,0,0,20,0),
+(3690,33391,500000,762,75,0,0,0,40,0),
+(4732,33388,40000,762,0,0,0,0,20,0),
+(4732,33391,500000,762,75,0,0,0,40,0),
+(4752,33388,40000,762,0,0,0,0,20,0),
+(4752,33391,500000,762,75,0,0,0,40,0),
+(4772,33388,40000,762,0,0,0,0,20,0),
+(4772,33391,500000,762,75,0,0,0,40,0),
+(4773,33388,40000,762,0,0,0,0,20,0),
+(4773,33391,500000,762,75,0,0,0,40,0),
+(7953,33388,40000,762,0,0,0,0,20,0),
+(7953,33391,500000,762,75,0,0,0,40,0),
+(7954,33388,40000,762,0,0,0,0,20,0),
+(7954,33391,500000,762,75,0,0,0,40,0),
+(16280,33388,40000,762,0,0,0,0,20,0),
+(16280,33391,500000,762,75,0,0,0,40,0),
+(20914,33388,40000,762,0,0,0,0,20,0),
+(20914,33391,500000,762,75,0,0,0,40,0),
+(543,530,4000,0,0,0,0,0,20,0),
+(2485,10059,15000,0,0,0,0,0,40,0),
+(2485,3561,2000,0,0,0,0,0,20,0),
+(2489,3562,2000,0,0,0,0,0,20,0),
+(2489,11416,15000,0,0,0,0,0,40,0),
+(2492,11418,15000,0,0,0,0,0,40,0),
+(2492,3563,2000,0,0,0,0,0,20,0),
+(2704,2567,1000,0,0,0,0,0,0,0),
+(2704,264,1000,0,0,0,0,0,0,0),
+(2704,197,1000,0,0,0,0,0,0,0),
+(2704,227,1000,0,0,0,0,0,0,0),
+(2704,196,1000,0,0,0,0,0,0,0),
+(2818,4094,500,185,175,0,0,0,25,0),
+(2878,530,4000,0,0,0,0,0,20,0),
+(2879,530,4000,0,0,0,0,0,20,0),
+(2880,2795,240,185,25,0,0,0,0,0),
+(3306,530,4000,0,0,0,0,0,20,0),
+(3545,530,4000,0,0,0,0,0,20,0),
+(3620,530,4000,0,0,0,0,0,20,0),
+(3622,530,4000,0,0,0,0,0,20,0),
+(3624,530,4000,0,0,0,0,0,20,0),
+(3698,530,4000,0,0,0,0,0,20,0),
+(4165,3565,8000,0,0,0,0,0,20,0),
+(4165,11419,32000,0,0,0,0,0,40,0),
+(4320,530,4000,0,0,0,0,0,20,0),
+(5957,11420,32000,0,0,0,0,0,40,0),
+(5957,3566,8000,0,0,0,0,0,20,0),
+(5958,3567,2000,0,0,0,0,0,20,0),
+(5958,11417,15000,0,0,0,0,0,40,0),
+(10086,530,4000,0,0,0,0,0,20,0),
+(10088,530,4000,0,0,0,0,0,20,0),
+(10370,197,1000,0,0,0,0,0,0,0),
+(11865,266,1000,0,0,0,0,0,0,0),
+(11865,199,1000,0,0,0,0,0,0,0),
+(11865,15590,1000,0,0,0,0,0,0,0),
+(11865,198,1000,0,0,0,0,0,0,0),
+(11865,197,1000,0,0,0,0,0,0,0),
+(11865,196,1000,0,0,0,0,0,0,0),
+(11866,15590,1000,0,0,0,0,0,0,0),
+(11866,1180,1000,0,0,0,0,0,0,0),
+(11866,2567,1000,0,0,0,0,0,0,0),
+(11866,264,1000,0,0,0,0,0,0,0),
+(11866,227,1000,0,0,0,0,0,0,0),
+(11867,5011,1000,0,0,0,0,0,0,0),
+(11867,1180,1000,0,0,0,0,0,0,0),
+(11867,202,1000,0,0,0,0,0,0,0),
+(11867,227,1000,0,0,0,0,0,0,0),
+(11867,200,10000,0,0,0,0,0,0,0),
+(11867,201,1000,0,0,0,0,0,0,0),
+(11868,15590,1000,0,0,0,0,0,0,0),
+(11868,2567,1000,0,0,0,0,0,0,0),
+(11868,264,1000,0,0,0,0,0,0,0),
+(11868,196,1000,0,0,0,0,0,0,0),
+(11868,197,1000,0,0,0,0,0,0,0),
+(11868,1180,1000,0,0,0,0,0,0,0),
+(11869,227,1000,0,0,0,0,0,0,0),
+(11869,198,1000,0,0,0,0,0,0,0),
+(11869,266,1000,0,0,0,0,0,0,0),
+(11869,199,1000,0,0,0,0,0,0,0),
+(11870,5011,1000,0,0,0,0,0,0,0),
+(11870,1180,1000,0,0,0,0,0,0,0),
+(11870,201,1000,0,0,0,0,0,0,0),
+(11870,202,1000,0,0,0,0,0,0,0),
+(11870,200,10000,0,0,0,0,0,20,0),
+(13084,2567,1000,0,0,0,0,0,0,0),
+(13084,5011,1000,0,0,0,0,0,0,0),
+(13084,1180,1000,0,0,0,0,0,0,0),
+(14401,22968,1000,186,300,0,0,0,60,0),
+(16621,2567,1000,0,0,0,0,0,0,0),
+(16621,264,1000,0,0,0,0,0,0,0),
+(16621,1180,1000,0,0,0,0,0,0,0),
+(16621,200,10000,0,0,0,0,0,20,0),
+(16621,202,1000,0,0,0,0,0,0,0),
+(16621,201,1000,0,0,0,0,0,0,0),
+(16654,32272,2000,0,0,0,0,0,20,0),
+(16654,32267,15000,0,0,0,0,0,40,0),
+(16755,32271,2000,0,0,0,0,0,20,0),
+(16755,32266,15000,0,0,0,0,0,40,0),
+(16773,1180,1000,0,0,0,0,0,0,0),
+(16773,202,1000,0,0,0,0,0,0,0),
+(16773,201,1000,0,0,0,0,0,0,0),
+(16773,199,1000,0,0,0,0,0,0,0),
+(16773,198,1000,0,0,0,0,0,0,0),
+(16773,5011,1000,0,0,0,0,0,0,0),
+(17005,200,10000,0,0,0,0,0,20,0),
+(17005,201,1000,0,0,0,0,0,0,0),
+(17005,202,1000,0,0,0,0,0,0,0),
+(17005,264,1000,0,0,0,0,0,0,0),
+(17005,1180,1000,0,0,0,0,0,0,0),
+(17005,2567,1000,0,0,0,0,0,0,0),
+(17215,2337,1000,171,55,0,0,0,0,0),
+(17215,53042,10000,171,50,0,0,0,0,0),
+(17215,2334,250,171,50,0,0,0,0,0),
+(17215,2332,150,171,40,0,0,0,0,0),
+(17215,2331,100,171,25,0,0,0,0,0),
+(17215,3170,50,171,15,0,0,0,0,0),
+(17215,2275,10,0,0,0,0,0,5,0),
+(17634,41311,50000,202,350,0,0,0,0,0),
+(17634,41316,50000,202,350,0,0,0,0,0),
+(17634,41312,50000,202,350,0,0,0,0,0),
+(17634,41314,50000,202,350,0,0,0,0,0),
+(17634,41320,50000,202,350,0,0,0,0,0),
+(17634,41315,50000,202,350,0,0,0,0,0),
+(17634,40274,50000,202,350,0,0,0,0,0),
+(17634,41317,50000,202,350,0,0,0,0,0),
+(17634,41319,50000,202,350,0,0,0,0,0),
+(17634,41318,50000,202,350,0,0,0,0,0),
+(17634,39973,50000,202,335,0,0,0,0,0),
+(17637,39973,50000,202,335,0,0,0,0,0),
+(17637,41320,50000,202,350,0,0,0,0,0),
+(17637,41317,50000,202,350,0,0,0,0,0),
+(18752,40274,50000,202,350,0,0,0,0,0),
+(18752,39973,50000,202,335,0,0,0,0,0),
+(18752,41316,50000,202,350,0,0,0,0,0),
+(18752,41320,50000,202,350,0,0,0,0,0),
+(18752,41317,50000,202,350,0,0,0,0,0),
+(18752,41315,50000,202,350,0,0,0,0,0),
+(18752,41314,50000,202,350,0,0,0,0,0),
+(18752,41312,50000,202,350,0,0,0,0,0),
+(18752,41311,50000,202,350,0,0,0,0,0),
+(18775,41312,50000,202,350,0,0,0,0,0),
+(18775,41311,50000,202,350,0,0,0,0,0),
+(18775,41320,50000,202,350,0,0,0,0,0),
+(18775,41317,50000,202,350,0,0,0,0,0),
+(18775,41314,50000,202,350,0,0,0,0,0),
+(18775,39973,50000,202,335,0,0,0,0,0),
+(18775,40274,50000,202,350,0,0,0,0,0),
+(19186,42296,42000,185,320,0,0,0,0,0),
+(19186,42302,60000,185,350,0,0,0,0,0),
+(19186,42305,60000,185,350,0,0,0,0,0),
+(19340,35717,150000,0,0,0,0,0,65,0),
+(19340,35715,20000,0,0,0,0,0,60,0),
+(19576,41320,50000,202,350,0,0,0,0,0),
+(19576,41317,50000,202,350,0,0,0,0,0),
+(19576,41314,50000,202,350,0,0,0,0,0),
+(19576,41312,50000,202,350,0,0,0,0,0),
+(19576,40274,50000,202,350,0,0,0,0,0),
+(19576,39973,50000,202,335,0,0,0,0,0),
+(20791,35717,150000,0,0,0,0,0,65,0),
+(20791,33691,150000,0,0,0,0,0,65,0),
+(20791,35715,20000,0,0,0,0,0,60,0),
+(20791,33690,20000,0,0,0,0,0,60,0),
+(21493,36954,1050,202,350,0,0,0,0,0),
+(21494,36955,1050,202,350,0,0,0,0,0),
+(27703,49359,2000,0,0,0,0,0,20,0),
+(27703,49360,15000,0,0,0,0,0,40,0),
+(27705,49358,2000,0,0,0,0,0,20,0),
+(27705,49361,15000,0,0,0,0,0,40,0),
+(29156,53140,100000,0,0,0,0,0,71,0),
+(29156,53142,100000,0,0,0,0,0,74,0),
+(29506,34533,100000,164,350,0,0,0,0,0),
+(29506,34534,250000,164,375,0,0,0,0,0),
+(29506,36257,500000,164,375,0,0,0,0,0),
+(29506,36256,500000,164,375,0,0,0,0,0),
+(29506,34529,100000,164,350,0,0,0,0,0),
+(29506,34530,250000,164,375,0,0,0,0,0),
+(29506,55186,50000,164,415,0,0,0,0,0),
+(29506,36122,10000,164,260,0,0,0,0,0),
+(29506,36129,40000,164,330,0,0,0,0,0),
+(29506,55187,50000,164,415,0,0,0,0,0),
+(29506,36130,40000,164,330,0,0,0,0,0),
+(29506,9974,10000,164,245,0,0,0,0,0),
+(29506,9954,10000,164,225,0,0,0,0,0),
+(29506,36124,10000,164,260,0,0,0,0,0),
+(33677,41312,50000,202,350,0,0,0,0,0),
+(33677,40274,50000,202,350,0,0,0,0,0),
+(33996,2373,500,182,50,2366,0,0,0,0),
+(33996,3571,5000,182,125,2368,0,0,10,0),
+(33996,11994,50000,182,200,3570,0,0,25,0),
+(33996,2372,10,0,0,0,0,0,0,0);
+
+-- Dumping structure for tabel world.creature_default_trainer
+DROP TABLE IF EXISTS `creature_default_trainer`;
+CREATE TABLE IF NOT EXISTS `creature_default_trainer` (
+ `CreatureId` int(11) unsigned NOT NULL,
+ `TrainerId` int(11) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`CreatureId`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- Dumping data for table world.creature_default_trainer: 750 rows
+INSERT INTO `creature_default_trainer` (`CreatureId`,`TrainerId`) VALUES
+(925,200003),
+(26332,200002),
+(17504,200002),
+(17480,200002),
+(17120,200002),
+(16771,200002),
+(16503,200001),
+(8141,200002),
+(7315,200002),
+(5480,200002),
+(5479,200002),
+(5114,200002),
+(5113,200002),
+(4595,200002),
+(4594,200002),
+(4593,200002),
+(4089,200002),
+(4087,200002),
+(3598,200002),
+(3593,200001),
+(3408,200002),
+(3354,200002),
+(3353,200002),
+(3169,200002),
+(3153,200001),
+(3063,200002),
+(3059,200001),
+(3043,200002),
+(3042,200002),
+(3041,200002),
+(2131,200002),
+(2119,200001),
+(1901,200002),
+(1229,200002),
+(985,200002),
+(914,200002),
+(913,200002),
+(912,200001),
+(911,200001),
+(926,200003),
+(927,200020),
+(928,200020),
+(1232,200020),
+(5147,200020),
+(5148,200020),
+(5149,200020),
+(5491,200020),
+(5492,200020),
+(8140,200020),
+(15280,200003),
+(16275,200021),
+(16501,200003),
+(16679,200021),
+(16680,200021),
+(16681,200021),
+(16761,200020),
+(17121,200020),
+(17483,200020),
+(17509,200020),
+(17844,200020),
+(20406,200021),
+(23128,200021),
+(26327,200004),
+(35281,200020),
+(3033,200006),
+(3034,200006),
+(3036,200006),
+(3060,200005),
+(3064,200006),
+(3597,200005),
+(3602,200006),
+(4217,200006),
+(4218,200006),
+(4219,200006),
+(5504,200006),
+(5505,200006),
+(5506,200006),
+(8142,200006),
+(9465,200006),
+(12042,200006),
+(16655,200006),
+(16721,200006),
+(26324,200006),
+(198,200007),
+(328,200008),
+(331,200008),
+(944,200007),
+(1228,200008),
+(2124,200007),
+(2128,200008),
+(3047,200008),
+(3048,200008),
+(3049,200008),
+(4566,200008),
+(4567,200008),
+(4568,200008),
+(5144,200008),
+(5145,200008),
+(5146,200008),
+(5497,200008),
+(5498,200008),
+(5880,200008),
+(5882,200008),
+(5883,200008),
+(5884,200008),
+(5885,200008),
+(7311,200008),
+(7312,200008),
+(15279,200007),
+(16269,200008),
+(16500,200007),
+(16651,200008),
+(16652,200008),
+(16653,200008),
+(16749,200008),
+(17105,200008),
+(17481,200008),
+(17513,200008),
+(17514,200008),
+(23103,200008),
+(26326,200008),
+(27704,200008),
+(28956,200008),
+(28958,200008),
+(459,200009),
+(460,200009),
+(461,200010),
+(906,200010),
+(988,200010),
+(2126,200009),
+(2127,200010),
+(3156,200009),
+(3172,200010),
+(3324,200010),
+(3325,200010),
+(3326,200010),
+(4563,200010),
+(4564,200010),
+(4565,200010),
+(5171,200010),
+(5172,200010),
+(5173,200010),
+(5495,200010),
+(5496,200010),
+(5612,200010),
+(15283,200009),
+(16266,200010),
+(16646,200010),
+(16647,200010),
+(16648,200010),
+(23534,200010),
+(26331,200010),
+(375,200011),
+(376,200012),
+(377,200012),
+(837,200011),
+(1226,200012),
+(2123,200011),
+(2129,200012),
+(3044,200012),
+(3045,200012),
+(3046,200012),
+(3595,200012),
+(3600,200012),
+(3706,200012),
+(3707,200011),
+(4090,200012),
+(4091,200012),
+(4092,200012),
+(4606,200012),
+(4607,200012),
+(4608,200012),
+(5141,200012),
+(5142,200012),
+(5143,200012),
+(5484,200012),
+(5489,200012),
+(5994,200012),
+(6014,200012),
+(6018,200012),
+(11397,200012),
+(11401,200012),
+(11406,200012),
+(15284,200011),
+(16276,200012),
+(16502,200011),
+(16658,200012),
+(16659,200012),
+(16660,200012),
+(16756,200012),
+(17482,200011),
+(17510,200012),
+(17511,200012),
+(26328,200012),
+(895,200013),
+(987,200014),
+(1231,200014),
+(1404,200014),
+(3038,200014),
+(3039,200014),
+(3040,200014),
+(3061,200013),
+(3065,200014),
+(3154,200013),
+(3171,200014),
+(3352,200014),
+(3406,200014),
+(3407,200014),
+(3596,200013),
+(3601,200014),
+(3963,200014),
+(4138,200014),
+(4146,200014),
+(4205,200014),
+(5115,200014),
+(5116,200014),
+(5117,200014),
+(5501,200014),
+(5515,200014),
+(5516,200014),
+(5517,200014),
+(8308,200014),
+(10930,200014),
+(15513,200013),
+(16270,200014),
+(16499,200013),
+(16672,200014),
+(16673,200014),
+(16674,200014),
+(16738,200014),
+(17110,200014),
+(17122,200014),
+(17505,200014),
+(26325,200014),
+(915,200015),
+(916,200015),
+(917,200016),
+(918,200016),
+(1234,200016),
+(1411,200016),
+(2122,200015),
+(2130,200016),
+(3155,200015),
+(3170,200016),
+(3327,200016),
+(3328,200016),
+(3401,200016),
+(3594,200015),
+(3599,200016),
+(4163,200016),
+(4214,200016),
+(4215,200016),
+(4582,200016),
+(4583,200016),
+(4584,200016),
+(5165,200016),
+(5166,200016),
+(5167,200016),
+(6707,200016),
+(13283,200016),
+(15285,200015),
+(16279,200016),
+(16684,200016),
+(16685,200016),
+(16686,200016),
+(26329,200016),
+(986,200018),
+(3030,200018),
+(3031,200018),
+(3032,200018),
+(3062,200017),
+(3066,200018),
+(3157,200017),
+(3173,200018),
+(3344,200018),
+(3403,200018),
+(13417,200018),
+(17089,200017),
+(17204,200018),
+(17212,200018),
+(17219,200018),
+(17519,200018),
+(17520,200018),
+(20407,200018),
+(23127,200018),
+(26330,200018),
+(28471,200019),
+(28472,200019),
+(28474,200019),
+(29194,200019),
+(29195,200019),
+(29196,200019),
+(31084,200019),
+(1215,201001),
+(1386,201001),
+(1470,201001),
+(2132,201001),
+(2391,201001),
+(2837,201001),
+(3009,201001),
+(3184,201001),
+(3347,201001),
+(3603,201001),
+(3964,201001),
+(4160,201001),
+(4611,201001),
+(4900,201001),
+(5177,201001),
+(5499,201001),
+(7948,201001),
+(16161,201001),
+(16588,201002),
+(16642,201001),
+(16723,201001),
+(18802,201002),
+(19052,201002),
+(27023,201002),
+(27029,201002),
+(33608,201003),
+(33630,201002),
+(33674,201002),
+(26903,201003),
+(26951,201003),
+(26975,201003),
+(26987,201003),
+(28703,201003),
+(33588,201003),
+(514,201004),
+(1241,201004),
+(2836,201004),
+(2998,201004),
+(3136,201004),
+(3174,201004),
+(3355,201004),
+(3478,201004),
+(3557,201004),
+(4258,201004),
+(4596,201004),
+(5511,201004),
+(6299,201004),
+(15400,201004),
+(16583,201005),
+(16669,201004),
+(16724,201004),
+(16823,201005),
+(17245,201004),
+(19341,201005),
+(21209,201004),
+(26564,201006),
+(26904,201006),
+(26952,201006),
+(26981,201006),
+(26988,201006),
+(27034,201006),
+(28694,201006),
+(29924,201006),
+(33591,201006),
+(33609,201006),
+(33631,201005),
+(33675,201005),
+(5164,201007),
+(7230,201007),
+(11177,201007),
+(20125,201007),
+(7231,201008),
+(7232,201008),
+(11146,201008),
+(11178,201008),
+(20124,201008),
+(29505,201008),
+(1317,201009),
+(3011,201009),
+(3345,201009),
+(3606,201009),
+(4213,201009),
+(4616,201009),
+(5157,201009),
+(5695,201009),
+(7949,201009),
+(11072,201009),
+(11073,201009),
+(11074,201009),
+(16160,201009),
+(16633,201009),
+(16725,201009),
+(18753,201010),
+(18773,201010),
+(19251,201010),
+(19252,201010),
+(19540,201010),
+(33610,201011),
+(33633,201010),
+(33676,201010),
+(26906,201011),
+(26954,201011),
+(26980,201011),
+(26990,201011),
+(28693,201011),
+(33583,201011),
+(1676,201012),
+(1702,201012),
+(3290,201012),
+(3494,201012),
+(5174,201012),
+(5518,201012),
+(8736,201012),
+(10993,201012),
+(11017,201012),
+(11025,201012),
+(11031,201012),
+(11037,201012),
+(16667,201012),
+(16726,201012),
+(17222,201012),
+(17634,17634),
+(17637,17637),
+(18752,18752),
+(18775,18775),
+(19576,19576),
+(25277,201014),
+(26907,201014),
+(26955,201014),
+(26991,201014),
+(28697,201014),
+(33586,201014),
+(33611,201014),
+(33634,201013),
+(33677,33677),
+(8126,201015),
+(8738,201015),
+(29513,201015),
+(7406,201016),
+(7944,201016),
+(29514,201016),
+(24868,201017),
+(25099,201017),
+(812,201018),
+(908,201018),
+(1218,201018),
+(1458,201018),
+(1473,201018),
+(2114,201018),
+(2390,201018),
+(2856,201018),
+(3013,201018),
+(3185,201018),
+(3404,201018),
+(3604,201018),
+(3965,201018),
+(4204,201018),
+(4614,201018),
+(4898,201018),
+(5137,201018),
+(5502,201018),
+(5566,201018),
+(8146,201018),
+(12025,201018),
+(16367,201018),
+(16644,201018),
+(16736,201018),
+(17434,201018),
+(17983,201018),
+(18748,201019),
+(18776,201019),
+(26910,201020),
+(26958,201020),
+(26974,201020),
+(26994,201020),
+(28704,201020),
+(33616,201020),
+(33639,201019),
+(33678,201019),
+(26916,201023),
+(26959,201023),
+(26977,201023),
+(26995,201023),
+(28702,201023),
+(30706,201021),
+(30709,201021),
+(30710,201021),
+(30711,201021),
+(30713,201021),
+(30715,201021),
+(30716,201021),
+(30717,201021),
+(30721,201022),
+(30722,201022),
+(33603,201023),
+(33615,201023),
+(33638,201022),
+(33679,201022),
+(15501,201024),
+(18751,201025),
+(18774,201025),
+(19063,201026),
+(19539,201025),
+(19775,201024),
+(19778,201024),
+(26915,201026),
+(26960,201026),
+(26982,201026),
+(26997,201026),
+(28701,201026),
+(33590,201026),
+(33614,201026),
+(33637,201025),
+(33680,201025),
+(1385,201027),
+(1632,201027),
+(3007,201027),
+(3069,201027),
+(3365,201027),
+(3549,201027),
+(3605,201027),
+(3703,201027),
+(3967,201027),
+(4212,201027),
+(4588,201027),
+(5127,201027),
+(5564,201027),
+(5784,201027),
+(8153,201027),
+(11097,201027),
+(11098,201027),
+(16278,201027),
+(16688,201027),
+(16728,201027),
+(17442,201027),
+(18754,201028),
+(18771,201028),
+(19187,201028),
+(21087,201028),
+(26996,201029),
+(33612,201029),
+(33635,201028),
+(33681,201028),
+(26911,201029),
+(26961,201029),
+(26998,201029),
+(28700,201029),
+(33581,201029),
+(7870,201030),
+(7871,201030),
+(29509,201030),
+(7866,201031),
+(7867,201031),
+(29508,201031),
+(7868,201032),
+(7869,201032),
+(29507,201032),
+(1681,201033),
+(1701,201033),
+(3001,201033),
+(3137,201033),
+(3175,201033),
+(3357,201033),
+(3555,201033),
+(4254,201033),
+(4598,201033),
+(5392,201033),
+(5513,201033),
+(6297,201033),
+(8128,201033),
+(16663,201033),
+(16752,201033),
+(17488,201033),
+(18747,201034),
+(18779,201034),
+(18804,201033),
+(26912,201035),
+(26962,201035),
+(26976,201035),
+(26999,201035),
+(28698,201035),
+(33617,201035),
+(33640,201034),
+(33682,201034),
+(1292,201036),
+(6287,201036),
+(6288,201036),
+(6289,201036),
+(6290,201036),
+(6291,201036),
+(6292,201036),
+(6295,201036),
+(6306,201036),
+(6387,201036),
+(7087,201036),
+(7088,201036),
+(7089,201036),
+(8144,201036),
+(12030,201036),
+(16273,201036),
+(16692,201036),
+(16763,201036),
+(17441,201036),
+(18755,201037),
+(18777,201037),
+(19180,201037),
+(26913,201038),
+(26963,201038),
+(26986,201038),
+(27000,201038),
+(28696,201038),
+(33618,201038),
+(33641,201037),
+(33683,201037),
+(1103,201039),
+(1346,201039),
+(2399,201039),
+(2627,201039),
+(3004,201039),
+(3363,201039),
+(3484,201039),
+(3523,201039),
+(3704,201039),
+(4159,201039),
+(4193,201039),
+(4576,201039),
+(5153,201039),
+(11052,201039),
+(11557,201039),
+(16366,201039),
+(16640,201039),
+(16729,201039),
+(17487,201039),
+(18749,201040),
+(18772,201040),
+(26914,201041),
+(26964,201041),
+(26969,201041),
+(27001,201041),
+(28699,201041),
+(33580,201041),
+(33613,201041),
+(33636,201040),
+(33684,201040),
+(4578,201042),
+(9584,201042),
+(1651,202001),
+(1680,202001),
+(1683,202001),
+(1700,202001),
+(2367,202001),
+(2834,202001),
+(3028,202001),
+(3179,202001),
+(3332,202001),
+(3607,202001),
+(4156,202001),
+(4573,202001),
+(5161,202001),
+(5493,202001),
+(5690,202001),
+(5938,202001),
+(5941,202001),
+(7946,202001),
+(12032,202001),
+(12961,202001),
+(14740,202001),
+(16774,202001),
+(16780,202001),
+(17101,202001),
+(18018,202001),
+(18911,202002),
+(26909,202003),
+(26957,202003),
+(26993,202003),
+(28742,202003),
+(32474,202003),
+(33623,202003),
+(1355,202004),
+(1382,202004),
+(1430,202004),
+(1699,202004),
+(3026,202004),
+(3067,202004),
+(3087,202004),
+(3399,202004),
+(4210,202004),
+(4552,202004),
+(5159,202004),
+(5482,202004),
+(6286,202004),
+(8306,202004),
+(16253,202004),
+(16277,202004),
+(16676,202004),
+(16719,202004),
+(17246,202004),
+(18987,202005),
+(18988,202005),
+(18993,202005),
+(19185,202004),
+(19369,202004),
+(26905,202006),
+(26953,202006),
+(26972,202006),
+(26989,202006),
+(28705,202006),
+(29631,202006),
+(33587,202006),
+(33619,202006),
+(34708,202004),
+(34710,202004),
+(34711,202004),
+(34712,202004),
+(34713,202004),
+(34714,202004),
+(34785,202004),
+(34786,202004),
+(2326,202007),
+(2327,202007),
+(2329,202007),
+(2798,202007),
+(3181,202007),
+(3373,202007),
+(4211,202007),
+(4591,202007),
+(5150,202007),
+(5759,202007),
+(5939,202007),
+(5943,202007),
+(6094,202007),
+(16272,202007),
+(16662,202007),
+(16731,202007),
+(17214,202007),
+(17424,202007),
+(18990,202008),
+(18991,202008),
+(19184,202007),
+(19478,202007),
+(22477,202007),
+(23734,202009),
+(26956,202009),
+(26992,202009),
+(28706,202009),
+(29233,202009),
+(33589,202009),
+(33621,202009),
+(5957,5957),
+(27703,27703),
+(20791,20791),
+(16654,16654),
+(16755,16755),
+(5958,5958),
+(2492,2492),
+(4165,4165),
+(2489,2489),
+(20500,202011),
+(20511,202011),
+(2485,2485),
+(28746,202012),
+(31238,202012),
+(31247,202012),
+(35093,202011),
+(35100,202011),
+(35133,202011),
+(35135,202011),
+(27705,27705),
+(29156,29156),
+(19340,19340),
+(14401,14401),
+(543,543),
+(2704,2704),
+(2818,2818),
+(2878,2878),
+(2879,2879),
+(2880,2880),
+(3306,3306),
+(3545,3545),
+(3620,3620),
+(3622,3622),
+(3624,3624),
+(3698,3698),
+(4320,4320),
+(10086,10086),
+(10088,10088),
+(10370,10370),
+(11865,11865),
+(11866,11866),
+(11867,11867),
+(11868,11868),
+(11869,11869),
+(11870,11870),
+(13084,13084),
+(16621,16621),
+(16773,16773),
+(17005,17005),
+(17215,17215),
+(19186,19186),
+(21493,21493),
+(21494,21494),
+(29506,29506),
+(33996,33996);
+
+DELETE FROM `command` WHERE `permission`=672;
+INSERT INTO `command` (`name`,`permission`,`help`) VALUES ('reload trainer',672,'Syntax: .reload trainer\nReloads trainer,trainer_locale,trainer_spell and creature_default_trainer tables.');
+
+-- Drop unused table
+-- DROP TABLE IF EXISTS `npc_trainer`;
+
+-- Drop removed columns
+/* ALTER TABLE `creature_template`
+ DROP `trainer_type`,
+ DROP `trainer_spell`,
+ DROP `trainer_class`,
+ DROP `trainer_race`;
+*/
diff --git a/src/server/database/Database/Implementation/WorldDatabase.cpp b/src/server/database/Database/Implementation/WorldDatabase.cpp
index 085b2a5f283..5cc0c92d7aa 100644
--- a/src/server/database/Database/Implementation/WorldDatabase.cpp
+++ b/src/server/database/Database/Implementation/WorldDatabase.cpp
@@ -78,7 +78,7 @@ void WorldDatabaseConnection::DoPrepareStatements()
PrepareStatement(WORLD_SEL_WAYPOINT_SCRIPT_ID_BY_GUID, "SELECT id FROM waypoint_scripts WHERE guid = ?", CONNECTION_SYNCH);
PrepareStatement(WORLD_DEL_CREATURE, "DELETE FROM creature WHERE guid = ?", CONNECTION_ASYNC);
PrepareStatement(WORLD_SEL_COMMANDS, "SELECT name, permission, help FROM command", CONNECTION_SYNCH);
- PrepareStatement(WORLD_SEL_CREATURE_TEMPLATE, "SELECT entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, modelid1, modelid2, modelid3, modelid4, name, subname, IconName, gossip_menu_id, minlevel, maxlevel, exp, faction, npcflag, speed_walk, speed_run, scale, `rank`, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, dynamicflags, family, trainer_type, trainer_spell, trainer_class, trainer_race, type, type_flags, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, PetSpellDataId, VehicleId, mingold, maxgold, AIName, MovementType, ctm.Ground, ctm.Swim, ctm.Flight, ctm.Rooted, HoverHeight, HealthModifier, ManaModifier, ArmorModifier, DamageModifier, ExperienceModifier, RacialLeader, movementId, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName FROM creature_template ct LEFT JOIN creature_template_movement ctm ON ct.entry = ctm.CreatureId WHERE entry = ?", CONNECTION_SYNCH);
+ PrepareStatement(WORLD_SEL_CREATURE_TEMPLATE, "SELECT entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, modelid1, modelid2, modelid3, modelid4, name, subname, IconName, gossip_menu_id, minlevel, maxlevel, exp, faction, npcflag, speed_walk, speed_run, scale, `rank`, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, dynamicflags, family, type, type_flags, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, PetSpellDataId, VehicleId, mingold, maxgold, AIName, MovementType, ctm.Ground, ctm.Swim, ctm.Flight, ctm.Rooted, HoverHeight, HealthModifier, ManaModifier, ArmorModifier, DamageModifier, ExperienceModifier, RacialLeader, movementId, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName FROM creature_template ct LEFT JOIN creature_template_movement ctm ON ct.entry = ctm.CreatureId WHERE entry = ?", CONNECTION_SYNCH);
PrepareStatement(WORLD_SEL_WAYPOINT_SCRIPT_BY_ID, "SELECT guid, delay, command, datalong, datalong2, dataint, x, y, z, o FROM waypoint_scripts WHERE id = ?", CONNECTION_SYNCH);
PrepareStatement(WORLD_SEL_ITEM_TEMPLATE_BY_NAME, "SELECT entry FROM item_template WHERE name = ?", CONNECTION_SYNCH);
PrepareStatement(WORLD_SEL_CREATURE_BY_ID, "SELECT guid FROM creature WHERE id = ?", CONNECTION_SYNCH);
diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h
index cbf0dec3f64..c9dfc573e1e 100644
--- a/src/server/game/Accounts/RBAC.h
+++ b/src/server/game/Accounts/RBAC.h
@@ -569,7 +569,7 @@ enum RBACPermissions
RBAC_PERM_COMMAND_RELOAD_MAIL_LOOT_TEMPLATE = 669,
RBAC_PERM_COMMAND_RELOAD_MILLING_LOOT_TEMPLATE = 670,
RBAC_PERM_COMMAND_RELOAD_NPC_SPELLCLICK_SPELLS = 671,
- RBAC_PERM_COMMAND_RELOAD_NPC_TRAINER = 672,
+ RBAC_PERM_COMMAND_RELOAD_TRAINER = 672,
RBAC_PERM_COMMAND_RELOAD_NPC_VENDOR = 673,
RBAC_PERM_COMMAND_RELOAD_PAGE_TEXT = 674,
RBAC_PERM_COMMAND_RELOAD_PICKPOCKETING_LOOT_TEMPLATE = 675,
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index cf0cb59a91a..da4bc617fea 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -72,15 +72,6 @@ std::string CreatureMovementData::ToString() const
VendorItemCount::VendorItemCount(uint32 _item, uint32 _count)
: itemId(_item), count(_count), lastIncrementTime(GameTime::GetGameTime()) { }
-TrainerSpell const* TrainerSpellData::Find(uint32 spell_id) const
-{
- TrainerSpellMap::const_iterator itr = spellList.find(spell_id);
- if (itr != spellList.end())
- return &itr->second;
-
- return nullptr;
-}
-
bool VendorItem::IsGoldRequired(ItemTemplate const* pProto) const
{
return (pProto->Flags2 & ITEM_FLAG2_DONT_IGNORE_BUY_PRICE) || !ExtendedCost;
@@ -1191,11 +1182,13 @@ bool Creature::isCanInteractWithBattleMaster(Player* player, bool msg) const
return true;
}
-bool Creature::isCanTrainingAndResetTalentsOf(Player* player) const
+bool Creature::CanResetTalents(Player* player) const
{
- return player->getLevel() >= 10
- && GetCreatureTemplate()->trainer_type == TRAINER_TYPE_CLASS
- && player->getClass() == GetCreatureTemplate()->trainer_class;
+ Trainer::Trainer const* trainer = sObjectMgr->GetTrainer(GetEntry());
+ if (!trainer)
+ return false;
+
+ return player->getLevel() >= 10 && trainer->IsTrainerValidForPlayer(player);
}
Player* Creature::GetLootRecipient() const
@@ -2706,11 +2699,6 @@ uint32 Creature::UpdateVendorItemCurrentCount(VendorItem const* vItem, uint32 us
return vCount->count;
}
-TrainerSpellData const* Creature::GetTrainerSpells() const
-{
- return sObjectMgr->GetNpcTrainerSpells(GetEntry());
-}
-
// overwrite WorldObject function for proper name localization
std::string const & Creature::GetNameForLocaleIdx(LocaleConstant loc_idx) const
{
diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h
index 05e2e32c6ef..48d3a89012d 100644
--- a/src/server/game/Entities/Creature/Creature.h
+++ b/src/server/game/Entities/Creature/Creature.h
@@ -118,7 +118,7 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma
/// @todo Rename these properly
bool isCanInteractWithBattleMaster(Player* player, bool msg) const;
- bool isCanTrainingAndResetTalentsOf(Player* player) const;
+ bool CanResetTalents(Player* player) const;
bool CanCreatureAttack(Unit const* victim, bool force = true) const;
void LoadTemplateImmunities();
bool IsImmunedToSpell(SpellInfo const* spellInfo, WorldObject const* caster) const override;
@@ -177,8 +177,6 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma
uint32 GetVendorItemCurrentCount(VendorItem const* vItem);
uint32 UpdateVendorItemCurrentCount(VendorItem const* vItem, uint32 used_count);
- TrainerSpellData const* GetTrainerSpells() const;
-
CreatureTemplate const* GetCreatureTemplate() const { return m_creatureInfo; }
CreatureData const* GetCreatureData() const { return m_creatureData; }
CreatureAddon const* GetCreatureAddon() const;
diff --git a/src/server/game/Entities/Creature/CreatureData.h b/src/server/game/Entities/Creature/CreatureData.h
index 29100324590..86f8f211d32 100644
--- a/src/server/game/Entities/Creature/CreatureData.h
+++ b/src/server/game/Entities/Creature/CreatureData.h
@@ -151,10 +151,6 @@ struct TC_GAME_API CreatureTemplate
uint32 unit_flags2; // enum UnitFlags2 mask values
uint32 dynamicflags;
CreatureFamily family; // enum CreatureFamily values (optional)
- uint32 trainer_type;
- uint32 trainer_spell;
- uint32 trainer_class;
- uint32 trainer_race;
uint32 type; // enum CreatureType values
uint32 type_flags; // enum CreatureTypeFlags mask values
uint32 lootid;
@@ -358,36 +354,4 @@ struct VendorItemData
}
};
-struct TrainerSpell
-{
- TrainerSpell() : SpellID(0), MoneyCost(0), ReqSkillLine(0), ReqSkillRank(0), ReqLevel(0)
- {
- for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
- ReqAbility[i] = 0;
- }
-
- uint32 SpellID;
- uint32 MoneyCost;
- uint32 ReqSkillLine;
- uint32 ReqSkillRank;
- uint32 ReqLevel;
- uint32 ReqAbility[3];
-
- // helpers
- bool IsCastable() const { return ReqAbility[0] != SpellID; }
-};
-
-typedef std::unordered_map<uint32 /*spellid*/, TrainerSpell> TrainerSpellMap;
-
-struct TC_GAME_API TrainerSpellData
-{
- TrainerSpellData() : trainerType(0) { }
- ~TrainerSpellData() { spellList.clear(); }
-
- TrainerSpellMap spellList;
- uint32 trainerType; // trainer type based at trainer spells, can be different from creature_template value.
- // req. for correct show non-prof. trainers like weaponmaster, allowed values 0 and 2.
- TrainerSpell const* Find(uint32 spell_id) const;
-};
-
#endif // CreatureData_h__
diff --git a/src/server/game/Entities/Creature/Trainer.cpp b/src/server/game/Entities/Creature/Trainer.cpp
new file mode 100644
index 00000000000..79e496ce3bc
--- /dev/null
+++ b/src/server/game/Entities/Creature/Trainer.cpp
@@ -0,0 +1,243 @@
+/*
+ * Copyright (C) 2008-2018 TrinityCore <https://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Trainer.h"
+#include "Creature.h"
+#include "NPCPackets.h"
+#include "Player.h"
+#include "SpellInfo.h"
+#include "SpellMgr.h"
+
+namespace Trainer
+{
+ bool Spell::IsCastable() const
+ {
+ return sSpellMgr->AssertSpellInfo(SpellId)->HasEffect(SPELL_EFFECT_LEARN_SPELL);
+ }
+
+ Trainer::Trainer(uint32 trainerId, Type type, uint32 requirement, std::string greeting, std::vector<Spell> spells) : _trainerId(trainerId), _type(type), _requirement(requirement), _spells(std::move(spells))
+ {
+ _greeting[DEFAULT_LOCALE] = std::move(greeting);
+ }
+
+ void Trainer::SendSpells(Creature const* npc, Player const* player, LocaleConstant locale) const
+ {
+ float reputationDiscount = player->GetReputationPriceDiscount(npc);
+
+ WorldPackets::NPC::TrainerList trainerList;
+ trainerList.TrainerGUID = npc->GetGUID();
+ trainerList.TrainerType = AsUnderlyingType(_type);
+ trainerList.Greeting = GetGreeting(locale);
+ trainerList.Spells.reserve(_spells.size());
+ for (Spell const& trainerSpell : _spells)
+ {
+ if (!player->IsSpellFitByClassAndRace(trainerSpell.SpellId))
+ continue;
+
+ bool primaryProfessionFirstRank = false;
+ for (int32 reqAbility : trainerSpell.ReqAbility)
+ {
+ SpellInfo const* learnedSpellInfo = sSpellMgr->GetSpellInfo(reqAbility);
+ if (learnedSpellInfo && learnedSpellInfo->IsPrimaryProfessionFirstRank())
+ primaryProfessionFirstRank = true;
+ }
+
+ trainerList.Spells.emplace_back();
+ WorldPackets::NPC::TrainerListSpell& trainerListSpell = trainerList.Spells.back();
+ trainerListSpell.SpellID = trainerSpell.SpellId;
+ trainerListSpell.Usable = AsUnderlyingType(GetSpellState(player, &trainerSpell));
+ trainerListSpell.MoneyCost = int32(trainerSpell.MoneyCost * reputationDiscount);
+ trainerListSpell.ProfessionDialog = (primaryProfessionFirstRank && (player->GetFreePrimaryProfessionPoints() > 0) ? 1 : 0);
+ trainerListSpell.ProfessionButton = (primaryProfessionFirstRank ? 1 : 0);
+ trainerListSpell.ReqLevel = trainerSpell.ReqLevel;
+ trainerListSpell.ReqSkillLine = trainerSpell.ReqSkillLine;
+ trainerListSpell.ReqSkillRank = trainerSpell.ReqSkillRank;
+ std::copy(trainerSpell.ReqAbility.begin(), trainerSpell.ReqAbility.end(), trainerListSpell.ReqAbility.begin());
+ }
+
+ player->SendDirectMessage(trainerList.Write());
+ }
+
+ void Trainer::TeachSpell(Creature const* npc, Player* player, uint32 spellId) const
+ {
+ if (!IsTrainerValidForPlayer(player))
+ return;
+
+ Spell const* trainerSpell = GetSpell(spellId);
+ if (!trainerSpell)
+ {
+ SendTeachFailure(npc, player, spellId, FailReason::Unavailable);
+ return;
+ }
+
+ if (!CanTeachSpell(player, trainerSpell))
+ {
+ SendTeachFailure(npc, player, spellId, FailReason::NotEnoughSkill);
+ return;
+ }
+
+ float reputationDiscount = player->GetReputationPriceDiscount(npc);
+ int32 moneyCost = int32(trainerSpell->MoneyCost * reputationDiscount);
+ if (!player->HasEnoughMoney(moneyCost))
+ {
+ SendTeachFailure(npc, player, spellId, FailReason::NotEnoughMoney);
+ return;
+ }
+
+ player->ModifyMoney(-moneyCost);
+
+ npc->SendPlaySpellVisual(179);
+ npc->SendPlaySpellImpact(player->GetGUID(), 362);
+
+ // learn explicitly or cast explicitly
+ if (trainerSpell->IsCastable())
+ player->CastSpell(player, trainerSpell->SpellId, true);
+ else
+ player->LearnSpell(trainerSpell->SpellId, false);
+
+ SendTeachSucceeded(npc, player, spellId);
+ }
+
+ Spell const* Trainer::GetSpell(uint32 spellId) const
+ {
+ auto itr = std::find_if(_spells.begin(), _spells.end(), [spellId](Spell const& trainerSpell)
+ {
+ return trainerSpell.SpellId == spellId;
+ });
+
+ if (itr != _spells.end())
+ return &(*itr);
+
+ return nullptr;
+ }
+
+ bool Trainer::CanTeachSpell(Player const* player, Spell const* trainerSpell) const
+ {
+ SpellState state = GetSpellState(player, trainerSpell);
+ if (state != SpellState::Available)
+ return false;
+
+ SpellInfo const* trainerSpellInfo = sSpellMgr->AssertSpellInfo(trainerSpell->SpellId);
+ if (trainerSpellInfo->IsPrimaryProfessionFirstRank() && !player->GetFreePrimaryProfessionPoints())
+ return false;
+
+ return true;
+ }
+
+ SpellState Trainer::GetSpellState(Player const* player, Spell const* trainerSpell) const
+ {
+ if (player->HasSpell(trainerSpell->SpellId))
+ return SpellState::Known;
+
+ // check race/class requirement
+ if (!player->IsSpellFitByClassAndRace(trainerSpell->SpellId))
+ return SpellState::Unavailable;
+
+ // check skill requirement
+ if (trainerSpell->ReqSkillLine && player->GetBaseSkillValue(trainerSpell->ReqSkillLine) < trainerSpell->ReqSkillRank)
+ return SpellState::Unavailable;
+
+ for (int32 reqAbility : trainerSpell->ReqAbility)
+ if (reqAbility && !player->HasSpell(reqAbility))
+ return SpellState::Unavailable;
+
+ // check level requirement
+ if (player->getLevel() < trainerSpell->ReqLevel)
+ return SpellState::Unavailable;
+
+ // check ranks
+ bool hasLearnSpellEffect = false;
+ bool knowsAllLearnedSpells = true;
+ for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ {
+ SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(trainerSpell->SpellId);
+ if (!spellInfo || spellInfo->Effects[i].Effect != SPELL_EFFECT_LEARN_SPELL)
+ continue;
+
+ hasLearnSpellEffect = true;
+ if (!player->HasSpell(spellInfo->Effects[i].TriggerSpell))
+ knowsAllLearnedSpells = false;
+
+ if (uint32 previousRankSpellId = sSpellMgr->GetPrevSpellInChain(spellInfo->Effects[i].TriggerSpell))
+ if (!player->HasSpell(previousRankSpellId))
+ return SpellState::Unavailable;
+ }
+
+ if (!hasLearnSpellEffect)
+ {
+ if (uint32 previousRankSpellId = sSpellMgr->GetPrevSpellInChain(trainerSpell->SpellId))
+ if (!player->HasSpell(previousRankSpellId))
+ return SpellState::Unavailable;
+ }
+ else if (knowsAllLearnedSpells)
+ return SpellState::Known;
+
+ // check additional spell requirement
+ for (auto const& requirePair : sSpellMgr->GetSpellsRequiredForSpellBounds(trainerSpell->SpellId))
+ if (!player->HasSpell(requirePair.second))
+ return SpellState::Unavailable;
+
+ return SpellState::Available;
+ }
+
+ bool Trainer::IsTrainerValidForPlayer(Player const* player) const
+ {
+ // check class for class trainers
+ if (player->getClass() != GetTrainerRequirement() && (GetTrainerType() == Type::Class || GetTrainerType() == Type::Pet))
+ return false;
+
+ // check race for mount trainers
+ if (player->getRace() != GetTrainerRequirement() && GetTrainerType() == Type::Mount)
+ return false;
+
+ // check spell for profession trainers
+ if (!player->HasSpell(GetTrainerRequirement()) && GetTrainerRequirement() != 0 && GetTrainerType() == Type::Tradeskill)
+ return false;
+
+ return true;
+ }
+
+ void Trainer::SendTeachFailure(Creature const* npc, Player const* player, uint32 spellId, FailReason reason) const
+ {
+ WorldPackets::NPC::TrainerBuyFailed trainerBuyFailed;
+ trainerBuyFailed.TrainerGUID = npc->GetGUID();
+ trainerBuyFailed.SpellID = spellId;
+ trainerBuyFailed.TrainerFailedReason = AsUnderlyingType(reason);
+ player->SendDirectMessage(trainerBuyFailed.Write());
+ }
+
+ void Trainer::SendTeachSucceeded(Creature const* npc, Player const* player, uint32 spellId) const
+ {
+ WorldPackets::NPC::TrainerBuySucceeded trainerBuySucceeded;
+ trainerBuySucceeded.TrainerGUID = npc->GetGUID();
+ trainerBuySucceeded.SpellID = spellId;
+ player->SendDirectMessage(trainerBuySucceeded.Write());
+ }
+
+ std::string const& Trainer::GetGreeting(LocaleConstant locale) const
+ {
+ if (_greeting[locale].empty())
+ return _greeting[DEFAULT_LOCALE];
+
+ return _greeting[locale];
+ }
+
+ void Trainer::AddGreetingLocale(LocaleConstant locale, std::string greeting)
+ {
+ _greeting[locale] = std::move(greeting);
+ }
+}
diff --git a/src/server/game/Entities/Creature/Trainer.h b/src/server/game/Entities/Creature/Trainer.h
new file mode 100644
index 00000000000..852b3e613be
--- /dev/null
+++ b/src/server/game/Entities/Creature/Trainer.h
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2008-2018 TrinityCore <https://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef Trainer_h__
+#define Trainer_h__
+
+#include "Common.h"
+#include <array>
+#include <vector>
+
+class Creature;
+class ObjectMgr;
+class Player;
+
+namespace Trainer
+{
+ enum class Type : uint32
+ {
+ Class = 0,
+ Mount = 1,
+ Tradeskill = 2,
+ Pet = 3
+ };
+
+ enum class SpellState : uint8
+ {
+ Available = 0,
+ Unavailable = 1,
+ Known = 2
+ };
+
+ enum class FailReason : uint32
+ {
+ Unavailable = 0,
+ NotEnoughMoney = 1,
+ NotEnoughSkill = 2
+ };
+
+ struct Spell
+ {
+ uint32 SpellId = 0;
+ uint32 MoneyCost = 0;
+ uint32 ReqSkillLine = 0;
+ uint32 ReqSkillRank = 0;
+ std::array<uint32, 3> ReqAbility = { };
+ uint8 ReqLevel = 0;
+
+ bool IsCastable() const;
+ };
+
+ class Trainer
+ {
+ public:
+ Trainer(uint32 trainerId, Type type, uint32 requirement, std::string greeting, std::vector<Spell> spells);
+
+ void SendSpells(Creature const* npc, Player const* player, LocaleConstant locale) const;
+ void TeachSpell(Creature const* npc, Player* player, uint32 spellId) const;
+
+ Type GetTrainerType() const { return _type; }
+ uint32 GetTrainerRequirement() const { return _requirement; }
+ bool IsTrainerValidForPlayer(Player const* player) const;
+
+ private:
+ Spell const* GetSpell(uint32 spellId) const;
+ bool CanTeachSpell(Player const* player, Spell const* trainerSpell) const;
+ SpellState GetSpellState(Player const* player, Spell const* trainerSpell) const;
+ void SendTeachFailure(Creature const* npc, Player const* player, uint32 spellId, FailReason reason) const;
+ void SendTeachSucceeded(Creature const* npc, Player const* player, uint32 spellId) const;
+ std::string const& GetGreeting(LocaleConstant locale) const;
+
+ friend ObjectMgr;
+ void AddGreetingLocale(LocaleConstant locale, std::string greeting);
+
+ uint32 _trainerId;
+ Type _type;
+ uint32 _requirement;
+ std::vector<Spell> _spells;
+ std::array<std::string, TOTAL_LOCALES> _greeting;
+ };
+}
+
+#endif // Trainer_h__
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index a9a9c78c0bb..3e6a080ac5b 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -1741,19 +1741,19 @@ void Unit::BuildHeartBeatMsg(WorldPacket* data) const
BuildMovementPacket(data);
}
-void WorldObject::SendMessageToSet(WorldPacket const* data, bool self)
+void WorldObject::SendMessageToSet(WorldPacket const* data, bool self) const
{
if (IsInWorld())
SendMessageToSetInRange(data, GetVisibilityRange(), self);
}
-void WorldObject::SendMessageToSetInRange(WorldPacket const* data, float dist, bool /*self*/)
+void WorldObject::SendMessageToSetInRange(WorldPacket const* data, float dist, bool /*self*/) const
{
Trinity::MessageDistDeliverer notifier(this, data, dist);
Cell::VisitWorldObjects(this, notifier, dist);
}
-void WorldObject::SendMessageToSet(WorldPacket const* data, Player const* skipped_rcvr)
+void WorldObject::SendMessageToSet(WorldPacket const* data, Player const* skipped_rcvr) const
{
Trinity::MessageDistDeliverer notifier(this, data, GetVisibilityRange(), false, skipped_rcvr);
Cell::VisitWorldObjects(this, notifier, GetVisibilityRange());
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h
index 76824c2719e..a40765d1f0d 100644
--- a/src/server/game/Entities/Object/Object.h
+++ b/src/server/game/Entities/Object/Object.h
@@ -344,9 +344,9 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation
virtual void CleanupsBeforeDelete(bool finalCleanup = true); // used in destructor or explicitly before mass creature delete to remove cross-references to already deleted units
- virtual void SendMessageToSet(WorldPacket const* data, bool self);
- virtual void SendMessageToSetInRange(WorldPacket const* data, float dist, bool self);
- virtual void SendMessageToSet(WorldPacket const* data, Player const* skipped_rcvr);
+ virtual void SendMessageToSet(WorldPacket const* data, bool self) const;
+ virtual void SendMessageToSetInRange(WorldPacket const* data, float dist, bool self) const;
+ virtual void SendMessageToSet(WorldPacket const* data, Player const* skipped_rcvr) const;
virtual uint8 getLevelForTarget(WorldObject const* /*target*/) const { return 1; }
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 7de2017eb4b..3068b969bbd 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -85,6 +85,7 @@
#include "SpellMgr.h"
#include "TicketMgr.h"
#include "TradeData.h"
+#include "Trainer.h"
#include "Transport.h"
#include "UpdateData.h"
#include "UpdateFieldFlags.h"
@@ -3962,74 +3963,6 @@ bool Player::HasActiveSpell(uint32 spell) const
itr->second->active && !itr->second->disabled);
}
-TrainerSpellState Player::GetTrainerSpellState(TrainerSpell const* trainer_spell) const
-{
- if (!trainer_spell)
- return TRAINER_SPELL_RED;
-
- bool hasSpell = true;
- for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
- {
- if (!trainer_spell->ReqAbility[i])
- continue;
-
- if (!HasSpell(trainer_spell->ReqAbility[i]))
- {
- hasSpell = false;
- break;
- }
- }
- // known spell
- if (hasSpell)
- return TRAINER_SPELL_GRAY;
-
- // check skill requirement
- if (trainer_spell->ReqSkillLine && GetBaseSkillValue(trainer_spell->ReqSkillLine) < trainer_spell->ReqSkillRank)
- return TRAINER_SPELL_RED;
-
- // check level requirement
- if (getLevel() < trainer_spell->ReqLevel)
- return TRAINER_SPELL_RED;
-
- for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
- {
- if (!trainer_spell->ReqAbility[i])
- continue;
-
- // check race/class requirement
- if (!IsSpellFitByClassAndRace(trainer_spell->ReqAbility[i]))
- return TRAINER_SPELL_RED;
-
- if (uint32 prevSpell = sSpellMgr->GetPrevSpellInChain(trainer_spell->ReqAbility[i]))
- {
- // check prev.rank requirement
- if (!HasSpell(prevSpell))
- return TRAINER_SPELL_RED;
- }
-
- SpellsRequiringSpellMapBounds spellsRequired = sSpellMgr->GetSpellsRequiredForSpellBounds(trainer_spell->ReqAbility[i]);
- for (SpellsRequiringSpellMap::const_iterator itr = spellsRequired.first; itr != spellsRequired.second; ++itr)
- {
- // check additional spell requirement
- if (!HasSpell(itr->second))
- return TRAINER_SPELL_RED;
- }
- }
-
- // check primary prof. limit
- // first rank of primary profession spell when there are no professions available is disabled
- for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
- {
- if (!trainer_spell->ReqAbility[i])
- continue;
- SpellInfo const* learnedSpellInfo = sSpellMgr->GetSpellInfo(trainer_spell->ReqAbility[i]);
- if (learnedSpellInfo && learnedSpellInfo->IsPrimaryProfessionFirstRank() && (GetFreePrimaryProfessionPoints() == 0))
- return TRAINER_SPELL_GREEN_DISABLED;
- }
-
- return TRAINER_SPELL_GREEN;
-}
-
/**
* Deletes a character from the database
*
@@ -6331,7 +6264,7 @@ bool Player::UpdatePosition(float x, float y, float z, float orientation, bool t
return true;
}
-void Player::SendMessageToSetInRange(WorldPacket const* data, float dist, bool self)
+void Player::SendMessageToSetInRange(WorldPacket const* data, float dist, bool self) const
{
if (self)
SendDirectMessage(data);
@@ -6340,7 +6273,7 @@ void Player::SendMessageToSetInRange(WorldPacket const* data, float dist, bool s
Cell::VisitWorldObjects(this, notifier, dist);
}
-void Player::SendMessageToSetInRange(WorldPacket const* data, float dist, bool self, bool own_team_only)
+void Player::SendMessageToSetInRange(WorldPacket const* data, float dist, bool self, bool own_team_only) const
{
if (self)
SendDirectMessage(data);
@@ -6349,7 +6282,7 @@ void Player::SendMessageToSetInRange(WorldPacket const* data, float dist, bool s
Cell::VisitWorldObjects(this, notifier, dist);
}
-void Player::SendMessageToSet(WorldPacket const* data, Player const* skipped_rcvr)
+void Player::SendMessageToSet(WorldPacket const* data, Player const* skipped_rcvr) const
{
if (skipped_rcvr != this)
SendDirectMessage(data);
@@ -14116,15 +14049,15 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool
}
case GOSSIP_OPTION_LEARNDUALSPEC:
case GOSSIP_OPTION_DUALSPEC_INFO:
- if (!(GetSpecsCount() == 1 && creature->isCanTrainingAndResetTalentsOf(this) && !(getLevel() < sWorld->getIntConfig(CONFIG_MIN_DUALSPEC_LEVEL))))
+ if (!(GetSpecsCount() == 1 && creature->CanResetTalents(this) && !(getLevel() < sWorld->getIntConfig(CONFIG_MIN_DUALSPEC_LEVEL))))
canTalk = false;
break;
case GOSSIP_OPTION_UNLEARNTALENTS:
- if (!creature->isCanTrainingAndResetTalentsOf(this))
+ if (!creature->CanResetTalents(this))
canTalk = false;
break;
case GOSSIP_OPTION_UNLEARNPETTALENTS:
- if (!GetPet() || GetPet()->getPetType() != HUNTER_PET || GetPet()->m_spells.size() <= 1 || creature->GetCreatureTemplate()->trainer_type != TRAINER_TYPE_PETS || creature->GetCreatureTemplate()->trainer_class != CLASS_HUNTER)
+ if (!GetPet() || GetPet()->getPetType() != HUNTER_PET || GetPet()->m_spells.size() <= 1 || !creature->CanResetTalents(this))
canTalk = false;
break;
case GOSSIP_OPTION_TAXIVENDOR:
@@ -14143,13 +14076,16 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool
canTalk = false;
break;
case GOSSIP_OPTION_TRAINER:
- if (getClass() != creature->GetCreatureTemplate()->trainer_class && creature->GetCreatureTemplate()->trainer_type == TRAINER_TYPE_CLASS)
+ {
+ Trainer::Trainer const* trainer = sObjectMgr->GetTrainer(creature->GetEntry());
+ if (!trainer || !trainer->IsTrainerValidForPlayer(this))
{
- TC_LOG_ERROR("sql.sql", "GOSSIP_OPTION_TRAINER:: Player %s (GUID: %u) requested wrong gossip menu: %u with wrong class: %u at Creature: %s (Entry: %u, Trainer Class: %u)",
- GetName().c_str(), GetGUID().GetCounter(), menu->GetGossipMenu().GetMenuId(), getClass(), creature->GetName().c_str(), creature->GetEntry(), creature->GetCreatureTemplate()->trainer_class);
+ TC_LOG_ERROR("sql.sql", "GOSSIP_OPTION_TRAINER:: Player %s (GUID: %u) requested wrong gossip menu: %u at Creature: %s (Entry: %u)",
+ GetName().c_str(), GetGUID().GetCounter(), menu->GetGossipMenu().GetMenuId(), creature->GetName().c_str(), creature->GetEntry());
canTalk = false;
}
// no break;
+ }
case GOSSIP_OPTION_GOSSIP:
case GOSSIP_OPTION_SPIRITGUIDE:
case GOSSIP_OPTION_INNKEEPER:
@@ -14329,7 +14265,7 @@ void Player::OnGossipSelect(WorldObject* source, uint32 gossipListId, uint32 men
GetSession()->SendStablePet(guid);
break;
case GOSSIP_OPTION_TRAINER:
- GetSession()->SendTrainerList(guid);
+ GetSession()->SendTrainerList(source->ToCreature());
break;
case GOSSIP_OPTION_LEARNDUALSPEC:
if (GetSpecsCount() == 1 && getLevel() >= sWorld->getIntConfig(CONFIG_MIN_DUALSPEC_LEVEL))
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 3577eea21e4..fc5db7a3726 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -155,14 +155,6 @@ typedef std::unordered_set<SpellModifier*> SpellModContainer;
typedef std::unordered_map<uint32 /*instanceId*/, time_t/*releaseTime*/> InstanceTimeMap;
-enum TrainerSpellState
-{
- TRAINER_SPELL_GREEN = 0,
- TRAINER_SPELL_RED = 1,
- TRAINER_SPELL_GRAY = 2,
- TRAINER_SPELL_GREEN_DISABLED = 10 // custom value, not send to client: formally green but learn not allowed
-};
-
enum ActionButtonUpdateState
{
ACTIONBUTTON_UNCHANGED = 0,
@@ -1401,7 +1393,6 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
void SendRemoveControlBar() const;
bool HasSpell(uint32 spell) const override;
bool HasActiveSpell(uint32 spell) const; // show in spellbook
- TrainerSpellState GetTrainerSpellState(TrainerSpell const* trainer_spell) const;
bool IsSpellFitByClassAndRace(uint32 spell_id) const;
bool HandlePassiveSpellLearn(SpellInfo const* spellInfo);
@@ -1661,10 +1652,10 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
void ProcessTerrainStatusUpdate(ZLiquidStatus status, Optional<LiquidData> const& liquidData) override;
void AtExitCombat() override;
- void SendMessageToSet(WorldPacket const* data, bool self) override { SendMessageToSetInRange(data, GetVisibilityRange(), self); }
- void SendMessageToSetInRange(WorldPacket const* data, float dist, bool self) override;
- void SendMessageToSetInRange(WorldPacket const* data, float dist, bool self, bool own_team_only);
- void SendMessageToSet(WorldPacket const* data, Player const* skipped_rcvr) override;
+ void SendMessageToSet(WorldPacket const* data, bool self) const override { SendMessageToSetInRange(data, GetVisibilityRange(), self); }
+ void SendMessageToSetInRange(WorldPacket const* data, float dist, bool self) const override;
+ void SendMessageToSetInRange(WorldPacket const* data, float dist, bool self, bool own_team_only) const;
+ void SendMessageToSet(WorldPacket const* data, Player const* skipped_rcvr) const override;
Corpse* GetCorpse() const;
void SpawnCorpseBones(bool triggerSave = true);
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 0acd39162c8..d02bc63073d 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -11785,7 +11785,7 @@ void Unit::SetAuraStack(uint32 spellId, Unit* target, uint32 stack)
aura->SetStackAmount(stack);
}
-void Unit::SendPlaySpellVisual(uint32 id)
+void Unit::SendPlaySpellVisual(uint32 id) const
{
WorldPacket data(SMSG_PLAY_SPELL_VISUAL, 8 + 4);
data << uint64(GetGUID());
@@ -11793,7 +11793,7 @@ void Unit::SendPlaySpellVisual(uint32 id)
SendMessageToSet(&data, true);
}
-void Unit::SendPlaySpellImpact(ObjectGuid guid, uint32 id)
+void Unit::SendPlaySpellImpact(ObjectGuid guid, uint32 id) const
{
WorldPacket data(SMSG_PLAY_SPELL_IMPACT, 8 + 4);
data << uint64(guid); // target
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index c588ef426f5..0a4445d5fb7 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1081,8 +1081,8 @@ class TC_GAME_API Unit : public WorldObject
Aura* AddAura(uint32 spellId, Unit* target);
Aura* AddAura(SpellInfo const* spellInfo, uint8 effMask, Unit* target);
void SetAuraStack(uint32 spellId, Unit* target, uint32 stack);
- void SendPlaySpellVisual(uint32 id);
- void SendPlaySpellImpact(ObjectGuid guid, uint32 id);
+ void SendPlaySpellVisual(uint32 id) const;
+ void SendPlaySpellImpact(ObjectGuid guid, uint32 id) const;
void DeMorph();
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 80f823f9beb..ff0bc2938c0 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -367,15 +367,13 @@ void ObjectMgr::LoadCreatureTemplates()
"modelid4, name, subname, IconName, gossip_menu_id, minlevel, maxlevel, exp, faction, npcflag, speed_walk, speed_run, "
// 21 22 23 24 25 26 27 28 29 30
"scale, `rank`, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, "
- // 31 32 33 34 35 36 37
- "dynamicflags, family, trainer_type, trainer_spell, trainer_class, trainer_race, type, "
- // 38 39 40 41 42 43 44 45 46 47 48
- "type_flags, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, spell1, "
- // 49 50 51 52 53 54 55 56 57 58 59 60 61
- "spell2, spell3, spell4, spell5, spell6, spell7, spell8, PetSpellDataId, VehicleId, mingold, maxgold, AIName, MovementType, "
- // 62 63 64 65 66 67 68 69 70
+ // 31 32 33 34 35 36 37 38 39 40 41 42 43
+ "dynamicflags, family, type, type_flags, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, "
+ // 44 45 46 47 48 49 50 51 52 53 54 55 56 57
+ "spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, PetSpellDataId, VehicleId, mingold, maxgold, AIName, MovementType, "
+ // 58 59 60 61 62 63 64 65 66
"ctm.Ground, ctm.Swim, ctm.Flight, ctm.Rooted, HoverHeight, HealthModifier, ManaModifier, ArmorModifier, DamageModifier, "
- // 71 72 73 74 75 76 77 78
+ // 67 68 69 70 71 72 73 74
"ExperienceModifier, RacialLeader, movementId, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName "
"FROM creature_template ct LEFT JOIN creature_template_movement ctm ON ct.entry = ctm.CreatureId");
@@ -439,54 +437,50 @@ void ObjectMgr::LoadCreatureTemplate(Field* fields)
creatureTemplate.unit_flags2 = fields[30].GetUInt32();
creatureTemplate.dynamicflags = fields[31].GetUInt32();
creatureTemplate.family = CreatureFamily(fields[32].GetUInt8());
- creatureTemplate.trainer_type = fields[33].GetUInt8();
- creatureTemplate.trainer_spell = fields[34].GetUInt32();
- creatureTemplate.trainer_class = fields[35].GetUInt8();
- creatureTemplate.trainer_race = fields[36].GetUInt8();
- creatureTemplate.type = fields[37].GetUInt8();
- creatureTemplate.type_flags = fields[38].GetUInt32();
- creatureTemplate.lootid = fields[39].GetUInt32();
- creatureTemplate.pickpocketLootId = fields[40].GetUInt32();
- creatureTemplate.SkinLootId = fields[41].GetUInt32();
+ creatureTemplate.type = fields[33].GetUInt8();
+ creatureTemplate.type_flags = fields[34].GetUInt32();
+ creatureTemplate.lootid = fields[35].GetUInt32();
+ creatureTemplate.pickpocketLootId = fields[36].GetUInt32();
+ creatureTemplate.SkinLootId = fields[37].GetUInt32();
for (uint8 i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i)
- creatureTemplate.resistance[i] = fields[42 + i - 1].GetInt16();
+ creatureTemplate.resistance[i] = fields[38 + i - 1].GetInt16();
for (uint8 i = 0; i < MAX_CREATURE_SPELLS; ++i)
- creatureTemplate.spells[i] = fields[48 + i].GetUInt32();
-
- creatureTemplate.PetSpellDataId = fields[56].GetUInt32();
- creatureTemplate.VehicleId = fields[57].GetUInt32();
- creatureTemplate.mingold = fields[58].GetUInt32();
- creatureTemplate.maxgold = fields[59].GetUInt32();
- creatureTemplate.AIName = fields[60].GetString();
- creatureTemplate.MovementType = fields[61].GetUInt8();
- if (!fields[62].IsNull())
- creatureTemplate.Movement.Ground = static_cast<CreatureGroundMovementType>(fields[62].GetUInt8());
-
- if (!fields[63].IsNull())
- creatureTemplate.Movement.Swim = fields[63].GetBool();
-
- if (!fields[64].IsNull())
- creatureTemplate.Movement.Flight = static_cast<CreatureFlightMovementType>(fields[64].GetUInt8());
-
- if (!fields[65].IsNull())
- creatureTemplate.Movement.Rooted = fields[65].GetBool();
-
- creatureTemplate.HoverHeight = fields[66].GetFloat();
- creatureTemplate.ModHealth = fields[67].GetFloat();
- creatureTemplate.ModMana = fields[68].GetFloat();
- creatureTemplate.ModArmor = fields[69].GetFloat();
- creatureTemplate.ModDamage = fields[70].GetFloat();
- creatureTemplate.ModExperience = fields[71].GetFloat();
- creatureTemplate.RacialLeader = fields[72].GetBool();
-
- creatureTemplate.movementId = fields[73].GetUInt32();
- creatureTemplate.RegenHealth = fields[74].GetBool();
- creatureTemplate.MechanicImmuneMask = fields[75].GetUInt32();
- creatureTemplate.SpellSchoolImmuneMask = fields[76].GetUInt32();
- creatureTemplate.flags_extra = fields[77].GetUInt32();
- creatureTemplate.ScriptID = GetScriptId(fields[78].GetString());
+ creatureTemplate.spells[i] = fields[44 + i].GetUInt32();
+
+ creatureTemplate.PetSpellDataId = fields[52].GetUInt32();
+ creatureTemplate.VehicleId = fields[53].GetUInt32();
+ creatureTemplate.mingold = fields[54].GetUInt32();
+ creatureTemplate.maxgold = fields[55].GetUInt32();
+ creatureTemplate.AIName = fields[56].GetString();
+ creatureTemplate.MovementType = fields[57].GetUInt8();
+ if (!fields[58].IsNull())
+ creatureTemplate.Movement.Ground = static_cast<CreatureGroundMovementType>(fields[58].GetUInt8());
+
+ if (!fields[59].IsNull())
+ creatureTemplate.Movement.Swim = fields[59].GetBool();
+
+ if (!fields[60].IsNull())
+ creatureTemplate.Movement.Flight = static_cast<CreatureFlightMovementType>(fields[60].GetUInt8());
+
+ if (!fields[61].IsNull())
+ creatureTemplate.Movement.Rooted = fields[61].GetBool();
+
+ creatureTemplate.HoverHeight = fields[62].GetFloat();
+ creatureTemplate.ModHealth = fields[63].GetFloat();
+ creatureTemplate.ModMana = fields[64].GetFloat();
+ creatureTemplate.ModArmor = fields[65].GetFloat();
+ creatureTemplate.ModDamage = fields[66].GetFloat();
+ creatureTemplate.ModExperience = fields[67].GetFloat();
+ creatureTemplate.RacialLeader = fields[68].GetBool();
+
+ creatureTemplate.movementId = fields[69].GetUInt32();
+ creatureTemplate.RegenHealth = fields[70].GetBool();
+ creatureTemplate.MechanicImmuneMask = fields[71].GetUInt32();
+ creatureTemplate.SpellSchoolImmuneMask = fields[72].GetUInt32();
+ creatureTemplate.flags_extra = fields[73].GetUInt32();
+ creatureTemplate.ScriptID = GetScriptId(fields[74].GetString());
}
void ObjectMgr::LoadCreatureTemplateAddons()
@@ -687,39 +681,6 @@ void ObjectMgr::CheckCreatureTemplate(CreatureTemplate const* cInfo)
cInfo->family, cInfo->DifficultyEntry[diff]);
}
- if (cInfo->trainer_class != difficultyInfo->trainer_class)
- {
- TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, trainer_class: %u) has different `trainer_class` in difficulty %u mode (Entry: %u, trainer_class: %u).",
- cInfo->Entry, cInfo->trainer_class, diff + 1, cInfo->DifficultyEntry[diff], difficultyInfo->trainer_class);
- TC_LOG_ERROR("sql.sql", "Possible FIX: UPDATE `creature_template` SET `trainer_class`=%u WHERE `entry`=%u;",
- cInfo->trainer_class, cInfo->DifficultyEntry[diff]);
- continue;
- }
-
- if (cInfo->trainer_race != difficultyInfo->trainer_race)
- {
- TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, trainer_race: %u) has different `trainer_race` in difficulty %u mode (Entry: %u, trainer_race: %u).",
- cInfo->Entry, cInfo->trainer_race, diff + 1, cInfo->DifficultyEntry[diff], difficultyInfo->trainer_race);
- TC_LOG_ERROR("sql.sql", "Possible FIX: UPDATE `creature_template` SET `trainer_race`=%u WHERE `entry`=%u;",
- cInfo->trainer_race, cInfo->DifficultyEntry[diff]);
- continue;
- }
-
- if (cInfo->trainer_type != difficultyInfo->trainer_type)
- {
- TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, trainer_type: %u) has different `trainer_type` in difficulty %u mode (Entry: %u, trainer_type: %u).",
- cInfo->Entry, cInfo->trainer_type, diff + 1, cInfo->DifficultyEntry[diff], difficultyInfo->trainer_type);
- TC_LOG_ERROR("sql.sql", "Possible FIX: UPDATE `creature_template` SET `trainer_type`=%u WHERE `entry`=%u;",
- cInfo->trainer_type, cInfo->DifficultyEntry[diff]);
- continue;
- }
-
- if (cInfo->trainer_spell != difficultyInfo->trainer_spell)
- {
- TC_LOG_ERROR("sql.sql", "Creature (Entry: %u) has different `trainer_spell` in difficulty %u mode (Entry: %u).", cInfo->Entry, diff + 1, cInfo->DifficultyEntry[diff]);
- continue;
- }
-
if (cInfo->type != difficultyInfo->type)
{
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u, type: %u) has different `type` in difficulty %u mode (Entry: %u, type: %u).",
@@ -912,9 +873,6 @@ void ObjectMgr::CheckCreatureTemplate(CreatureTemplate const* cInfo)
if (cInfo->RangeAttackTime == 0)
const_cast<CreatureTemplate*>(cInfo)->RangeAttackTime = BASE_ATTACK_TIME;
- if ((cInfo->npcflag & UNIT_NPC_FLAG_TRAINER) && cInfo->trainer_type >= MAX_TRAINER_TYPE)
- TC_LOG_ERROR("sql.sql", "Creature (Entry: %u) has wrong trainer type %u.", cInfo->Entry, cInfo->trainer_type);
-
if (cInfo->speed_walk == 0.0f)
{
TC_LOG_ERROR("sql.sql", "Creature (Entry: %u) has wrong value (%f) in speed_walk, set to 1.", cInfo->Entry, cInfo->speed_walk);
@@ -8702,122 +8660,149 @@ void ObjectMgr::LoadMailLevelRewards()
TC_LOG_INFO("server.loading", ">> Loaded %u level dependent mail rewards in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
}
-void ObjectMgr::AddSpellToTrainer(uint32 ID, uint32 SpellID, uint32 MoneyCost, uint32 ReqSkillLine, uint32 ReqSkillRank, uint32 ReqLevel)
+void ObjectMgr::LoadTrainers()
{
- if (ID >= TRINITY_TRAINER_START_REF)
- return;
+ uint32 oldMSTime = getMSTime();
- CreatureTemplate const* cInfo = GetCreatureTemplate(ID);
- if (!cInfo)
- {
- TC_LOG_ERROR("sql.sql", "Table `npc_trainer` contains entries for a non-existing creature template (ID: %u), ignoring", ID);
- return;
- }
+ // For reload case
+ _trainers.clear();
- if (!(cInfo->npcflag & UNIT_NPC_FLAG_TRAINER))
+ std::unordered_map<int32, std::vector<Trainer::Spell>> spellsByTrainer;
+ if (QueryResult trainerSpellsResult = WorldDatabase.Query("SELECT TrainerId, SpellId, MoneyCost, ReqSkillLine, ReqSkillRank, ReqAbility1, ReqAbility2, ReqAbility3, ReqLevel FROM trainer_spell"))
{
- TC_LOG_ERROR("sql.sql", "Table `npc_trainer` contains entries for a creature template (ID: %u) without trainer flag, ignoring", ID);
- return;
- }
+ do
+ {
+ Field* fields = trainerSpellsResult->Fetch();
- SpellInfo const* spellinfo = sSpellMgr->GetSpellInfo(SpellID);
- if (!spellinfo)
- {
- TC_LOG_ERROR("sql.sql", "Table `npc_trainer` contains an ID (%u) for a non-existing SpellID (%u), ignoring", ID, SpellID);
- return;
- }
+ Trainer::Spell spell;
+ uint32 trainerId = fields[0].GetUInt32();
+ spell.SpellId = fields[1].GetUInt32();
+ spell.MoneyCost = fields[2].GetUInt32();
+ spell.ReqSkillLine = fields[3].GetUInt32();
+ spell.ReqSkillRank = fields[4].GetUInt32();
+ spell.ReqAbility[0] = fields[5].GetUInt32();
+ spell.ReqAbility[1] = fields[6].GetUInt32();
+ spell.ReqAbility[2] = fields[7].GetUInt32();
+ spell.ReqLevel = fields[8].GetUInt8();
- if (!SpellMgr::IsSpellValid(spellinfo))
- {
- TC_LOG_ERROR("sql.sql", "Table `npc_trainer` contains an ID (%u) for a broken SpellID (%u), ignoring", ID, SpellID);
- return;
- }
+ SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spell.SpellId);
+ if (!spellInfo)
+ {
+ TC_LOG_ERROR("sql.sql", "Table `trainer_spell` references non-existing spell (SpellId: %u) for TrainerId %u, ignoring", spell.SpellId, trainerId);
+ continue;
+ }
- if (GetTalentSpellCost(SpellID))
- {
- TC_LOG_ERROR("sql.sql", "Table `npc_trainer` contains an ID (%u) for a non-existing SpellID (%u) which is a talent, ignoring", ID, SpellID);
- return;
- }
+ if (GetTalentSpellCost(spell.SpellId))
+ {
+ TC_LOG_ERROR("sql.sql", "Table `trainer_spell` references non-existing spell (SpellId: %u) which is a talent, for TrainerId %u, ignoring", spell.SpellId, trainerId);
+ continue;
+ }
- TrainerSpellData& data = _cacheTrainerSpellStore[ID];
+ if (spell.ReqSkillLine && !sSkillLineStore.LookupEntry(spell.ReqSkillLine))
+ {
+ TC_LOG_ERROR("sql.sql", "Table `trainer_spell` references non-existing skill (ReqSkillLine: %u) for TrainerId %u and SpellId %u, ignoring",
+ spell.ReqSkillLine, spell.SpellId, trainerId);
+ continue;
+ }
- TrainerSpell& trainerSpell = data.spellList[SpellID];
- trainerSpell.SpellID = SpellID;
- trainerSpell.MoneyCost = MoneyCost;
- trainerSpell.ReqSkillLine = ReqSkillLine;
- trainerSpell.ReqSkillRank = ReqSkillRank;
- trainerSpell.ReqLevel = ReqLevel;
+ bool allReqValid = true;
+ for (std::size_t i = 0; i < spell.ReqAbility.size(); ++i)
+ {
+ uint32 requiredSpell = spell.ReqAbility[i];
+ if (requiredSpell && !sSpellMgr->GetSpellInfo(requiredSpell))
+ {
+ TC_LOG_ERROR("sql.sql", "Table `trainer_spell` references non-existing spell (ReqAbility" SZFMTD ": %u) for TrainerId %u and SpellId %u, ignoring",
+ i + 1, requiredSpell, trainerId, spell.SpellId);
+ allReqValid = false;
+ }
+ }
+
+ if (!allReqValid)
+ continue;
- if (!trainerSpell.ReqLevel)
- trainerSpell.ReqLevel = spellinfo->SpellLevel;
+ spellsByTrainer[trainerId].push_back(spell);
+ } while (trainerSpellsResult->NextRow());
+ }
- // calculate learned spell for profession case when stored cast-spell
- trainerSpell.ReqAbility[0] = SpellID;
- for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ if (QueryResult trainersResult = WorldDatabase.Query("SELECT Id, Type, Requirement, Greeting FROM trainer"))
{
- if (spellinfo->Effects[i].Effect != SPELL_EFFECT_LEARN_SPELL)
- continue;
- if (trainerSpell.ReqAbility[0] == SpellID)
- trainerSpell.ReqAbility[0] = 0;
- // player must be able to cast spell on himself
- if (spellinfo->Effects[i].TargetA.GetTarget() != 0 && spellinfo->Effects[i].TargetA.GetTarget() != TARGET_UNIT_TARGET_ALLY
- && spellinfo->Effects[i].TargetA.GetTarget() != TARGET_UNIT_TARGET_ANY && spellinfo->Effects[i].TargetA.GetTarget() != TARGET_UNIT_CASTER)
+ do
{
- TC_LOG_ERROR("sql.sql", "Table `npc_trainer` has spell %u for trainer entry %u with learn effect which has incorrect target type, ignoring learn effect!", SpellID, ID);
- continue;
- }
+ Field* fields = trainersResult->Fetch();
+
+ uint32 trainerId = fields[0].GetUInt32();
+ Trainer::Type trainerType = Trainer::Type(fields[1].GetUInt8());
+ uint32 requirement = fields[2].GetUInt32();
+ std::string greeting = fields[3].GetString();
+ std::vector<Trainer::Spell> spells;
+ auto spellsItr = spellsByTrainer.find(trainerId);
+ if (spellsItr != spellsByTrainer.end())
+ {
+ spells = std::move(spellsItr->second);
+ spellsByTrainer.erase(spellsItr);
+ }
- trainerSpell.ReqAbility[i] = spellinfo->Effects[i].TriggerSpell;
+ _trainers.emplace(std::piecewise_construct, std::forward_as_tuple(trainerId), std::forward_as_tuple(trainerId, trainerType, requirement, std::move(greeting), std::move(spells)));
+ } while (trainersResult->NextRow());
+ }
- if (trainerSpell.ReqAbility[i])
+ for (auto const& unusedSpells : spellsByTrainer)
+ {
+ for (Trainer::Spell const& unusedSpell : unusedSpells.second)
{
- SpellInfo const* learnedSpellInfo = sSpellMgr->GetSpellInfo(trainerSpell.ReqAbility[i]);
- if (learnedSpellInfo && learnedSpellInfo->IsProfession())
- data.trainerType = 2;
+ TC_LOG_ERROR("sql.sql", "Table `trainer_spell` references non-existing trainer (TrainerId: %u) for SpellId %u, ignoring", unusedSpells.first, unusedSpell.SpellId);
}
}
- return;
-}
-
-void ObjectMgr::LoadTrainerSpell()
-{
- uint32 oldMSTime = getMSTime();
+ if (QueryResult trainerLocalesResult = WorldDatabase.Query("SELECT Id, locale, Greeting_lang FROM trainer_locale"))
+ {
+ do
+ {
+ Field* fields = trainerLocalesResult->Fetch();
+ uint32 trainerId = fields[0].GetUInt32();
+ std::string localeName = fields[1].GetString();
- // For reload case
- _cacheTrainerSpellStore.clear();
+ LocaleConstant locale = GetLocaleByName(localeName);
+ if (locale == LOCALE_enUS)
+ continue;
- QueryResult result = WorldDatabase.Query("SELECT b.ID, a.SpellID, a.MoneyCost, a.ReqSkillLine, a.ReqSkillRank, a.ReqLevel FROM npc_trainer AS a "
- "INNER JOIN npc_trainer AS b ON a.ID = -(b.SpellID) "
- "UNION SELECT * FROM npc_trainer WHERE SpellID > 0");
+ if (Trainer::Trainer* trainer = Trinity::Containers::MapGetValuePtr(_trainers, trainerId))
+ trainer->AddGreetingLocale(locale, fields[2].GetString());
+ else
+ TC_LOG_ERROR("sql.sql", "Table `trainer_locale` references non-existing trainer (TrainerId: %u) for locale %s, ignoring",
+ trainerId, localeName.c_str());
+ } while (trainerLocalesResult->NextRow());
+ }
- if (!result)
- {
- TC_LOG_ERROR("sql.sql", ">> Loaded 0 Trainers. DB table `npc_trainer` is empty!");
+ TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " Trainers in %u ms", _trainers.size(), GetMSTimeDiffToNow(oldMSTime));
+}
- return;
- }
+void ObjectMgr::LoadCreatureDefaultTrainers()
+{
+ uint32 oldMSTime = getMSTime();
- uint32 count = 0;
+ _creatureDefaultTrainers.clear();
- do
+ if (QueryResult result = WorldDatabase.Query("SELECT CreatureId, TrainerId FROM creature_default_trainer"))
{
- Field* fields = result->Fetch();
+ do
+ {
+ Field* fields = result->Fetch();
+ uint32 creatureId = fields[0].GetUInt32();
+ uint32 trainerId = fields[1].GetUInt32();
- uint32 ID = fields[0].GetUInt32();
- uint32 SpellID = fields[1].GetUInt32();
- uint32 MoneyCost = fields[2].GetUInt32();
- uint32 ReqSkillLine = fields[3].GetUInt16();
- uint32 ReqSkillRank = fields[4].GetUInt16();
- uint32 ReqLevel = fields[5].GetUInt8();
+ if (!GetCreatureTemplate(creatureId))
+ {
+ TC_LOG_ERROR("sql.sql", "Table `creature_default_trainer` references non-existing creature template (CreatureId: %u), ignoring", creatureId);
+ continue;
+ }
- AddSpellToTrainer(ID, SpellID, MoneyCost, ReqSkillLine, ReqSkillRank, ReqLevel);
+ _creatureDefaultTrainers[creatureId] = trainerId;
- ++count;
+ } while (result->NextRow());
}
- while (result->NextRow());
- TC_LOG_INFO("server.loading", ">> Loaded %d Trainers in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
+ TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " default trainers in %u ms", _creatureDefaultTrainers.size(), GetMSTimeDiffToNow(oldMSTime));
}
uint32 ObjectMgr::LoadReferenceVendor(int32 vendor, int32 item, std::set<uint32>* skip_vendors)
@@ -9022,6 +9007,15 @@ void ObjectMgr::LoadGossipMenuItems()
TC_LOG_INFO("server.loading", ">> Loaded %u gossip_menu_option entries in %u ms", uint32(_gossipMenuItemsStore.size()), GetMSTimeDiffToNow(oldMSTime));
}
+Trainer::Trainer const* ObjectMgr::GetTrainer(uint32 creatureId) const
+{
+ auto itr = _creatureDefaultTrainers.find(creatureId);
+ if (itr != _creatureDefaultTrainers.end())
+ return Trinity::Containers::MapGetValuePtr(_trainers, itr->second);
+
+ return nullptr;
+}
+
void ObjectMgr::AddVendorItem(uint32 entry, uint32 item, int32 maxcount, uint32 incrtime, uint32 extendedCost, bool persist /*= true*/)
{
VendorItemData& vList = _cacheVendorItemStore[entry];
diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h
index 7c5fa315d3d..8568e72a601 100644
--- a/src/server/game/Globals/ObjectMgr.h
+++ b/src/server/game/Globals/ObjectMgr.h
@@ -33,6 +33,7 @@
#include "Position.h"
#include "QuestDef.h"
#include "SharedDefines.h"
+#include "Trainer.h"
#include "VehicleDefines.h"
#include <map>
#include <unordered_map>
@@ -828,7 +829,6 @@ typedef std::pair<GraveyardContainer::const_iterator, GraveyardContainer::const_
typedef std::pair<GraveyardContainer::iterator, GraveyardContainer::iterator> GraveyardMapBoundsNonConst;
typedef std::unordered_map<uint32, VendorItemData> CacheVendorItemContainer;
-typedef std::unordered_map<uint32, TrainerSpellData> CacheTrainerSpellContainer;
enum SkillRangeType
{
@@ -1215,8 +1215,8 @@ class TC_GAME_API ObjectMgr
void LoadGossipMenuItems();
void LoadVendors();
- void LoadTrainerSpell();
- void AddSpellToTrainer(uint32 ID, uint32 SpellID, uint32 MoneyCost, uint32 ReqSkillLine, uint32 ReqSkillRank, uint32 ReqLevel);
+ void LoadTrainers();
+ void LoadCreatureDefaultTrainers();
void InitializeQueriesData(QueryDataGroup mask);
@@ -1456,14 +1456,7 @@ class TC_GAME_API ObjectMgr
bool AddGameTele(GameTele& data);
bool DeleteGameTele(std::string const& name);
- TrainerSpellData const* GetNpcTrainerSpells(uint32 entry) const
- {
- CacheTrainerSpellContainer::const_iterator iter = _cacheTrainerSpellStore.find(entry);
- if (iter == _cacheTrainerSpellStore.end())
- return nullptr;
-
- return &iter->second;
- }
+ Trainer::Trainer const* GetTrainer(uint32 creatureId) const;
VendorItemData const* GetNpcVendorItemList(uint32 entry) const
{
@@ -1685,7 +1678,8 @@ class TC_GAME_API ObjectMgr
TrinityStringContainer _trinityStringStore;
CacheVendorItemContainer _cacheVendorItemStore;
- CacheTrainerSpellContainer _cacheTrainerSpellStore;
+ std::unordered_map<uint32, Trainer::Trainer> _trainers;
+ std::unordered_map<uint32, uint32> _creatureDefaultTrainers;
std::set<uint32> _difficultyEntries[MAX_DIFFICULTY - 1]; // already loaded difficulty 1 value in creatures, used in CheckCreatureTemplate
std::set<uint32> _hasDifficultyEntries[MAX_DIFFICULTY - 1]; // already loaded creatures with difficulty 1 values, used in CheckCreatureTemplate
diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h
index 5297d21b104..5e606e67ef1 100644
--- a/src/server/game/Grids/Notifiers/GridNotifiers.h
+++ b/src/server/game/Grids/Notifiers/GridNotifiers.h
@@ -116,19 +116,19 @@ namespace Trinity
struct TC_GAME_API MessageDistDeliverer
{
- WorldObject* i_source;
+ WorldObject const* i_source;
WorldPacket const* i_message;
uint32 i_phaseMask;
float i_distSq;
uint32 team;
Player const* skipped_receiver;
- MessageDistDeliverer(WorldObject* src, WorldPacket const* msg, float dist, bool own_team_only = false, Player const* skipped = nullptr)
+ MessageDistDeliverer(WorldObject const* src, WorldPacket const* msg, float dist, bool own_team_only = false, Player const* skipped = nullptr)
: i_source(src), i_message(msg), i_phaseMask(src->GetPhaseMask()), i_distSq(dist * dist)
, team(0)
, skipped_receiver(skipped)
{
if (own_team_only)
- if (Player* player = src->ToPlayer())
+ if (Player const* player = src->ToPlayer())
team = player->GetTeam();
}
diff --git a/src/server/game/Handlers/NPCHandler.cpp b/src/server/game/Handlers/NPCHandler.cpp
index 5b50075d2fd..dbbf3b6fe03 100644
--- a/src/server/game/Handlers/NPCHandler.cpp
+++ b/src/server/game/Handlers/NPCHandler.cpp
@@ -29,6 +29,7 @@
#include "Language.h"
#include "Log.h"
#include "Map.h"
+#include "NPCPackets.h"
#include "Opcodes.h"
#include "ObjectMgr.h"
#include "Pet.h"
@@ -38,6 +39,7 @@
#include "ScriptMgr.h"
#include "SpellInfo.h"
#include "SpellMgr.h"
+#include "Trainer.h"
#include "World.h"
#include "WorldPacket.h"
@@ -114,135 +116,45 @@ void WorldSession::SendShowMailBox(ObjectGuid guid)
SendPacket(&data);
}
-void WorldSession::HandleTrainerListOpcode(WorldPacket& recvData)
+void WorldSession::HandleTrainerListOpcode(WorldPackets::NPC::Hello& packet)
{
- ObjectGuid guid;
-
- recvData >> guid;
- SendTrainerList(guid);
-}
-
-void WorldSession::SendTrainerList(ObjectGuid guid)
-{
- std::string str = GetTrinityString(LANG_NPC_TAINER_HELLO);
- SendTrainerList(guid, str);
-}
-
-void WorldSession::SendTrainerList(ObjectGuid guid, const std::string& strTitle)
-{
- Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_TRAINER);
- if (!unit)
+ Creature* npc = GetPlayer()->GetNPCIfCanInteractWith(packet.Unit, UNIT_NPC_FLAG_TRAINER);
+ if (!npc)
{
- TC_LOG_DEBUG("network", "WORLD: SendTrainerList - %s not found or you can not interact with him.", guid.ToString().c_str());
+ TC_LOG_DEBUG("network", "WorldSession: SendTrainerList - %s not found or you can not interact with him.", packet.Unit.ToString().c_str());
return;
}
+ if (sObjectMgr->GetTrainer(npc->GetEntry()))
+ SendTrainerList(npc);
+ else
+ TC_LOG_DEBUG("network", "WorldSession::SendTrainerList - Creature id %u has no trainer data.", npc->GetEntry());
+}
+
+void WorldSession::SendTrainerList(Creature* npc)
+{
// remove fake death
if (GetPlayer()->HasUnitState(UNIT_STATE_DIED))
GetPlayer()->RemoveAurasByType(SPELL_AURA_FEIGN_DEATH);
- TrainerSpellData const* trainer_spells = unit->GetTrainerSpells();
- if (!trainer_spells)
+ Trainer::Trainer const* trainer = sObjectMgr->GetTrainer(npc->GetEntry());
+ if (!trainer)
{
- TC_LOG_DEBUG("network", "WORLD: SendTrainerList - Training spells not found for %s", guid.ToString().c_str());
+ TC_LOG_DEBUG("network", "WorldSession: SendTrainerList - trainer spells not found for %s", npc->GetGUID().ToString().c_str());
return;
}
- WorldPacket data(SMSG_TRAINER_LIST, 8+4+4+trainer_spells->spellList.size()*38 + strTitle.size()+1);
- data << guid;
- data << uint32(trainer_spells->trainerType);
-
- size_t count_pos = data.wpos();
- data << uint32(trainer_spells->spellList.size());
-
- // reputation discount
- float fDiscountMod = _player->GetReputationPriceDiscount(unit);
- bool can_learn_primary_prof = GetPlayer()->GetFreePrimaryProfessionPoints() > 0;
-
- uint32 count = 0;
- for (TrainerSpellMap::const_iterator itr = trainer_spells->spellList.begin(); itr != trainer_spells->spellList.end(); ++itr)
- {
- TrainerSpell const* tSpell = &itr->second;
-
- bool valid = true;
- bool primary_prof_first_rank = false;
- for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
- {
- if (!tSpell->ReqAbility[i])
- continue;
- if (!_player->IsSpellFitByClassAndRace(tSpell->ReqAbility[i]))
- {
- valid = false;
- break;
- }
- SpellInfo const* learnedSpellInfo = sSpellMgr->GetSpellInfo(tSpell->ReqAbility[i]);
- if (learnedSpellInfo && learnedSpellInfo->IsPrimaryProfessionFirstRank())
- primary_prof_first_rank = true;
- }
- if (!valid)
- continue;
-
- TrainerSpellState state = _player->GetTrainerSpellState(tSpell);
-
- data << uint32(tSpell->SpellID); // learned spell (or cast-spell in profession case)
- data << uint8(state == TRAINER_SPELL_GREEN_DISABLED ? TRAINER_SPELL_GREEN : state);
- data << uint32(floor(tSpell->MoneyCost * fDiscountMod));
-
- data << uint32(primary_prof_first_rank && can_learn_primary_prof ? 1 : 0);
- // primary prof. learn confirmation dialog
- data << uint32(primary_prof_first_rank ? 1 : 0); // must be equal prev. field to have learn button in enabled state
- data << uint8(tSpell->ReqLevel);
- data << uint32(tSpell->ReqSkillLine);
- data << uint32(tSpell->ReqSkillRank);
- //prev + req or req + 0
- uint8 maxReq = 0;
- for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
- {
- if (!tSpell->ReqAbility[i])
- continue;
- if (uint32 prevSpellId = sSpellMgr->GetPrevSpellInChain(tSpell->ReqAbility[i]))
- {
- data << uint32(prevSpellId);
- ++maxReq;
- }
- if (maxReq == 3)
- break;
- SpellsRequiringSpellMapBounds spellsRequired = sSpellMgr->GetSpellsRequiredForSpellBounds(tSpell->ReqAbility[i]);
- for (SpellsRequiringSpellMap::const_iterator itr2 = spellsRequired.first; itr2 != spellsRequired.second && maxReq < 3; ++itr2)
- {
- data << uint32(itr2->second);
- ++maxReq;
- }
- if (maxReq == 3)
- break;
- }
- while (maxReq < 3)
- {
- data << uint32(0);
- ++maxReq;
- }
-
- ++count;
- }
-
- data << strTitle;
-
- data.put<uint32>(count_pos, count);
- SendPacket(&data);
+ trainer->SendSpells(npc, _player, GetSessionDbLocaleIndex());
}
-void WorldSession::HandleTrainerBuySpellOpcode(WorldPacket& recvData)
+void WorldSession::HandleTrainerBuySpellOpcode(WorldPackets::NPC::TrainerBuySpell& packet)
{
- ObjectGuid guid;
- uint32 spellId = 0;
+ TC_LOG_DEBUG("network", "WORLD: Received CMSG_TRAINER_BUY_SPELL %s, learn spell id is: %u", packet.TrainerGUID.ToString().c_str(), packet.SpellID);
- recvData >> guid >> spellId;
- TC_LOG_DEBUG("network", "WORLD: Received CMSG_TRAINER_BUY_SPELL %s, learn spell id is: %u", guid.ToString().c_str(), spellId);
-
- Creature* trainer = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_TRAINER);
- if (!trainer)
+ Creature* npc = GetPlayer()->GetNPCIfCanInteractWith(packet.TrainerGUID, UNIT_NPC_FLAG_TRAINER);
+ if (!npc)
{
- TC_LOG_DEBUG("network", "WORLD: HandleTrainerBuySpellOpcode - %s not found or you can not interact with him.", guid.ToString().c_str());
+ TC_LOG_DEBUG("network", "WORLD: HandleTrainerBuySpellOpcode - %s not found or you can not interact with him.", packet.TrainerGUID.ToString().c_str());
return;
}
@@ -250,54 +162,11 @@ void WorldSession::HandleTrainerBuySpellOpcode(WorldPacket& recvData)
if (GetPlayer()->HasUnitState(UNIT_STATE_DIED))
GetPlayer()->RemoveAurasByType(SPELL_AURA_FEIGN_DEATH);
- // check race for mount trainers
- if (trainer->GetCreatureTemplate()->trainer_type == TRAINER_TYPE_MOUNTS)
- {
- if (uint32 trainerRace = trainer->GetCreatureTemplate()->trainer_race)
- if (_player->getRace() != trainerRace)
- return;
- }
-
- // check class for class trainers
- if (_player->getClass() != trainer->GetCreatureTemplate()->trainer_class && trainer->GetCreatureTemplate()->trainer_type == TRAINER_TYPE_CLASS)
- return;
-
- // check present spell in trainer spell list
- TrainerSpellData const* trainer_spells = trainer->GetTrainerSpells();
- if (!trainer_spells)
- return;
-
- // not found, cheat?
- TrainerSpell const* trainer_spell = trainer_spells->Find(spellId);
- if (!trainer_spell)
- return;
-
- // can't be learn, cheat? Or double learn with lags...
- if (_player->GetTrainerSpellState(trainer_spell) != TRAINER_SPELL_GREEN)
- return;
-
- // apply reputation discount
- uint32 nSpellCost = uint32(floor(trainer_spell->MoneyCost * _player->GetReputationPriceDiscount(trainer)));
-
- // check money requirement
- if (!_player->HasEnoughMoney(nSpellCost))
+ Trainer::Trainer const* trainer = sObjectMgr->GetTrainer(npc->GetEntry());
+ if (!trainer)
return;
- _player->ModifyMoney(-int32(nSpellCost));
-
- trainer->SendPlaySpellVisual(179); // 53 SpellCastDirected
- trainer->SendPlaySpellImpact(_player->GetGUID(), 362); // 113 EmoteSalute
-
- // learn explicitly or cast explicitly
- if (trainer_spell->IsCastable())
- _player->CastSpell(_player, trainer_spell->SpellID, true);
- else
- _player->LearnSpell(spellId, false);
-
- WorldPacket data(SMSG_TRAINER_BUY_SUCCEEDED, 12);
- data << uint64(guid);
- data << uint32(spellId); // should be same as in packet from client
- SendPacket(&data);
+ trainer->TeachSpell(npc, _player, packet.SpellID);
}
void WorldSession::HandleGossipHelloOpcode(WorldPacket& recvData)
diff --git a/src/server/game/Handlers/SkillHandler.cpp b/src/server/game/Handlers/SkillHandler.cpp
index 0e9d45e1aca..b254b891a4a 100644
--- a/src/server/game/Handlers/SkillHandler.cpp
+++ b/src/server/game/Handlers/SkillHandler.cpp
@@ -71,7 +71,7 @@ void WorldSession::HandleTalentWipeConfirmOpcode(WorldPacket& recvData)
return;
}
- if (!unit->isCanTrainingAndResetTalentsOf(_player))
+ if (!unit->CanResetTalents(_player))
return;
// remove fake death
diff --git a/src/server/game/Server/Packets/AllPackets.h b/src/server/game/Server/Packets/AllPackets.h
index 63cd9c0ca4c..17bcce8f09a 100644
--- a/src/server/game/Server/Packets/AllPackets.h
+++ b/src/server/game/Server/Packets/AllPackets.h
@@ -18,6 +18,7 @@
#ifndef AllPackets_h__
#define AllPackets_h__
+#include "NPCPackets.h"
#include "QueryPackets.h"
#include "QuestPackets.h"
#include "SpellPackets.h"
diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp
new file mode 100644
index 00000000000..bef58fabd02
--- /dev/null
+++ b/src/server/game/Server/Packets/NPCPackets.cpp
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2008-2018 TrinityCore <https://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "NPCPackets.h"
+
+void WorldPackets::NPC::Hello::Read()
+{
+ _worldPacket >> Unit;
+}
+
+WorldPacket const* WorldPackets::NPC::TrainerList::Write()
+{
+ _worldPacket << TrainerGUID;
+ _worldPacket << int32(TrainerType);
+
+ _worldPacket << int32(Spells.size());
+ for (TrainerListSpell const& spell : Spells)
+ {
+ _worldPacket << int32(spell.SpellID);
+ _worldPacket << uint8(spell.Usable);
+ _worldPacket << int32(spell.MoneyCost);
+ _worldPacket << int32(spell.ProfessionDialog);
+ _worldPacket << int32(spell.ProfessionButton);
+ _worldPacket << uint8(spell.ReqLevel);
+ _worldPacket << int32(spell.ReqSkillLine);
+ _worldPacket << int32(spell.ReqSkillRank);
+ _worldPacket.append(spell.ReqAbility.data(), spell.ReqAbility.size());
+ }
+
+ _worldPacket << Greeting;
+
+ return &_worldPacket;
+}
+
+void WorldPackets::NPC::TrainerBuySpell::Read()
+{
+ _worldPacket >> TrainerGUID;
+ _worldPacket >> SpellID;
+}
+
+WorldPacket const* WorldPackets::NPC::TrainerBuyFailed::Write()
+{
+ _worldPacket << TrainerGUID;
+ _worldPacket << int32(SpellID);
+ _worldPacket << int32(TrainerFailedReason);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::NPC::TrainerBuySucceeded::Write()
+{
+ _worldPacket << TrainerGUID;
+ _worldPacket << int32(SpellID);
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h
new file mode 100644
index 00000000000..cdbf7072a8a
--- /dev/null
+++ b/src/server/game/Server/Packets/NPCPackets.h
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2008-2018 TrinityCore <https://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef NPCPackets_h__
+#define NPCPackets_h__
+
+#include "Packet.h"
+#include "ObjectGuid.h"
+#include <array>
+
+namespace WorldPackets
+{
+ namespace NPC
+ {
+ // CMSG_BANKER_ACTIVATE
+ // CMSG_BATTLEMASTER_HELLO
+ // CMSG_BINDER_ACTIVATE
+ // CMSG_GOSSIP_HELLO
+ // CMSG_LIST_INVENTORY
+ // CMSG_TRAINER_LIST
+ class Hello final : public ClientPacket
+ {
+ public:
+ Hello(WorldPacket&& packet) : ClientPacket(std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid Unit;
+ };
+
+ struct TrainerListSpell
+ {
+ int32 SpellID = 0;
+ uint8 Usable = 0;
+ int32 MoneyCost = 0;
+ int32 ProfessionDialog = 0;
+ int32 ProfessionButton = 0;
+ uint8 ReqLevel = 0;
+ int32 ReqSkillLine = 0;
+ int32 ReqSkillRank = 0;
+ std::array<int32, 3> ReqAbility = { };
+ };
+
+ class TrainerList final : public ServerPacket
+ {
+ public:
+ TrainerList() : ServerPacket(SMSG_TRAINER_LIST) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid TrainerGUID;
+ int32 TrainerType = 0;
+ std::vector<TrainerListSpell> Spells;
+ std::string Greeting;
+ };
+
+ class TrainerBuySpell final : public ClientPacket
+ {
+ public:
+ TrainerBuySpell(WorldPacket&& packet) : ClientPacket(CMSG_TRAINER_BUY_SPELL, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid TrainerGUID;
+ int32 SpellID = 0;
+ };
+
+ class TrainerBuyFailed final : public ServerPacket
+ {
+ public:
+ TrainerBuyFailed() : ServerPacket(SMSG_TRAINER_BUY_FAILED, 8 + 4 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid TrainerGUID;
+ int32 SpellID = 0;
+ int32 TrainerFailedReason = 0;
+ };
+
+ class TrainerBuySucceeded final : public ServerPacket
+ {
+ public:
+ TrainerBuySucceeded() : ServerPacket(SMSG_TRAINER_BUY_SUCCEEDED, 8 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid TrainerGUID;
+ int32 SpellID = 0;
+ };
+ }
+}
+
+#endif // NPCPackets_h__
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 540bc239128..2891b486201 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -74,6 +74,11 @@ class RBACData;
namespace WorldPackets
{
+ namespace NPC
+ {
+ class Hello;
+ class TrainerBuySpell;
+ }
namespace Query
{
class QueryCreature;
@@ -348,8 +353,7 @@ class TC_GAME_API WorldSession
void SendNameQueryOpcode(ObjectGuid guid);
- void SendTrainerList(ObjectGuid guid);
- void SendTrainerList(ObjectGuid guid, std::string const& strTitle);
+ void SendTrainerList(Creature* npc);
void SendListInventory(ObjectGuid guid);
void SendShowBank(ObjectGuid guid);
bool CanOpenMailBox(ObjectGuid guid);
@@ -652,8 +656,8 @@ class TC_GAME_API WorldSession
void HandleTabardVendorActivateOpcode(WorldPacket& recvPacket);
void HandleBankerActivateOpcode(WorldPacket& recvPacket);
void HandleBuyBankSlotOpcode(WorldPacket& recvPacket);
- void HandleTrainerListOpcode(WorldPacket& recvPacket);
- void HandleTrainerBuySpellOpcode(WorldPacket& recvPacket);
+ void HandleTrainerListOpcode(WorldPackets::NPC::Hello& packet);
+ void HandleTrainerBuySpellOpcode(WorldPackets::NPC::TrainerBuySpell& packet);
void HandlePetitionShowListOpcode(WorldPacket& recvPacket);
void HandleGossipHelloOpcode(WorldPacket& recvPacket);
void HandleGossipSelectOptionOpcode(WorldPacket& recvPacket);
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index a5a9f4d33e4..9fe210e493b 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -297,9 +297,9 @@ uint32 SpellMgr::GetSpellWithRank(uint32 spell_id, uint32 rank, bool strict) con
return spell_id;
}
-SpellRequiredMapBounds SpellMgr::GetSpellsRequiredForSpellBounds(uint32 spell_id) const
+Trinity::IteratorPair<SpellRequiredMap::const_iterator> SpellMgr::GetSpellsRequiredForSpellBounds(uint32 spell_id) const
{
- return mSpellReq.equal_range(spell_id);
+ return Trinity::Containers::MapEqualRange(mSpellReq, spell_id);
}
SpellsRequiringSpellMapBounds SpellMgr::GetSpellsRequiringSpellBounds(uint32 spell_id) const
diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h
index 5dddc5f13e8..595e186b6cd 100644
--- a/src/server/game/Spells/SpellMgr.h
+++ b/src/server/game/Spells/SpellMgr.h
@@ -23,6 +23,7 @@
#include "Define.h"
#include "Duration.h"
+#include "IteratorPair.h"
#include "SharedDefines.h"
#include "Util.h"
@@ -607,7 +608,7 @@ class TC_GAME_API SpellMgr
uint32 GetSpellWithRank(uint32 spell_id, uint32 rank, bool strict = false) const;
// Spell Required table
- SpellRequiredMapBounds GetSpellsRequiredForSpellBounds(uint32 spell_id) const;
+ Trinity::IteratorPair<SpellRequiredMap::const_iterator> GetSpellsRequiredForSpellBounds(uint32 spell_id) const;
SpellsRequiringSpellMapBounds GetSpellsRequiringSpellBounds(uint32 spell_id) const;
bool IsSpellRequiringSpell(uint32 spellid, uint32 req_spellid) const;
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 13c3b7b161c..4c3498c98b0 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -1927,18 +1927,21 @@ void World::SetInitialWorldSettings()
TC_LOG_INFO("server.loading", "Loading GameTeleports...");
sObjectMgr->LoadGameTele();
+ TC_LOG_INFO("server.loading", "Loading Trainers..."); // must be after LoadCreatureTemplates
+ sObjectMgr->LoadTrainers();
+
+ TC_LOG_INFO("server.loading", "Loading Creature default trainers...");
+ sObjectMgr->LoadCreatureDefaultTrainers();
+
TC_LOG_INFO("server.loading", "Loading Gossip menu...");
sObjectMgr->LoadGossipMenu();
TC_LOG_INFO("server.loading", "Loading Gossip menu options...");
- sObjectMgr->LoadGossipMenuItems();
+ sObjectMgr->LoadGossipMenuItems(); // must be after LoadTrainers
TC_LOG_INFO("server.loading", "Loading Vendors...");
sObjectMgr->LoadVendors(); // must be after load CreatureTemplate and ItemTemplate
- TC_LOG_INFO("server.loading", "Loading Trainers...");
- sObjectMgr->LoadTrainerSpell(); // must be after load CreatureTemplate
-
TC_LOG_INFO("server.loading", "Loading Waypoints...");
sWaypointMgr->Load();
diff --git a/src/server/scripts/Commands/cs_reload.cpp b/src/server/scripts/Commands/cs_reload.cpp
index eae194b1044..e5732634b56 100644
--- a/src/server/scripts/Commands/cs_reload.cpp
+++ b/src/server/scripts/Commands/cs_reload.cpp
@@ -124,7 +124,6 @@ public:
{ "mail_loot_template", rbac::RBAC_PERM_COMMAND_RELOAD_MAIL_LOOT_TEMPLATE, true, &HandleReloadLootTemplatesMailCommand, "" },
{ "milling_loot_template", rbac::RBAC_PERM_COMMAND_RELOAD_MILLING_LOOT_TEMPLATE, true, &HandleReloadLootTemplatesMillingCommand, "" },
{ "npc_spellclick_spells", rbac::RBAC_PERM_COMMAND_RELOAD_NPC_SPELLCLICK_SPELLS, true, &HandleReloadSpellClickSpellsCommand, "" },
- { "npc_trainer", rbac::RBAC_PERM_COMMAND_RELOAD_NPC_TRAINER, true, &HandleReloadNpcTrainerCommand, "" },
{ "npc_vendor", rbac::RBAC_PERM_COMMAND_RELOAD_NPC_VENDOR, true, &HandleReloadNpcVendorCommand, "" },
{ "page_text", rbac::RBAC_PERM_COMMAND_RELOAD_PAGE_TEXT, true, &HandleReloadPageTextsCommand, "" },
{ "pickpocketing_loot_template", rbac::RBAC_PERM_COMMAND_RELOAD_PICKPOCKETING_LOOT_TEMPLATE, true, &HandleReloadLootTemplatesPickpocketingCommand, "" },
@@ -157,6 +156,7 @@ public:
{ "spell_target_position", rbac::RBAC_PERM_COMMAND_RELOAD_SPELL_TARGET_POSITION, true, &HandleReloadSpellTargetPositionCommand, "" },
{ "spell_threats", rbac::RBAC_PERM_COMMAND_RELOAD_SPELL_THREATS, true, &HandleReloadSpellThreatsCommand, "" },
{ "spell_group_stack_rules", rbac::RBAC_PERM_COMMAND_RELOAD_SPELL_GROUP_STACK_RULES, true, &HandleReloadSpellGroupStackRulesCommand, "" },
+ { "trainer", rbac::RBAC_PERM_COMMAND_RELOAD_TRAINER, true, &HandleReloadTrainerCommand, "" },
{ "trinity_string", rbac::RBAC_PERM_COMMAND_RELOAD_TRINITY_STRING, true, &HandleReloadTrinityStringCommand, "" },
{ "warden_action", rbac::RBAC_PERM_COMMAND_RELOAD_WARDEN_ACTION, true, &HandleReloadWardenactionCommand, "" },
{ "waypoint_scripts", rbac::RBAC_PERM_COMMAND_RELOAD_WAYPOINT_SCRIPTS, true, &HandleReloadWpScriptsCommand, "" },
@@ -238,7 +238,7 @@ public:
static bool HandleReloadAllNpcCommand(ChatHandler* handler, char const* args)
{
if (*args != 'a') // will be reloaded from all_gossips
- HandleReloadNpcTrainerCommand(handler, "a");
+ HandleReloadTrainerCommand(handler, "a");
HandleReloadNpcVendorCommand(handler, "a");
HandleReloadPointsOfInterestCommand(handler, "a");
HandleReloadSpellClickSpellsCommand(handler, "a");
@@ -711,11 +711,15 @@ public:
return true;
}
- static bool HandleReloadNpcTrainerCommand(ChatHandler* handler, char const* /*args*/)
+ static bool HandleReloadTrainerCommand(ChatHandler* handler, char const* /*args*/)
{
- TC_LOG_INFO("misc", "Re-Loading `npc_trainer` Table!");
- sObjectMgr->LoadTrainerSpell();
- handler->SendGlobalGMSysMessage("DB table `npc_trainer` reloaded.");
+ TC_LOG_INFO("misc", "Re-Loading `trainer` Table!");
+ sObjectMgr->LoadTrainers();
+ sObjectMgr->LoadCreatureDefaultTrainers();
+ handler->SendGlobalGMSysMessage("DB table `trainer` reloaded.");
+ handler->SendGlobalGMSysMessage("DB table `trainer_locale` reloaded.");
+ handler->SendGlobalGMSysMessage("DB table `trainer_spell` reloaded.");
+ handler->SendGlobalGMSysMessage("DB table `creature_default_trainer` reloaded.");
return true;
}
diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp
index e0b27a40642..1ab3815c9c0 100644
--- a/src/server/scripts/Northrend/zone_storm_peaks.cpp
+++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp
@@ -157,7 +157,7 @@ public:
switch (action)
{
case GOSSIP_ACTION_TRAIN:
- player->GetSession()->SendTrainerList(me->GetGUID());
+ player->GetSession()->SendTrainerList(me);
break;
case GOSSIP_ACTION_TRADE:
player->GetSession()->SendListInventory(me->GetGUID());
diff --git a/src/server/scripts/World/npc_professions.cpp b/src/server/scripts/World/npc_professions.cpp
index a31fc1ee1f6..9601ae2d583 100644
--- a/src/server/scripts/World/npc_professions.cpp
+++ b/src/server/scripts/World/npc_professions.cpp
@@ -495,7 +495,7 @@ public:
player->GetSession()->SendListInventory(me->GetGUID());
break;
case GOSSIP_ACTION_TRAIN:
- player->GetSession()->SendTrainerList(me->GetGUID());
+ player->GetSession()->SendTrainerList(me);
break;
//Learn Armor/Weapon
case GOSSIP_ACTION_INFO_DEF + 1:
@@ -899,7 +899,7 @@ public:
player->GetSession()->SendListInventory(me->GetGUID());
break;
case GOSSIP_ACTION_TRAIN:
- player->GetSession()->SendTrainerList(me->GetGUID());
+ player->GetSession()->SendTrainerList(me);
break;
//Unlearn Leather
case GOSSIP_ACTION_INFO_DEF + 1:
@@ -1041,7 +1041,7 @@ public:
player->GetSession()->SendListInventory(me->GetGUID());
break;
case GOSSIP_ACTION_TRAIN:
- player->GetSession()->SendTrainerList(me->GetGUID());
+ player->GetSession()->SendTrainerList(me);
break;
//Learn Tailor
case GOSSIP_ACTION_INFO_DEF + 1:
diff --git a/src/server/shared/SharedDefines.h b/src/server/shared/SharedDefines.h
index b27f2f108d9..5a7be809ea8 100644
--- a/src/server/shared/SharedDefines.h
+++ b/src/server/shared/SharedDefines.h
@@ -2621,16 +2621,6 @@ enum LockType
LOCKTYPE_OPEN_FROM_VEHICLE = 21
};
-enum TrainerType // this is important type for npcs!
-{
- TRAINER_TYPE_CLASS = 0,
- TRAINER_TYPE_MOUNTS = 1, // on blizz it's 2
- TRAINER_TYPE_TRADESKILLS = 2,
- TRAINER_TYPE_PETS = 3
-};
-
-#define MAX_TRAINER_TYPE 4
-
// CreatureType.dbc
enum CreatureType
{