From 688e37f10857341cd3f7864f1372e60e60e9e05a Mon Sep 17 00:00:00 2001 From: Noudess Date: Tue, 18 Dec 2018 10:58:01 -0500 Subject: [PATCH 01/53] Changes to accomodate the new raw faction data. --- common/faction.cpp | 16 ++++++++-------- common/faction.h | 4 ++++ utils/sql/db_update_manifest.txt | 2 ++ zone/zonedb.cpp | 32 ++++++++++++++++++++++++++------ 4 files changed, 40 insertions(+), 14 deletions(-) mode change 100644 => 100755 common/faction.h mode change 100644 => 100755 zone/zonedb.cpp diff --git a/common/faction.cpp b/common/faction.cpp index 65524f623..c1d4fe398 100644 --- a/common/faction.cpp +++ b/common/faction.cpp @@ -59,31 +59,31 @@ FACTION_VALUE CalculateFaction(FactionMods* fm, int32 tmpCharacter_value) if (fm) { character_value += fm->base + fm->class_mod + fm->race_mod + fm->deity_mod; } - if (character_value >= 1101) { + if (character_value >= 1100) { return FACTION_ALLY; } - if (character_value >= 701 && character_value <= 1100) { + if (character_value >= 750 && character_value <= 1099) { return FACTION_WARMLY; } - if (character_value >= 401 && character_value <= 700) { + if (character_value >= 500 && character_value <= 749) { return FACTION_KINDLY; } - if (character_value >= 101 && character_value <= 400) { + if (character_value >= 100 && character_value <= 499) { return FACTION_AMIABLE; } - if (character_value >= 0 && character_value <= 100) { + if (character_value >= 0 && character_value <= 99) { return FACTION_INDIFFERENT; } if (character_value >= -100 && character_value <= -1) { return FACTION_APPREHENSIVE; } - if (character_value >= -700 && character_value <= -101) { + if (character_value >= -500 && character_value <= -101) { return FACTION_DUBIOUS; } - if (character_value >= -999 && character_value <= -701) { + if (character_value >= -750 && character_value <= -501) { return FACTION_THREATENLY; } - if (character_value <= -1000) { + if (character_value <= -751) { return FACTION_SCOWLS; } return FACTION_INDIFFERENT; diff --git a/common/faction.h b/common/faction.h old mode 100644 new mode 100755 index c98fc0916..bc086669d --- a/common/faction.h +++ b/common/faction.h @@ -50,6 +50,8 @@ struct NPCFactionList { struct FactionMods { int32 base; + int16 min; // The lowest your personal earned faction can go - before race/class/diety adjustments. + int16 max; // The highest your personal earned faction can go - before race/class/diety adjustments. int32 class_mod; int32 race_mod; int32 deity_mod; @@ -59,6 +61,8 @@ struct Faction { int32 id; std::map mods; int16 base; + int16 min; // The lowest your personal earned faction can go - before race/class/diety adjustments. + int16 max; // The highest your personal earned faction can go - before race/class/diety adjustments. char name[50]; }; diff --git a/utils/sql/db_update_manifest.txt b/utils/sql/db_update_manifest.txt index 81a8fa2d8..1254b2936 100644 --- a/utils/sql/db_update_manifest.txt +++ b/utils/sql/db_update_manifest.txt @@ -384,6 +384,8 @@ 9128|2018_08_13_inventory_version_update.sql|SHOW TABLES LIKE 'inventory_version'|not_empty| 9129|2018_08_13_inventory_update.sql|SHOW TABLES LIKE 'inventory_versions'|empty| 9130|2018_11_25_name_filter_update.sql|SHOW COLUMNS FROM `name_filter` LIKE 'id'|empty| +9131|2018_12_12_client_faction_tables.sql|SHOW TABLES LIKE 'faction_base_data'|empty| +9132|2018_12_12_convert_to_client_functions.sql|SELECT `id` FROM `faction_list` WHERE `id` > 4999 |empty| # Upgrade conditions: # This won't be needed after this system is implemented, but it is used database that are not diff --git a/zone/zonedb.cpp b/zone/zonedb.cpp old mode 100644 new mode 100755 index 5fe6560f1..0cfcf64c3 --- a/zone/zonedb.cpp +++ b/zone/zonedb.cpp @@ -3901,6 +3901,8 @@ bool ZoneDatabase::GetFactionData(FactionMods* fm, uint32 class_mod, uint32 race } fm->base = faction_array[faction_id]->base; + fm->min = faction_array[faction_id]->min; // The lowest your personal earned faction can go - before race/class/diety adjustments. + fm->max = faction_array[faction_id]->max; // The highest your personal earned faction can go - before race/class/diety adjustments. if(class_mod > 0) { char str[32]; @@ -4047,14 +4049,32 @@ bool ZoneDatabase::LoadFactionData() faction_array[index] = new Faction; strn0cpy(faction_array[index]->name, row[1], 50); faction_array[index]->base = atoi(row[2]); + faction_array[index]->min = MIN_PERSONAL_FACTION; + faction_array[index]->max = MAX_PERSONAL_FACTION; - query = StringFormat("SELECT `mod`, `mod_name` FROM `faction_list_mod` WHERE faction_id = %u", index); - auto modResults = QueryDatabase(query); - if (!modResults.Success()) - continue; + // Load in the mimimum and maximum faction that can be earned for this faction + query = StringFormat("SELECT `min` , `max` FROM `faction_base_data` WHERE client_faction_id = %u", index); + auto baseResults = QueryDatabase(query); + if (!baseResults.Success() || baseResults.RowCount() == 0) { + Log(Logs::General, Logs::General, "Faction %d has no base data", (int)index); + } + else { + for (auto modRow = baseResults.begin(); modRow != baseResults.end(); ++modRow) { + faction_array[index]->min = atoi(modRow[0]); + faction_array[index]->max = atoi(modRow[1]); + Log(Logs::General, Logs::None, "Min(%d), Max(%d) for faction (%u)",faction_array[index]->min, faction_array[index]->max, index); + } + } - for (auto modRow = modResults.begin(); modRow != modResults.end(); ++modRow) - faction_array[index]->mods[modRow[1]] = atoi(modRow[0]); + // Load in modifiers to the faction based on characters race, class and diety. + query = StringFormat("SELECT `mod`, `mod_name` FROM `faction_list_mod` WHERE faction_id = %u", index); + auto modResults = QueryDatabase(query); + if (!modResults.Success()) + continue; + + for (auto modRow = modResults.begin(); modRow != modResults.end(); ++modRow) { + faction_array[index]->mods[modRow[1]] = atoi(modRow[0]); + } } return true; From 50997ad0ec86c26b5c71982a11adcde95abb3318 Mon Sep 17 00:00:00 2001 From: Noudess Date: Tue, 18 Dec 2018 11:00:38 -0500 Subject: [PATCH 02/53] New sql with new client data tables and a hand create mapping --- .../2018_12_12_client_faction_tables.sql | 209 ++++++++++++++++++ ...2018_12_12_convert_to_client_functions.sql | 131 +++++++++++ 2 files changed, 340 insertions(+) create mode 100644 utils/sql/git/required/2018_12_12_client_faction_tables.sql create mode 100755 utils/sql/git/required/2018_12_12_convert_to_client_functions.sql diff --git a/utils/sql/git/required/2018_12_12_client_faction_tables.sql b/utils/sql/git/required/2018_12_12_client_faction_tables.sql new file mode 100644 index 000000000..4c2b6a0d0 --- /dev/null +++ b/utils/sql/git/required/2018_12_12_client_faction_tables.sql @@ -0,0 +1,209 @@ +-- MySQL dump 10.13 Distrib 5.7.24, for Linux (x86_64) +-- +-- Host: 192.168.0.3 Database: peqdb +-- ------------------------------------------------------ +-- Server version 5.7.24-0ubuntu0.16.04.1 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `client_faction_associations` +-- + +DROP TABLE IF EXISTS `client_faction_associations`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `client_faction_associations` ( + `faction_id` int(11) NOT NULL, + `other_faction_id` int(11) NOT NULL, + `mod` int(11) DEFAULT NULL, + PRIMARY KEY (`faction_id`,`other_faction_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `client_faction_associations` +-- + +LOCK TABLES `client_faction_associations` WRITE; +/*!40000 ALTER TABLE `client_faction_associations` DISABLE KEYS */; +INSERT INTO `client_faction_associations` VALUES (65,51,-600),(65,52,-600),(65,53,-600),(65,54,-600),(65,55,-600),(65,56,-700),(65,57,-600),(65,58,-600),(65,59,-750),(65,60,-750),(65,61,-600),(65,62,-600),(65,178,-1000),(65,180,-600),(65,661,-600),(65,1106,-600),(106,51,-50),(106,52,-50),(106,56,-500),(106,57,-50),(106,59,-750),(106,60,-750),(106,62,-50),(106,178,-750),(106,180,-50),(106,661,-50),(106,1106,-50),(121,9,-200),(121,56,-200),(121,59,-625),(121,60,-625),(121,178,-725),(217,51,-500),(217,52,-500),(217,53,-500),(217,54,-500),(217,55,-500),(217,56,-500),(217,57,-500),(217,58,-500),(217,59,-500),(217,60,-500),(217,61,-500),(217,62,-500),(217,180,-500),(217,203,-500),(217,661,-500),(217,1106,-500),(218,51,-1000),(218,52,-1000),(218,53,-1000),(218,54,-1000),(218,55,-1000),(218,56,-1000),(218,57,-1000),(218,58,-1000),(218,59,-1000),(218,60,-1000),(218,61,-1000),(218,62,-1000),(218,178,-1000),(218,180,-1000),(218,201,-1000),(218,202,-1000),(218,204,-1000),(218,205,-1000),(218,206,-1000),(218,207,-1000),(218,208,-1000),(218,209,-1000),(218,210,-1000),(218,211,-1000),(218,212,-1000),(218,213,-1000),(218,214,-1000),(218,215,-1000),(218,216,-1000),(218,661,-1000),(218,1106,-1000),(219,56,-200),(219,59,-375),(219,60,-375),(219,178,-375),(220,5,-200),(220,11,-200),(220,12,50),(220,13,50),(220,14,50),(220,51,50),(220,52,-50),(220,54,-50),(220,56,-300),(220,57,50),(220,58,-150),(220,59,-750),(220,60,-750),(220,61,-50),(220,178,-1000),(220,180,-50),(220,201,-200),(220,202,-50),(220,203,-300),(220,205,-50),(220,206,-200),(220,211,-300),(220,213,25),(220,216,-300),(220,661,50),(220,1106,50),(221,3,-750),(221,4,-300),(221,5,50),(221,6,-200),(221,9,-25),(221,11,50),(221,51,50),(221,52,-300),(221,53,-25),(221,54,-300),(221,55,-300),(221,56,-50),(221,57,50),(221,58,-300),(221,59,-300),(221,60,-250),(221,61,-300),(221,62,-25),(221,178,-300),(221,180,-300),(221,201,100),(221,202,-750),(221,203,-15),(221,204,-750),(221,205,-750),(221,206,-15),(221,207,-750),(221,208,-750),(221,209,-750),(221,210,-750),(221,211,-750),(221,212,-750),(221,213,-750),(221,214,-750),(221,215,-750),(221,216,-750),(221,661,50),(221,1106,50),(222,51,-750),(222,52,-750),(222,53,-750),(222,54,-750),(222,55,-750),(222,56,-400),(222,57,-750),(222,58,-750),(222,59,50),(222,60,-200),(222,61,-750),(222,62,-750),(222,178,-750),(222,180,-750),(222,201,50),(222,203,50),(222,206,50),(222,661,-750),(222,1106,-750),(223,3,-100),(223,4,-100),(223,5,-50),(223,6,-100),(223,7,-100),(223,8,-25),(223,9,50),(223,10,-100),(223,11,-50),(223,12,-100),(223,13,-100),(223,14,-100),(223,15,-100),(223,51,50),(223,52,-25),(223,53,-75),(223,54,-50),(223,55,-300),(223,56,-50),(223,57,50),(223,58,-150),(223,59,-750),(223,60,-500),(223,61,-50),(223,62,-75),(223,178,-750),(223,180,-25),(223,202,-100),(223,203,-300),(223,204,-100),(223,205,50),(223,206,-200),(223,208,-100),(223,209,-100),(223,210,-100),(223,211,-100),(223,213,-100),(223,214,-200),(223,215,-100),(223,216,-200),(223,661,50),(223,1106,50),(225,51,-875),(225,52,-875),(225,53,-875),(225,54,-875),(225,55,-875),(225,56,-875),(225,57,-875),(225,58,-875),(225,59,-625),(225,60,-625),(225,61,-875),(225,62,-875),(225,178,-875),(225,180,-875),(225,661,-875),(225,1106,-875),(226,5,-200),(226,11,-200),(226,56,-50),(226,59,-100),(226,60,-100),(226,62,-10),(226,178,-200),(226,201,-200),(226,203,-200),(226,206,-200),(226,207,10),(226,215,100),(226,216,-100),(227,5,-200),(227,11,-200),(227,51,-10),(227,52,-10),(227,54,-10),(227,55,-10),(227,56,-100),(227,57,-10),(227,59,-100),(227,60,-100),(227,178,-200),(227,180,-10),(227,201,-200),(227,202,100),(227,203,-200),(227,205,10),(227,206,-200),(227,216,-200),(227,661,-10),(227,1106,-10),(228,51,-750),(228,52,-750),(228,54,-750),(228,55,-750),(228,56,-25),(228,57,-750),(228,59,-1000),(228,61,-750),(228,62,-750),(228,178,-1000),(228,180,-750),(228,661,-750),(228,1106,-750),(229,9,-200),(229,56,-200),(229,59,-375),(229,60,-375),(229,178,-375),(230,3,-100),(230,4,-100),(230,6,-100),(230,7,-100),(230,9,-10),(230,10,-100),(230,11,-50),(230,15,-100),(230,51,50),(230,52,-50),(230,53,-150),(230,54,-200),(230,55,-200),(230,56,-150),(230,58,-200),(230,59,-850),(230,60,-750),(230,61,-150),(230,62,-50),(230,178,-1000),(230,180,-50),(230,201,50),(230,202,-25),(230,203,-25),(230,204,-25),(230,205,-25),(230,207,-25),(230,208,-25),(230,209,-25),(230,210,-25),(230,211,-25),(230,212,-25),(230,213,-25),(230,214,-100),(230,215,-25),(230,661,50),(230,1106,50),(231,1,-50),(231,4,-50),(231,5,-200),(231,6,-50),(231,7,-50),(231,8,-50),(231,9,-50),(231,10,-50),(231,11,-200),(231,14,50),(231,15,-50),(231,16,-50),(231,51,-100),(231,52,-100),(231,53,50),(231,54,-100),(231,55,-50),(231,56,-300),(231,57,-100),(231,58,-150),(231,59,-750),(231,60,-750),(231,61,-100),(231,62,-100),(231,178,-750),(231,180,-100),(231,201,-200),(231,202,-100),(231,203,-300),(231,204,-50),(231,205,-100),(231,206,-200),(231,207,-50),(231,208,-50),(231,211,-300),(231,212,-50),(231,213,-50),(231,214,-50),(231,215,-50),(231,216,-300),(231,661,-100),(231,1106,-100),(232,1,50),(232,5,-50),(232,51,-501),(232,52,-750),(232,53,-501),(232,54,-750),(232,55,-750),(232,56,-10),(232,57,-750),(232,58,-1000),(232,59,-499),(232,60,50),(232,61,-750),(232,62,-501),(232,178,-750),(232,180,-750),(232,201,-50),(232,202,-500),(232,203,50),(232,204,-500),(232,205,-500),(232,207,-500),(232,208,-500),(232,209,-500),(232,210,-500),(232,211,50),(232,212,-500),(232,213,-500),(232,214,-100),(232,215,-500),(232,661,-501),(232,1106,-501),(233,1,-50),(233,4,-50),(233,5,-200),(233,6,-50),(233,7,-50),(233,8,-50),(233,9,-50),(233,10,-50),(233,11,-200),(233,12,50),(233,15,-50),(233,16,-50),(233,51,-100),(233,52,-100),(233,53,50),(233,54,-100),(233,55,-25),(233,56,-300),(233,57,-100),(233,58,-150),(233,59,-750),(233,60,-750),(233,61,-100),(233,62,-15),(233,178,-750),(233,180,-100),(233,201,-200),(233,202,-50),(233,203,-300),(233,204,-50),(233,205,-50),(233,206,-200),(233,207,-50),(233,208,-50),(233,211,-50),(233,212,-50),(233,214,-50),(233,215,-50),(233,216,-300),(233,661,-100),(233,1106,-100),(234,51,-750),(234,52,-750),(234,53,-750),(234,54,-1000),(234,55,-1000),(234,56,-490),(234,57,-750),(234,58,-750),(234,59,-750),(234,60,-750),(234,61,-750),(234,62,-750),(234,178,-750),(234,180,-750),(234,661,-750),(234,1106,-750),(235,1,50),(235,5,-200),(235,51,-1000),(235,52,-1000),(235,53,-1000),(235,54,-1000),(235,55,-1000),(235,56,-250),(235,57,-1000),(235,58,-1000),(235,59,50),(235,60,-200),(235,61,-1000),(235,62,-1000),(235,178,-1000),(235,180,-1000),(235,201,-100),(235,202,-200),(235,203,50),(235,204,-100),(235,205,-100),(235,206,50),(235,207,-100),(235,208,-100),(235,209,-100),(235,210,-100),(235,211,100),(235,212,-100),(235,213,-100),(235,214,-50),(235,215,-200),(235,661,-1000),(235,1106,-1000),(236,3,-600),(236,4,-600),(236,5,50),(236,6,-600),(236,7,-10),(236,8,-10),(236,9,-25),(236,10,-10),(236,11,50),(236,15,-10),(236,16,-10),(236,51,-50),(236,52,-50),(236,53,-10),(236,54,-90),(236,55,-99),(236,56,50),(236,57,-75),(236,58,-50),(236,59,-50),(236,60,-50),(236,61,-50),(236,62,-50),(236,178,-50),(236,180,-50),(236,202,-200),(236,204,-200),(236,205,-10),(236,206,50),(236,207,-200),(236,208,-200),(236,209,-50),(236,210,-300),(236,212,-50),(236,214,-200),(236,215,-300),(236,661,-50),(236,1106,-50),(237,3,-1000),(237,4,-1000),(237,5,50),(237,6,-1000),(237,11,25),(237,51,-500),(237,52,-750),(237,53,-500),(237,54,-750),(237,55,-750),(237,56,-50),(237,57,-750),(237,58,-750),(237,59,50),(237,60,-500),(237,61,-750),(237,62,-500),(237,178,-750),(237,180,-750),(237,201,-50),(237,202,-600),(237,203,50),(237,204,-600),(237,205,-600),(237,206,50),(237,207,-600),(237,208,-600),(237,209,-600),(237,210,-600),(237,211,-50),(237,212,-600),(237,213,-600),(237,214,-600),(237,215,-600),(237,216,-300),(237,661,-500),(237,1106,-500),(238,3,-200),(238,4,-200),(238,5,50),(238,9,50),(238,11,50),(238,12,50),(238,13,50),(238,14,50),(238,51,-25),(238,52,-50),(238,53,-10),(238,54,-50),(238,55,-100),(238,57,-75),(238,58,-100),(238,59,-75),(238,60,-50),(238,61,-100),(238,62,50),(238,178,-150),(238,180,-50),(238,201,100),(238,202,-100),(238,203,25),(238,204,-100),(238,205,-100),(238,206,25),(238,207,-100),(238,208,-100),(238,209,-100),(238,210,-200),(238,212,-450),(238,213,-50),(238,214,-200),(238,215,-300),(238,216,25),(238,661,-25),(238,1106,-25),(239,3,-750),(239,4,-500),(239,5,50),(239,6,-500),(239,11,50),(239,12,-200),(239,13,-200),(239,14,-200),(239,51,-50),(239,52,-100),(239,53,-25),(239,54,-500),(239,55,-500),(239,56,50),(239,57,-500),(239,58,-500),(239,59,-400),(239,60,-450),(239,61,-100),(239,62,-100),(239,178,-500),(239,180,-100),(239,201,-25),(239,202,-200),(239,203,-25),(239,204,-200),(239,205,-200),(239,206,50),(239,207,-200),(239,208,-200),(239,209,-200),(239,210,-200),(239,211,-100),(239,212,-200),(239,213,-200),(239,214,-200),(239,215,-750),(239,216,-200),(239,661,-50),(239,1106,-50),(240,1,50),(240,2,50),(240,3,50),(240,5,-200),(240,9,50),(240,11,-200),(240,16,50),(240,51,-50),(240,52,-50),(240,53,-50),(240,55,-50),(240,56,-250),(240,59,-500),(240,60,-450),(240,62,50),(240,178,-500),(240,180,-50),(240,201,-200),(240,202,100),(240,205,100),(240,206,-200),(240,209,50),(240,216,50),(240,661,-50),(240,1106,-50),(241,3,-50),(241,5,-50),(241,9,50),(241,11,-25),(241,51,-50),(241,52,-50),(241,53,-75),(241,54,-25),(241,55,-75),(241,56,-200),(241,57,-50),(241,58,-50),(241,59,-800),(241,60,-600),(241,61,50),(241,62,-25),(241,178,-800),(241,180,-50),(241,201,-50),(241,205,25),(241,206,-100),(241,208,-25),(241,210,10),(241,214,-100),(241,216,-75),(241,661,-50),(241,1106,-50),(242,3,50),(242,5,-200),(242,9,-50),(242,11,-200),(242,51,-150),(242,52,-200),(242,53,50),(242,54,-50),(242,55,-30),(242,56,-500),(242,57,-140),(242,58,-300),(242,59,-750),(242,60,-750),(242,61,-150),(242,62,-40),(242,178,-1000),(242,180,-200),(242,201,-200),(242,203,-200),(242,206,-200),(242,209,100),(242,661,-150),(242,1106,-150),(243,5,-200),(243,11,-200),(243,56,-100),(243,59,-100),(243,60,-100),(243,178,-100),(244,3,-500),(244,4,-200),(244,6,-200),(244,7,-200),(244,9,50),(244,11,50),(244,51,-200),(244,52,-300),(244,53,-300),(244,54,-600),(244,55,-600),(244,56,50),(244,57,-600),(244,58,-600),(244,59,-100),(244,60,-150),(244,61,-600),(244,62,-150),(244,178,-600),(244,180,-300),(244,201,25),(244,202,-150),(244,203,25),(244,204,-600),(244,205,25),(244,206,50),(244,207,-600),(244,208,-600),(244,209,-600),(244,210,-600),(244,212,-300),(244,213,-25),(244,214,-600),(244,215,-600),(244,216,-25),(244,661,-200),(244,1106,-200),(245,1,-25),(245,2,-25),(245,3,-25),(245,4,-25),(245,5,-200),(245,6,-25),(245,7,-25),(245,8,-25),(245,9,-100),(245,10,-25),(245,11,-50),(245,12,50),(245,13,50),(245,14,50),(245,15,-25),(245,16,-25),(245,51,-25),(245,52,-50),(245,53,-25),(245,54,-25),(245,55,-25),(245,56,-500),(245,57,-25),(245,58,-25),(245,59,-800),(245,60,-750),(245,61,-10),(245,62,50),(245,178,-800),(245,180,-50),(245,201,-200),(245,202,50),(245,203,-300),(245,206,-300),(245,213,50),(245,661,-25),(245,1106,-25),(246,4,50),(246,5,-200),(246,11,-200),(246,51,-10),(246,52,-10),(246,54,50),(246,55,50),(246,56,-750),(246,57,50),(246,58,-25),(246,59,-750),(246,60,-750),(246,61,-10),(246,62,-10),(246,178,-750),(246,180,-10),(246,201,-300),(246,203,-400),(246,206,-600),(246,215,50),(246,661,-10),(246,1106,-10),(247,3,-1000),(247,4,-1000),(247,6,-1000),(247,51,-1000),(247,52,-1000),(247,53,-1000),(247,54,-1000),(247,55,-1000),(247,56,-1000),(247,57,-1000),(247,58,-1000),(247,59,-1000),(247,60,-1000),(247,61,-1000),(247,62,-1000),(247,178,-1000),(247,180,-1000),(247,661,-1000),(247,1106,-1000),(248,5,-1000),(248,11,-1000),(248,51,-25),(248,52,-50),(248,53,-50),(248,56,-1000),(248,58,-25),(248,59,-1000),(248,60,-1000),(248,61,-10),(248,62,-10),(248,178,-1000),(248,180,-50),(248,201,-1000),(248,203,-1000),(248,206,-1000),(248,209,50),(248,211,-25),(248,215,50),(248,216,-25),(248,661,-25),(248,1106,-25),(249,51,-2000),(249,52,-2000),(249,53,-2000),(249,54,-2000),(249,55,-2000),(249,56,-2000),(249,57,-2000),(249,58,-2000),(249,59,-2000),(249,60,-2000),(249,61,-2000),(249,62,-2000),(249,178,-1000),(249,180,-2000),(249,661,-2000),(249,1106,-2000),(250,51,-1000),(250,52,-1000),(250,53,-1000),(250,54,-1000),(250,55,-1000),(250,56,-1000),(250,57,-1000),(250,58,-1000),(250,59,-1000),(250,60,-1000),(250,61,-1000),(250,62,-1000),(250,178,-1000),(250,180,-1000),(250,661,-1000),(250,1106,-1000),(251,51,-499),(251,52,-499),(251,53,-499),(251,54,-499),(251,55,-499),(251,56,-650),(251,57,-499),(251,58,-499),(251,59,-1000),(251,60,-750),(251,61,-499),(251,62,-499),(251,178,-1000),(251,180,-499),(251,201,-1000),(251,203,-1000),(251,206,-1000),(251,211,-250),(251,661,-499),(251,1106,-499),(252,51,-1000),(252,52,-1000),(252,53,-1000),(252,54,-1000),(252,55,-1000),(252,56,-1000),(252,57,-1000),(252,58,-1000),(252,59,-1000),(252,60,-1000),(252,61,-1000),(252,62,-1000),(252,178,-1000),(252,180,-1000),(252,661,-1000),(252,1106,-1000),(253,51,-1000),(253,52,-1000),(253,53,-1000),(253,54,-1000),(253,55,-1000),(253,56,-1000),(253,57,-1000),(253,58,-1000),(253,59,-1000),(253,60,-1000),(253,61,-1000),(253,62,-1000),(253,178,-1000),(253,180,-1000),(253,661,-1000),(253,1106,-1000),(254,1,-50),(254,2,-50),(254,3,-50),(254,4,-50),(254,5,-200),(254,6,-50),(254,7,-50),(254,8,-50),(254,9,-50),(254,10,-50),(254,11,-200),(254,13,50),(254,15,-50),(254,16,-50),(254,51,-50),(254,52,-100),(254,53,50),(254,54,-50),(254,55,-10),(254,56,-500),(254,57,-25),(254,58,-150),(254,59,-750),(254,60,-750),(254,61,-100),(254,62,-25),(254,178,-750),(254,180,-100),(254,201,-200),(254,202,-50),(254,203,-300),(254,204,-50),(254,205,-50),(254,206,-200),(254,207,-50),(254,208,-50),(254,211,-50),(254,212,-50),(254,213,-50),(254,214,-50),(254,215,-50),(254,216,-150),(254,661,-50),(254,1106,-50),(255,1,50),(255,3,50),(255,4,50),(255,5,-200),(255,6,50),(255,11,-200),(255,16,50),(255,51,-50),(255,52,-100),(255,53,-50),(255,54,-25),(255,55,-50),(255,56,-500),(255,57,-50),(255,58,-25),(255,59,-850),(255,60,-750),(255,61,-10),(255,62,50),(255,178,-1000),(255,180,-100),(255,201,-200),(255,202,50),(255,203,-400),(255,204,-10),(255,205,50),(255,206,-400),(255,207,-10),(255,208,-10),(255,209,-10),(255,210,-10),(255,211,50),(255,212,-10),(255,213,-10),(255,214,-10),(255,215,-10),(255,216,-10),(255,661,-50),(255,1106,-50),(256,51,-1000),(256,52,-1000),(256,53,-1000),(256,54,-1000),(256,55,-1000),(256,56,-1000),(256,57,-1000),(256,58,-1000),(256,59,-1000),(256,60,-1000),(256,61,-1000),(256,62,-1000),(256,178,-1000),(256,180,-1000),(256,661,-1000),(256,1106,-1000),(257,51,-1000),(257,52,-1000),(257,53,-1000),(257,54,-1000),(257,55,-1000),(257,56,-1000),(257,57,-1000),(257,58,-1000),(257,59,-1000),(257,60,-1000),(257,61,-1000),(257,62,-1000),(257,178,-1000),(257,180,-1000),(257,661,-1000),(257,1106,-1000),(258,51,-1000),(258,52,-1000),(258,53,-1000),(258,54,-1000),(258,55,-1000),(258,56,-1000),(258,57,-1000),(258,58,-1000),(258,59,-1000),(258,60,-1000),(258,61,-1000),(258,62,-1000),(258,178,-1000),(258,180,-1000),(258,661,-1000),(258,1106,-1000),(259,51,-1000),(259,52,-1000),(259,53,-1000),(259,54,-1000),(259,55,-1000),(259,56,-1000),(259,57,-1000),(259,58,-1000),(259,59,-1000),(259,60,-1000),(259,61,-1000),(259,62,-1000),(259,178,-1000),(259,180,-1000),(259,661,-1000),(259,1106,-1000),(261,1,-25),(261,5,50),(261,51,-750),(261,52,-750),(261,53,-900),(261,54,-750),(261,55,-750),(261,56,-250),(261,57,-750),(261,58,-1000),(261,59,-350),(261,60,50),(261,61,-750),(261,62,-750),(261,178,-750),(261,180,-750),(261,203,50),(261,211,75),(261,661,-750),(261,1106,-750),(262,3,25),(262,4,10),(262,5,-200),(262,6,10),(262,7,10),(262,9,-50),(262,11,-200),(262,52,-75),(262,53,-100),(262,54,-50),(262,55,-50),(262,56,-300),(262,57,-25),(262,58,-75),(262,59,-1000),(262,60,-750),(262,61,-25),(262,62,-50),(262,178,-1000),(262,180,-75),(262,201,-200),(262,203,-300),(262,205,-100),(262,206,-200),(262,207,50),(262,212,50),(262,214,50),(262,216,-150),(263,1,50),(263,3,25),(263,4,25),(263,5,-300),(263,6,50),(263,11,-300),(263,16,50),(263,51,-15),(263,52,-25),(263,53,-25),(263,55,-25),(263,56,-300),(263,57,-10),(263,58,-5),(263,59,-750),(263,60,-700),(263,61,50),(263,178,-1000),(263,180,-25),(263,201,-400),(263,202,25),(263,203,-300),(263,205,25),(263,206,-300),(263,207,25),(263,210,25),(263,211,50),(263,212,15),(263,215,15),(263,661,-15),(263,1106,-15),(264,5,-1000),(264,7,50),(264,11,-1000),(264,51,-50),(264,52,-50),(264,53,-50),(264,54,-50),(264,55,-50),(264,56,-1000),(264,57,-50),(264,58,-50),(264,59,-1000),(264,60,-1000),(264,61,-50),(264,62,-50),(264,178,-1000),(264,180,-50),(264,201,-1000),(264,203,-1000),(264,206,-1000),(264,211,-25),(264,216,-10),(264,661,-50),(264,1106,-50),(265,3,-200),(265,4,-200),(265,6,-200),(265,7,-100),(265,8,-100),(265,12,-200),(265,13,-200),(265,14,-200),(265,51,-500),(265,52,-500),(265,54,-500),(265,55,-500),(265,56,-50),(265,57,-500),(265,58,-500),(265,59,-800),(265,60,-800),(265,61,-500),(265,62,-500),(265,178,-800),(265,180,-500),(265,201,-50),(265,202,-475),(265,203,100),(265,204,-475),(265,205,-475),(265,206,-475),(265,207,-475),(265,208,-475),(265,209,-475),(265,210,-475),(265,211,-25),(265,212,-475),(265,213,-475),(265,214,-475),(265,215,-475),(265,216,-475),(265,661,-500),(265,1106,-500),(266,5,-200),(266,9,-50),(266,11,-200),(266,51,-1),(266,52,-1),(266,54,-1),(266,55,-1),(266,56,-500),(266,57,-1),(266,59,-500),(266,60,-500),(266,61,-1),(266,62,-1),(266,178,-600),(266,180,-1),(266,201,-100),(266,203,-100),(266,206,-200),(266,661,-1),(266,1106,-1),(267,5,-200),(267,9,-50),(267,11,-200),(267,51,-25),(267,52,-50),(267,53,50),(267,54,-25),(267,55,-25),(267,56,-500),(267,57,-25),(267,58,-200),(267,59,-625),(267,60,-625),(267,61,-50),(267,62,-25),(267,178,-725),(267,180,-50),(267,201,-100),(267,203,-100),(267,206,-200),(267,661,-25),(267,1106,-25),(269,4,50),(269,5,-550),(269,11,-550),(269,56,-450),(269,59,-1000),(269,60,-750),(269,178,-1000),(269,201,-450),(269,203,-450),(269,206,-450),(269,207,50),(269,211,-150),(269,215,50),(270,1,50),(270,3,-600),(270,4,-600),(270,5,-50),(270,6,-600),(270,16,50),(270,51,-500),(270,52,-500),(270,53,-125),(270,54,-750),(270,55,-750),(270,56,50),(270,57,-50),(270,58,-500),(270,59,-250),(270,60,-350),(270,61,-500),(270,62,-150),(270,178,-1000),(270,180,-500),(270,201,25),(270,202,-300),(270,203,25),(270,204,-600),(270,205,-150),(270,206,50),(270,207,-400),(270,208,-400),(270,209,-100),(270,210,-300),(270,211,50),(270,212,-200),(270,213,-50),(270,214,-500),(270,215,-600),(270,216,25),(270,661,-500),(270,1106,-500),(271,3,-200),(271,4,-200),(271,5,50),(271,6,-200),(271,11,50),(271,51,50),(271,52,-30),(271,53,25),(271,54,-175),(271,55,-200),(271,56,25),(271,57,50),(271,58,-150),(271,59,-75),(271,60,-25),(271,61,-175),(271,62,-25),(271,178,-375),(271,180,-30),(271,201,50),(271,202,-100),(271,203,25),(271,204,-100),(271,205,-100),(271,206,100),(271,207,-100),(271,208,-100),(271,209,-200),(271,210,-200),(271,211,-25),(271,212,-100),(271,213,-50),(271,214,-300),(271,215,-200),(271,216,25),(271,661,50),(271,1106,50),(272,5,-200),(272,6,50),(272,9,-100),(272,11,-200),(272,51,50),(272,52,-200),(272,53,-200),(272,54,25),(272,55,-50),(272,56,-400),(272,57,50),(272,58,-200),(272,59,-850),(272,60,-750),(272,62,-100),(272,178,-1000),(272,180,-200),(272,201,-550),(272,202,-50),(272,203,-400),(272,204,-50),(272,205,-50),(272,206,-400),(272,207,100),(272,208,-50),(272,209,-50),(272,210,-50),(272,211,-150),(272,212,-50),(272,213,-50),(272,214,-50),(272,215,100),(272,216,-200),(272,661,50),(272,1106,50),(273,56,-200),(273,59,-375),(273,60,-375),(273,178,-275),(274,5,-200),(274,11,-200),(274,51,-10),(274,52,-5),(274,54,-10),(274,55,-10),(274,56,-500),(274,57,-10),(274,59,-750),(274,60,-750),(274,61,-10),(274,62,-10),(274,178,-1000),(274,180,-5),(274,661,-10),(274,1106,-10),(275,5,-200),(275,11,-200),(275,12,50),(275,13,50),(275,14,50),(275,51,-10),(275,52,-75),(275,55,50),(275,56,-1000),(275,57,-10),(275,58,-75),(275,59,-750),(275,60,-750),(275,61,-10),(275,62,-25),(275,178,-1000),(275,180,-75),(275,201,-200),(275,203,-200),(275,204,25),(275,206,-400),(275,207,25),(275,208,25),(275,213,50),(275,214,75),(275,661,-10),(275,1106,-10),(276,3,20),(276,4,30),(276,5,-200),(276,6,30),(276,9,-10),(276,11,-200),(276,51,-50),(276,52,-75),(276,53,-20),(276,54,100),(276,55,80),(276,56,-750),(276,58,-75),(276,59,-750),(276,60,-750),(276,61,-25),(276,62,-50),(276,178,-750),(276,180,-75),(276,201,-100),(276,203,-100),(276,204,10),(276,206,-100),(276,208,10),(276,210,20),(276,212,25),(276,215,50),(276,216,-50),(276,661,-50),(276,1106,-50),(277,4,50),(277,5,-200),(277,6,50),(277,11,-200),(277,51,-450),(277,52,-450),(277,53,-600),(277,54,-300),(277,55,-300),(277,56,-500),(277,57,-300),(277,58,-450),(277,59,-850),(277,60,-500),(277,61,-300),(277,62,-500),(277,178,-1000),(277,180,-450),(277,201,-200),(277,203,-200),(277,205,50),(277,206,-200),(277,209,-200),(277,213,-200),(277,215,50),(277,661,-450),(277,1106,-450),(278,3,-200),(278,4,-200),(278,51,-500),(278,52,-500),(278,54,-750),(278,55,-750),(278,57,-500),(278,59,-1),(278,60,-1),(278,61,-500),(278,62,-500),(278,178,-750),(278,180,-500),(278,661,-500),(278,1106,-500),(279,5,-200),(279,11,-200),(279,51,-1),(279,52,-1),(279,56,-1000),(279,57,-1),(279,59,-750),(279,60,-750),(279,61,-1),(279,62,-1),(279,178,-1000),(279,180,-1),(279,661,-1),(279,1106,-1),(280,3,50),(280,5,-200),(280,9,-50),(280,11,-200),(280,51,50),(280,56,-300),(280,57,50),(280,59,-1000),(280,60,-700),(280,178,-1000),(280,201,-200),(280,203,-200),(280,206,-200),(280,207,100),(280,212,25),(280,215,10),(280,216,-25),(280,661,50),(280,1106,50),(281,3,50),(281,4,25),(281,5,-200),(281,6,25),(281,7,10),(281,9,-100),(281,11,-200),(281,52,-10),(281,56,-350),(281,58,-10),(281,59,-750),(281,60,-750),(281,178,-1000),(281,180,-10),(281,201,-200),(281,203,-200),(281,204,50),(281,206,-200),(281,207,10),(281,208,100),(281,212,25),(281,214,50),(281,216,-100),(282,51,-1000),(282,52,-1000),(282,53,-1000),(282,54,-1000),(282,55,-1000),(282,56,-1000),(282,57,-1000),(282,58,-1000),(282,59,-1000),(282,60,-1000),(282,61,-1000),(282,62,-1000),(282,178,-1000),(282,180,-1000),(282,661,-1000),(282,1106,-1000),(283,51,-1000),(283,52,-1000),(283,53,-1000),(283,54,-1000),(283,55,-1000),(283,56,-1000),(283,57,-1000),(283,58,-1000),(283,59,-1000),(283,60,-1000),(283,61,-1000),(283,62,-1000),(283,178,-1000),(283,180,-1000),(283,661,-1000),(283,1106,-1000),(284,5,-25),(284,8,100),(284,9,25),(284,11,-25),(284,51,50),(284,52,-25),(284,54,25),(284,56,-50),(284,57,50),(284,58,-25),(284,59,-600),(284,60,-550),(284,178,-600),(284,180,-25),(284,201,-200),(284,203,-200),(284,204,50),(284,205,50),(284,206,-200),(284,207,50),(284,209,50),(284,211,-25),(284,215,50),(284,216,-50),(284,661,50),(284,1106,50),(285,51,-2000),(285,52,-2000),(285,53,-2000),(285,54,-2000),(285,55,-2000),(285,56,-2000),(285,57,-2000),(285,58,-2000),(285,59,-2000),(285,60,-2000),(285,61,-2000),(285,62,-2000),(285,178,-1000),(285,180,-2000),(285,661,-2000),(285,1106,-2000),(286,61,375),(286,201,-100),(286,203,-100),(286,206,-200),(287,51,-1000),(287,52,-1000),(287,54,-1000),(287,55,-1000),(287,56,-1000),(287,57,-1000),(287,59,-1000),(287,60,-1000),(287,61,-1000),(287,62,-1000),(287,178,-1000),(287,180,-1000),(287,661,-1000),(287,1106,-1000),(288,5,-50),(288,9,-50),(288,11,-50),(288,51,-50),(288,52,-50),(288,53,-25),(288,54,-50),(288,55,-50),(288,56,-99),(288,57,-50),(288,58,-75),(288,59,-750),(288,60,-750),(288,61,-10),(288,62,50),(288,178,-750),(288,180,-50),(288,201,-25),(288,203,-25),(288,206,-25),(288,211,-25),(288,661,-50),(288,1106,-50),(289,3,10),(289,5,-200),(289,9,-50),(289,11,-200),(289,51,-50),(289,52,-75),(289,54,-60),(289,55,-25),(289,56,-99),(289,57,-60),(289,59,-750),(289,60,-500),(289,61,-60),(289,62,-60),(289,178,-750),(289,180,-75),(289,661,-50),(289,1106,-50),(290,3,10),(290,5,-200),(290,9,-50),(290,11,-200),(290,12,-10),(290,13,-10),(290,14,-10),(290,51,-50),(290,52,50),(290,53,-80),(290,54,-75),(290,55,-80),(290,56,-750),(290,57,-75),(290,58,100),(290,59,-800),(290,60,-900),(290,61,-20),(290,62,-15),(290,178,-800),(290,180,50),(290,201,-300),(290,202,75),(290,203,-300),(290,206,-300),(290,209,-25),(290,211,-100),(290,213,-50),(290,214,50),(290,216,-50),(290,661,-50),(290,1106,-50),(291,3,50),(291,5,-25),(291,9,-25),(291,11,-25),(291,51,50),(291,52,-25),(291,53,-25),(291,54,-50),(291,55,-50),(291,56,-250),(291,57,50),(291,58,-50),(291,59,-750),(291,60,-500),(291,61,-10),(291,62,-10),(291,178,-750),(291,180,-25),(291,201,-50),(291,203,-50),(291,206,-50),(291,207,50),(291,212,50),(291,216,-50),(291,661,50),(291,1106,50),(292,5,-200),(292,9,-10),(292,11,-200),(292,51,-25),(292,52,-30),(292,53,-40),(292,54,-10),(292,55,-20),(292,56,-450),(292,58,-30),(292,59,-900),(292,60,-900),(292,61,100),(292,62,-5),(292,178,-900),(292,180,-30),(292,661,-25),(292,1106,-25),(293,5,-200),(293,9,-10),(293,11,-200),(293,51,-1),(293,54,-50),(293,55,-50),(293,56,-500),(293,57,-50),(293,59,-750),(293,60,-750),(293,61,-5),(293,62,-1),(293,178,-750),(293,661,-1),(293,1106,-1),(295,51,-1000),(295,52,-1000),(295,53,-1000),(295,54,-1000),(295,55,-1000),(295,56,-1000),(295,57,-1000),(295,58,-1000),(295,59,-1000),(295,60,-1000),(295,61,-1000),(295,62,-1000),(295,178,-1000),(295,180,-1000),(295,661,-1000),(295,1106,-1000),(296,3,-200),(296,5,50),(296,11,50),(296,12,50),(296,13,50),(296,14,50),(296,54,-500),(296,55,-500),(296,56,50),(296,58,-500),(296,61,-500),(296,178,-500),(296,201,25),(296,202,-150),(296,203,25),(296,204,-150),(296,205,-150),(296,206,100),(296,207,-150),(296,208,-150),(296,209,-150),(296,210,-150),(296,211,-150),(296,212,-150),(296,213,-150),(296,214,-150),(296,215,-450),(297,5,-200),(297,11,-200),(297,51,-1),(297,54,-1),(297,55,-1),(297,56,-750),(297,57,-1),(297,59,-750),(297,60,-750),(297,178,-1000),(297,201,-200),(297,202,1000),(297,203,-200),(297,206,-200),(297,661,-1),(297,1106,-1),(298,3,50),(298,5,-200),(298,9,-50),(298,11,-200),(298,53,50),(298,56,-750),(298,59,-750),(298,60,-750),(298,178,-750),(298,210,100),(298,211,-500),(299,51,-1000),(299,52,-1000),(299,53,-1000),(299,54,-1000),(299,55,-1000),(299,56,-1000),(299,57,-1000),(299,58,-1000),(299,59,-1000),(299,60,-1000),(299,61,-1000),(299,62,-1000),(299,178,-1000),(299,180,-1000),(299,201,-1000),(299,202,-1000),(299,203,-1000),(299,204,-1000),(299,205,-1000),(299,206,-1000),(299,207,-1000),(299,208,-1000),(299,209,-1000),(299,210,-1000),(299,211,-1000),(299,212,-1000),(299,213,-1000),(299,214,-1000),(299,215,-1000),(299,216,-1000),(299,661,-1000),(299,1106,-1000),(300,5,-200),(300,11,-200),(300,53,-25),(300,54,25),(300,56,-675),(300,58,-25),(300,59,-800),(300,60,-800),(300,61,50),(300,62,10),(300,178,-800),(300,201,-600),(300,203,-600),(300,205,100),(300,206,-600),(300,207,50),(300,208,-100),(300,209,25),(300,210,25),(300,214,-100),(300,215,25),(302,4,50),(302,5,-200),(302,6,25),(302,9,-50),(302,11,-200),(302,51,50),(302,52,-50),(302,53,-150),(302,55,-100),(302,56,-400),(302,57,50),(302,58,-125),(302,59,-850),(302,60,-750),(302,61,-50),(302,62,-100),(302,178,-850),(302,180,-50),(302,201,-450),(302,202,-25),(302,203,-300),(302,205,-25),(302,206,-300),(302,207,100),(302,209,25),(302,211,-25),(302,213,-50),(302,215,100),(302,216,-200),(302,661,50),(302,1106,50),(304,51,-75),(304,52,-75),(304,53,-50),(304,54,-75),(304,55,-25),(304,56,-25),(304,57,-75),(304,58,-75),(304,59,-75),(304,60,-75),(304,61,-75),(304,62,-75),(304,178,-75),(304,180,-75),(304,202,-25),(304,205,-10),(304,214,-10),(304,216,25),(304,661,-75),(304,1106,-75),(305,2,-1),(305,3,-1),(305,4,-1),(305,5,-200),(305,6,-1),(305,7,-1),(305,8,-1),(305,9,50),(305,10,-1),(305,11,-200),(305,12,-1),(305,13,-1),(305,14,-1),(305,15,-1),(305,16,-1),(305,51,-99),(305,52,50),(305,54,-99),(305,55,-99),(305,56,-750),(305,57,-99),(305,59,-750),(305,60,-750),(305,61,-99),(305,62,-99),(305,178,-750),(305,180,50),(305,201,-350),(305,203,-750),(305,205,50),(305,206,-350),(305,207,25),(305,209,25),(305,211,25),(305,214,50),(305,661,-99),(305,1106,-99),(306,51,-1000),(306,52,-1000),(306,53,-1000),(306,54,-1000),(306,55,-1000),(306,56,-1000),(306,57,-1000),(306,58,-1000),(306,59,-1000),(306,60,-1000),(306,61,-1000),(306,62,-1000),(306,178,-1000),(306,180,-1000),(306,661,-1000),(306,1106,-1000),(307,51,-1000),(307,52,-1000),(307,53,-1000),(307,54,-1000),(307,55,-1000),(307,56,-1000),(307,57,-1000),(307,58,-1000),(307,59,-1000),(307,60,-1000),(307,61,-1000),(307,62,-1000),(307,178,-1000),(307,180,-1000),(307,661,-1000),(307,1106,-1000),(308,1,-200),(308,2,-200),(308,3,-1000),(308,4,-200),(308,5,50),(308,6,-200),(308,7,-200),(308,8,-200),(308,9,-100),(308,11,-50),(308,12,-200),(308,13,-200),(308,14,-200),(308,16,-200),(308,51,-750),(308,52,-750),(308,53,-750),(308,54,-750),(308,55,-750),(308,56,-200),(308,57,-750),(308,58,-750),(308,59,50),(308,60,-250),(308,61,-750),(308,62,-750),(308,178,-750),(308,180,-750),(308,202,-200),(308,203,50),(308,204,-200),(308,205,-200),(308,206,50),(308,207,-200),(308,208,-200),(308,209,-200),(308,210,-200),(308,211,-50),(308,212,-200),(308,213,-200),(308,214,-200),(308,215,-200),(308,216,-200),(308,661,-750),(308,1106,-750),(309,1,-25),(309,2,-25),(309,3,-25),(309,4,-25),(309,5,-200),(309,6,-25),(309,7,50),(309,8,-25),(309,9,-50),(309,10,-25),(309,11,-200),(309,12,-25),(309,13,-25),(309,14,-25),(309,15,-25),(309,16,-25),(309,51,50),(309,56,-50),(309,57,50),(309,59,-700),(309,60,-650),(309,178,-1000),(309,201,-200),(309,203,-200),(309,206,-200),(309,210,50),(309,211,-25),(309,214,25),(309,216,-25),(309,661,50),(309,1106,50),(310,5,-200),(310,6,50),(310,11,-200),(310,51,-25),(310,52,-25),(310,53,-25),(310,54,50),(310,55,25),(310,56,-1000),(310,57,50),(310,58,-25),(310,59,-800),(310,60,-600),(310,178,-1000),(310,180,-25),(310,201,-200),(310,203,-200),(310,206,-400),(310,207,10),(310,209,10),(310,215,100),(310,661,-25),(310,1106,-25),(311,1,50),(311,5,-200),(311,11,-200),(311,51,50),(311,53,-50),(311,54,-50),(311,55,-50),(311,56,-200),(311,57,50),(311,58,-25),(311,59,-300),(311,60,-200),(311,61,-50),(311,62,-50),(311,178,-400),(311,201,-50),(311,203,-200),(311,206,-50),(311,211,50),(311,661,50),(311,1106,50),(312,1,50),(312,5,-200),(312,9,-25),(312,11,-200),(312,12,-25),(312,13,-25),(312,14,-25),(312,16,50),(312,51,-75),(312,52,50),(312,53,-150),(312,54,-100),(312,55,-150),(312,56,-750),(312,57,-80),(312,58,50),(312,59,-900),(312,60,-1000),(312,61,-25),(312,62,-15),(312,178,-750),(312,180,50),(312,201,-500),(312,202,50),(312,203,-500),(312,206,-500),(312,210,-10),(312,211,-500),(312,215,-50),(312,216,-100),(312,661,-75),(312,1106,-75),(313,3,-1000),(313,4,-1000),(313,5,-1000),(313,10,-1000),(313,11,-1000),(313,12,-1000),(313,13,-1000),(313,14,-1000),(313,15,-1000),(313,51,-1000),(313,52,-1000),(313,53,-1000),(313,54,-1000),(313,55,-1000),(313,56,-1000),(313,57,-1000),(313,58,-1000),(313,59,-1000),(313,60,-1000),(313,61,-1000),(313,62,-1000),(313,178,-1000),(313,180,-1000),(313,209,50),(313,661,-1000),(313,1106,-1000),(315,51,-1000),(315,52,-1000),(315,53,-1000),(315,54,-1000),(315,55,-1000),(315,56,-1000),(315,57,-1000),(315,58,-1000),(315,59,-1000),(315,60,-1000),(315,61,-1000),(315,62,-1000),(315,178,-1000),(315,180,-1000),(315,216,-20),(315,661,-1000),(315,1106,-1000),(316,5,-200),(316,9,50),(316,11,-200),(316,51,-1),(316,52,-1),(316,54,100),(316,55,50),(316,56,-750),(316,57,50),(316,59,-750),(316,60,-750),(316,62,-1),(316,178,-750),(316,180,-1),(316,201,-200),(316,203,-200),(316,205,50),(316,206,-800),(316,207,50),(316,209,100),(316,215,100),(316,661,-1),(316,1106,-1),(317,3,-200),(317,51,-1000),(317,52,-1000),(317,53,-1000),(317,54,-1000),(317,55,-1000),(317,56,-1000),(317,57,-1000),(317,58,-1000),(317,59,-1000),(317,60,-1000),(317,61,-1000),(317,62,-1000),(317,178,-1000),(317,180,-1000),(317,661,-1000),(317,1106,-1000),(318,51,-75),(318,52,-1000),(318,53,-75),(318,54,-1000),(318,55,-1000),(318,56,-75),(318,57,-1000),(318,58,-1000),(318,59,-75),(318,60,-75),(318,61,-1000),(318,62,-75),(318,178,-1000),(318,180,-1000),(318,202,-1000),(318,204,-1000),(318,205,-5),(318,207,-1000),(318,208,-1000),(318,209,-1000),(318,210,-1000),(318,212,-1000),(318,213,-5),(318,214,-1000),(318,215,-1000),(318,216,-1000),(318,661,-75),(318,1106,-75),(319,51,-1000),(319,52,-1000),(319,53,-1000),(319,54,-1000),(319,55,-1000),(319,56,-1000),(319,57,-1000),(319,58,-1000),(319,59,-1000),(319,60,-1000),(319,61,-1000),(319,62,-1000),(319,178,-1000),(319,180,-1000),(319,661,-1000),(319,1106,-1000),(320,1,50),(320,5,-200),(320,8,25),(320,9,-10),(320,11,-400),(320,12,-50),(320,13,-50),(320,14,-50),(320,16,50),(320,51,-50),(320,52,50),(320,53,-100),(320,54,-100),(320,55,-150),(320,56,-750),(320,57,-75),(320,58,25),(320,59,-900),(320,60,-600),(320,61,-25),(320,62,-25),(320,178,-1000),(320,180,50),(320,201,-500),(320,203,-500),(320,204,25),(320,206,-500),(320,208,25),(320,211,50),(320,213,-25),(320,214,75),(320,661,-50),(320,1106,-50),(321,4,-200),(321,6,-200),(321,51,-875),(321,52,-875),(321,53,-875),(321,54,-875),(321,55,-875),(321,56,-875),(321,57,-875),(321,58,-875),(321,59,-625),(321,60,-625),(321,61,-875),(321,62,-875),(321,178,-875),(321,180,-875),(321,661,-875),(321,1106,-875),(322,2,-10),(322,3,-10),(322,4,-10),(322,5,-200),(322,6,-10),(322,7,-10),(322,8,-10),(322,9,50),(322,10,-10),(322,11,-200),(322,12,-10),(322,13,-10),(322,14,-10),(322,15,-10),(322,16,-10),(322,54,-50),(322,55,-50),(322,56,-550),(322,57,-50),(322,58,50),(322,59,-750),(322,60,-750),(322,178,-750),(322,201,-300),(322,202,50),(322,203,-300),(322,205,50),(322,206,-300),(322,211,-200),(322,214,-50),(323,1,50),(323,5,-600),(323,9,-25),(323,11,-200),(323,16,50),(323,51,-75),(323,52,-75),(323,53,-80),(323,54,-50),(323,55,-80),(323,56,-750),(323,57,-25),(323,58,-25),(323,59,-750),(323,60,-750),(323,61,-25),(323,62,50),(323,178,-1000),(323,180,-75),(323,201,-200),(323,202,50),(323,203,-200),(323,206,-200),(323,215,25),(323,216,-200),(323,661,-75),(323,1106,-75),(324,6,375),(324,11,-200),(324,52,-200),(324,53,-200),(324,55,-200),(324,56,-200),(324,58,-200),(324,59,-200),(324,60,-200),(324,62,-200),(324,178,-250),(324,180,-200),(324,201,-200),(324,203,-200),(324,206,-200),(324,207,100),(324,209,100),(324,211,-100),(324,213,-100),(324,215,500),(325,5,-200),(325,9,-50),(325,11,-200),(325,51,-30),(325,52,-30),(325,54,-5),(325,56,-750),(325,57,-20),(325,59,-750),(325,60,-750),(325,61,-10),(325,62,-10),(325,178,-750),(325,180,-30),(325,661,-30),(325,1106,-30),(326,1,50),(326,5,-200),(326,11,-200),(326,51,-50),(326,52,-50),(326,53,-50),(326,54,50),(326,55,50),(326,56,-750),(326,57,50),(326,58,-50),(326,59,-750),(326,60,-750),(326,61,-10),(326,62,-25),(326,178,-1000),(326,180,-50),(326,201,-200),(326,202,-50),(326,203,-200),(326,205,-25),(326,206,-200),(326,213,-50),(326,215,50),(326,216,-50),(326,661,-50),(326,1106,-50),(327,5,-200),(327,9,-200),(327,10,50),(327,11,-200),(327,15,50),(327,51,-25),(327,52,50),(327,53,-100),(327,54,-100),(327,55,-100),(327,56,-750),(327,57,-25),(327,59,-900),(327,60,-750),(327,61,-25),(327,62,-25),(327,178,-1000),(327,180,50),(327,201,-200),(327,203,-200),(327,205,-100),(327,206,-200),(327,214,100),(327,661,-25),(327,1106,-25),(328,5,-200),(328,9,-10),(328,11,-200),(328,51,-50),(328,54,-99),(328,55,-99),(328,56,-750),(328,57,-99),(328,59,-750),(328,60,-750),(328,61,-20),(328,62,-30),(328,178,-750),(328,661,-50),(328,1106,-50),(329,56,-200),(329,59,-375),(329,60,-375),(329,178,-475),(329,201,-100),(329,203,-100),(329,206,-100),(329,216,-200),(330,3,-50),(330,4,-25),(330,9,25),(330,52,-25),(330,53,-25),(330,54,-25),(330,55,-50),(330,56,-150),(330,58,-25),(330,59,-600),(330,60,-550),(330,61,-25),(330,62,-25),(330,178,-600),(330,180,-25),(330,201,-25),(330,203,-50),(330,204,-100),(330,205,25),(330,206,-25),(330,208,-100),(330,211,25),(330,212,-25),(330,214,-100),(330,215,-25),(331,9,-180),(332,3,-50),(332,4,-25),(332,5,-200),(332,9,50),(332,11,-300),(332,12,-50),(332,13,-50),(332,14,-50),(332,52,-50),(332,53,-50),(332,54,-200),(332,55,-200),(332,56,-300),(332,57,-75),(332,58,-150),(332,59,-750),(332,60,-500),(332,61,-25),(332,62,-100),(332,178,-750),(332,180,-50),(332,201,-200),(332,202,-50),(332,203,-300),(332,206,-300),(332,208,-50),(332,209,-50),(332,210,-50),(332,211,-75),(332,212,-30),(332,213,-50),(332,214,-200),(332,215,-10),(332,216,-300),(333,5,-200),(333,11,-200),(333,51,-10),(333,52,-10),(333,53,-10),(333,54,-10),(333,55,-10),(333,56,-750),(333,57,-10),(333,58,-10),(333,59,-750),(333,60,-750),(333,61,-10),(333,62,50),(333,178,-750),(333,180,-10),(333,201,-200),(333,204,-100),(333,206,-200),(333,661,-10),(333,1106,-10),(334,3,-750),(334,4,-750),(334,5,50),(334,6,-750),(334,7,-100),(334,8,-50),(334,10,-50),(334,11,50),(334,15,-50),(334,51,-500),(334,52,-750),(334,53,-400),(334,54,-750),(334,55,-750),(334,56,50),(334,57,-750),(334,58,-750),(334,59,-200),(334,60,-200),(334,61,-750),(334,62,-500),(334,178,-750),(334,180,-750),(334,201,-25),(334,202,-500),(334,203,-25),(334,204,-500),(334,205,-500),(334,206,50),(334,207,-500),(334,208,-500),(334,209,-500),(334,210,-500),(334,211,-50),(334,212,-500),(334,213,-25),(334,214,-500),(334,215,-500),(334,216,-25),(334,661,-500),(334,1106,-500),(336,3,-50),(336,4,-25),(336,9,50),(336,51,50),(336,53,-50),(336,55,-50),(336,56,-75),(336,57,50),(336,58,-50),(336,59,-300),(336,60,-200),(336,61,-50),(336,62,-50),(336,178,-400),(336,201,-25),(336,203,-50),(336,204,-5),(336,205,50),(336,206,25),(336,208,-10),(336,214,-25),(336,661,50),(336,1106,50),(337,3,-200),(337,4,-200),(337,9,-50),(337,12,-200),(337,13,-200),(337,14,-200),(337,51,-875),(337,52,-875),(337,53,-875),(337,54,-875),(337,55,-875),(337,57,-875),(337,58,-875),(337,60,875),(337,61,-875),(337,62,-875),(337,178,-875),(337,180,-875),(337,661,-875),(337,1106,-875),(338,3,-200),(338,4,-200),(338,9,-50),(338,12,-200),(338,13,-200),(338,14,-200),(338,51,-750),(338,52,-750),(338,54,-750),(338,55,-750),(338,56,-50),(338,57,-750),(338,59,-50),(338,60,1000),(338,61,-750),(338,62,-750),(338,178,-1000),(338,180,-750),(338,661,-750),(338,1106,-750),(340,3,-200),(340,4,-200),(340,5,50),(340,6,-200),(340,11,25),(340,51,-250),(340,52,-500),(340,53,-200),(340,54,-600),(340,55,-800),(340,56,50),(340,57,-50),(340,58,-500),(340,59,-200),(340,60,-250),(340,61,-600),(340,62,-250),(340,178,-600),(340,180,-500),(340,201,-200),(340,202,-200),(340,203,-100),(340,204,-600),(340,205,-200),(340,206,100),(340,207,-200),(340,208,-200),(340,209,-200),(340,210,-200),(340,211,-200),(340,212,-200),(340,213,-200),(340,214,-200),(340,215,-600),(340,216,-200),(340,661,-250),(340,1106,-250),(341,5,-200),(341,11,-200),(341,52,-25),(341,53,-25),(341,54,-25),(341,55,-25),(341,56,-200),(341,58,-25),(341,59,-850),(341,60,-750),(341,61,-25),(341,62,-25),(341,178,-850),(341,180,-25),(341,201,-200),(341,202,-50),(341,203,-200),(341,204,-25),(341,205,-50),(341,206,-200),(341,208,-25),(341,209,-25),(341,211,-200),(341,212,100),(341,213,-100),(341,214,-25),(341,216,-100),(342,5,-200),(342,11,-200),(342,12,50),(342,13,50),(342,14,50),(342,51,50),(342,52,-200),(342,53,-25),(342,54,-200),(342,56,-400),(342,57,50),(342,58,-200),(342,59,-850),(342,60,-750),(342,61,-50),(342,62,-50),(342,178,-850),(342,180,-200),(342,201,-200),(342,202,-100),(342,203,-300),(342,205,-100),(342,206,-200),(342,207,50),(342,209,-100),(342,210,-100),(342,211,-200),(342,212,50),(342,213,50),(342,214,-25),(342,216,-300),(342,661,50),(342,1106,50),(343,4,750),(343,6,750),(343,51,-600),(343,52,-600),(343,53,-600),(343,54,-600),(343,55,-600),(343,56,-600),(343,57,-600),(343,58,-600),(343,59,-600),(343,60,-600),(343,61,-600),(343,62,-600),(343,178,-600),(343,180,-600),(343,215,750),(343,661,-600),(343,1106,-600),(345,5,-400),(345,9,-25),(345,11,-400),(345,12,-50),(345,13,-50),(345,14,-50),(345,52,-25),(345,53,-70),(345,54,-50),(345,55,-50),(345,56,-500),(345,57,-10),(345,58,-60),(345,59,-750),(345,60,-750),(345,61,-10),(345,62,-50),(345,178,-750),(345,180,-25),(345,201,-750),(345,202,-5),(345,203,-500),(345,205,-20),(345,206,-500),(345,209,-3),(345,211,-50),(345,213,-20),(345,215,-5),(345,216,-80),(346,5,-300),(346,9,-50),(346,11,-300),(346,51,50),(346,56,-300),(346,59,-750),(346,60,-750),(346,178,-750),(346,201,-300),(346,203,-300),(346,204,50),(346,206,-200),(346,207,100),(346,208,75),(346,212,75),(346,214,50),(346,661,50),(346,1106,50),(355,3,50),(355,4,50),(355,5,-200),(355,6,50),(355,9,-25),(355,11,-200),(355,53,-10),(355,54,25),(355,56,-200),(355,57,25),(355,59,-800),(355,60,-700),(355,61,50),(355,178,-750),(355,201,-200),(355,203,-200),(355,206,-200),(355,207,50),(355,209,25),(355,210,25),(355,212,25),(355,215,25),(355,216,-25),(361,5,-200),(361,7,100),(361,9,-100),(361,11,-200),(361,56,-1000),(361,59,-1000),(361,60,-1000),(361,178,-1000),(362,3,50),(362,5,-200),(362,11,-200),(362,51,50),(362,56,-200),(362,57,50),(362,59,-800),(362,60,-600),(362,178,-800),(362,201,-200),(362,203,-100),(362,204,100),(362,206,-200),(362,208,75),(362,211,-100),(362,661,50),(362,1106,50),(363,3,-350),(363,4,-350),(363,6,-350),(363,11,-50),(363,12,50),(363,13,50),(363,14,50),(363,51,-250),(363,52,-500),(363,53,-150),(363,54,-600),(363,55,-700),(363,56,50),(363,57,-25),(363,58,-500),(363,59,-250),(363,60,-300),(363,61,-550),(363,62,-150),(363,178,-350),(363,180,-500),(363,201,25),(363,202,-200),(363,203,25),(363,204,-200),(363,205,-200),(363,206,50),(363,207,-200),(363,208,-200),(363,209,-200),(363,210,-200),(363,211,-200),(363,212,-200),(363,213,50),(363,214,-150),(363,215,-600),(363,216,-150),(363,661,-250),(363,1106,-250),(364,3,-100),(364,51,-1000),(364,52,-1000),(364,53,-1000),(364,54,-1000),(364,55,-1000),(364,56,-1000),(364,57,-1000),(364,58,-1000),(364,59,-1000),(364,60,-1000),(364,61,-1000),(364,62,-1000),(364,178,-1000),(364,180,-1000),(364,201,-1000),(364,202,-1000),(364,203,-1000),(364,204,-1000),(364,205,-1000),(364,206,-1000),(364,207,-1000),(364,208,-1000),(364,209,-1000),(364,210,-1000),(364,211,50),(364,212,-1000),(364,213,-1000),(364,214,-1000),(364,215,-1000),(364,216,-1000),(364,661,-1000),(364,1106,-1000),(366,1,-550),(366,2,-550),(366,3,-600),(366,4,-550),(366,5,-600),(366,6,-600),(366,7,-550),(366,8,-550),(366,9,-400),(366,10,-550),(366,11,-550),(366,12,-550),(366,13,-550),(366,14,-550),(366,15,-550),(366,16,-550),(366,52,-200),(366,53,-200),(366,54,-300),(366,55,-300),(366,56,-200),(366,58,-200),(366,59,-750),(366,60,-550),(366,62,-300),(366,178,-750),(366,180,-200),(366,201,-750),(366,202,-200),(366,203,-750),(366,204,-750),(366,206,-750),(366,208,-750),(366,209,-750),(366,210,-750),(366,211,-750),(366,212,-200),(366,213,-750),(366,214,-1000),(366,215,-200),(366,216,-750),(370,3,-750),(370,4,-750),(370,5,50),(370,6,-750),(370,7,-300),(370,9,25),(370,11,50),(370,51,-200),(370,52,-875),(370,53,-200),(370,54,-875),(370,55,-875),(370,56,50),(370,57,-875),(370,58,-875),(370,59,-400),(370,60,-450),(370,61,-875),(370,62,-200),(370,178,-875),(370,180,-875),(370,201,-25),(370,202,-750),(370,203,-25),(370,204,-750),(370,205,-75),(370,206,50),(370,207,-750),(370,208,-750),(370,209,-750),(370,210,-750),(370,211,-50),(370,212,-750),(370,213,-75),(370,214,-750),(370,215,-750),(370,216,-150),(370,661,-200),(370,1106,-200),(371,51,-875),(371,52,-875),(371,53,-875),(371,54,-875),(371,55,-875),(371,56,1000),(371,57,-875),(371,58,-875),(371,59,1000),(371,60,1000),(371,61,-875),(371,62,-875),(371,178,-875),(371,180,-875),(371,661,-875),(371,1106,-875),(372,51,-875),(372,52,-875),(372,53,-875),(372,54,-875),(372,55,-875),(372,56,-875),(372,57,-875),(372,58,-875),(372,59,-875),(372,60,-875),(372,61,-875),(372,62,-875),(372,178,-875),(372,180,-875),(372,661,-875),(372,1106,-875),(373,51,-750),(373,52,-750),(373,53,-750),(373,54,-750),(373,55,-750),(373,56,-750),(373,57,-750),(373,58,-750),(373,59,-750),(373,60,-750),(373,61,-750),(373,62,-750),(373,178,-750),(373,180,-750),(373,661,-750),(373,1106,-750),(375,51,-1000),(375,52,-1000),(375,53,-1000),(375,54,-1000),(375,55,-1000),(375,56,-1000),(375,57,-1000),(375,58,-1000),(375,59,-1000),(375,60,-1000),(375,61,-1000),(375,62,-1000),(375,178,-1000),(375,180,-1000),(375,661,-1000),(375,1106,-1000),(376,59,1000),(377,5,-200),(377,51,-875),(377,52,-875),(377,53,-875),(377,54,-875),(377,55,-875),(377,56,-250),(377,57,-875),(377,58,-875),(377,59,50),(377,60,-200),(377,61,-875),(377,62,-875),(377,178,-875),(377,180,-875),(377,661,-875),(377,1106,-875),(378,5,-500),(378,11,-500),(378,51,-1600),(378,52,-1700),(378,53,-1700),(378,54,-700),(378,55,-1200),(378,56,-1500),(378,57,-1000),(378,58,-1300),(378,59,-2000),(378,60,-2000),(378,61,-525),(378,62,-1000),(378,178,-2000),(378,180,-1700),(378,661,-1600),(378,1106,-1600),(379,9,50),(379,51,-550),(379,52,-550),(379,53,-550),(379,54,-700),(379,55,-700),(379,56,-550),(379,57,-550),(379,58,-500),(379,59,-700),(379,60,-800),(379,61,-550),(379,62,-550),(379,178,-800),(379,180,-550),(379,201,-100),(379,202,25),(379,203,-50),(379,205,25),(379,206,-200),(379,214,-50),(379,661,-550),(379,1106,-550),(382,5,-1000),(382,11,-1000),(382,51,-50),(382,52,-50),(382,53,-1000),(382,55,-25),(382,56,-1000),(382,57,-50),(382,58,-50),(382,59,-1000),(382,60,-1000),(382,61,-50),(382,62,-50),(382,178,-1000),(382,180,-50),(382,201,-1000),(382,203,-1000),(382,206,-1000),(382,215,25),(382,661,-50),(382,1106,-50),(387,51,-1000),(387,52,-1000),(387,53,-1000),(387,54,-1000),(387,55,-1000),(387,56,-1000),(387,57,-1000),(387,58,-1000),(387,59,-1000),(387,60,-1000),(387,61,-1000),(387,62,-1000),(387,178,-1000),(387,180,-1000),(387,661,-1000),(387,1106,-1000),(388,56,-750),(388,59,-1000),(388,60,-850),(388,178,-1000),(390,51,-100),(390,52,-100),(390,53,-100),(390,54,-100),(390,55,-100),(390,56,-100),(390,57,-100),(390,58,-100),(390,59,-100),(390,60,-100),(390,61,-100),(390,62,-100),(390,178,-100),(390,180,-100),(390,661,-100),(390,1106,-100),(391,51,-100),(391,52,-100),(391,53,-100),(391,54,-100),(391,55,-100),(391,56,-100),(391,57,-100),(391,58,-100),(391,59,-100),(391,60,-100),(391,61,-100),(391,62,-100),(391,178,-100),(391,180,-100),(391,661,-100),(391,1106,-100),(394,1,25),(394,3,-750),(394,4,-750),(394,5,25),(394,6,-750),(394,10,50),(394,11,25),(394,15,50),(394,16,25),(394,51,-500),(394,52,-400),(394,53,-600),(394,54,-600),(394,55,-600),(394,56,-50),(394,57,-600),(394,58,-600),(394,59,-500),(394,60,50),(394,61,-600),(394,62,-400),(394,178,-600),(394,180,-400),(394,201,-50),(394,202,-600),(394,203,50),(394,204,-600),(394,205,-600),(394,206,-50),(394,207,-600),(394,208,-600),(394,209,-600),(394,210,-600),(394,211,100),(394,212,-600),(394,213,-600),(394,214,-600),(394,215,-600),(394,661,-500),(394,1106,-500),(398,51,-1000),(398,52,-1000),(398,53,-1000),(398,54,-1000),(398,55,-1000),(398,56,-1000),(398,57,-1000),(398,58,-1000),(398,59,-1000),(398,60,-1000),(398,61,-1000),(398,62,-1000),(398,178,-1000),(398,180,-1000),(398,661,-1000),(398,1106,-1000),(401,5,-300),(401,8,50),(401,11,-200),(401,51,-25),(401,52,-25),(401,54,50),(401,55,50),(401,56,-1000),(401,57,50),(401,58,-25),(401,59,-800),(401,60,-600),(401,178,-1000),(401,180,-25),(401,661,-25),(401,1106,-25),(404,1,-100),(404,2,-100),(404,3,-100),(404,4,-100),(404,5,-100),(404,6,-100),(404,7,-100),(404,8,-100),(404,9,-100),(404,11,-100),(404,12,-100),(404,13,-100),(404,14,-100),(404,16,-100),(405,51,-200),(405,52,-200),(405,53,-200),(405,54,-200),(405,55,-200),(405,56,-200),(405,57,-200),(405,58,-200),(405,59,-200),(405,60,-200),(405,61,-200),(405,62,-200),(405,178,-200),(405,180,-200),(405,661,-200),(405,1106,-200),(406,51,-100),(406,52,-100),(406,53,-100),(406,54,-100),(406,55,-100),(406,56,-100),(406,57,-100),(406,58,-50),(406,59,-100),(406,60,-100),(406,61,-100),(406,62,-100),(406,178,-100),(406,180,-100),(406,202,100),(406,661,-100),(406,1106,-100),(407,51,-800),(407,52,-800),(407,53,-800),(407,54,-800),(407,55,-800),(407,56,-800),(407,57,-800),(407,58,-800),(407,59,-800),(407,60,-800),(407,61,-800),(407,62,-800),(407,178,-800),(407,180,-800),(407,661,-800),(407,1106,-800),(409,51,-625),(409,52,-625),(409,53,-625),(409,54,-625),(409,55,-625),(409,56,-625),(409,57,-625),(409,58,-625),(409,59,-625),(409,60,-625),(409,61,-625),(409,62,-625),(409,178,-625),(409,180,-625),(409,661,-625),(409,1106,-625),(412,5,-200),(412,11,-200),(412,51,-475),(412,52,-475),(412,53,-475),(412,54,-475),(412,55,-475),(412,56,-475),(412,57,-475),(412,58,-475),(412,59,-1000),(412,60,-1000),(412,61,-475),(412,62,-475),(412,178,-1000),(412,180,-475),(412,201,-500),(412,203,-500),(412,206,-500),(412,211,-75),(412,215,25),(412,216,-100),(412,661,-475),(412,1106,-475),(415,12,50),(415,51,50),(415,213,50),(415,661,50),(415,1106,50),(416,12,-25),(416,51,-400),(416,52,-400),(416,53,-400),(416,54,-400),(416,55,-400),(416,56,-400),(416,57,-400),(416,58,-400),(416,59,-400),(416,60,-400),(416,61,-400),(416,62,-400),(416,178,-400),(416,180,-400),(416,213,-25),(416,661,-400),(416,1106,-400),(417,56,-750),(417,59,-750),(417,60,-750),(417,201,-750),(417,203,-750),(417,206,-750),(417,211,-750),(418,51,-750),(418,52,-750),(418,53,-750),(418,54,-750),(418,55,-750),(418,57,-750),(418,58,-750),(418,61,-750),(418,62,-750),(418,180,-750),(418,202,-750),(418,204,-750),(418,205,-750),(418,207,-750),(418,208,-750),(418,209,-750),(418,210,-750),(418,212,-750),(418,213,-750),(418,214,-750),(418,215,-750),(418,216,-750),(418,661,-750),(418,1106,-750),(419,51,-550),(419,52,-550),(419,53,-550),(419,54,-550),(419,55,-550),(419,56,-550),(419,57,-550),(419,58,-550),(419,59,-550),(419,60,-450),(419,61,-550),(419,62,-550),(419,178,-550),(419,180,-550),(419,211,100),(419,661,-550),(419,1106,-550),(420,51,-1000),(420,52,-1000),(420,53,-1000),(420,54,-1000),(420,55,-1000),(420,56,-1000),(420,57,-1000),(420,58,-1000),(420,59,-1000),(420,60,-1000),(420,61,-1000),(420,62,-1000),(420,178,-1000),(420,180,-1000),(420,201,-1000),(420,202,-1000),(420,203,-1000),(420,204,-1000),(420,205,-1000),(420,207,-1000),(420,208,-1000),(420,209,-1000),(420,210,-1000),(420,211,-1000),(420,212,-1000),(420,213,-1000),(420,214,-1000),(420,215,-1000),(420,216,-1000),(420,661,-1000),(420,1106,-1000),(421,3,-500),(421,4,-500),(421,5,50),(421,6,-500),(421,11,50),(421,51,-600),(421,52,-1000),(421,53,-600),(421,54,-1000),(421,55,-1000),(421,56,150),(421,57,-1000),(421,58,-1000),(421,59,-200),(421,60,-200),(421,61,-1000),(421,62,-600),(421,178,-1000),(421,180,-1000),(421,202,-1000),(421,204,-1000),(421,205,-1000),(421,206,150),(421,207,-1000),(421,208,-1000),(421,209,-1000),(421,210,-1000),(421,212,-1000),(421,213,-1000),(421,214,-1000),(421,215,-1000),(421,216,-1000),(421,661,-600),(421,1106,-600),(422,3,100),(422,4,100),(422,5,-1000),(422,6,100),(422,11,-1000),(422,56,-1000),(422,59,-1000),(422,60,-1000),(422,178,-1000),(422,201,-1000),(422,202,100),(422,203,-1000),(422,204,100),(422,206,-1000),(422,207,100),(422,211,-250),(422,212,100),(422,215,100),(423,51,-1000),(423,52,-1000),(423,53,-1000),(423,54,-1000),(423,55,-1000),(423,56,-1000),(423,57,-1000),(423,58,-1000),(423,59,-1000),(423,60,-1000),(423,61,-1000),(423,62,-1000),(423,178,-1000),(423,180,-1000),(423,661,-1000),(423,1106,-1000),(425,51,-1000),(425,52,-1000),(425,53,-1000),(425,54,-1000),(425,55,-1000),(425,56,-1100),(425,57,-1000),(425,58,-1000),(425,59,-1000),(425,60,-1000),(425,61,-1000),(425,62,-1000),(425,178,-1000),(425,180,-1000),(425,201,-1000),(425,202,-1000),(425,203,-1000),(425,204,-1000),(425,205,-1000),(425,206,-1100),(425,207,-1000),(425,208,-1000),(425,209,-1000),(425,210,-1000),(425,211,-1000),(425,212,-1000),(425,213,-1000),(425,214,-1000),(425,215,-1000),(425,216,-1000),(425,661,-1000),(425,1106,-1000),(426,51,-1000),(426,52,-1000),(426,53,-1000),(426,54,-1000),(426,55,-1000),(426,56,-1000),(426,57,-1000),(426,58,-1000),(426,59,-1000),(426,60,-1000),(426,61,-1000),(426,62,-1000),(426,178,-1000),(426,180,-1000),(426,661,-1000),(426,1106,-1000),(427,51,-400),(427,52,-400),(427,53,-400),(427,54,-400),(427,55,-400),(427,56,-400),(427,57,-400),(427,58,-400),(427,59,-400),(427,60,-400),(427,61,-400),(427,62,-400),(427,178,-400),(427,180,-400),(427,215,200),(427,661,-400),(427,1106,-400),(428,51,-600),(428,52,-600),(428,53,-1000),(428,54,-600),(428,55,-600),(428,56,-600),(428,57,-600),(428,58,-600),(428,59,-600),(428,60,-600),(428,61,-600),(428,62,-600),(428,178,-600),(428,180,-600),(428,202,200),(428,216,-1000),(428,661,-600),(428,1106,-600),(429,51,-800),(429,52,-800),(429,53,-800),(429,54,-800),(429,55,-800),(429,56,-800),(429,57,-800),(429,58,-800),(429,59,-800),(429,60,-800),(429,61,-800),(429,62,-800),(429,178,-800),(429,180,-800),(429,661,-800),(429,1106,-800),(430,51,-800),(430,52,-800),(430,53,-800),(430,54,-800),(430,55,-800),(430,56,-800),(430,57,-800),(430,58,-800),(430,59,-800),(430,60,-800),(430,61,-800),(430,62,-800),(430,178,-800),(430,180,-800),(430,216,200),(430,661,-800),(430,1106,-800),(431,51,-800),(431,52,-800),(431,53,-800),(431,54,-800),(431,55,-800),(431,56,-800),(431,57,-800),(431,58,-800),(431,59,-800),(431,60,-800),(431,61,-800),(431,62,-800),(431,178,-800),(431,180,-800),(431,661,-800),(431,1106,-800),(434,51,-1000),(434,52,-1000),(434,53,-1000),(434,54,-1000),(434,55,-1000),(434,56,-1000),(434,57,-1000),(434,58,-1000),(434,59,-1000),(434,60,-1000),(434,61,-1000),(434,62,-1000),(434,178,-1000),(434,180,-1000),(434,661,-1000),(434,1106,-1000),(435,51,-1000),(435,52,-1000),(435,53,-1000),(435,54,-1000),(435,55,-1000),(435,56,-1000),(435,57,-1000),(435,58,-1000),(435,59,-1000),(435,60,-1000),(435,61,-1000),(435,62,-1000),(435,178,-1000),(435,180,-1000),(435,661,-1000),(435,1106,-1000),(436,51,-800),(436,52,-800),(436,53,-800),(436,54,-800),(436,55,-800),(436,56,-800),(436,57,-800),(436,58,-800),(436,59,-800),(436,60,-800),(436,61,-800),(436,62,-800),(436,178,-800),(436,180,-800),(436,216,200),(436,661,-800),(436,1106,-800),(437,205,100),(438,5,-1000),(438,11,-1000),(438,56,-1000),(438,59,-1000),(438,60,-1000),(438,178,-400),(438,201,-1000),(438,202,-100),(438,203,-1000),(438,204,-100),(438,205,-100),(438,206,-1000),(438,208,-100),(438,209,-100),(438,210,-100),(438,211,-1000),(438,212,-100),(438,213,-1000),(438,214,-100),(438,215,100),(438,216,-1000),(440,51,-1000),(440,52,-1000),(440,53,-1000),(440,54,-1000),(440,55,-1000),(440,56,-1000),(440,57,-1000),(440,58,-1000),(440,59,-1000),(440,60,-1000),(440,61,-1000),(440,62,-1000),(440,178,50),(440,180,-1000),(440,201,-1000),(440,202,-1000),(440,204,-1000),(440,205,-1000),(440,206,-1000),(440,207,-1000),(440,208,-1000),(440,209,-1000),(440,210,-1000),(440,211,-1000),(440,212,-1000),(440,213,-1000),(440,214,-1000),(440,215,-1000),(440,216,-1200),(440,661,-1000),(440,1106,-1000),(441,1,50),(441,51,-1000),(441,52,-1000),(441,53,-1000),(441,54,-1000),(441,55,-1000),(441,56,-1000),(441,57,-1000),(441,58,-1000),(441,59,-1000),(441,60,-1000),(441,61,-1000),(441,62,-1000),(441,178,50),(441,180,-1000),(441,201,-50),(441,202,-1000),(441,204,-1000),(441,205,-1000),(441,206,-50),(441,207,-1000),(441,208,-1000),(441,209,-1000),(441,210,-1000),(441,211,-1000),(441,212,-1000),(441,213,-1000),(441,214,-1000),(441,215,-1000),(441,216,-1500),(441,661,-1000),(441,1106,-1000),(442,5,25),(442,51,-1000),(442,52,-1000),(442,53,-1000),(442,54,-1000),(442,55,-1000),(442,56,-1000),(442,57,-1000),(442,58,-1000),(442,59,-1000),(442,60,-1000),(442,61,-1000),(442,62,-1000),(442,178,50),(442,180,-1000),(442,201,-250),(442,202,-1000),(442,203,25),(442,204,-1000),(442,205,-1000),(442,206,-250),(442,207,-1000),(442,208,-1000),(442,209,-1000),(442,210,-1000),(442,211,-1000),(442,212,-1000),(442,213,-1000),(442,214,-1000),(442,215,-1000),(442,216,-1200),(442,661,-1000),(442,1106,-1000),(443,3,-1000),(443,4,-1000),(443,6,-1000),(443,11,50),(443,51,-1000),(443,52,-1000),(443,53,-1000),(443,54,-1000),(443,55,-1000),(443,56,-1000),(443,57,-1000),(443,58,-1000),(443,59,-1000),(443,60,-1000),(443,61,-1000),(443,62,-1000),(443,178,50),(443,180,-1000),(443,202,-1000),(443,203,50),(443,204,-1000),(443,205,-1000),(443,207,-1000),(443,208,-1000),(443,209,-1000),(443,210,-1000),(443,211,-1000),(443,212,-1000),(443,213,-1000),(443,214,-1000),(443,215,-1000),(443,216,-1200),(443,661,-1000),(443,1106,-1000),(444,7,50),(444,51,-1000),(444,52,-1000),(444,53,-1000),(444,54,-1000),(444,55,-1000),(444,56,-1000),(444,57,-1000),(444,58,-1000),(444,59,-1000),(444,60,-1000),(444,61,-1000),(444,62,-1000),(444,178,50),(444,180,-1000),(444,202,-1000),(444,204,-1000),(444,205,-1000),(444,207,-1000),(444,208,-1000),(444,209,-1000),(444,210,-1000),(444,211,-1000),(444,212,-1000),(444,213,-1000),(444,214,-1000),(444,215,-1000),(444,216,-1200),(444,661,-1000),(444,1106,-1000),(445,3,-1000),(445,4,-1000),(445,6,-1000),(445,8,-1000),(445,10,50),(445,12,-1000),(445,13,-1000),(445,14,-1000),(445,15,50),(445,51,-1000),(445,52,-1000),(445,53,-1000),(445,54,-1000),(445,55,-1000),(445,56,-1000),(445,57,-1000),(445,58,-1000),(445,59,-1000),(445,60,-1000),(445,61,-1000),(445,62,-1000),(445,178,50),(445,180,-1000),(445,202,-1000),(445,203,50),(445,204,-1000),(445,205,-1000),(445,207,-1000),(445,208,-1000),(445,209,-1000),(445,210,-1000),(445,211,-1000),(445,212,-1000),(445,213,-1000),(445,214,-1000),(445,215,-1000),(445,216,-1500),(445,661,-1000),(445,1106,-1000),(446,51,-1000),(446,52,-1000),(446,53,-1000),(446,54,-1000),(446,55,-1000),(446,56,-1000),(446,57,-1000),(446,58,-1000),(446,59,-1000),(446,60,-1000),(446,61,-1000),(446,62,-1000),(446,178,-1000),(446,180,-1000),(446,201,-1000),(446,202,-1000),(446,203,-1000),(446,204,-1000),(446,205,-1000),(446,206,-1000),(446,207,-1000),(446,208,-1000),(446,209,-1000),(446,210,-1000),(446,211,-1000),(446,212,-1000),(446,213,-1000),(446,214,-1000),(446,215,-1000),(446,216,-1000),(446,661,-1000),(446,1106,-1000),(447,51,200),(447,52,200),(447,53,200),(447,54,200),(447,55,200),(447,56,200),(447,57,200),(447,58,200),(447,59,200),(447,60,200),(447,61,200),(447,62,500),(447,178,200),(447,180,200),(447,661,200),(447,1106,200),(448,51,-550),(448,52,-550),(448,53,-550),(448,54,-550),(448,55,-550),(448,56,-550),(448,57,-550),(448,58,-550),(448,59,-550),(448,60,-550),(448,61,-550),(448,62,-550),(448,178,-550),(448,180,-550),(448,211,100),(448,661,-550),(448,1106,-550),(449,5,-400),(449,11,-400),(449,56,-400),(449,59,-400),(449,60,-400),(449,178,-400),(449,201,-400),(449,203,-400),(449,206,-400),(450,51,-1000),(450,52,-1000),(450,53,-1000),(450,54,-1000),(450,55,-1000),(450,56,-1000),(450,57,-1000),(450,58,-1000),(450,59,-1000),(450,60,-1000),(450,61,-1000),(450,62,-1000),(450,178,-1000),(450,180,-1000),(450,661,-1000),(450,1106,-1000),(451,51,-800),(451,52,-800),(451,53,-800),(451,54,-800),(451,55,-800),(451,56,-800),(451,57,-800),(451,58,-800),(451,59,-800),(451,60,-800),(451,61,-800),(451,62,-800),(451,178,-800),(451,180,-800),(451,661,-800),(451,1106,-800),(452,6,150),(452,51,-600),(452,52,-1000),(452,53,-1000),(452,54,-600),(452,55,-600),(452,56,-1000),(452,57,-600),(452,58,-1000),(452,59,-1000),(452,60,-1000),(452,61,-600),(452,62,-1000),(452,178,-1000),(452,180,-1000),(452,215,150),(452,661,-600),(452,1106,-600),(454,51,-1000),(454,52,-1000),(454,53,-1000),(454,54,-1000),(454,55,-1000),(454,56,-1000),(454,57,-1000),(454,58,-1000),(454,59,-1000),(454,60,-1000),(454,61,-1000),(454,62,-1000),(454,178,-1000),(454,180,-1000),(454,201,-1000),(454,202,-1000),(454,203,-1000),(454,204,-1000),(454,205,-1000),(454,206,-1000),(454,207,-1000),(454,208,-1000),(454,209,-1000),(454,210,-1000),(454,211,-1000),(454,212,-1000),(454,213,-1000),(454,214,-1000),(454,215,-1000),(454,216,-1000),(454,661,-1000),(454,1106,-1000),(455,2,-1000),(455,3,-1000),(455,4,-1000),(455,5,-1000),(455,6,-1000),(455,8,-1000),(455,10,-1000),(455,11,-1000),(455,12,-1000),(455,13,-1000),(455,14,-1000),(455,15,-1000),(455,16,-1000),(455,51,-1000),(455,52,-1000),(455,53,-1000),(455,54,-1000),(455,55,-1000),(455,56,-1000),(455,57,-1000),(455,58,-1000),(455,59,-1000),(455,60,-1000),(455,61,-1000),(455,62,-1000),(455,178,-1000),(455,180,-1000),(455,201,-1000),(455,202,-1000),(455,203,-1000),(455,204,-1000),(455,205,-1000),(455,206,-1000),(455,207,-1000),(455,208,-1000),(455,209,-1000),(455,210,-1000),(455,211,-1000),(455,212,-1000),(455,213,-1000),(455,214,-1000),(455,215,-1000),(455,216,100),(455,661,-1000),(455,1106,-1000),(457,51,-800),(457,52,-800),(457,53,-800),(457,54,-800),(457,55,-800),(457,56,-800),(457,57,-800),(457,58,-800),(457,59,-800),(457,60,-800),(457,61,-800),(457,62,-800),(457,178,-800),(457,180,-800),(457,661,-800),(457,1106,-800),(459,205,200),(460,51,-200),(460,52,-200),(460,53,-200),(460,54,-200),(460,55,-200),(460,56,-200),(460,57,-200),(460,58,-150),(460,59,-200),(460,60,-200),(460,61,-200),(460,62,-200),(460,178,-200),(460,180,-200),(460,202,100),(460,661,-200),(460,1106,-200),(461,51,-1000),(461,52,-1000),(461,53,-1000),(461,54,-1000),(461,55,-1000),(461,56,-1000),(461,57,-1000),(461,58,-1000),(461,59,-1000),(461,60,-1000),(461,61,-1000),(461,62,-1000),(461,178,-1000),(461,180,-1000),(461,661,-1000),(461,1106,-1000),(462,51,-800),(462,52,-800),(462,53,-800),(462,54,-800),(462,55,-800),(462,56,-800),(462,57,-800),(462,58,-800),(462,59,-800),(462,60,-800),(462,61,-800),(462,62,-800),(462,178,-800),(462,180,-800),(462,661,-800),(462,1106,-800),(463,51,-200),(463,52,-200),(463,53,-200),(463,54,-200),(463,55,-200),(463,56,-200),(463,57,-200),(463,58,-200),(463,59,-200),(463,60,-200),(463,61,-200),(463,62,-200),(463,178,-200),(463,180,-200),(463,661,-200),(463,1106,-200),(467,51,-1000),(467,52,-1000),(467,53,-1000),(467,54,-1000),(467,55,-1000),(467,56,-1000),(467,57,-1000),(467,58,-1000),(467,59,-1000),(467,60,-1000),(467,61,-1000),(467,62,-1000),(467,178,-1000),(467,180,-1000),(467,661,-1000),(467,1106,-1000),(468,51,-1000),(468,52,-1000),(468,53,-1000),(468,54,-1000),(468,55,-1000),(468,56,-1000),(468,57,-1000),(468,58,-1000),(468,59,-1000),(468,60,-1000),(468,61,-1000),(468,62,-1000),(468,178,-1000),(468,180,-1000),(468,661,-1000),(468,1106,-1000),(469,5,-1000),(469,11,-1000),(469,56,-1000),(469,59,-1000),(469,60,-1000),(469,178,-400),(469,201,-1000),(469,202,-100),(469,203,-1000),(469,204,-100),(469,205,-100),(469,206,-1000),(469,208,-100),(469,209,-100),(469,210,-100),(469,211,-1000),(469,212,-100),(469,213,-1000),(469,214,-100),(469,215,100),(469,216,-1000),(471,51,-800),(471,52,-800),(471,53,-800),(471,54,-800),(471,55,-800),(471,56,-800),(471,57,-800),(471,58,-800),(471,59,-800),(471,60,-800),(471,61,-800),(471,62,-800),(471,178,-800),(471,180,-800),(471,211,200),(471,661,-800),(471,1106,-800),(472,51,-1000),(472,52,-1000),(472,53,-1000),(472,54,-1000),(472,55,-1000),(472,56,-1000),(472,57,-1000),(472,58,-1000),(472,59,-1000),(472,60,-1000),(472,61,-1000),(472,62,-1000),(472,178,-1000),(472,180,-1000),(472,661,-1000),(472,1106,-1000),(473,5,-300),(473,11,-300),(473,56,-500),(473,59,-500),(473,60,-500),(473,178,-500),(474,51,-99),(474,52,-99),(474,53,-99),(474,54,-99),(474,55,-99),(474,56,-99),(474,57,-99),(474,58,-99),(474,59,-99),(474,60,-99),(474,61,-99),(474,62,-99),(474,178,-99),(474,180,-99),(474,661,-99),(474,1106,-99),(475,51,-875),(475,52,-875),(475,53,-875),(475,54,-875),(475,55,-875),(475,56,-875),(475,57,-875),(475,58,-875),(475,59,-875),(475,60,-875),(475,61,-875),(475,62,-875),(475,178,-875),(475,180,-875),(475,661,-875),(475,1106,-875),(548,51,-1000),(548,52,-1000),(548,53,-1000),(548,54,-1000),(548,55,-1000),(548,56,-1000),(548,57,-1000),(548,58,-1000),(548,59,-1000),(548,60,-1000),(548,61,-1000),(548,62,-1000),(548,178,-1000),(548,180,-1000),(548,661,-1000),(548,1106,-1000),(680,51,-100),(680,52,-100),(680,53,-100),(680,54,-100),(680,55,-100),(680,56,-100),(680,57,-100),(680,58,-100),(680,59,-100),(680,60,-100),(680,61,-100),(680,62,-100),(680,178,-100),(680,180,-100),(680,661,-100),(680,1106,-100),(711,51,-750),(711,52,-750),(711,53,-750),(711,54,-750),(711,55,-750),(711,56,-750),(711,57,-750),(711,58,-750),(711,59,-750),(711,60,-750),(711,61,-750),(711,62,-750),(711,178,-750),(711,180,-750),(711,661,-750),(711,1106,-750),(712,51,-750),(712,52,-750),(712,53,-750),(712,54,-750),(712,55,-750),(712,56,-750),(712,57,-750),(712,58,-750),(712,59,-750),(712,60,-750),(712,61,-750),(712,62,-750),(712,178,-750),(712,180,-750),(712,661,-750),(712,1106,-750),(713,51,-1000),(713,52,-1000),(713,53,-1000),(713,54,-1000),(713,55,-1000),(713,56,-1000),(713,57,-1000),(713,58,-1000),(713,59,-1000),(713,60,-1000),(713,61,-1000),(713,62,-1000),(713,178,-1000),(713,180,-1000),(713,661,-1000),(713,1106,-1000),(714,51,-1000),(714,52,-1000),(714,53,-1000),(714,54,-1000),(714,55,-1000),(714,56,-1000),(714,57,-1000),(714,58,-1000),(714,59,-1000),(714,60,-1000),(714,61,-1000),(714,62,-1000),(714,178,-1000),(714,180,-1000),(714,661,-1000),(714,1106,-1000),(715,51,-1000),(715,52,-1000),(715,53,-1000),(715,54,-1000),(715,55,-1000),(715,56,-1000),(715,57,-1000),(715,58,-1000),(715,59,-1000),(715,60,-1000),(715,61,-1000),(715,62,-1000),(715,178,-1000),(715,180,-1000),(715,661,-1000),(715,1106,-1000),(716,51,-1000),(716,52,-1000),(716,53,-1000),(716,54,-1000),(716,55,-1000),(716,56,-1000),(716,57,-1000),(716,58,-1000),(716,59,-1000),(716,60,-1000),(716,61,-1000),(716,62,-1000),(716,178,-1000),(716,180,-1000),(716,661,-1000),(716,1106,-1000),(720,51,375),(720,52,375),(720,54,375),(720,55,375),(720,56,0),(720,58,375),(720,59,0),(720,60,0),(720,61,375),(720,180,375),(720,661,375),(720,1106,375),(721,51,375),(721,52,375),(721,54,375),(721,55,375),(721,56,0),(721,58,375),(721,59,0),(721,60,0),(721,61,375),(721,180,375),(721,661,375),(721,1106,375),(1007,51,-2000),(1007,52,-2000),(1007,53,-2000),(1007,54,-2000),(1007,55,-2000),(1007,56,-2000),(1007,57,-2000),(1007,58,-2000),(1007,59,-2000),(1007,60,-2000),(1007,61,-2000),(1007,62,-2000),(1007,178,-2000),(1007,180,-2000),(1007,661,-2000),(1007,1106,-2000),(1010,51,-2000),(1010,52,-2000),(1010,53,-2000),(1010,54,-2000),(1010,55,-2000),(1010,56,-2000),(1010,57,-2000),(1010,58,-2000),(1010,59,-2000),(1010,60,-2000),(1010,61,-2000),(1010,62,-2000),(1010,178,-2000),(1010,180,-2000),(1010,661,-2000),(1010,1106,-2000),(1013,51,-2000),(1013,52,-2000),(1013,53,-2000),(1013,54,-2000),(1013,55,-2000),(1013,56,-2000),(1013,57,-2000),(1013,58,-2000),(1013,59,-2000),(1013,60,-2000),(1013,61,-2000),(1013,62,-2000),(1013,178,-2000),(1013,180,-2000),(1013,661,-2000),(1013,1106,-2000),(1016,51,-800),(1016,52,-800),(1016,53,-800),(1016,54,-800),(1016,55,-800),(1016,56,-800),(1016,57,-800),(1016,58,-800),(1016,59,-800),(1016,60,-800),(1016,61,-800),(1016,62,-800),(1016,178,-800),(1016,180,-800),(1016,661,-800),(1016,1106,-800),(1021,201,-100),(1021,202,-100),(1021,203,-100),(1021,204,-600),(1021,205,-100),(1021,206,-100),(1021,207,-100),(1021,208,-600),(1021,209,-100),(1021,210,-600),(1021,211,-100),(1021,212,-600),(1021,213,-100),(1021,214,-100),(1021,215,-600),(1021,216,-100),(1021,396,-100),(1022,201,-1000),(1022,203,-1000),(1022,206,-1000),(1022,211,-1000),(1022,213,-500),(1023,201,-600),(1023,202,-100),(1023,203,-600),(1023,204,-100),(1023,205,-100),(1023,206,-600),(1023,207,-100),(1023,208,-100),(1023,209,-100),(1023,210,-100),(1023,211,-600),(1023,212,-100),(1023,213,-100),(1023,214,-100),(1023,215,-100),(1023,216,-100),(1023,396,-100),(1024,51,-2000),(1024,52,-2000),(1024,53,-2000),(1024,54,-2000),(1024,55,-2000),(1024,56,-2000),(1024,57,-2000),(1024,58,-2000),(1024,59,-2000),(1024,60,-2000),(1024,61,-2000),(1024,62,-2000),(1024,178,-2000),(1024,180,-2000),(1024,661,-2000),(1024,1106,-2000),(1025,51,-2000),(1025,52,-2000),(1025,53,-2000),(1025,54,-2000),(1025,55,-2000),(1025,56,-2000),(1025,57,-2000),(1025,58,-2000),(1025,59,-2000),(1025,60,-2000),(1025,61,-2000),(1025,62,-2000),(1025,178,-2000),(1025,180,-2000),(1025,661,-2000),(1025,1106,-2000),(1026,51,-2000),(1026,52,-2000),(1026,53,-2000),(1026,54,-2000),(1026,55,-2000),(1026,56,-2000),(1026,57,-2000),(1026,58,-2000),(1026,59,-2000),(1026,60,-2000),(1026,61,-2000),(1026,62,-2000),(1026,178,-2000),(1026,180,-2000),(1026,661,-2000),(1026,1106,-2000),(1027,51,-2000),(1027,52,-2000),(1027,53,-2000),(1027,54,-2000),(1027,55,-2000),(1027,56,-2000),(1027,57,-2000),(1027,58,-2000),(1027,59,-2000),(1027,60,-2000),(1027,61,-2000),(1027,62,-2000),(1027,178,-2000),(1027,180,-2000),(1027,661,-2000),(1027,1106,-2000),(1028,51,-2000),(1028,52,-2000),(1028,53,-2000),(1028,54,-2000),(1028,55,-2000),(1028,56,-2000),(1028,57,-2000),(1028,58,-2000),(1028,59,-2000),(1028,60,-2000),(1028,61,-2000),(1028,62,-2000),(1028,178,-2000),(1028,180,-2000),(1028,661,-2000),(1028,1106,-2000),(1029,51,-2000),(1029,52,-2000),(1029,53,-2000),(1029,54,-2000),(1029,55,-2000),(1029,56,-2000),(1029,57,-2000),(1029,58,-2000),(1029,59,-2000),(1029,60,-2000),(1029,61,-2000),(1029,62,-2000),(1029,178,-2000),(1029,180,-2000),(1029,661,-2000),(1029,1106,-2000),(1030,51,-2000),(1030,52,-2000),(1030,53,-2000),(1030,54,-2000),(1030,55,-2000),(1030,56,-2000),(1030,57,-2000),(1030,58,-2000),(1030,59,-2000),(1030,60,-2000),(1030,61,-2000),(1030,62,-2000),(1030,178,-2000),(1030,180,-2000),(1030,661,-2000),(1030,1106,-2000),(1031,51,-2000),(1031,52,-2000),(1031,53,-2000),(1031,54,-2000),(1031,55,-2000),(1031,56,-2000),(1031,57,-2000),(1031,58,-2000),(1031,59,-2000),(1031,60,-2000),(1031,61,-2000),(1031,62,-2000),(1031,178,-2000),(1031,180,-2000),(1031,661,-2000),(1031,1106,-2000),(1032,51,-2000),(1032,52,-2000),(1032,53,-2000),(1032,54,-2000),(1032,55,-2000),(1032,56,-2000),(1032,57,-2000),(1032,58,-2000),(1032,59,-2000),(1032,60,-2000),(1032,61,-2000),(1032,62,-2000),(1032,178,-2000),(1032,180,-2000),(1032,661,-2000),(1032,1106,-2000),(1033,51,-2000),(1033,52,-2000),(1033,53,-2000),(1033,54,-2000),(1033,55,-2000),(1033,56,-2000),(1033,57,-2000),(1033,58,-2000),(1033,59,-2000),(1033,60,-2000),(1033,61,-2000),(1033,62,-2000),(1033,178,-2000),(1033,180,-2000),(1033,661,-2000),(1033,1106,-2000),(1034,51,-2000),(1034,52,-2000),(1034,53,-2000),(1034,54,-2000),(1034,55,-2000),(1034,56,-2000),(1034,57,-2000),(1034,58,-2000),(1034,59,-2000),(1034,60,-2000),(1034,61,-2000),(1034,62,-2000),(1034,178,-2000),(1034,180,-2000),(1034,661,-2000),(1034,1106,-2000),(1035,51,-2000),(1035,52,-2000),(1035,53,-2000),(1035,54,-2000),(1035,55,-2000),(1035,56,-2000),(1035,57,-2000),(1035,58,-2000),(1035,59,-2000),(1035,60,-2000),(1035,61,-2000),(1035,62,-2000),(1035,178,-2000),(1035,180,-2000),(1035,661,-2000),(1035,1106,-2000),(1049,51,-2000),(1049,52,-2000),(1049,53,-2000),(1049,54,-2000),(1049,55,-2000),(1049,56,-2000),(1049,57,-2000),(1049,58,-2000),(1049,59,-2000),(1049,60,-2000),(1049,61,-2000),(1049,62,-2000),(1049,178,-2000),(1049,180,-2000),(1049,661,-2000),(1049,1106,-2000),(1051,51,-2000),(1051,52,-2000),(1051,53,-2000),(1051,54,-2000),(1051,55,-2000),(1051,56,-2000),(1051,57,-2000),(1051,58,-2000),(1051,59,-2000),(1051,60,-2000),(1051,61,-2000),(1051,62,-2000),(1051,178,-2000),(1051,180,-2000),(1051,661,-2000),(1051,1106,-2000),(1052,51,-2000),(1052,52,-2000),(1052,53,-2000),(1052,54,-2000),(1052,55,-2000),(1052,56,-2000),(1052,57,-2000),(1052,58,-2000),(1052,59,-2000),(1052,60,-2000),(1052,61,-2000),(1052,62,-2000),(1052,178,-2000),(1052,180,-2000),(1052,661,-2000),(1052,1106,-2000),(1053,51,-2000),(1053,52,-2000),(1053,53,-2000),(1053,54,-2000),(1053,55,-2000),(1053,56,-2000),(1053,57,-2000),(1053,58,-2000),(1053,59,-2000),(1053,60,-2000),(1053,61,-2000),(1053,62,-2000),(1053,178,-2000),(1053,180,-2000),(1053,661,-2000),(1053,1106,-2000),(1054,51,-2000),(1054,52,-2000),(1054,53,-2000),(1054,54,-2000),(1054,55,-2000),(1054,56,-2000),(1054,57,-2000),(1054,58,-2000),(1054,59,-2000),(1054,60,-2000),(1054,61,-2000),(1054,62,-2000),(1054,178,-2000),(1054,180,-2000),(1054,661,-2000),(1054,1106,-2000),(1055,51,-500),(1055,52,-500),(1055,53,-500),(1055,54,-500),(1055,55,-500),(1055,56,-500),(1055,57,-500),(1055,58,-500),(1055,59,-500),(1055,60,-500),(1055,61,-500),(1055,62,-500),(1055,178,-500),(1055,180,-500),(1055,661,-500),(1055,1106,-500),(1056,51,-2000),(1056,52,-2000),(1056,53,-2000),(1056,54,-2000),(1056,55,-2000),(1056,56,-2000),(1056,57,-2000),(1056,58,-2000),(1056,59,-2000),(1056,60,-2000),(1056,61,-2000),(1056,62,-2000),(1056,178,-2000),(1056,180,-2000),(1056,661,-2000),(1056,1106,-2000),(1058,51,-2000),(1058,52,-2000),(1058,53,-2000),(1058,54,-2000),(1058,55,-2000),(1058,56,-2000),(1058,57,-2000),(1058,58,-2000),(1058,59,-2000),(1058,60,-2000),(1058,61,-2000),(1058,62,-2000),(1058,178,-2000),(1058,180,-2000),(1058,661,-2000),(1058,1106,-2000),(1059,51,-1000),(1059,52,-1000),(1059,53,-1000),(1059,54,-1000),(1059,55,-1000),(1059,56,-1000),(1059,57,-1000),(1059,58,-1000),(1059,59,-1000),(1059,60,-1000),(1059,61,-1000),(1059,62,-1000),(1059,178,-1000),(1059,180,-1000),(1059,661,-1000),(1059,1106,-1000),(1062,51,-500),(1062,52,-500),(1062,53,-500),(1062,54,-500),(1062,55,-500),(1062,56,-500),(1062,57,-500),(1062,58,-500),(1062,59,-500),(1062,60,-500),(1062,61,-500),(1062,62,-500),(1062,178,-500),(1062,180,-500),(1062,661,-500),(1062,1106,-500),(1066,51,-1000),(1066,52,-1000),(1066,53,-1000),(1066,54,-1000),(1066,55,-1000),(1066,56,-1000),(1066,57,-1000),(1066,58,-1000),(1066,59,-1000),(1066,60,-1000),(1066,61,-1000),(1066,62,-1000),(1066,178,-1000),(1066,180,-1000),(1066,661,-1000),(1066,1106,-1000),(1068,51,-1000),(1068,52,-1000),(1068,53,-1000),(1068,54,-1000),(1068,55,-1000),(1068,56,-1000),(1068,57,-1000),(1068,58,-1000),(1068,59,-1000),(1068,60,-1000),(1068,61,-1000),(1068,62,-1000),(1068,178,-1000),(1068,180,-1000),(1068,661,-1000),(1068,1106,-1000),(1069,51,-1000),(1069,52,-1000),(1069,53,-1000),(1069,54,-1000),(1069,55,-1000),(1069,56,-1000),(1069,57,-1000),(1069,58,-1000),(1069,59,-1000),(1069,60,-1000),(1069,61,-1000),(1069,62,-1000),(1069,178,-1000),(1069,180,-1000),(1069,661,-1000),(1069,1106,-1000),(1070,51,-1000),(1070,52,-1000),(1070,53,-1000),(1070,54,-1000),(1070,55,-1000),(1070,56,-1000),(1070,57,-1000),(1070,58,-1000),(1070,59,-1000),(1070,60,-1000),(1070,61,-1000),(1070,62,-1000),(1070,178,-1000),(1070,180,-1000),(1070,661,-1000),(1070,1106,-1000),(1071,51,-1000),(1071,52,-1000),(1071,53,-1000),(1071,54,-1000),(1071,55,-1000),(1071,56,-1000),(1071,57,-1000),(1071,58,-1000),(1071,59,-1000),(1071,60,-1000),(1071,61,-1000),(1071,62,-1000),(1071,178,-1000),(1071,180,-1000),(1071,661,-1000),(1071,1106,-1000),(1072,51,-1000),(1072,52,-1000),(1072,53,-1000),(1072,54,-1000),(1072,55,-1000),(1072,56,-1000),(1072,57,-1000),(1072,58,-1000),(1072,59,-1000),(1072,60,-1000),(1072,61,-1000),(1072,62,-1000),(1072,178,-1000),(1072,180,-1000),(1072,661,-1000),(1072,1106,-1000),(1073,51,-1000),(1073,52,-1000),(1073,53,-1000),(1073,54,-1000),(1073,55,-1000),(1073,56,-1000),(1073,57,-1000),(1073,58,-1000),(1073,59,-1000),(1073,60,-1000),(1073,61,-1000),(1073,62,-1000),(1073,178,-1000),(1073,180,-1000),(1073,661,-1000),(1073,1106,-1000),(1074,51,-1000),(1074,52,-1000),(1074,53,-1000),(1074,54,-1000),(1074,55,-1000),(1074,56,-1000),(1074,57,-1000),(1074,58,-1000),(1074,59,-1000),(1074,60,-1000),(1074,61,-1000),(1074,62,-1000),(1074,178,-1000),(1074,180,-1000),(1074,661,-1000),(1074,1106,-1000),(1075,51,-1000),(1075,52,-1000),(1075,53,-1000),(1075,54,-1000),(1075,55,-1000),(1075,56,-1000),(1075,57,-1000),(1075,58,-1000),(1075,59,-1000),(1075,60,-1000),(1075,61,-1000),(1075,62,-1000),(1075,178,-1000),(1075,180,-1000),(1075,661,-1000),(1075,1106,-1000),(1076,51,-1000),(1076,52,-1000),(1076,53,-1000),(1076,54,-1000),(1076,55,-1000),(1076,56,-1000),(1076,57,-1000),(1076,58,-1000),(1076,59,-1000),(1076,60,-1000),(1076,61,-1000),(1076,62,-1000),(1076,178,-1000),(1076,180,-1000),(1076,661,-1000),(1076,1106,-1000),(1077,51,-1000),(1077,52,-1000),(1077,53,-1000),(1077,54,-1000),(1077,55,-1000),(1077,56,-1000),(1077,57,-1000),(1077,58,-1000),(1077,59,-1000),(1077,60,-1000),(1077,61,-1000),(1077,62,-1000),(1077,178,-1000),(1077,180,-1000),(1077,661,-1000),(1077,1106,-1000),(1078,51,-1000),(1078,52,-1000),(1078,53,-1000),(1078,54,-1000),(1078,55,-1000),(1078,56,-1000),(1078,57,-1000),(1078,58,-1000),(1078,59,-1000),(1078,60,-1000),(1078,61,-1000),(1078,62,-1000),(1078,178,-1000),(1078,180,-1000),(1078,661,-1000),(1078,1106,-1000),(1079,51,-1000),(1079,52,-1000),(1079,53,-1000),(1079,54,-1000),(1079,55,-1000),(1079,56,-1000),(1079,57,-1000),(1079,58,-1000),(1079,59,-1000),(1079,60,-1000),(1079,61,-1000),(1079,62,-1000),(1079,178,-1000),(1079,180,-1000),(1079,661,-1000),(1079,1106,-1000),(1080,51,-1000),(1080,52,-1000),(1080,53,-1000),(1080,54,-1000),(1080,55,-1000),(1080,56,-1000),(1080,57,-1000),(1080,58,-1000),(1080,59,-1000),(1080,60,-1000),(1080,61,-1000),(1080,62,-1000),(1080,178,-1000),(1080,180,-1000),(1080,661,-1000),(1080,1106,-1000),(1086,51,-2000),(1086,52,-2000),(1086,53,-2000),(1086,54,-2000),(1086,55,-2000),(1086,56,-2000),(1086,57,-2000),(1086,58,-2000),(1086,59,-2000),(1086,60,-2000),(1086,61,-2000),(1086,62,-2000),(1086,178,-2000),(1086,180,-2000),(1086,661,-2000),(1086,1106,-2000),(1088,51,-1000),(1088,52,-1000),(1088,53,-1000),(1088,54,-1000),(1088,55,-1000),(1088,56,-1000),(1088,57,-1000),(1088,58,-1000),(1088,59,-1000),(1088,60,-1000),(1088,61,-1000),(1088,62,-1000),(1088,178,-1000),(1088,180,-1000),(1088,661,-1000),(1088,1106,-1000),(1089,51,-1000),(1089,52,-1000),(1089,53,-1000),(1089,54,-1000),(1089,55,-1000),(1089,56,-1000),(1089,57,-1000),(1089,58,-1000),(1089,59,-1000),(1089,60,-1000),(1089,61,-1000),(1089,62,-1000),(1089,178,-1000),(1089,180,-1000),(1089,661,-1000),(1089,1106,-1000),(1090,51,-1000),(1090,52,-1000),(1090,53,-1000),(1090,54,-1000),(1090,55,-1000),(1090,56,-1000),(1090,57,-1000),(1090,58,-1000),(1090,59,-1000),(1090,60,-1000),(1090,61,-1000),(1090,62,-1000),(1090,178,-1000),(1090,180,-1000),(1090,661,-1000),(1090,1106,-1000),(1091,51,-1000),(1091,52,-1000),(1091,53,-1000),(1091,54,-1000),(1091,55,-1000),(1091,56,-1000),(1091,57,-1000),(1091,58,-1000),(1091,59,-1000),(1091,60,-1000),(1091,61,-1000),(1091,62,-1000),(1091,178,-1000),(1091,180,-1000),(1091,661,-1000),(1091,1106,-1000),(1092,51,-1000),(1092,52,-1000),(1092,53,-1000),(1092,54,-1000),(1092,55,-1000),(1092,56,-1000),(1092,57,-1000),(1092,58,-1000),(1092,59,-1000),(1092,60,-1000),(1092,61,-1000),(1092,62,-1000),(1092,178,-1000),(1092,180,-1000),(1092,661,-1000),(1092,1106,-1000),(1093,51,-1000),(1093,52,-1000),(1093,53,-1000),(1093,54,-1000),(1093,55,-1000),(1093,56,-1000),(1093,57,-1000),(1093,58,-1000),(1093,59,-1000),(1093,60,-1000),(1093,61,-1000),(1093,62,-1000),(1093,178,-1000),(1093,180,-1000),(1093,661,-1000),(1093,1106,-1000),(1094,51,-1000),(1094,52,-1000),(1094,53,-1000),(1094,54,-1000),(1094,55,-1000),(1094,56,-1000),(1094,57,-1000),(1094,58,-1000),(1094,59,-1000),(1094,60,-1000),(1094,61,-1000),(1094,62,-1000),(1094,178,-1000),(1094,180,-1000),(1094,661,-1000),(1094,1106,-1000),(1100,51,-1000),(1100,52,-1000),(1100,53,-1000),(1100,54,-1000),(1100,55,-1000),(1100,56,-1000),(1100,57,-1000),(1100,58,-1000),(1100,59,-1000),(1100,60,-1000),(1100,61,-1000),(1100,62,-1000),(1100,178,-1000),(1100,180,-1000),(1100,661,-1000),(1100,1106,-1000),(1101,51,-1000),(1101,52,-1000),(1101,53,-1000),(1101,54,-1000),(1101,55,-1000),(1101,56,-1000),(1101,57,-1000),(1101,58,-1000),(1101,59,-1000),(1101,60,-1000),(1101,61,-1000),(1101,62,-1000),(1101,178,-1000),(1101,180,-1000),(1101,661,-1000),(1101,1106,-1000),(1103,51,-1000),(1103,52,-1000),(1103,53,-1000),(1103,54,-1000),(1103,55,-1000),(1103,56,-1000),(1103,57,-1000),(1103,58,-1000),(1103,59,-1000),(1103,60,-1000),(1103,61,-1000),(1103,62,-1000),(1103,178,-1000),(1103,180,-1000),(1103,661,-1000),(1103,1106,-1000),(1104,51,-500),(1104,52,-500),(1104,53,-500),(1104,54,-500),(1104,55,-500),(1104,56,-500),(1104,57,-500),(1104,58,-500),(1104,59,-500),(1104,60,-500),(1104,61,-500),(1104,62,-500),(1104,178,-500),(1104,180,-500),(1104,661,-500),(1104,1106,-500),(1105,51,-200),(1105,52,-200),(1105,53,-200),(1105,54,-200),(1105,55,-200),(1105,56,-200),(1105,57,-200),(1105,58,-200),(1105,59,-200),(1105,60,-200),(1105,61,-200),(1105,62,-200),(1105,178,-200),(1105,180,-200),(1105,661,-200),(1105,1106,-200),(1107,51,-700),(1107,52,-700),(1107,53,-700),(1107,54,-700),(1107,55,-700),(1107,56,-700),(1107,57,-700),(1107,58,-700),(1107,59,-700),(1107,60,-700),(1107,61,-700),(1107,62,-700),(1107,178,-700),(1107,180,-700),(1107,661,-700),(1107,1106,-700),(1111,51,-1000),(1111,52,-1000),(1111,53,-1000),(1111,54,-1000),(1111,55,-1000),(1111,56,-1000),(1111,57,-1000),(1111,58,-1000),(1111,59,-1000),(1111,60,-1000),(1111,61,-1000),(1111,62,-1000),(1111,178,-1000),(1111,180,-1000),(1111,661,-1000),(1111,1106,-1000),(1112,51,-1000),(1112,52,-1000),(1112,53,-1000),(1112,54,-1000),(1112,55,-1000),(1112,56,-1000),(1112,57,-1000),(1112,58,-1000),(1112,59,-1000),(1112,60,-1000),(1112,61,-1000),(1112,62,-1000),(1112,178,-1000),(1112,180,-1000),(1112,661,-1000),(1112,1106,-1000),(1113,51,-1000),(1113,52,-1000),(1113,53,-1000),(1113,54,-1000),(1113,55,-1000),(1113,56,-1000),(1113,57,-1000),(1113,58,-1000),(1113,59,-1000),(1113,60,-1000),(1113,61,-1000),(1113,62,-1000),(1113,178,-1000),(1113,180,-1000),(1113,661,-1000),(1113,1106,-1000),(1114,51,-1000),(1114,52,-1000),(1114,53,-1000),(1114,54,-1000),(1114,55,-1000),(1114,56,-1000),(1114,57,-1000),(1114,58,-1000),(1114,59,-1000),(1114,60,-1000),(1114,61,-1000),(1114,62,-1000),(1114,178,-1000),(1114,180,-1000),(1114,661,-1000),(1114,1106,-1000),(1115,51,-1000),(1115,52,-1000),(1115,53,-1000),(1115,54,-1000),(1115,55,-1000),(1115,56,-1000),(1115,57,-1000),(1115,58,-1000),(1115,59,-1000),(1115,60,-1000),(1115,61,-1000),(1115,62,-1000),(1115,178,-1000),(1115,180,-1000),(1115,661,-1000),(1115,1106,-1000),(1120,51,-1000),(1120,52,-1000),(1120,53,-1000),(1120,54,-1000),(1120,55,-1000),(1120,56,-1000),(1120,57,-1000),(1120,58,-1000),(1120,59,-1000),(1120,60,-1000),(1120,61,-1000),(1120,62,-1000),(1120,178,-1000),(1120,180,-1000),(1120,661,-1000),(1120,1106,-1000),(1121,51,-1000),(1121,52,-1000),(1121,53,-1000),(1121,54,-1000),(1121,55,-1000),(1121,56,-1000),(1121,57,-1000),(1121,58,-1000),(1121,59,-1000),(1121,60,-1000),(1121,61,-1000),(1121,62,-1000),(1121,178,-1000),(1121,180,-1000),(1121,661,-1000),(1121,1106,-1000),(1123,51,-100),(1123,52,-100),(1123,53,-100),(1123,54,-100),(1123,55,-100),(1123,56,-100),(1123,57,-100),(1123,58,-100),(1123,59,-100),(1123,60,-100),(1123,61,-100),(1123,62,-100),(1123,178,-100),(1123,180,-100),(1123,661,-100),(1123,1106,-100),(1124,51,-1000),(1124,52,-1000),(1124,53,-1000),(1124,54,-1000),(1124,55,-1000),(1124,56,-1000),(1124,57,-1000),(1124,58,-1000),(1124,59,-1000),(1124,60,-1000),(1124,61,-1000),(1124,62,-1000),(1124,178,-1000),(1124,180,-1000),(1124,661,-1000),(1124,1106,-1000),(1125,51,-1000),(1125,52,-1000),(1125,53,-1000),(1125,54,-1000),(1125,55,-1000),(1125,56,-1000),(1125,57,-1000),(1125,58,-1000),(1125,59,-1000),(1125,60,-1000),(1125,61,-1000),(1125,62,-1000),(1125,178,-1000),(1125,180,-1000),(1125,661,-1000),(1125,1106,-1000),(1134,51,-50),(1134,52,-50),(1134,53,-50),(1134,54,-50),(1134,55,-50),(1134,56,-50),(1134,57,-50),(1134,58,-50),(1134,59,-50),(1134,60,-50),(1134,61,-50),(1134,62,-50),(1134,178,-50),(1134,180,-50),(1134,661,-50),(1134,1106,-50),(1135,51,-150),(1135,52,-150),(1135,53,-150),(1135,54,-150),(1135,55,-150),(1135,56,-150),(1135,57,-150),(1135,58,-150),(1135,59,-150),(1135,60,-150),(1135,61,-150),(1135,62,-150),(1135,178,-150),(1135,180,-150),(1135,661,-150),(1135,1106,-150),(1137,1106,100),(1140,51,-1000),(1140,52,-1000),(1140,53,-1000),(1140,54,-1000),(1140,55,-1000),(1140,56,-1000),(1140,57,-1000),(1140,58,-1000),(1140,59,-1000),(1140,60,-1000),(1140,61,-1000),(1140,62,-1000),(1140,178,-1000),(1140,180,-1000),(1140,661,-1000),(1140,1106,-1000),(1141,51,-1000),(1141,52,-1000),(1141,53,-1000),(1141,54,-1000),(1141,55,-1000),(1141,56,-1000),(1141,57,-1000),(1141,58,-1000),(1141,59,-1000),(1141,60,-1000),(1141,61,-1000),(1141,62,-1000),(1141,178,-1000),(1141,180,-1000),(1141,661,-1000),(1141,1106,-1000),(1142,51,-1000),(1142,52,-1000),(1142,53,-1000),(1142,54,-1000),(1142,55,-1000),(1142,56,-1000),(1142,57,-1000),(1142,58,-1000),(1142,59,-1000),(1142,60,-1000),(1142,61,-1000),(1142,62,-1000),(1142,178,-1000),(1142,180,-1000),(1142,661,-1000),(1142,1106,-1000),(1143,51,-500),(1143,52,-500),(1143,53,-500),(1143,54,-500),(1143,55,-500),(1143,56,-500),(1143,57,-500),(1143,58,-500),(1143,59,-500),(1143,60,-500),(1143,61,-500),(1143,62,-500),(1143,178,-500),(1143,180,-500),(1143,661,-500),(1143,1106,-500),(1144,51,-250),(1144,52,-250),(1144,53,-250),(1144,54,-250),(1144,55,-250),(1144,56,-250),(1144,57,-250),(1144,58,-250),(1144,59,-250),(1144,60,-250),(1144,61,-250),(1144,62,-250),(1144,178,-250),(1144,180,-250),(1144,661,-250),(1144,1106,-250),(1145,51,-500),(1145,52,-500),(1145,53,-500),(1145,54,-500),(1145,55,-500),(1145,56,-500),(1145,57,-500),(1145,58,-500),(1145,59,-500),(1145,60,-500),(1145,61,-500),(1145,62,-500),(1145,178,-500),(1145,180,-500),(1145,661,-500),(1145,1106,-500),(1146,51,-800),(1146,52,-800),(1146,53,-800),(1146,54,-800),(1146,55,-800),(1146,56,-800),(1146,57,-800),(1146,58,-800),(1146,59,-800),(1146,60,-800),(1146,61,-800),(1146,62,-800),(1146,178,-800),(1146,180,-800),(1146,661,-800),(1146,1106,-800),(1147,51,-800),(1147,52,-800),(1147,53,-800),(1147,54,-800),(1147,55,-800),(1147,56,-800),(1147,57,-800),(1147,58,-800),(1147,59,-800),(1147,60,-800),(1147,61,-800),(1147,62,-800),(1147,178,-800),(1147,180,-800),(1147,661,-800),(1147,1106,-800),(1148,51,-800),(1148,52,-800),(1148,53,-800),(1148,54,-800),(1148,55,-800),(1148,56,-800),(1148,57,-800),(1148,58,-800),(1148,59,-800),(1148,60,-800),(1148,61,-800),(1148,62,-800),(1148,178,-800),(1148,180,-800),(1148,661,-800),(1148,1106,-800),(1149,51,-800),(1149,52,-800),(1149,53,-800),(1149,54,-800),(1149,55,-800),(1149,56,-800),(1149,57,-800),(1149,58,-800),(1149,59,-800),(1149,60,-800),(1149,61,-800),(1149,62,-800),(1149,178,-800),(1149,180,-800),(1149,661,-800),(1149,1106,-800),(1166,51,-1000),(1166,52,-1000),(1166,53,-1000),(1166,54,-1000),(1166,55,-1000),(1166,56,-1000),(1166,57,-1000),(1166,58,-1000),(1166,59,-1000),(1166,60,-1000),(1166,61,-1000),(1166,62,-1000),(1166,178,-1000),(1166,180,-1000),(1166,661,-1000),(1166,1106,-1000),(1169,51,-100),(1169,52,-100),(1169,53,-100),(1169,54,-100),(1169,55,-100),(1169,56,-100),(1169,57,-100),(1169,58,-100),(1169,59,-100),(1169,60,-100),(1169,61,-100),(1169,62,-100),(1169,178,-100),(1169,180,-100),(1169,661,-100),(1169,1106,-100),(1170,51,-100),(1170,52,-100),(1170,53,-100),(1170,54,-100),(1170,55,-100),(1170,56,-100),(1170,57,-100),(1170,58,-100),(1170,59,-100),(1170,60,-100),(1170,61,-100),(1170,62,-100),(1170,178,-100),(1170,180,-100),(1170,661,-100),(1170,1106,-100),(1175,51,-1000),(1175,52,-1000),(1175,53,-1000),(1175,54,-1000),(1175,55,-1000),(1175,56,-1000),(1175,57,-1000),(1175,58,-1000),(1175,59,-1000),(1175,60,-1000),(1175,61,-1000),(1175,62,-1000),(1175,178,-1000),(1175,180,-1000),(1175,661,-1000),(1175,1106,-1000),(1176,51,-1000),(1176,52,-1000),(1176,53,-1000),(1176,54,-1000),(1176,55,-1000),(1176,56,-1000),(1176,57,-1000),(1176,58,-1000),(1176,59,-1000),(1176,60,-1000),(1176,61,-1000),(1176,62,-1000),(1176,178,-1000),(1176,180,-1000),(1176,661,-1000),(1176,1106,-1000),(1181,51,-1000),(1181,52,-1000),(1181,53,-1000),(1181,54,-1000),(1181,55,-1000),(1181,56,-1000),(1181,57,-1000),(1181,58,-1000),(1181,59,-1000),(1181,60,-1000),(1181,61,-1000),(1181,62,-1000),(1181,178,-1000),(1181,180,-1000),(1181,661,-1000),(1181,1106,-1000),(1182,51,-1000),(1182,52,-1000),(1182,53,-1000),(1182,54,-1000),(1182,55,-1000),(1182,56,-1000),(1182,57,-1000),(1182,58,-1000),(1182,59,-1000),(1182,60,-1000),(1182,61,-1000),(1182,62,-1000),(1182,178,-1000),(1182,180,-1000),(1182,661,-1000),(1182,1106,-1000),(1183,51,-500),(1183,52,-500),(1183,53,-500),(1183,54,-500),(1183,55,-500),(1183,56,-500),(1183,57,-500),(1183,58,-500),(1183,59,-500),(1183,60,-500),(1183,61,-500),(1183,62,-500),(1183,178,-500),(1183,180,-500),(1183,661,-500),(1183,1106,-500),(1184,51,-500),(1184,52,-500),(1184,53,-500),(1184,54,-500),(1184,55,-500),(1184,56,-500),(1184,57,-500),(1184,58,-500),(1184,59,-500),(1184,60,-500),(1184,61,-500),(1184,62,-500),(1184,178,-500),(1184,180,-500),(1184,661,-500),(1184,1106,-500),(1185,51,-500),(1185,52,-500),(1185,53,-500),(1185,54,-500),(1185,55,-500),(1185,56,-500),(1185,57,-500),(1185,58,-500),(1185,59,-500),(1185,60,-500),(1185,61,-500),(1185,62,-500),(1185,178,-500),(1185,180,-500),(1185,661,-500),(1185,1106,-500),(1186,51,-1000),(1186,52,-1000),(1186,53,-1000),(1186,54,-1000),(1186,55,-1000),(1186,56,-1000),(1186,57,-1000),(1186,58,-1000),(1186,59,-1000),(1186,60,-1000),(1186,61,-1000),(1186,62,-1000),(1186,178,-1000),(1186,180,-1000),(1186,661,-1000),(1186,1106,-1000),(1188,51,-500),(1188,52,-500),(1188,53,-500),(1188,54,-500),(1188,55,-500),(1188,56,-500),(1188,57,-500),(1188,58,-500),(1188,59,-500),(1188,60,-500),(1188,61,-500),(1188,62,-500),(1188,178,-500),(1188,180,-500),(1188,661,-500),(1188,1106,-500),(1189,51,-500),(1189,52,-500),(1189,53,-500),(1189,54,-500),(1189,55,-500),(1189,56,-500),(1189,57,-500),(1189,58,-500),(1189,59,-500),(1189,60,-500),(1189,61,-500),(1189,62,-500),(1189,178,-500),(1189,180,-500),(1189,661,-500),(1189,1106,-500),(1190,51,-500),(1190,52,-500),(1190,53,-500),(1190,54,-500),(1190,55,-500),(1190,56,-500),(1190,57,-500),(1190,58,-500),(1190,59,-500),(1190,60,-500),(1190,61,-500),(1190,62,-500),(1190,178,-500),(1190,180,-500),(1190,661,-500),(1190,1106,-500),(1191,51,-500),(1191,52,-500),(1191,53,-500),(1191,54,-500),(1191,55,-500),(1191,56,-500),(1191,57,-500),(1191,58,-500),(1191,59,-500),(1191,60,-500),(1191,61,-500),(1191,62,-500),(1191,178,-500),(1191,180,-500),(1191,661,-500),(1191,1106,-500),(1192,51,-1000),(1192,52,-1000),(1192,53,-1000),(1192,54,-1000),(1192,55,-1000),(1192,56,-1000),(1192,57,-1000),(1192,58,-1000),(1192,59,-1000),(1192,60,-1000),(1192,61,-1000),(1192,62,-1000),(1192,178,-1000),(1192,180,-1000),(1192,661,-1000),(1192,1106,-1000),(1193,51,-1000),(1193,52,-1000),(1193,53,-1000),(1193,54,-1000),(1193,55,-1000),(1193,56,-1000),(1193,57,-1000),(1193,58,-1000),(1193,59,-1000),(1193,60,-1000),(1193,61,-1000),(1193,62,-1000),(1193,178,-1000),(1193,180,-1000),(1193,661,-1000),(1193,1106,-1000),(1194,51,-1000),(1194,52,-1000),(1194,53,-1000),(1194,54,-1000),(1194,55,-1000),(1194,56,-1000),(1194,57,-1000),(1194,58,-1000),(1194,59,-1000),(1194,60,-1000),(1194,61,-1000),(1194,62,-1000),(1194,178,-1000),(1194,180,-1000),(1194,661,-1000),(1194,1106,-1000),(1195,51,-1000),(1195,52,-1000),(1195,53,-1000),(1195,54,-1000),(1195,55,-1000),(1195,56,-1000),(1195,57,-1000),(1195,58,-1000),(1195,59,-1000),(1195,60,-1000),(1195,61,-1000),(1195,62,-1000),(1195,178,-1000),(1195,180,-1000),(1195,661,-1000),(1195,1106,-1000),(1196,51,-1000),(1196,52,-1000),(1196,53,-1000),(1196,54,-1000),(1196,55,-1000),(1196,56,-1000),(1196,57,-1000),(1196,58,-1000),(1196,59,-1000),(1196,60,-1000),(1196,61,-1000),(1196,62,-1000),(1196,178,-1000),(1196,180,-1000),(1196,661,-1000),(1196,1106,-1000),(1197,51,-1000),(1197,52,-1000),(1197,53,-1000),(1197,54,-1000),(1197,55,-1000),(1197,56,-1000),(1197,57,-1000),(1197,58,-1000),(1197,59,-1000),(1197,60,-1000),(1197,61,-1000),(1197,62,-1000),(1197,178,-1000),(1197,180,-1000),(1197,661,-1000),(1197,1106,-1000),(1198,51,-1000),(1198,52,-1000),(1198,53,-1000),(1198,54,-1000),(1198,55,-1000),(1198,56,-1000),(1198,57,-1000),(1198,58,-1000),(1198,59,-1000),(1198,60,-1000),(1198,61,-1000),(1198,62,-1000),(1198,178,-1000),(1198,180,-1000),(1198,661,-1000),(1198,1106,-1000),(1199,51,-100),(1199,52,-100),(1199,53,-100),(1199,54,-100),(1199,55,-100),(1199,56,-100),(1199,57,-100),(1199,58,-100),(1199,59,-100),(1199,60,-100),(1199,61,-100),(1199,62,-100),(1199,178,-100),(1199,180,-100),(1199,661,-100),(1199,1106,-100),(1200,51,-100),(1200,52,-100),(1200,53,-100),(1200,54,-100),(1200,55,-100),(1200,56,-100),(1200,57,-100),(1200,58,-100),(1200,59,-100),(1200,60,-100),(1200,61,-100),(1200,62,-100),(1200,178,-100),(1200,180,-100),(1200,661,-100),(1200,1106,-100),(1201,51,-1000),(1201,52,-1000),(1201,53,-1000),(1201,54,-1000),(1201,55,-1000),(1201,56,-1000),(1201,57,-1000),(1201,58,-1000),(1201,59,-1000),(1201,60,-1000),(1201,61,-1000),(1201,62,-1000),(1201,178,-1000),(1201,180,-1000),(1201,661,-1000),(1201,1106,-1000),(1202,51,-1000),(1202,52,-1000),(1202,53,-1000),(1202,54,-1000),(1202,55,-1000),(1202,56,-1000),(1202,57,-1000),(1202,58,-1000),(1202,59,-1000),(1202,60,-1000),(1202,61,-1000),(1202,62,-1000),(1202,178,-1000),(1202,180,-1000),(1202,661,-1000),(1202,1106,-1000),(1203,51,-300),(1203,52,-300),(1203,53,-300),(1203,54,-300),(1203,55,-300),(1203,56,-300),(1203,57,-300),(1203,58,-300),(1203,59,-300),(1203,60,-300),(1203,61,-300),(1203,62,-300),(1203,178,-300),(1203,180,-300),(1203,661,-300),(1203,1106,-300),(1204,51,-300),(1204,52,-300),(1204,53,-300),(1204,54,-300),(1204,55,-300),(1204,56,-300),(1204,57,-300),(1204,58,-300),(1204,59,-300),(1204,60,-300),(1204,61,-300),(1204,62,-300),(1204,178,-300),(1204,180,-300),(1204,661,-300),(1204,1106,-300),(1205,51,-300),(1205,52,-300),(1205,53,-300),(1205,54,-300),(1205,55,-300),(1205,56,-300),(1205,57,-300),(1205,58,-300),(1205,59,-300),(1205,60,-300),(1205,61,-300),(1205,62,-300),(1205,178,-300),(1205,180,-300),(1205,661,-300),(1205,1106,-300),(1209,51,-500),(1209,52,-500),(1209,53,-500),(1209,54,-500),(1209,55,-500),(1209,56,-500),(1209,57,-500),(1209,58,-500),(1209,59,-500),(1209,60,-500),(1209,61,-500),(1209,62,-500),(1209,178,-500),(1209,180,-500),(1209,661,-500),(1209,1106,-500),(1210,51,-1000),(1210,52,-1000),(1210,53,-1000),(1210,54,-1000),(1210,55,-1000),(1210,56,-1000),(1210,57,-1000),(1210,58,-1000),(1210,59,-1000),(1210,60,-1000),(1210,61,-1000),(1210,62,-1000),(1210,178,-1000),(1210,180,-1000),(1210,661,-1000),(1210,1106,-1000),(1211,51,100),(1211,52,100),(1211,53,100),(1211,54,100),(1211,55,100),(1211,56,100),(1211,57,100),(1211,58,100),(1211,59,100),(1211,60,100),(1211,61,100),(1211,62,100),(1211,178,100),(1211,180,100),(1211,661,100),(1211,1106,100),(1212,51,-100),(1212,52,-100),(1212,53,-100),(1212,54,-100),(1212,55,-100),(1212,56,-100),(1212,57,-100),(1212,58,-100),(1212,59,-100),(1212,60,-100),(1212,61,-100),(1212,62,-100),(1212,178,-100),(1212,180,-100),(1212,661,-100),(1212,1106,-100),(1213,51,-1000),(1213,52,-1000),(1213,53,-1000),(1213,54,-1000),(1213,55,-1000),(1213,56,-1000),(1213,57,-1000),(1213,58,-1000),(1213,59,-1000),(1213,60,-1000),(1213,61,-1000),(1213,62,-1000),(1213,178,-1000),(1213,180,-1000),(1213,661,-1000),(1213,1106,-1000),(1216,51,-1000),(1216,52,-1000),(1216,53,-1000),(1216,54,-1000),(1216,55,-1000),(1216,56,-1000),(1216,57,-1000),(1216,58,-1000),(1216,59,-1000),(1216,60,-1000),(1216,61,-1000),(1216,62,-1000),(1216,178,-1000),(1216,180,-1000),(1216,661,-1000),(1216,1106,-1000),(1220,51,-1000),(1220,52,-1000),(1220,53,-1000),(1220,54,-1000),(1220,55,-1000),(1220,56,-1000),(1220,57,-1000),(1220,58,-1000),(1220,59,-1000),(1220,60,-1000),(1220,61,-1000),(1220,62,-1000),(1220,178,-1000),(1220,180,-1000),(1220,661,-1000),(1220,1106,-1000),(1222,51,-500),(1222,52,-500),(1222,53,-500),(1222,54,-500),(1222,55,-500),(1222,56,-500),(1222,57,-500),(1222,58,-500),(1222,59,-500),(1222,60,-500),(1222,61,-500),(1222,62,-500),(1222,178,-500),(1222,180,-500),(1222,661,-500),(1222,1106,-500),(1223,51,-500),(1223,52,-500),(1223,53,-500),(1223,54,-500),(1223,55,-500),(1223,56,-500),(1223,57,-500),(1223,58,-500),(1223,59,-500),(1223,60,-500),(1223,61,-500),(1223,62,-500),(1223,178,-500),(1223,180,-500),(1223,661,-500),(1223,1106,-500),(1224,51,-500),(1224,52,-500),(1224,53,-500),(1224,54,-500),(1224,55,-500),(1224,56,-500),(1224,57,-500),(1224,58,-500),(1224,59,-500),(1224,60,-500),(1224,61,-500),(1224,62,-500),(1224,178,-500),(1224,180,-500),(1224,661,-500),(1224,1106,-500),(1225,51,-500),(1225,52,-500),(1225,53,-500),(1225,54,-500),(1225,55,-500),(1225,56,-500),(1225,57,-500),(1225,58,-500),(1225,59,-500),(1225,60,-500),(1225,61,-500),(1225,62,-500),(1225,178,-500),(1225,180,-500),(1225,661,-500),(1225,1106,-500),(1226,51,-500),(1226,52,-500),(1226,53,-500),(1226,54,-500),(1226,55,-500),(1226,56,-500),(1226,57,-500),(1226,58,-500),(1226,59,-500),(1226,60,-500),(1226,61,-500),(1226,62,-500),(1226,178,-500),(1226,180,-500),(1226,661,-500),(1226,1106,-500),(1227,51,-500),(1227,52,-500),(1227,53,-500),(1227,54,-500),(1227,55,-500),(1227,56,-500),(1227,57,-500),(1227,58,-500),(1227,59,-500),(1227,60,-500),(1227,61,-500),(1227,62,-500),(1227,178,-500),(1227,180,-500),(1227,661,-500),(1227,1106,-500),(1229,51,-1000),(1229,52,-1000),(1229,53,-1000),(1229,54,-1000),(1229,55,-1000),(1229,56,-1000),(1229,57,-1000),(1229,58,-1000),(1229,59,-1000),(1229,60,-1000),(1229,61,-1000),(1229,62,-1000),(1229,178,-1000),(1229,180,-1000),(1229,661,-1000),(1229,1106,-1000),(1230,51,-1000),(1230,52,-1000),(1230,53,-1000),(1230,54,-1000),(1230,55,-1000),(1230,56,-1000),(1230,57,-1000),(1230,58,-1000),(1230,59,-1000),(1230,60,-1000),(1230,61,-1000),(1230,62,-1000),(1230,178,-1000),(1230,180,-1000),(1230,661,-1000),(1230,1106,-1000),(1232,51,1),(1232,52,1),(1232,53,1),(1232,54,1),(1232,55,1),(1232,56,1),(1232,57,1),(1232,58,1),(1232,59,1),(1232,60,1),(1232,61,1),(1232,62,1),(1232,178,1),(1232,180,1),(1232,661,1),(1232,1106,1),(1233,51,-1000),(1233,52,-1000),(1233,53,-1000),(1233,54,-1000),(1233,55,-1000),(1233,56,-1000),(1233,57,-1000),(1233,58,-1000),(1233,59,-1000),(1233,60,-1000),(1233,61,-1000),(1233,62,-1000),(1233,178,-1000),(1233,180,-1000),(1233,661,-1000),(1233,1106,-1000),(1234,51,1),(1234,52,1),(1234,53,1),(1234,54,1),(1234,55,1),(1234,56,1),(1234,57,1),(1234,58,1),(1234,59,1),(1234,60,1),(1234,61,1),(1234,62,1),(1234,178,1),(1234,180,1),(1234,661,1),(1234,1106,1),(1235,51,-2000),(1235,52,-2000),(1235,53,-2000),(1235,54,-2000),(1235,55,-2000),(1235,56,-2000),(1235,57,-2000),(1235,58,-2000),(1235,59,-2000),(1235,60,-2000),(1235,61,-2000),(1235,62,-2000),(1235,178,-2000),(1235,180,-2000),(1235,661,-2000),(1235,1106,-2000),(1237,51,-2000),(1237,52,-2000),(1237,53,-2000),(1237,54,-2000),(1237,55,-2000),(1237,56,-2000),(1237,57,-2000),(1237,58,-2000),(1237,59,-2000),(1237,60,-2000),(1237,61,-2000),(1237,62,-2000),(1237,178,-2000),(1237,180,-2000),(1237,661,-2000),(1237,1106,-2000),(1238,51,-100),(1238,52,-100),(1238,53,-100),(1238,54,-100),(1238,55,-100),(1238,56,-100),(1238,57,-100),(1238,58,-100),(1238,59,-100),(1238,60,-100),(1238,61,-100),(1238,62,-100),(1238,178,-100),(1238,180,-100),(1238,661,-100),(1238,1106,-100),(1241,51,-750),(1241,52,-750),(1241,53,-750),(1241,54,-750),(1241,55,-750),(1241,56,-750),(1241,57,-750),(1241,58,-750),(1241,59,-750),(1241,60,-750),(1241,61,-750),(1241,62,-750),(1241,178,-750),(1241,180,-750),(1241,661,-750),(1241,1106,-750),(1242,51,-500),(1242,52,-500),(1242,53,-500),(1242,54,-500),(1242,55,-500),(1242,56,-500),(1242,57,-500),(1242,58,-500),(1242,59,-500),(1242,60,-500),(1242,61,-500),(1242,62,-500),(1242,178,-500),(1242,180,-500),(1242,661,-500),(1242,1106,-500),(1243,51,-2000),(1243,52,-2000),(1243,53,-2000),(1243,54,-2000),(1243,55,-2000),(1243,56,-2000),(1243,57,-2000),(1243,58,-2000),(1243,59,-2000),(1243,60,-2000),(1243,61,-2000),(1243,62,-2000),(1243,178,-2000),(1243,180,-2000),(1243,661,-2000),(1243,1106,-2000),(1244,51,-50),(1244,52,-50),(1244,53,-50),(1244,54,-50),(1244,55,-50),(1244,56,-50),(1244,57,-50),(1244,58,-50),(1244,59,-50),(1244,60,-50),(1244,61,-50),(1244,62,-50),(1244,178,-50),(1244,180,-50),(1244,661,-50),(1244,1106,-50),(1483,5,-800),(1483,11,-800),(1483,51,-1000),(1483,52,-1000),(1483,53,-1000),(1483,54,-1000),(1483,55,-1000),(1483,56,-1000),(1483,57,-1000),(1483,58,-1000),(1483,59,-1000),(1483,60,-1000),(1483,61,-1000),(1483,62,-1000),(1483,178,-1000),(1483,180,-1000),(1483,201,-800),(1483,203,-800),(1483,206,-800),(1483,661,-1000),(1483,1106,-1000),(1484,5,-800),(1484,11,-800),(1484,56,-800),(1484,59,-800),(1484,60,-800),(1484,178,-800),(1484,201,-800),(1484,203,-800),(1484,206,-800),(1485,5,-800),(1485,11,-800),(1485,51,-400),(1485,52,-400),(1485,53,-400),(1485,54,-400),(1485,55,-400),(1485,56,-800),(1485,57,-400),(1485,58,-400),(1485,59,-800),(1485,60,-800),(1485,61,-400),(1485,62,-400),(1485,178,-800),(1485,661,-400),(1485,1106,-400),(1486,5,-800),(1486,11,-800),(1486,51,-250),(1486,52,-250),(1486,53,-250),(1486,54,-250),(1486,55,-250),(1486,56,-800),(1486,57,-250),(1486,58,-250),(1486,59,-800),(1486,60,-800),(1486,61,-250),(1486,62,-250),(1486,178,-800),(1486,661,-250),(1486,1106,-250),(1487,5,-800),(1487,11,-800),(1487,56,-800),(1487,59,-800),(1487,60,-800),(1487,178,-800),(1490,51,-1000),(1490,52,-1000),(1490,53,-1000),(1490,54,-1000),(1490,55,-1000),(1490,56,-1000),(1490,57,-1000),(1490,58,-1000),(1490,59,-1000),(1490,60,-1000),(1490,61,-1000),(1490,62,-1000),(1490,178,-1000),(1490,180,-1000),(1490,661,-1000),(1490,1106,-1000),(1491,51,-1000),(1491,52,-1000),(1491,53,-1000),(1491,54,-1000),(1491,55,-1000),(1491,56,-1000),(1491,57,-1000),(1491,58,-1000),(1491,59,-1000),(1491,60,-1000),(1491,61,-1000),(1491,62,-1000),(1491,178,-1000),(1491,180,-1000),(1491,661,-1000),(1491,1106,-1000),(1500,51,-250),(1500,52,-250),(1500,53,-250),(1500,54,-250),(1500,55,-250),(1500,56,-250),(1500,57,-250),(1500,58,-250),(1500,59,-250),(1500,60,-250),(1500,61,-250),(1500,62,-250),(1500,178,-250),(1500,180,-250),(1500,661,-250),(1500,1106,-250),(1501,3,-800),(1501,51,-550),(1501,52,-550),(1501,53,-550),(1501,54,-550),(1501,55,-550),(1501,56,-550),(1501,57,-550),(1501,58,-550),(1501,59,-550),(1501,60,-550),(1501,61,-550),(1501,62,-550),(1501,178,-550),(1501,180,-550),(1501,661,-550),(1501,1106,-550),(1502,5,-550),(1502,11,-550),(1502,56,-400),(1502,59,-400),(1502,60,-400),(1502,178,-400),(1502,201,-550),(1502,203,-550),(1502,206,-550),(1503,5,-550),(1503,11,-550),(1503,56,-400),(1503,59,-400),(1503,60,-400),(1503,178,-400),(1503,201,-550),(1503,203,-550),(1503,206,-550),(1504,5,-550),(1504,11,-550),(1504,56,-400),(1504,59,-400),(1504,60,-400),(1504,178,-400),(1504,201,-550),(1504,203,-550),(1504,206,-550),(1505,1,-200),(1505,2,-400),(1505,3,-400),(1505,4,-200),(1505,5,-200),(1505,6,-200),(1505,7,-200),(1505,8,-200),(1505,9,-200),(1505,10,-200),(1505,11,-200),(1505,12,-200),(1505,13,-200),(1505,14,-200),(1505,15,-200),(1505,16,-200),(1506,1,-800),(1506,2,-800),(1506,3,-800),(1506,4,-800),(1506,5,-500),(1506,6,-800),(1506,7,-800),(1506,8,-800),(1506,9,-800),(1506,10,-800),(1506,11,-500),(1506,12,-800),(1506,13,-800),(1506,14,-800),(1506,15,-800),(1506,16,-800),(1507,1,-800),(1507,2,-800),(1507,3,-800),(1507,4,-800),(1507,5,-500),(1507,6,-800),(1507,7,-800),(1507,8,-800),(1507,9,-800),(1507,10,-800),(1507,11,-500),(1507,12,-800),(1507,13,-800),(1507,14,-800),(1507,15,-800),(1507,16,-800),(1508,51,-50),(1508,52,-50),(1508,53,-50),(1508,54,-50),(1508,55,-50),(1508,56,-100),(1508,57,-50),(1508,58,-50),(1508,59,-100),(1508,60,-100),(1508,61,-50),(1508,62,-50),(1508,178,-100),(1508,180,-50),(1508,661,-50),(1508,1106,-50),(1509,51,-50),(1509,52,-50),(1509,53,-50),(1509,54,-50),(1509,55,-50),(1509,56,-50),(1509,57,-50),(1509,58,-50),(1509,59,-50),(1509,60,-50),(1509,61,-50),(1509,62,-50),(1509,178,-50),(1509,180,-50),(1509,661,-50),(1509,1106,-50),(1510,51,-99),(1510,52,-200),(1510,53,-200),(1510,54,-200),(1510,55,-200),(1510,56,-250),(1510,57,-200),(1510,58,-200),(1510,59,-250),(1510,60,-250),(1510,61,-200),(1510,62,-200),(1510,178,-250),(1510,180,-200),(1510,661,-99),(1510,1106,-99),(1511,7,101),(1511,12,101),(1511,13,101),(1511,14,101),(1511,51,-200),(1511,52,-200),(1511,53,-200),(1511,54,-200),(1511,55,-200),(1511,56,-250),(1511,57,-200),(1511,58,-200),(1511,59,-250),(1511,60,-250),(1511,61,-200),(1511,62,-200),(1511,178,-250),(1511,180,-200),(1511,661,-200),(1511,1106,-200),(1512,51,-200),(1512,52,-200),(1512,53,-200),(1512,54,-200),(1512,55,-200),(1512,56,-250),(1512,57,-200),(1512,58,-99),(1512,59,-250),(1512,60,-250),(1512,61,-99),(1512,62,-99),(1512,178,-250),(1512,180,-200),(1512,661,-200),(1512,1106,-200),(1513,180,1000),(1516,51,-1000),(1516,52,-1000),(1516,53,-1000),(1516,54,-1000),(1516,55,-1000),(1516,56,-1000),(1516,57,-1000),(1516,58,-1000),(1516,59,-1000),(1516,60,-1000),(1516,61,-1000),(1516,62,-1000),(1516,178,-1000),(1516,180,-1000),(1516,661,-1000),(1516,1106,-1000),(1519,51,-1000),(1519,52,-1000),(1519,53,-1000),(1519,54,-1000),(1519,55,-1000),(1519,56,-1000),(1519,57,-1000),(1519,58,-1000),(1519,59,-1000),(1519,60,-1000),(1519,61,-1000),(1519,62,-1000),(1519,178,-1000),(1519,180,-1000),(1519,661,-1000),(1519,1106,-1000),(1520,51,-100),(1520,52,-100),(1520,53,-100),(1520,54,-100),(1520,55,-100),(1520,56,-100),(1520,57,-100),(1520,58,-100),(1520,59,-100),(1520,60,-100),(1520,61,-100),(1520,62,-100),(1520,178,-100),(1520,180,-100),(1520,661,-100),(1520,1106,-100),(1521,51,-2000),(1521,52,-2000),(1521,53,-2000),(1521,54,-2000),(1521,55,-2000),(1521,56,-2000),(1521,57,-2000),(1521,58,-2000),(1521,59,-2000),(1521,60,-2000),(1521,61,-2000),(1521,62,-2000),(1521,178,-2000),(1521,180,-2000),(1521,201,-2000),(1521,202,-2000),(1521,203,-2000),(1521,204,-2000),(1521,205,-2000),(1521,206,-2000),(1521,207,-2000),(1521,208,-2000),(1521,209,-2000),(1521,210,-2000),(1521,211,-2000),(1521,212,-2000),(1521,213,-2000),(1521,214,-2000),(1521,215,-2000),(1521,216,-2000),(1521,661,-2000),(1521,1106,-2000),(1522,1,-50),(1522,2,-50),(1522,3,-800),(1522,4,-800),(1522,5,-50),(1522,6,-800),(1522,7,-800),(1522,8,-50),(1522,9,-50),(1522,10,-50),(1522,11,-50),(1522,12,-50),(1522,13,-50),(1522,14,-50),(1522,15,-50),(1522,16,-50),(1522,51,-50),(1522,52,-50),(1522,53,-50),(1522,54,-800),(1522,55,-800),(1522,56,-50),(1522,57,-50),(1522,58,-800),(1522,59,-50),(1522,60,-50),(1522,61,-800),(1522,62,-50),(1522,178,-50),(1522,180,-50),(1522,201,-50),(1522,202,-800),(1522,203,-50),(1522,204,-800),(1522,205,-50),(1522,206,-50),(1522,207,-800),(1522,208,-800),(1522,209,-800),(1522,210,-800),(1522,211,-50),(1522,212,-800),(1522,213,-50),(1522,214,-800),(1522,215,-800),(1522,216,-50),(1522,661,-50),(1522,1106,-50),(1524,5,-550),(1524,11,-550),(1524,56,-400),(1524,59,-400),(1524,60,-400),(1524,178,-400),(1524,201,-550),(1524,203,-550),(1524,206,-550),(1525,1,-800),(1525,2,-800),(1525,3,-800),(1525,4,-800),(1525,5,-500),(1525,6,-800),(1525,7,-800),(1525,8,-800),(1525,9,-800),(1525,10,-800),(1525,11,-500),(1525,12,-800),(1525,13,-800),(1525,14,-800),(1525,15,-800),(1525,16,-800),(1527,51,-1000),(1527,52,-1000),(1527,53,-1000),(1527,54,-1000),(1527,55,-1000),(1527,56,-1000),(1527,57,-1000),(1527,58,-1000),(1527,59,-1000),(1527,60,-1000),(1527,61,-1000),(1527,62,-1000),(1527,178,-1000),(1527,180,-1000),(1527,661,-1000),(1527,1106,-1000),(1528,51,-1000),(1528,52,-1000),(1528,53,-1000),(1528,54,-1000),(1528,55,-1000),(1528,56,-1000),(1528,57,-1000),(1528,58,-1000),(1528,59,-1000),(1528,60,-1000),(1528,61,-1000),(1528,62,-1000),(1528,178,-1000),(1528,180,-1000),(1528,661,-1000),(1528,1106,-1000),(1529,1,750),(1530,9,750),(1531,8,750),(1532,15,750),(1533,10,750),(1535,51,-1000),(1535,52,-1000),(1535,53,-1000),(1535,54,-1000),(1535,55,-1000),(1535,56,-1000),(1535,57,-1000),(1535,58,-1000),(1535,59,-1000),(1535,60,-1000),(1535,61,-1000),(1535,62,-1000),(1535,178,-1000),(1535,180,-1000),(1535,661,-1000),(1535,1106,-1000),(1537,51,-1),(1537,52,-1),(1537,53,-1),(1537,54,-1),(1537,55,-1),(1537,56,-1),(1537,57,-1),(1537,58,-1),(1537,59,-1),(1537,60,-1),(1537,61,-1),(1537,62,-1),(1537,178,1101),(1537,180,-1),(1537,661,-1),(1537,1106,-1),(1538,5,-450),(1538,11,-450),(1541,54,-450),(1541,56,-450),(1541,59,-450),(1541,60,-450),(1541,178,-450),(1542,1,350),(1542,5,350),(1542,8,450),(1542,9,550),(1542,11,350),(1542,16,350),(1542,51,-350),(1542,52,-350),(1542,53,-350),(1542,54,-350),(1542,55,-350),(1542,56,-99),(1542,57,-350),(1542,58,-350),(1542,59,-99),(1542,60,-99),(1542,61,-350),(1542,62,-350),(1542,178,-99),(1542,180,-350),(1542,201,300),(1542,203,300),(1542,206,300),(1542,661,-350),(1542,1106,-350),(1543,216,450),(1544,202,450),(1545,213,450),(1546,209,450),(1547,51,-250),(1547,52,-250),(1547,53,-250),(1547,54,-250),(1547,55,-250),(1547,56,-250),(1547,57,-250),(1547,58,-250),(1547,59,-250),(1547,60,-250),(1547,61,-250),(1547,62,-250),(1547,178,-250),(1547,180,-250),(1547,661,-250),(1547,1106,-250),(1552,180,250),(1555,51,-550),(1555,52,-550),(1555,53,-550),(1555,54,-550),(1555,55,-550),(1555,56,-550),(1555,57,-550),(1555,58,-550),(1555,59,-550),(1555,60,-550),(1555,61,-550),(1555,62,-550),(1555,178,-550),(1555,180,-550),(1555,661,-550),(1555,1106,-550),(1556,51,-400),(1556,52,-400),(1556,53,-400),(1556,54,-400),(1556,55,-400),(1556,56,-400),(1556,57,-400),(1556,58,-400),(1556,59,-400),(1556,60,-400),(1556,61,-400),(1556,62,-400),(1556,178,-400),(1556,180,-400),(1556,661,-400),(1556,1106,-400),(1559,1,-800),(1559,2,-800),(1559,3,-800),(1559,4,-800),(1559,5,-800),(1559,6,-800),(1559,7,-800),(1559,8,-450),(1559,9,-50),(1559,10,-800),(1559,11,-800),(1559,12,-800),(1559,13,-800),(1559,14,-800),(1559,15,-800),(1559,16,-800),(1561,5,-550),(1561,11,-550),(1561,56,-400),(1561,59,-400),(1561,60,-400),(1561,178,-400),(1561,201,-550),(1561,203,-550),(1561,206,-550),(1562,51,-1000),(1562,52,-1000),(1562,53,-1000),(1562,54,-1000),(1562,55,-1000),(1562,56,-1000),(1562,57,-1000),(1562,58,-1000),(1562,59,-1000),(1562,60,-1000),(1562,61,-1000),(1562,62,-1000),(1562,178,-1000),(1562,180,-1000),(1562,661,-1000),(1562,1106,-1000),(1563,51,-99),(1563,52,-99),(1563,53,-99),(1563,54,-99),(1563,55,-99),(1563,56,-99),(1563,57,-99),(1563,58,-99),(1563,59,-99),(1563,60,-99),(1563,61,-99),(1563,62,-99),(1563,178,-99),(1563,180,-99),(1563,661,-99),(1563,1106,-99),(1564,51,-1000),(1564,52,-1000),(1564,53,-1000),(1564,54,-1000),(1564,55,-1000),(1564,56,-1000),(1564,57,-1000),(1564,58,-1000),(1564,59,-1000),(1564,60,-1000),(1564,61,-1000),(1564,62,-1000),(1564,178,-1000),(1564,180,-1000),(1564,661,-1000),(1564,1106,-1000),(1565,51,-99),(1565,52,-99),(1565,53,-99),(1565,54,-99),(1565,55,-99),(1565,56,-99),(1565,57,-99),(1565,58,-99),(1565,59,-99),(1565,60,-99),(1565,61,-99),(1565,62,-99),(1565,178,-99),(1565,180,-99),(1565,661,-99),(1565,1106,-99),(1568,51,-1000),(1568,52,-1000),(1568,53,-1000),(1568,54,-1000),(1568,55,-1000),(1568,56,-1000),(1568,57,-1000),(1568,58,-1000),(1568,59,-1000),(1568,60,-1000),(1568,61,-1000),(1568,62,-1000),(1568,178,-1000),(1568,180,-1000),(1568,661,-1000),(1568,1106,-1000),(1570,5,350),(1570,11,350),(1570,51,-800),(1570,52,-800),(1570,53,-800),(1570,54,-800),(1570,55,-800),(1570,56,-800),(1570,57,-800),(1570,58,-800),(1570,59,-800),(1570,60,-800),(1570,61,-800),(1570,62,-800),(1570,178,-800),(1570,180,-800),(1570,661,-800),(1570,1106,-800),(1571,51,-1000),(1571,52,-1000),(1571,53,-1000),(1571,54,-1000),(1571,55,-1000),(1571,56,-1000),(1571,57,-1000),(1571,58,-1000),(1571,59,-1000),(1571,60,-1000),(1571,61,-1000),(1571,62,-1000),(1571,178,-1000),(1571,180,-1000),(1571,661,-1000),(1571,1106,-1000),(1573,51,-250),(1573,52,-250),(1573,53,-250),(1573,54,-250),(1573,55,-250),(1573,56,-250),(1573,57,-250),(1573,58,-250),(1573,59,-250),(1573,60,-250),(1573,61,-250),(1573,62,-250),(1573,178,-250),(1573,180,-250),(1573,661,-250),(1573,1106,-250),(1574,51,-800),(1574,52,-800),(1574,53,-800),(1574,54,-800),(1574,55,-800),(1574,56,-800),(1574,57,-800),(1574,58,-800),(1574,59,-800),(1574,60,-800),(1574,61,-800),(1574,62,-800),(1574,178,-800),(1574,180,-800),(1574,201,550),(1574,203,550),(1574,206,550),(1574,211,550),(1574,661,-800),(1574,1106,-800),(1582,1,-550),(1582,2,500),(1582,5,-550),(1582,6,200),(1582,7,-550),(1582,9,-550),(1582,10,200),(1582,11,-550),(1582,12,-550),(1582,13,-550),(1582,14,-550),(1582,16,-550),(1583,51,-800),(1583,52,-800),(1583,53,-800),(1583,54,-800),(1583,55,-800),(1583,56,-800),(1583,57,-800),(1583,58,-800),(1583,59,-800),(1583,60,-800),(1583,61,-800),(1583,62,-800),(1583,178,-800),(1583,180,-800),(1583,661,-800),(1583,1106,-800),(1584,180,751),(1587,51,-1000),(1587,52,-1000),(1587,53,-1000),(1587,54,-1000),(1587,55,-1000),(1587,56,-1000),(1587,57,-1000),(1587,58,-1000),(1587,59,-1000),(1587,60,-1000),(1587,61,-1000),(1587,62,-1000),(1587,178,-1000),(1587,180,-1000),(1587,661,-1000),(1587,1106,-1000),(1593,56,-450),(1593,59,-450),(1593,60,-450),(1593,178,-800),(1593,201,-1000),(1593,203,-1000),(1593,206,-1000),(1593,211,-450),(1597,52,-20),(1597,56,-350),(1597,59,-750),(1597,60,-750),(1597,178,-750),(1597,180,-50),(1597,201,-350),(1597,203,-350),(1597,206,-350),(1597,207,100),(1597,209,50),(1597,211,-80),(1597,215,50),(1598,51,-50),(1598,52,-50),(1598,53,-50),(1598,54,-50),(1598,55,-50),(1598,56,-50),(1598,57,-50),(1598,58,-50),(1598,59,-50),(1598,60,-50),(1598,61,-50),(1598,62,-50),(1598,178,-50),(1598,180,-50),(1598,202,100),(1598,661,-50),(1598,1106,-50),(1599,51,-1000),(1599,52,-1000),(1599,53,-1000),(1599,54,-1000),(1599,55,-1000),(1599,56,-1000),(1599,57,-1000),(1599,58,-1000),(1599,59,-1000),(1599,60,-1000),(1599,61,-1000),(1599,62,-1000),(1599,178,-1000),(1599,180,-1000),(1599,661,-1000),(1599,1106,-1000),(1600,51,-1000),(1600,52,-1000),(1600,53,-1000),(1600,54,-1000),(1600,55,-1000),(1600,56,-1000),(1600,57,-1000),(1600,58,-1000),(1600,59,-1000),(1600,60,-1000),(1600,61,-1000),(1600,62,-1000),(1600,178,-1000),(1600,180,-1000),(1600,661,-1000),(1600,1106,-1000),(1601,9,100),(1601,51,-475),(1601,52,-475),(1601,53,-475),(1601,54,-475),(1601,55,-475),(1601,56,-475),(1601,57,-475),(1601,58,-475),(1601,59,-475),(1601,60,-475),(1601,61,-475),(1601,62,-475),(1601,178,-475),(1601,180,-475),(1601,661,-475),(1601,1106,-475),(1603,51,-75),(1603,52,-75),(1603,53,-75),(1603,54,-75),(1603,55,-75),(1603,56,-75),(1603,57,-75),(1603,58,-75),(1603,59,-75),(1603,60,-75),(1603,61,-75),(1603,62,-75),(1603,178,-75),(1603,180,-75),(1603,201,-400),(1603,203,-400),(1603,206,-400),(1603,207,75),(1603,209,75),(1603,215,75),(1603,661,-75),(1603,1106,-75),(1605,51,50),(1605,52,50),(1605,53,50),(1605,54,50),(1605,55,50),(1605,56,50),(1605,57,50),(1605,58,50),(1605,59,50),(1605,60,50),(1605,61,50),(1605,62,50),(1605,178,50),(1605,180,50),(1605,661,50),(1605,1106,50),(1607,51,-1000),(1607,52,-1000),(1607,53,-1000),(1607,54,-1000),(1607,55,-1000),(1607,56,-1000),(1607,57,-1000),(1607,58,-1000),(1607,59,-1000),(1607,60,-1000),(1607,61,-1000),(1607,62,-1000),(1607,178,-1000),(1607,180,-1000),(1607,661,-1000),(1607,1106,-1000),(1609,207,200),(1610,51,-1000),(1610,52,-1000),(1610,53,-1000),(1610,54,-1000),(1610,55,-1000),(1610,56,-1000),(1610,57,-1000),(1610,58,-1000),(1610,59,-1000),(1610,60,-1000),(1610,61,-1000),(1610,62,-1000),(1610,178,-1000),(1610,180,-1000),(1610,661,-1000),(1610,1106,-1000),(1611,51,-1000),(1611,52,-1000),(1611,53,-1000),(1611,54,-1000),(1611,55,-1000),(1611,56,-1000),(1611,57,-1000),(1611,58,-1000),(1611,59,-1000),(1611,60,-1000),(1611,61,-1000),(1611,62,-1000),(1611,178,-1000),(1611,180,-1000),(1611,661,-1000),(1611,1106,-1000),(1612,51,-1000),(1612,52,-1000),(1612,53,-1000),(1612,54,-1000),(1612,55,-1000),(1612,56,-1000),(1612,57,-1000),(1612,58,-1000),(1612,59,-1000),(1612,60,-1000),(1612,61,-1000),(1612,62,-1000),(1612,178,-1000),(1612,180,-1000),(1612,661,-1000),(1612,1106,-1000),(1613,51,-1000),(1613,52,-1000),(1613,53,-1000),(1613,54,-1000),(1613,55,-1000),(1613,56,-1000),(1613,57,-1000),(1613,58,-1000),(1613,59,-1000),(1613,60,-1000),(1613,61,-1000),(1613,62,-1000),(1613,178,-1000),(1613,180,-1000),(1613,661,-1000),(1613,1106,-1000),(1618,51,-1000),(1618,52,-1000),(1618,53,-1000),(1618,54,-1000),(1618,55,-1000),(1618,56,-1000),(1618,57,-1000),(1618,58,-1000),(1618,59,-1000),(1618,60,-1000),(1618,61,-1000),(1618,62,-1000),(1618,178,-1000),(1618,180,-1000),(1618,661,-1000),(1618,1106,-1000),(1620,51,-250),(1620,52,-450),(1620,53,-250),(1620,55,-50),(1620,56,-500),(1620,57,-250),(1620,58,-250),(1620,59,-500),(1620,60,-500),(1620,61,-50),(1620,62,-250),(1620,178,-500),(1620,180,-250),(1620,661,-250),(1620,1106,-250),(1621,51,-1000),(1621,52,-1000),(1621,53,-1000),(1621,54,-1000),(1621,55,-1000),(1621,56,-1000),(1621,57,-1000),(1621,58,-1000),(1621,59,-1000),(1621,60,-1000),(1621,61,-1000),(1621,62,-1000),(1621,178,-1000),(1621,180,-1000),(1621,661,-1000),(1621,1106,-1000),(1622,51,-480),(1622,52,-480),(1622,53,-480),(1622,54,-480),(1622,55,-480),(1622,56,-480),(1622,57,-480),(1622,58,-480),(1622,59,-480),(1622,60,-480),(1622,61,-480),(1622,62,-480),(1622,178,-480),(1622,180,-480),(1622,661,-480),(1622,1106,-480),(1623,51,-1000),(1623,52,-1000),(1623,53,-1000),(1623,54,-1000),(1623,55,-1000),(1623,56,-1000),(1623,57,-1000),(1623,58,-1000),(1623,59,-1000),(1623,60,-1000),(1623,61,-1000),(1623,62,-1000),(1623,178,-1000),(1623,180,-1000),(1623,661,-1000),(1623,1106,-1000),(1624,51,-1000),(1624,52,-1000),(1624,53,-1000),(1624,54,-1000),(1624,55,-1000),(1624,56,-1000),(1624,57,-1000),(1624,58,-1000),(1624,59,-1000),(1624,60,-1000),(1624,61,-1000),(1624,62,-1000),(1624,178,-1000),(1624,180,-1000),(1624,661,-1000),(1624,1106,-1000),(1627,51,-95),(1627,52,-95),(1627,53,-95),(1627,54,-95),(1627,55,-95),(1627,56,-95),(1627,57,-95),(1627,58,-95),(1627,59,-95),(1627,60,-95),(1627,61,-95),(1627,62,-95),(1627,178,-95),(1627,180,-95),(1627,661,-95),(1627,1106,-95),(1628,51,-700),(1628,52,-700),(1628,53,-700),(1628,54,-700),(1628,55,-700),(1628,56,-700),(1628,57,-700),(1628,58,-700),(1628,59,-700),(1628,60,-700),(1628,61,-700),(1628,62,-700),(1628,178,-700),(1628,180,-700),(1628,661,-700),(1628,1106,-700),(1629,51,-1000),(1629,52,-1000),(1629,53,-1000),(1629,54,-1000),(1629,55,-1000),(1629,56,-1000),(1629,57,-1000),(1629,58,-1000),(1629,59,-1000),(1629,60,-1000),(1629,61,-1000),(1629,62,-1000),(1629,178,-1000),(1629,180,-1000),(1629,661,-1000),(1629,1106,-1000),(1630,1,-600),(1630,2,-600),(1630,3,-600),(1630,4,-600),(1630,5,-500),(1630,6,-600),(1630,7,-600),(1630,8,-600),(1630,9,-600),(1630,10,-600),(1630,11,-500),(1630,12,-600),(1630,13,-600),(1630,14,-600),(1630,15,-600),(1630,16,-600),(1630,213,100),(1633,51,-1000),(1633,52,-1000),(1633,53,-1000),(1633,54,-1000),(1633,55,-1000),(1633,56,-1000),(1633,57,-1000),(1633,58,-1000),(1633,59,-1000),(1633,60,-1000),(1633,61,-1000),(1633,62,-1000),(1633,178,-1000),(1633,180,-1000),(1633,661,-1000),(1633,1106,-1000),(1643,51,-1000),(1643,52,-1000),(1643,53,-1000),(1643,54,-1000),(1643,55,-1000),(1643,56,-1000),(1643,57,-1000),(1643,58,-1000),(1643,59,-1000),(1643,60,-1000),(1643,61,-1000),(1643,62,-1000),(1643,178,-1000),(1643,180,-1000),(1643,211,450),(1643,661,-1000),(1643,1106,-1000),(1659,51,-1000),(1659,52,-1000),(1659,53,-1000),(1659,54,-1000),(1659,55,-1000),(1659,56,-1000),(1659,57,-1000),(1659,58,-1000),(1659,59,-1000),(1659,60,-1000),(1659,61,-1000),(1659,62,-1000),(1659,178,-1000),(1659,180,-1000),(1659,661,-1000),(1659,1106,-1000),(1660,51,-1000),(1660,52,-1000),(1660,53,-1000),(1660,54,-1000),(1660,55,-1000),(1660,56,-1000),(1660,57,-1000),(1660,58,-1000),(1660,59,-1000),(1660,60,-1000),(1660,61,-1000),(1660,62,-1000),(1660,178,-1000),(1660,180,-1000),(1660,661,-1000),(1660,1106,-1000),(1665,51,-1000),(1665,52,-1000),(1665,53,-1000),(1665,54,-1000),(1665,55,-1000),(1665,56,-1000),(1665,57,-1000),(1665,58,-1000),(1665,59,-1000),(1665,60,-1000),(1665,61,-1000),(1665,62,-1000),(1665,178,-1000),(1665,180,-1000),(1665,201,-500),(1665,202,-500),(1665,203,-500),(1665,204,-500),(1665,205,-500),(1665,206,-500),(1665,207,-500),(1665,208,-500),(1665,209,-500),(1665,210,-500),(1665,211,-500),(1665,212,-500),(1665,213,-500),(1665,214,-500),(1665,215,-500),(1665,216,-500),(1665,661,-1000),(1665,1106,-1000),(1671,51,-400),(1671,52,-400),(1671,53,-400),(1671,54,-400),(1671,55,-400),(1671,56,-400),(1671,57,-400),(1671,58,-400),(1671,59,-400),(1671,60,-400),(1671,61,-400),(1671,62,-400),(1671,178,-400),(1671,180,-400),(1671,661,-400),(1671,1106,-400),(1674,51,-1000),(1674,52,-1000),(1674,53,-1000),(1674,54,-1000),(1674,55,-1000),(1674,56,-1000),(1674,57,-1000),(1674,58,-1000),(1674,59,-1000),(1674,60,-1000),(1674,61,-1000),(1674,62,-1000),(1674,178,-1000),(1674,180,-1000),(1674,661,-1000),(1674,1106,-1000),(1675,51,-1000),(1675,52,-1000),(1675,53,-1000),(1675,54,-1000),(1675,55,-1000),(1675,56,-1000),(1675,57,-1000),(1675,58,-1000),(1675,59,-1000),(1675,60,-1000),(1675,61,-1000),(1675,62,-1000),(1675,178,-1000),(1675,180,-1000),(1675,661,-1000),(1675,1106,-1000),(1676,51,-1000),(1676,52,-1000),(1676,53,-1000),(1676,54,-1000),(1676,55,-1000),(1676,56,-1000),(1676,57,-1000),(1676,58,-1000),(1676,59,-1000),(1676,60,-1000),(1676,61,-1000),(1676,62,-1000),(1676,178,-1000),(1676,180,-1000),(1676,661,-1000),(1676,1106,-1000),(1677,51,-100),(1677,52,-100),(1677,53,-100),(1677,54,-100),(1677,55,-100),(1677,56,-100),(1677,57,-100),(1677,58,-100),(1677,59,-100),(1677,60,-100),(1677,61,-100),(1677,62,-100),(1677,178,-100),(1677,180,-100),(1677,661,-100),(1677,1106,-100),(1679,51,-100),(1679,52,-100),(1679,53,-100),(1679,54,-100),(1679,55,-100),(1679,56,-100),(1679,57,-100),(1679,58,-100),(1679,59,-100),(1679,60,-100),(1679,61,-100),(1679,62,-100),(1679,178,-100),(1679,180,-100),(1679,661,-100),(1679,1106,-100),(1680,51,-300),(1680,52,-300),(1680,53,-300),(1680,54,-300),(1680,55,-300),(1680,56,-300),(1680,57,-300),(1680,58,-300),(1680,59,-300),(1680,60,-300),(1680,61,-300),(1680,62,-300),(1680,178,-300),(1680,180,-300),(1680,661,-300),(1680,1106,-300),(1681,51,-300),(1681,52,-300),(1681,53,-300),(1681,54,-300),(1681,55,-300),(1681,56,-300),(1681,57,-300),(1681,58,-300),(1681,59,-300),(1681,60,-300),(1681,61,-300),(1681,62,-300),(1681,178,-300),(1681,180,-300),(1681,661,-300),(1681,1106,-300),(1701,51,-1000),(1701,52,-1000),(1701,53,-1000),(1701,54,-1000),(1701,55,-1000),(1701,56,-1000),(1701,57,-1000),(1701,58,-1000),(1701,59,-1000),(1701,60,-1000),(1701,61,-1000),(1701,62,-1000),(1701,178,-1000),(1701,180,-1000),(1701,661,-1000),(1701,1106,-1000),(1703,51,-1000),(1703,52,-1000),(1703,53,-1000),(1703,54,-1000),(1703,55,-1000),(1703,56,-1000),(1703,57,-1000),(1703,58,-1000),(1703,59,-1000),(1703,60,-1000),(1703,61,-1000),(1703,62,-1000),(1703,178,-1000),(1703,180,-1000),(1703,661,-1000),(1703,1106,-1000),(1704,56,-1000),(1704,59,-1000),(1704,60,-1000),(1704,178,-1000),(1704,208,100),(1709,56,-1000),(1709,59,-1000),(1709,60,-1000),(1709,178,-1000),(1711,56,-1000),(1711,59,-1000),(1711,60,-1000),(1711,178,-1000),(1712,56,-1000),(1712,59,-1000),(1712,60,-1000),(1712,178,-1000),(1713,56,-1000),(1713,59,-1000),(1713,60,-1000),(1713,178,-1000),(1714,56,-1000),(1714,59,-1000),(1714,60,-1000),(1714,178,-1000),(1715,56,-1000),(1715,59,-1000),(1715,60,-1000),(1715,178,-1000),(1716,56,-1000),(1716,59,-1000),(1716,60,-1000),(1716,178,-1000),(1716,661,100),(1717,56,-1000),(1717,59,-1000),(1717,60,-1000),(1717,178,-1000),(1717,661,100),(1718,56,-1000),(1718,59,-1000),(1718,60,-1000),(1718,178,-1000),(1718,661,100),(1719,56,-1000),(1719,59,-1000),(1719,60,-1000),(1719,178,-1000),(1720,56,-1000),(1720,59,-1000),(1720,60,-1000),(1720,178,-1000),(1720,208,50),(1720,661,100),(1722,51,-1000),(1722,52,-1000),(1722,53,-1000),(1722,54,-1000),(1722,55,-1000),(1722,56,-1000),(1722,57,-1000),(1722,58,-1000),(1722,59,-1000),(1722,60,-1000),(1722,61,-1000),(1722,62,-1000),(1722,178,-1000),(1722,180,-1000),(1722,661,-1000),(1722,1106,-1000),(1728,51,-1000),(1728,52,-1000),(1728,53,-1000),(1728,54,-1000),(1728,55,-1000),(1728,56,-1000),(1728,57,-1000),(1728,58,-1000),(1728,59,-1000),(1728,60,-1000),(1728,61,-1000),(1728,62,-1000),(1728,178,-1000),(1728,180,-1000),(1728,661,-1000),(1728,1106,-1000),(1729,51,-1000),(1729,52,-1000),(1729,53,-1000),(1729,54,-1000),(1729,55,-1000),(1729,56,-1000),(1729,57,-1000),(1729,58,-1000),(1729,59,-1000),(1729,60,-1000),(1729,61,-1000),(1729,62,-1000),(1729,178,-1000),(1729,180,-1000),(1729,661,-1000),(1729,1106,-1000),(1732,51,-1000),(1732,52,-1000),(1732,53,-1000),(1732,54,-1000),(1732,55,-1000),(1732,56,-1000),(1732,57,-1000),(1732,58,-1000),(1732,59,-1000),(1732,60,-1000),(1732,61,-1000),(1732,62,-1000),(1732,178,-1000),(1732,180,-1000),(1732,661,-1000),(1732,1106,-1000),(1733,51,-1000),(1733,52,-1000),(1733,53,-1000),(1733,54,-1000),(1733,55,-1000),(1733,56,-1000),(1733,57,-1000),(1733,58,-1000),(1733,59,-1000),(1733,60,-1000),(1733,61,-1000),(1733,62,-1000),(1733,178,-1000),(1733,180,-1000),(1733,661,-1000),(1733,1106,-1000),(1734,51,-1000),(1734,52,-1000),(1734,53,-1000),(1734,54,-1000),(1734,55,-1000),(1734,56,-1000),(1734,57,-1000),(1734,58,-1000),(1734,59,-1000),(1734,60,-1000),(1734,61,-1000),(1734,62,-1000),(1734,178,-1000),(1734,180,-1000),(1734,661,-1000),(1734,1106,-1000),(1735,51,-1000),(1735,52,-1000),(1735,53,-1000),(1735,54,-1000),(1735,55,-1000),(1735,56,-1000),(1735,57,-1000),(1735,58,-1000),(1735,59,-1000),(1735,60,-1000),(1735,61,-1000),(1735,62,-1000),(1735,178,-1000),(1735,180,-1000),(1735,661,-1000),(1735,1106,-1000),(1736,51,-1000),(1736,52,-1000),(1736,53,-1000),(1736,54,-1000),(1736,55,-1000),(1736,56,-1000),(1736,57,-1000),(1736,58,-1000),(1736,59,-1000),(1736,60,-1000),(1736,61,-1000),(1736,62,-1000),(1736,178,-1000),(1736,180,-1000),(1736,661,-1000),(1736,1106,-1000),(1737,51,-1000),(1737,52,-1000),(1737,53,-1000),(1737,54,-1000),(1737,55,-1000),(1737,56,-1000),(1737,57,-1000),(1737,58,-1000),(1737,59,-1000),(1737,60,-1000),(1737,61,-1000),(1737,62,-1000),(1737,178,-1000),(1737,180,-1000),(1737,661,-1000),(1737,1106,-1000),(1738,51,-1000),(1738,52,-1000),(1738,53,-1000),(1738,54,-1000),(1738,55,-1000),(1738,56,-1000),(1738,57,-1000),(1738,58,-1000),(1738,59,-1000),(1738,60,-1000),(1738,61,-1000),(1738,62,-1000),(1738,178,-1000),(1738,180,-1000),(1738,661,-1000),(1738,1106,-1000),(1741,51,-1000),(1741,52,-1000),(1741,53,-1000),(1741,54,-1000),(1741,55,-1000),(1741,56,-1000),(1741,57,-1000),(1741,58,-1000),(1741,59,-1000),(1741,60,-1000),(1741,61,-1000),(1741,62,-1000),(1741,178,-1000),(1741,180,-1000),(1741,661,-1000),(1741,1106,-1000),(1742,51,-1000),(1742,52,-1000),(1742,53,-1000),(1742,54,-1000),(1742,55,-1000),(1742,56,-1000),(1742,57,-1000),(1742,58,-1000),(1742,59,-1000),(1742,60,-1000),(1742,61,-1000),(1742,62,-1000),(1742,178,-1000),(1742,180,-1000),(1742,661,-1000),(1742,1106,-1000),(1743,51,-1000),(1743,52,-1000),(1743,53,-1000),(1743,54,-1000),(1743,55,-1000),(1743,56,-1000),(1743,57,-1000),(1743,58,-1000),(1743,59,-1000),(1743,60,-1000),(1743,61,-1000),(1743,62,-1000),(1743,178,-1000),(1743,180,-1000),(1743,661,-1000),(1743,1106,-1000),(1744,51,-1000),(1744,52,-1000),(1744,53,-1000),(1744,54,-1000),(1744,55,-1000),(1744,56,-1000),(1744,57,-1000),(1744,58,-1000),(1744,59,-1000),(1744,60,-1000),(1744,61,-1000),(1744,62,-1000),(1744,178,-1000),(1744,180,-1000),(1744,661,-1000),(1744,1106,-1000),(1745,51,-1000),(1745,52,-1000),(1745,53,-1000),(1745,54,-1000),(1745,55,-1000),(1745,56,-1000),(1745,57,-1000),(1745,58,-1000),(1745,59,-1000),(1745,60,-1000),(1745,61,-1000),(1745,62,-1000),(1745,178,-1000),(1745,180,-1000),(1745,661,-1000),(1745,1106,-1000),(1746,51,-1000),(1746,52,-1000),(1746,53,-1000),(1746,54,-1000),(1746,55,-1000),(1746,56,-1000),(1746,57,-1000),(1746,58,-1000),(1746,59,-1000),(1746,60,-1000),(1746,61,-1000),(1746,62,-1000),(1746,178,-1000),(1746,180,-1000),(1746,661,-1000),(1746,1106,-1000),(1747,51,-1000),(1747,52,-1000),(1747,53,-1000),(1747,54,-1000),(1747,55,-1000),(1747,56,-1000),(1747,57,-1000),(1747,58,-1000),(1747,59,-1000),(1747,60,-1000),(1747,61,-1000),(1747,62,-1000),(1747,178,-1000),(1747,180,-1000),(1747,661,-1000),(1747,1106,-1000),(1748,51,-1000),(1748,52,-1000),(1748,53,-1000),(1748,54,-1000),(1748,55,-1000),(1748,56,-1000),(1748,57,-1000),(1748,58,-1000),(1748,59,-1000),(1748,60,-1000),(1748,61,-1000),(1748,62,-1000),(1748,178,-1000),(1748,180,-1000),(1748,661,-1000),(1748,1106,-1000),(1749,51,-1000),(1749,52,-1000),(1749,53,-1000),(1749,54,-1000),(1749,55,-1000),(1749,56,-1000),(1749,57,-1000),(1749,58,-1000),(1749,59,-1000),(1749,60,-1000),(1749,61,-1000),(1749,62,-1000),(1749,178,-1000),(1749,180,-1000),(1749,661,-1000),(1749,1106,-1000),(1750,51,-1000),(1750,52,-1000),(1750,53,-1000),(1750,54,-1000),(1750,55,-1000),(1750,56,-1000),(1750,57,-1000),(1750,58,-1000),(1750,59,-1000),(1750,60,-1000),(1750,61,-1000),(1750,62,-1000),(1750,178,-1000),(1750,180,-1000),(1750,661,-1000),(1750,1106,-1000),(1755,51,-1000),(1755,52,-1000),(1755,53,-1000),(1755,54,-1000),(1755,55,-1000),(1755,56,-1000),(1755,57,-1000),(1755,58,-1000),(1755,59,-1000),(1755,60,-1000),(1755,61,-1000),(1755,62,-1000),(1755,178,-1000),(1755,180,-1000),(1755,661,-1000),(1755,1106,-1000),(1758,51,100),(1758,52,100),(1758,53,100),(1758,54,100),(1758,55,100),(1758,56,100),(1758,57,100),(1758,58,100),(1758,59,100),(1758,60,100),(1758,61,100),(1758,62,100),(1758,178,100),(1758,180,100),(1758,661,100),(1758,1106,100),(1759,51,-100),(1759,52,-100),(1759,53,-100),(1759,54,-100),(1759,55,-100),(1759,56,-100),(1759,57,-100),(1759,58,-100),(1759,59,-100),(1759,60,-100),(1759,61,-100),(1759,62,-100),(1759,178,-100),(1759,180,-100),(1759,661,-100),(1759,1106,-100),(1761,51,-100),(1761,52,-100),(1761,53,-100),(1761,54,-100),(1761,55,-100),(1761,56,-100),(1761,57,-100),(1761,58,-100),(1761,59,-100),(1761,60,-100),(1761,61,-100),(1761,62,-100),(1761,178,-100),(1761,180,-100),(1761,661,-100),(1761,1106,-100),(1762,51,-1000),(1762,52,-1000),(1762,53,-1000),(1762,54,-1000),(1762,55,-1000),(1762,56,-1000),(1762,57,-1000),(1762,58,-1000),(1762,59,-1000),(1762,60,-1000),(1762,61,-1000),(1762,62,-1000),(1762,178,-1000),(1762,180,-1000),(1762,661,-1000),(1762,1106,-1000),(1763,51,-1001),(1763,52,-1001),(1763,53,-1001),(1763,54,-1001),(1763,55,-1001),(1763,56,-1001),(1763,57,-1001),(1763,58,-1001),(1763,59,-1001),(1763,60,-1001),(1763,61,-1001),(1763,62,-1001),(1763,178,-1001),(1763,180,-1001),(1763,661,-1001),(1763,1106,-1001),(1764,51,-1000),(1764,52,-1000),(1764,53,-1000),(1764,54,-1000),(1764,55,-1000),(1764,56,-1000),(1764,57,-1000),(1764,58,-1000),(1764,59,-1000),(1764,60,-1000),(1764,61,-1000),(1764,62,-1000),(1764,178,-1000),(1764,180,-1000),(1764,661,-1000),(1764,1106,-1000),(1765,51,-1000),(1765,52,-1000),(1765,53,-1000),(1765,54,-1000),(1765,55,-1000),(1765,56,-1000),(1765,57,-1000),(1765,58,-1000),(1765,59,-1000),(1765,60,-1000),(1765,61,-1000),(1765,62,-1000),(1765,178,-1000),(1765,180,-1000),(1765,661,-1000),(1765,1106,-1000),(1766,51,-1000),(1766,52,-1000),(1766,53,-1000),(1766,54,-1000),(1766,55,-1000),(1766,56,-1000),(1766,57,-1000),(1766,58,-1000),(1766,59,-1000),(1766,60,-1000),(1766,61,-1000),(1766,62,-1000),(1766,178,-1000),(1766,180,-1000),(1766,661,-1000),(1766,1106,-1000),(1767,51,-1000),(1767,52,-1000),(1767,53,-1000),(1767,54,-1000),(1767,55,-1000),(1767,56,-1000),(1767,57,-1000),(1767,58,-1000),(1767,59,-1000),(1767,60,-1000),(1767,61,-1000),(1767,62,-1000),(1767,178,-1000),(1767,180,-1000),(1767,661,-1000),(1767,1106,-1000),(1768,51,-1000),(1768,52,-1000),(1768,53,-1000),(1768,54,-1000),(1768,55,-1000),(1768,56,-1000),(1768,57,-1000),(1768,58,-1000),(1768,59,-1000),(1768,60,-1000),(1768,61,-1000),(1768,62,-1000),(1768,178,-1000),(1768,180,-1000),(1768,661,-1000),(1768,1106,-1000),(1770,51,-400),(1770,52,-400),(1770,53,-400),(1770,54,-400),(1770,55,-400),(1770,56,-400),(1770,57,-400),(1770,58,-400),(1770,59,-400),(1770,60,-400),(1770,61,-400),(1770,62,-400),(1770,178,-400),(1770,180,-400),(1770,661,-400),(1770,1106,-400),(1771,51,-750),(1771,52,-750),(1771,53,-750),(1771,54,-750),(1771,55,-750),(1771,56,-750),(1771,57,-750),(1771,58,-750),(1771,59,-750),(1771,60,-750),(1771,61,-750),(1771,62,-750),(1771,178,-750),(1771,180,-750),(1771,661,-750),(1771,1106,-750),(1775,51,50),(1775,52,50),(1775,53,50),(1775,54,50),(1775,55,50),(1775,56,50),(1775,57,50),(1775,58,50),(1775,59,50),(1775,60,50),(1775,61,50),(1775,62,50),(1775,178,50),(1775,180,50),(1775,661,50),(1775,1106,50),(1777,51,-2000),(1777,52,-2000),(1777,53,-2000),(1777,54,-2000),(1777,55,-2000),(1777,56,-2000),(1777,57,-2000),(1777,58,-2000),(1777,59,-2000),(1777,60,-2000),(1777,61,-2000),(1777,62,-2000),(1777,178,-2000),(1777,180,-2000),(1777,661,-2000),(1777,1106,-2000),(1778,51,10),(1778,52,10),(1778,53,10),(1778,54,10),(1778,55,10),(1778,56,10),(1778,57,10),(1778,58,10),(1778,59,10),(1778,60,10),(1778,61,10),(1778,62,10),(1778,178,10),(1778,180,10),(1778,661,10),(1778,1106,10),(1779,51,30),(1779,52,30),(1779,53,30),(1779,54,30),(1779,55,30),(1779,56,30),(1779,57,30),(1779,58,30),(1779,59,30),(1779,60,30),(1779,61,30),(1779,62,30),(1779,178,30),(1779,180,30),(1779,661,30),(1779,1106,30),(1780,51,90),(1780,52,90),(1780,53,90),(1780,54,90),(1780,55,90),(1780,56,90),(1780,57,90),(1780,58,90),(1780,59,90),(1780,60,90),(1780,61,90),(1780,62,90),(1780,178,90),(1780,180,90),(1780,661,90),(1780,1106,90),(1781,51,90),(1781,52,90),(1781,53,90),(1781,54,90),(1781,55,90),(1781,56,90),(1781,57,90),(1781,58,90),(1781,59,90),(1781,60,90),(1781,61,90),(1781,62,90),(1781,178,90),(1781,180,90),(1781,661,90),(1781,1106,90),(1783,51,10),(1783,52,10),(1783,53,10),(1783,54,10),(1783,55,10),(1783,56,10),(1783,57,10),(1783,58,10),(1783,59,10),(1783,60,10),(1783,61,10),(1783,62,10),(1783,178,10),(1783,180,10),(1783,661,10),(1783,1106,10),(1784,51,-1000),(1784,52,-1000),(1784,53,-1000),(1784,54,-1000),(1784,55,-1000),(1784,56,-1000),(1784,57,-1000),(1784,58,-1000),(1784,59,-1000),(1784,60,-1000),(1784,61,-1000),(1784,62,-1000),(1784,178,-1000),(1784,180,-1000),(1784,661,-1000),(1784,1106,-1000),(1785,51,90),(1785,52,90),(1785,53,90),(1785,54,90),(1785,55,90),(1785,56,90),(1785,57,90),(1785,58,90),(1785,59,90),(1785,60,90),(1785,61,90),(1785,62,90),(1785,178,90),(1785,180,90),(1785,661,90),(1785,1106,90),(1786,51,10),(1786,52,10),(1786,53,10),(1786,54,10),(1786,55,10),(1786,56,10),(1786,57,10),(1786,58,10),(1786,59,10),(1786,60,10),(1786,61,10),(1786,62,10),(1786,178,10),(1786,180,10),(1786,661,10),(1786,1106,10),(1787,51,-2000),(1787,52,-2000),(1787,53,-2000),(1787,54,-2000),(1787,55,-2000),(1787,56,-2000),(1787,57,-2000),(1787,58,-2000),(1787,59,-2000),(1787,60,-2000),(1787,61,-2000),(1787,62,-2000),(1787,178,-2000),(1787,180,-2000),(1787,661,-2000),(1787,1106,-2000),(1788,51,-2000),(1788,52,-2000),(1788,53,-2000),(1788,54,-2000),(1788,55,-2000),(1788,56,-2000),(1788,57,-2000),(1788,58,-2000),(1788,59,-2000),(1788,60,-2000),(1788,61,-2000),(1788,62,-2000),(1788,178,-2000),(1788,180,-2000),(1788,661,-2000),(1788,1106,-2000),(1789,51,-110),(1789,52,-110),(1789,53,-110),(1789,54,-110),(1789,55,-110),(1789,56,-110),(1789,57,-110),(1789,58,-110),(1789,59,-110),(1789,60,-110),(1789,61,-110),(1789,62,-110),(1789,178,-110),(1789,180,-110),(1789,661,-110),(1789,1106,-110),(1790,51,-1000),(1790,52,-1000),(1790,53,-1000),(1790,54,-1000),(1790,55,-1000),(1790,56,-1000),(1790,57,-1000),(1790,58,-1000),(1790,59,-1000),(1790,60,-1000),(1790,61,-1000),(1790,62,-1000),(1790,178,-1000),(1790,180,-1000),(1790,661,-1000),(1790,1106,-1000),(1791,51,-110),(1791,52,-110),(1791,53,-110),(1791,54,-110),(1791,55,-110),(1791,56,-110),(1791,57,-110),(1791,58,-110),(1791,59,-110),(1791,60,-110),(1791,61,-110),(1791,62,-110),(1791,178,-110),(1791,180,-110),(1791,661,-110),(1791,1106,-110),(1792,51,-1000),(1792,52,-1000),(1792,53,-1000),(1792,54,-1000),(1792,55,-1000),(1792,56,-1000),(1792,57,-1000),(1792,58,-1000),(1792,59,-1000),(1792,60,-1000),(1792,61,-1000),(1792,62,-1000),(1792,178,-1000),(1792,180,-1000),(1792,661,-1000),(1792,1106,-1000),(1793,51,-110),(1793,52,-110),(1793,53,-110),(1793,54,-110),(1793,55,-110),(1793,56,-110),(1793,57,-110),(1793,58,-110),(1793,59,-110),(1793,60,-110),(1793,61,-110),(1793,62,-110),(1793,178,-110),(1793,180,-110),(1793,661,-110),(1793,1106,-110),(1794,51,-1000),(1794,52,-1000),(1794,53,-1000),(1794,54,-1000),(1794,55,-1000),(1794,56,-1000),(1794,57,-1000),(1794,58,-1000),(1794,59,-1000),(1794,60,-1000),(1794,61,-1000),(1794,62,-1000),(1794,178,-1000),(1794,180,-1000),(1794,661,-1000),(1794,1106,-1000),(1795,51,-110),(1795,52,-110),(1795,53,-110),(1795,54,-110),(1795,55,-110),(1795,56,-110),(1795,57,-110),(1795,58,-110),(1795,59,-110),(1795,60,-110),(1795,61,-110),(1795,62,-110),(1795,178,-110),(1795,180,-110),(1795,661,-110),(1795,1106,-110),(1796,51,-1000),(1796,52,-1000),(1796,53,-1000),(1796,54,-1000),(1796,55,-1000),(1796,56,-1000),(1796,57,-1000),(1796,58,-1000),(1796,59,-1000),(1796,60,-1000),(1796,61,-1000),(1796,62,-1000),(1796,178,-1000),(1796,180,-1000),(1796,661,-1000),(1796,1106,-1000),(1798,51,-110),(1798,52,-110),(1798,53,-110),(1798,54,-110),(1798,55,-110),(1798,56,-110),(1798,57,-110),(1798,58,-110),(1798,59,-110),(1798,60,-110),(1798,61,-110),(1798,62,-110),(1798,178,-110),(1798,180,-110),(1798,661,-110),(1798,1106,-110),(1799,51,-1000),(1799,52,-1000),(1799,53,-1000),(1799,54,-1000),(1799,55,-1000),(1799,56,-1000),(1799,57,-1000),(1799,58,-1000),(1799,59,-1000),(1799,60,-1000),(1799,61,-1000),(1799,62,-1000),(1799,178,-1000),(1799,180,-1000),(1799,661,-1000),(1799,1106,-1000),(1801,51,0),(1801,52,0),(1801,53,0),(1801,54,0),(1801,55,0),(1801,56,0),(1801,57,0),(1801,58,0),(1801,59,0),(1801,60,100),(1801,61,0),(1801,62,0),(1801,178,0),(1801,180,0),(1801,211,100),(1801,661,0),(1801,1106,0),(1802,51,-1000),(1802,52,-1000),(1802,53,-1000),(1802,54,-1000),(1802,55,-1000),(1802,56,-1000),(1802,57,-1000),(1802,58,-1000),(1802,59,-1000),(1802,60,-1000),(1802,61,-1000),(1802,62,-1000),(1802,178,-1000),(1802,180,-1000),(1802,211,100),(1802,661,-1000),(1802,1106,-1000),(1817,51,-500),(1817,52,-500),(1817,53,-500),(1817,54,-500),(1817,55,-500),(1817,56,-500),(1817,57,-500),(1817,58,-500),(1817,59,-500),(1817,60,-500),(1817,61,-500),(1817,62,-500),(1817,178,-500),(1817,180,-500),(1817,661,-500),(1817,1106,-500),(1818,51,-1000),(1818,52,-1000),(1818,53,-1000),(1818,54,-1000),(1818,55,-1000),(1818,56,-1000),(1818,57,-1000),(1818,58,-1000),(1818,59,-1000),(1818,60,-1000),(1818,61,-1000),(1818,62,-1000),(1818,178,-1000),(1818,180,-1000),(1818,661,-1000),(1818,1106,-1000),(1819,51,-100),(1819,52,-100),(1819,53,-100),(1819,54,-100),(1819,55,-100),(1819,56,-100),(1819,57,-100),(1819,58,-100),(1819,59,-100),(1819,60,-100),(1819,61,-100),(1819,62,-100),(1819,178,-100),(1819,180,-100),(1819,661,-100),(1819,1106,-100),(1820,51,100),(1820,52,100),(1820,53,100),(1820,54,100),(1820,55,100),(1820,56,100),(1820,57,100),(1820,58,100),(1820,59,100),(1820,60,100),(1820,61,100),(1820,62,100),(1820,178,100),(1820,180,100),(1820,661,100),(1820,1106,100),(1821,51,-101),(1821,52,-101),(1821,53,-101),(1821,54,-101),(1821,55,-101),(1821,56,-101),(1821,57,-101),(1821,58,-101),(1821,59,-101),(1821,60,-101),(1821,61,-101),(1821,62,-101),(1821,178,-101),(1821,180,-101),(1821,661,-101),(1821,1106,-101),(1822,203,200),(1823,51,-1000),(1823,52,-1000),(1823,53,-1000),(1823,54,-1000),(1823,55,-1000),(1823,56,-1000),(1823,57,-1000),(1823,58,-1000),(1823,59,-1000),(1823,60,-1000),(1823,61,-1000),(1823,62,-1000),(1823,178,-1000),(1823,180,-1000),(1823,661,-1000),(1823,1106,-1000),(1824,51,-1000),(1824,52,-1000),(1824,53,-1000),(1824,54,-1000),(1824,55,-1000),(1824,56,-1000),(1824,57,-1000),(1824,58,-1000),(1824,59,-1000),(1824,60,-1000),(1824,61,-1000),(1824,62,-1000),(1824,178,-1000),(1824,180,-1000),(1824,661,-1000),(1824,1106,-1000),(1828,51,-1000),(1828,52,-1000),(1828,53,-1000),(1828,54,-1000),(1828,55,-1000),(1828,56,-1000),(1828,57,-1000),(1828,58,-1000),(1828,59,-1000),(1828,60,-1000),(1828,61,-1000),(1828,62,-1000),(1828,178,-1000),(1828,180,-1000),(1828,661,-1000),(1828,1106,-1000),(1829,51,-1000),(1829,52,-1000),(1829,53,-1000),(1829,54,-1000),(1829,55,-1000),(1829,56,-1000),(1829,57,-1000),(1829,58,-1000),(1829,59,-1000),(1829,60,-1000),(1829,61,-1000),(1829,62,-1000),(1829,178,-1000),(1829,180,-1000),(1829,661,-1000),(1829,1106,-1000),(1830,51,-800),(1830,52,-800),(1830,53,-800),(1830,54,-800),(1830,55,-800),(1830,56,-800),(1830,57,-800),(1830,58,-800),(1830,59,-800),(1830,60,-800),(1830,61,-800),(1830,62,-800),(1830,178,-800),(1830,180,-800),(1830,661,-800),(1830,1106,-800),(1831,51,-800),(1831,52,-800),(1831,53,-800),(1831,54,-800),(1831,55,-800),(1831,56,-800),(1831,57,-800),(1831,58,-800),(1831,59,-800),(1831,60,-800),(1831,61,-800),(1831,62,-800),(1831,178,-800),(1831,180,-800),(1831,661,-800),(1831,1106,-800),(1846,1,100),(1846,5,-100),(1846,11,-100),(1846,12,100),(1846,13,100),(1846,14,100),(1846,16,100),(1846,51,-2000),(1846,52,-2000),(1846,53,-2000),(1846,54,-2000),(1846,55,-2000),(1846,57,-2000),(1846,58,-2000),(1846,59,-2000),(1846,60,-2000),(1846,61,-2000),(1846,62,-2000),(1846,178,-2000),(1846,180,-2000),(1846,206,50),(1846,661,-2000),(1846,1106,-2000),(1847,1,-100),(1847,5,100),(1847,11,100),(1847,12,-100),(1847,13,-100),(1847,14,-100),(1847,16,-100),(1847,51,-2000),(1847,52,-2000),(1847,53,-2000),(1847,54,-2000),(1847,55,-2000),(1847,57,-2000),(1847,58,-2000),(1847,59,-2000),(1847,60,-2000),(1847,61,-2000),(1847,62,-2000),(1847,178,-2000),(1847,180,-2000),(1847,206,50),(1847,661,-2000),(1847,1106,-2000),(1852,51,-2000),(1852,52,-2000),(1852,53,-2000),(1852,54,-2000),(1852,55,-2000),(1852,56,-2000),(1852,57,-2000),(1852,58,-2000),(1852,59,-2000),(1852,60,-2000),(1852,61,-2000),(1852,62,-2000),(1852,178,-2000),(1852,180,-2000),(1852,661,-2000),(1852,1106,-2000),(1853,51,-1000),(1853,52,-1000),(1853,53,-1000),(1853,54,-1000),(1853,55,-1000),(1853,56,-1000),(1853,57,-1000),(1853,58,-1000),(1853,59,-1000),(1853,60,-1000),(1853,61,-1000),(1853,62,-1000),(1853,178,-1000),(1853,180,-1000),(1853,661,-1000),(1853,1106,-1000),(1854,51,-1000),(1854,52,-1000),(1854,53,-1000),(1854,54,-1000),(1854,55,-1000),(1854,56,-1000),(1854,57,-1000),(1854,58,-1000),(1854,59,-1000),(1854,60,-1000),(1854,61,-1000),(1854,62,-1000),(1854,178,-1000),(1854,180,-1000),(1854,661,-1000),(1854,1106,-1000),(1855,51,-1000),(1855,52,-1000),(1855,53,-1000),(1855,54,-1000),(1855,55,-1000),(1855,56,-1000),(1855,57,-1000),(1855,58,-1000),(1855,59,-1000),(1855,60,-1000),(1855,61,-1000),(1855,62,-1000),(1855,178,-800),(1855,180,-800),(1855,661,-800),(1855,1106,-800),(1856,51,-75),(1856,52,-75),(1856,53,-50),(1856,54,-75),(1856,55,-25),(1856,56,-25),(1856,57,-75),(1856,58,-75),(1856,59,-75),(1856,60,-75),(1856,61,-75),(1856,62,-75),(1856,178,-75),(1856,180,-75),(1856,202,-25),(1856,205,-10),(1856,214,-10),(1856,216,25),(1856,661,-75),(1856,1106,-75),(1857,51,-1000),(1857,52,-1000),(1857,53,-1000),(1857,54,-1000),(1857,55,-1000),(1857,56,-1000),(1857,57,-1000),(1857,58,-1000),(1857,59,-1000),(1857,60,-1000),(1857,61,-1000),(1857,62,-1000),(1857,178,-1000),(1857,180,-1000),(1857,661,-1000),(1857,1106,-1000),(1858,51,-1000),(1858,52,-1000),(1858,53,-1000),(1858,54,-1000),(1858,55,-1000),(1858,56,-1000),(1858,57,-1000),(1858,58,-1000),(1858,59,-1000),(1858,60,-1000),(1858,61,-1000),(1858,62,-1000),(1858,178,-1000),(1858,180,-1000),(1858,661,-1000),(1858,1106,-1000),(1859,1,1),(1859,2,1),(1859,3,100),(1859,4,250),(1859,5,1),(1859,6,250),(1859,7,1),(1859,8,100),(1859,9,1),(1859,10,100),(1859,11,1),(1859,12,1),(1859,13,1),(1859,14,100),(1859,15,100),(1859,16,1),(1859,51,-100),(1859,52,100),(1859,53,-100),(1859,54,250),(1859,55,250),(1859,56,-250),(1859,57,250),(1859,58,-250),(1859,59,-100),(1859,60,-100),(1859,61,250),(1859,62,-250),(1859,178,-100),(1859,180,150),(1859,201,-300),(1859,202,-500),(1859,203,-300),(1859,204,500),(1859,205,-500),(1859,206,-300),(1859,207,500),(1859,208,200),(1859,209,200),(1859,210,200),(1859,211,-200),(1859,212,200),(1859,213,-500),(1859,214,200),(1859,215,500),(1859,216,100),(1859,661,250),(1859,1106,-250),(1860,1,250),(1860,2,250),(1860,3,1),(1860,4,1),(1860,5,100),(1860,6,1),(1860,7,100),(1860,8,1),(1860,9,100),(1860,10,1),(1860,11,100),(1860,12,100),(1860,13,100),(1860,14,1),(1860,15,1),(1860,16,100),(1860,51,100),(1860,52,-100),(1860,53,100),(1860,54,-250),(1860,55,-250),(1860,56,250),(1860,57,-250),(1860,58,250),(1860,59,100),(1860,60,100),(1860,61,-250),(1860,62,250),(1860,178,100),(1860,180,-150),(1860,201,300),(1860,202,500),(1860,203,300),(1860,204,-500),(1860,205,500),(1860,206,300),(1860,207,-500),(1860,208,-200),(1860,209,-200),(1860,210,-200),(1860,211,200),(1860,212,-200),(1860,213,500),(1860,214,-200),(1860,215,-500),(1860,216,-100),(1860,661,-250),(1860,1106,250),(1862,51,-75),(1862,52,-75),(1862,53,-50),(1862,54,-75),(1862,55,-25),(1862,56,-25),(1862,57,-75),(1862,58,-75),(1862,59,-75),(1862,60,-75),(1862,61,-75),(1862,62,-75),(1862,178,-75),(1862,180,-75),(1862,202,-25),(1862,205,-10),(1862,214,-10),(1862,216,25),(1862,661,-75),(1862,1106,-75),(1863,51,-600),(1863,52,-600),(1863,53,-600),(1863,54,-600),(1863,55,-600),(1863,56,-600),(1863,57,-600),(1863,58,-600),(1863,59,-600),(1863,60,-600),(1863,61,-600),(1863,62,-600),(1863,178,-600),(1863,180,-600),(1863,661,-600),(1863,1106,-600),(1864,51,-600),(1864,52,-600),(1864,53,-600),(1864,54,-600),(1864,55,-600),(1864,56,-600),(1864,57,-600),(1864,58,-600),(1864,59,-600),(1864,60,-600),(1864,61,-600),(1864,62,-600),(1864,178,-600),(1864,180,-600),(1864,661,-600),(1864,1106,-600),(1865,51,-600),(1865,52,-600),(1865,53,-600),(1865,54,-600),(1865,55,-600),(1865,56,-600),(1865,57,-600),(1865,58,-600),(1865,59,-600),(1865,60,-600),(1865,61,-600),(1865,62,-600),(1865,178,-600),(1865,180,-600),(1865,661,-600),(1865,1106,-600),(1866,51,-600),(1866,52,-600),(1866,53,-600),(1866,54,-600),(1866,55,-600),(1866,56,-600),(1866,57,-600),(1866,58,-600),(1866,59,-600),(1866,60,-600),(1866,61,-600),(1866,62,-600),(1866,178,-600),(1866,180,-600),(1866,661,-600),(1866,1106,-600),(1867,51,1),(1867,52,1),(1867,53,1),(1867,54,1),(1867,55,1),(1867,56,1),(1867,57,1),(1867,58,1),(1867,59,1),(1867,60,1),(1867,61,1),(1867,62,1),(1867,178,1),(1867,180,1),(1867,661,1),(1867,1106,1),(1868,51,1),(1868,52,1),(1868,53,1),(1868,54,1),(1868,55,1),(1868,56,1),(1868,57,1),(1868,58,1),(1868,59,1),(1868,60,1),(1868,61,1),(1868,62,1),(1868,178,1),(1868,180,1),(1868,661,1),(1868,1106,1),(1869,51,1),(1869,52,1),(1869,53,1),(1869,54,1),(1869,55,1),(1869,56,1),(1869,57,1),(1869,58,1),(1869,59,1),(1869,60,1),(1869,61,1),(1869,62,1),(1869,178,1),(1869,180,1),(1869,661,1),(1869,1106,1),(1870,51,1),(1870,52,1),(1870,53,1),(1870,54,1),(1870,55,1),(1870,56,1),(1870,57,1),(1870,58,1),(1870,59,1),(1870,60,1),(1870,61,1),(1870,62,1),(1870,178,1),(1870,180,1),(1870,661,1),(1870,1106,1),(1872,51,1),(1872,52,1),(1872,53,1),(1872,54,1),(1872,55,1),(1872,56,1),(1872,57,1),(1872,58,1),(1872,59,1),(1872,60,1),(1872,61,1),(1872,62,1),(1872,178,1),(1872,180,1),(1872,661,1),(1872,1106,1); +/*!40000 ALTER TABLE `client_faction_associations` ENABLE KEYS */; +UNLOCK TABLES; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2018-12-11 14:51:29 +-- MySQL dump 10.13 Distrib 5.7.24, for Linux (x86_64) +-- +-- Host: 192.168.0.3 Database: peqdb +-- ------------------------------------------------------ +-- Server version 5.7.24-0ubuntu0.16.04.1 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `client_faction_names` +-- + +DROP TABLE IF EXISTS `client_faction_names`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `client_faction_names` ( + `id` int(11) NOT NULL, + `name` varchar(45) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `client_faction_names` +-- + +LOCK TABLES `client_faction_names` WRITE; +/*!40000 ALTER TABLE `client_faction_names` DISABLE KEYS */; +INSERT INTO `client_faction_names` VALUES (0,'NoFaction'),(1,'Warrior'),(2,'Cleric'),(3,'Paladin'),(4,'Ranger'),(5,'ShadowKnight'),(6,'Druid'),(7,'Monk'),(8,'Bard'),(9,'Rogue'),(10,'Shaman'),(11,'Necromancer'),(12,'Wizard'),(13,'Magician'),(14,'Enchanter'),(15,'Beastlord'),(16,'Berserker'),(17,'GUILDMASTERWARRIOR'),(18,'GUILDMASTERCLERIC'),(19,'GUILDMASTERPALADIN'),(20,'GUILDMASTERRANGER'),(21,'GUILDMASTERSK'),(22,'GUILDMASTERDRUID'),(23,'GUILDMASTERMONK'),(24,'GUILDMASTERBARD'),(25,'GUILDMASTERROGUE'),(26,'GUILDMASTERSHAMAN'),(27,'GUILDMASTERNECRO'),(28,'GUILDMASTERWIZARD'),(29,'GUILDMASTERMAGICIAN'),(30,'GUILDMASTERENCHANTER'),(31,'Class31'),(32,'Merchant'),(33,'Class33'),(34,'Class34'),(35,'Class35'),(36,'Class36'),(37,'Class37'),(38,'Class38'),(39,'Class39'),(40,'Class40'),(41,'Class41'),(42,'Class42'),(43,'Class43'),(44,'Class44'),(45,'Class45'),(46,'Class46'),(47,'Class47'),(48,'Class48'),(49,'Class49'),(50,'Class50'),(51,'Human'),(52,'Barbarian'),(53,'Erudite'),(54,'Wood Elf'),(55,'High Elf'),(56,'Dark Elf'),(57,'Half Elf'),(58,'Dwarf'),(59,'Troll'),(60,'Ogre'),(61,'Halfling'),(62,'Gnome'),(63,'Aviak'),(64,'Werewolf'),(65,'Brownies of Faydwer'),(66,'Centaur'),(67,'Clay Golem'),(68,'Cyclops'),(69,'Trakanon (Race)'),(70,'Venril Sathir (Race)'),(71,'Evil Eye'),(72,'Fire Beetle'),(73,'Kerran (Race)'),(74,'Fish'),(75,'Fairy (Race)'),(76,'Froglok'),(77,'Froglok Ghoul'),(78,'Fungus Man'),(79,'Gargoyle'),(80,'Race Faction (80)'),(81,'Gelatinous Cube'),(82,'Ghost'),(83,'Ghoul'),(84,'Giant Bat'),(85,'Beta KOS Copy 9'),(86,'Giant Rat'),(87,'Giant Snake'),(88,'Giant Spider'),(89,'Gnoll'),(90,'Goblin'),(91,'Gorilla'),(92,'Wolf'),(93,'Bear'),(94,'Human Guard (Race)'),(95,'Demi Lich (Race)'),(96,'Imp'),(97,'Griffon'),(98,'Kobold'),(99,'Lava Dragon'),(100,'Lion'),(101,'Lizard Man'),(102,'Mimic'),(103,'Minotaur'),(104,'Orc'),(105,'Human Beggar'),(106,'Pixies of Faydwer'),(107,'Drachnid (Race)'),(108,'Solusek Ro (Race)'),(109,'Kunark Goblin (Race)'),(110,'Skeleton'),(111,'Shark (Race)'),(112,'Tunare (Race)'),(113,'Tiger'),(114,'Treant'),(115,'Vampire'),(116,'Rallos Zek (Race)'),(117,'High Hold Citizen'),(118,'Tentacle'),(119,'Will-O-Wisp'),(120,'Zombie'),(121,'Qeynos Citizens'),(122,'Ship'),(123,'Launch'),(124,'Piranha'),(125,'Elemental'),(126,'Puma'),(127,'Neriak Citizen'),(128,'Erudin Citizens'),(129,'Bixie'),(130,'Reanimated Hand'),(131,'Rivervale Guard'),(132,'Scarecrow'),(133,'Skunk'),(134,'Snake Elemental'),(135,'Spectre'),(136,'Sphinx'),(137,'Armadillo'),(138,'Clockworks of Ak`Anon'),(139,'Drake'),(140,'Halas Citizen'),(141,'Alligator'),(142,'Grobb Citizen'),(143,'Oggok Citizen'),(144,'Kaladim Citizens'),(145,'Cazic-Thule (Race)'),(146,'Cockatrice'),(147,'Diasy Men'),(148,'Elf Vampire'),(149,'Amygdalan'),(150,'Dervish'),(151,'Efreeti'),(152,'Froglok Tadpole'),(153,'Kedge'),(154,'Leech'),(155,'Sword Fish'),(156,'Fel Guard'),(157,'Mammoth'),(158,'Eye of Zomm'),(159,'Wasp'),(160,'Mermaid'),(161,'Harpie'),(162,'Fayguard'),(163,'Drixie'),(164,'Ghost Ship'),(165,'Clam'),(166,'Sea Horse'),(167,'Ghost Dwarf'),(168,'Erudite Ghost'),(169,'Saber-toothed Cat'),(170,'SpiritWolf'),(171,'Gorgon'),(172,'Dragon Skeleton'),(173,'Innoruuk (Race)'),(174,'Unicorn Nightmare'),(175,'Pegasus'),(176,'Djinn (Race)'),(177,'Invisible Man'),(178,'Iksar'),(179,'Scorpion'),(180,'Vah Shir'),(181,'Sarnak'),(182,'Draglok Invalid Race'),(183,'Lycanthrope'),(184,'Mosquito'),(185,'Rhino'),(186,'Xalgoz Race'),(187,'Kunark Goblin'),(188,'Yeti'),(189,'Iksar Citizen'),(190,'Forest Giant'),(191,'Boat'),(192,'Race Faction (192)'),(193,'Race Faction (193)'),(194,'Burynai'),(195,'Goo'),(196,'Spectral Sarnak'),(197,'Spectral Iksar'),(198,'Kunark Fish'),(199,'Iksar Scorpion'),(200,'Erollisi Marr (Race)'),(201,'Bertoxxulous'),(202,'Brell Serilis'),(203,'Cazic-Thule'),(204,'Erollisi Marr'),(205,'Fizzlethorp'),(206,'Innoruuk'),(207,'Karana'),(208,'Mithaniel Marr'),(209,'Prexus'),(210,'Quellious'),(211,'Rallos Zek'),(212,'Rodcet Nife'),(213,'Solusek Ro'),(214,'Tribunal'),(215,'Tunare'),(216,'Veeshan'),(217,'Allize Volew'),(218,'Allize Taeew'),(219,'Antonius Bayle'),(220,'Arcane Scientists'),(221,'Bloodsabers'),(222,'Broken Skull Clan'),(223,'Circle of Unseen Hands'),(224,'Clan Drippycan'),(225,'Clan Runnyeye'),(226,'Clerics of Tunare'),(227,'Clerics of Underfoot'),(228,'Clurg'),(229,'Coalition of Tradefolk'),(230,'Corrupt Qeynos Guards'),(231,'Craftkeepers'),(232,'Craknek Warriors'),(233,'Crimson Hands'),(234,'Crushbone Orcs'),(235,'DaBashers'),(236,'Dark Bargainers'),(237,'Dark Ones'),(238,'Dark Reflection'),(239,'The Dead'),(240,'Deepmuses'),(241,'Deeppockets'),(242,'Deepwater Knights'),(243,'Drafling'),(244,'Ebon Mask'),(245,'Eldritch Collective'),(246,'Faydarks Champions'),(247,'Horde of Xalgoz'),(248,'Inhabitants of Firiona Vie'),(249,'Nagafen'),(250,'The Kromdul'),(251,'Frogloks of Guk'),(252,'Frogloks of Kunark'),(253,'Burynai Legion'),(254,'Gate Callers'),(255,'Gem Choppers'),(256,'Bloodgills'),(257,'Goblins of Cleaving Tooth'),(258,'Goblins of Fire Peak'),(259,'Goblins of Mountain Death'),(260,'Gnarled Fist'),(261,'Green Blood Knights'),(262,'Guards of Qeynos'),(263,'Guardians of the Vale'),(264,'Whistling Fist Brotherhood'),(265,'Heretics'),(266,'High Council of Erudin'),(267,'High Guard of Erudin'),(268,'Combine Empire'),(269,'Kithicor Residents'),(270,'Indigo Brotherhood'),(271,'Dismal Rage'),(272,'Jaggedpine Treefolk'),(273,'Kane Bayle'),(274,'Kazon Stormhammer'),(275,'Keepers of the Art'),(276,'Kelethin Merchants'),(277,'Kerra of Barren Coast'),(278,'King Naythox Thex'),(279,'King Tearis Thex'),(280,'Knights of Thunder'),(281,'Knights of Truth'),(282,'Kobolds of Fire Pit'),(283,'Pack of Tomar'),(284,'League of Antonican Bards'),(285,'Mayong Mistmoore'),(286,'Mayor Gubbin'),(287,'Meldrath'),(288,'Merchants of Ak`Anon'),(289,'Merchants of Erudin'),(290,'Merchants of Kaladim'),(291,'Merchants of Qeynos'),(292,'Merchants of Rivervale'),(293,'Miners Guild 249'),(294,'Miragul'),(295,'The Kromdek'),(296,'Opal Darkbriar'),(297,'Paladins of Underfoot'),(298,'Peace Keepers'),(299,'Phinigel Autropos'),(300,'Priests of Mischief'),(301,'Priests of Nagafen'),(302,'Protectors of Pine'),(303,'Queen Cristanos Thex'),(304,'Ring of Scale'),(305,'Rogues of the White Rose'),(306,'Sabertooths of Blackburrow'),(307,'Sarnak Collective'),(308,'Shadowknights of Night Keep'),(309,'Silent Fist Clan'),(310,'Soldiers of Tunare'),(311,'Steel Warriors'),(312,'Storm Guard'),(313,'Pirates of Gunthak'),(314,'Syth of Permafrost'),(315,'Trakanon'),(316,'Tunare\'s Scouts'),(317,'Undead Frogloks of Guk'),(318,'Venril Sathir'),(319,'Vox'),(320,'Wolves of the North'),(321,'Split Paw Clan'),(322,'Miners Guild 628'),(323,'Solusek Mining Co.'),(324,'Unkempt Druids'),(325,'Merchants of Felwithe'),(326,'Emerald Warriors'),(327,'Shamen of Justice'),(328,'Merchants of Halas'),(329,'Carson McCabe'),(330,'The Freeport Militia'),(331,'Merchants of Highpass'),(332,'Highpass Guards'),(333,'King Ak`Anon'),(334,'Dreadguard Outer'),(335,'Thoughtbleeders of Fear'),(336,'Coalition of Tradefolk Underground'),(337,'Oggok Guards'),(338,'Merchants of Oggok'),(339,'Bonethrowers'),(340,'Priests of Innoruuk'),(341,'Priests of Life'),(342,'Order of Three'),(343,'Surefall Protected Animals'),(344,'Beta Neutral'),(345,'Karana Residents'),(346,'Commons Residents'),(347,'Shark'),(348,'Runnyeye A'),(349,'Runnyeye B'),(350,'Runnyeye C'),(351,'Neriak Outer'),(352,'Neriak Inner'),(353,'Neriak Ogre'),(354,'Neriak Troll'),(355,'Storm Reapers'),(356,'Diseased Animal'),(357,'Akhevan (Plane of Shadow)'),(358,'Corrupt Akhevan'),(359,'Defenders of Luclin'),(360,'Iskar'),(361,'Ashen Order'),(362,'Priests of Marr'),(363,'The Spurned'),(364,'Shralok Orcs'),(365,'Pickclaw Goblins'),(366,'Karana Bandits'),(367,'Donovon'),(368,'Dervish Cutthroats'),(369,'Timmerain Darkbrow'),(370,'Dreadguard Inner'),(371,'Neriak Ghoul'),(372,'Najena'),(373,'Mucktail Gnolls'),(374,'Oggok Resident'),(375,'Death Fist Orcs (good)'),(376,'Grobb Merchants'),(377,'Grobb Guard'),(378,'Stone Hive Bixies'),(379,'Butcherblock Bandits'),(380,'Wood Elf Bards'),(381,'Tunare\'s Martyrs 2'),(382,'Kerra Isle'),(383,'Thunder Hooves'),(384,'Fay Scout'),(385,'Defective Clockwork'),(386,'Unrest Inhabitants'),(387,'Befallen Inhabitants'),(388,'Fairie'),(389,'Golem'),(390,'New Combine Guards'),(391,'New Combine'),(392,'Faction392'),(393,'Djinn'),(394,'Shamen of War'),(395,'Morawk'),(396,'Agnostic'),(397,'Sky Talons (good)'),(398,'Riptide Goblins'),(399,'Sea Furies'),(400,'Cult of Fear'),(401,'Song Weavers'),(402,'Oracle of K`Arnon'),(403,'Oracle of Marud'),(404,'Truespirit'),(405,'Dain Frostreaver IV'),(406,'Coldain'),(407,'Ry`Gorr Clan Snow Orcs'),(408,'Faction408'),(409,'Tserrina Syl`Tor'),(410,'Guide1'),(411,'Guide2'),(412,'Krag'),(413,'Guide3'),(414,'Residents of Fear'),(415,'Temple of Solusek Ro'),(416,'Shadowed Men'),(417,'Ankhefenmut'),(418,'Zazamoukh'),(419,'Kromrif'),(420,'Fallen of Bloody Kithicor'),(421,'Aggressors of Kithicor'),(422,'Defenders of Kithicor'),(423,'Verish Mal'),(424,'Inhabitants of Sky'),(425,'Inhabitants of Hate'),(426,'Agents of Mistmoore'),(427,'Spirocs of Timorous'),(428,'Minions of Underfoot'),(429,'King Tormax'),(430,'Claws of Veeshan'),(431,'Ulthork'),(432,'Othmir'),(433,'Jaled Dar'),(434,'Sirens of the Grotto'),(435,'Velketor'),(436,'Yelinak'),(437,'Denizens of Mischief'),(438,'Servants of Tunare'),(439,'Snowfang Gnolls'),(440,'Cabilis Residents'),(441,'Legion of Cabilis'),(442,'Crusaders of Greenmist'),(443,'Brood of Kotiz'),(444,'Swift Tails'),(445,'Scaled Mystics'),(446,'The Forsaken'),(447,'Pirates of Iceclad'),(448,'Kromzek'),(449,'Tunarean Court'),(450,'Thrall of Kly'),(451,'Brood of Di`Zok'),(452,'The Hotwingz'),(453,'Citizens of Torsis'),(454,'Drusella Sathir'),(455,'Minions of Scale'),(456,'Gelistial'),(457,'Holgresh'),(458,'Geonid Collective'),(459,'Lithiniath'),(460,'Citizens of Froststone'),(461,'Crystal Denizens'),(462,'Chetari'),(463,'Paebala'),(464,'Zlandicar'),(465,'Tizmak Clan'),(466,'Guardians of the Shrine'),(467,'Guardians of Veeshan'),(468,'The Sleeper'),(469,'Protectors of Growth'),(470,'Peoples Republic of Thurgadin'),(471,'Clan Kolbok'),(472,'Warders of The Claw'),(473,'Kejek Village'),(474,'Sporali'),(475,'King Xorbb'),(476,'Beta Good'),(477,'Beta Evil'),(478,'Beta Warmly'),(479,'Beta KOS'),(480,'Faction480'),(481,'Faction481'),(482,'Tribunal (Race)'),(483,'Bertoxxulous (Race)'),(484,'Bristlebane (Race)'),(485,'Faydrake'),(486,'Sarnak Skeleton'),(487,'Ratman'),(488,'Wyvern'),(489,'Wurm'),(490,'Devourer'),(491,'Iksar Golem'),(492,'Iksar Skeleton'),(493,'Man-Eating Plant'),(494,'Raptor'),(495,'Sarnak Golem'),(496,'Water Dragon'),(497,'Iksar Hand'),(498,'Cactus Man'),(499,'Flying Monkey'),(500,'Brontotherium'),(501,'Snow Dervish'),(502,'Dire Wolf'),(503,'Manticore'),(504,'Totem Man'),(505,'Cold Spectre'),(506,'Enchanted Armor'),(507,'Snow Bunny'),(508,'Walrus'),(509,'Rock Gem Man'),(510,'Race Faction (510)'),(511,'Race Faction (511)'),(512,'Yakman'),(513,'Faun'),(514,'Coldain (Race)'),(515,'Velious Dragon'),(516,'Hag'),(517,'Hippogriff'),(518,'Siren'),(519,'Frost Giant'),(520,'Storm Giant'),(521,'Otter Man'),(522,'Walrus Man'),(523,'Clockwork Dragon'),(524,'Abhorrent'),(525,'Sea Turtle'),(526,'BandWdragons'),(527,'Ghost Dragon'),(528,'Race Faction (528)'),(529,'Prismatic Dragon'),(530,'Shik Nar of Fungus Grove'),(531,'Rockhopper'),(532,'Underbulk'),(533,'Grimling'),(534,'Vacuum Worm'),(535,'Race Faction (535)'),(536,'Kahli Shah'),(537,'Owlbear'),(538,'Rhino Beetle'),(539,'Vampyre'),(540,'Earth Elemental (Race)'),(541,'Air Elemental (Race)'),(542,'Water Elemental (Race)'),(543,'Fire Elemental (Race)'),(544,'Wetfang Minnow'),(545,'Thought Horror'),(546,'Tegi'),(547,'Horse'),(548,'Shissar of Chelsith'),(549,'Fungal Fiend'),(550,'Vampire Volatalis'),(551,'Stonegrabber'),(552,'Scarlet Cheetah'),(553,'Zelniak'),(554,'Lightcrawler'),(555,'Shade'),(556,'Sunflower'),(557,'Sun Revenant'),(558,'Shrieker'),(559,'Galorian'),(560,'Netherbian'),(561,'Akheva (Race Type)'),(562,'Spire Spirit'),(563,'Sonic Wolf'),(564,'Ground Shaker'),(565,'Vah Shir Skeleton'),(566,'Mutant Humanoid'),(567,'Seru Race'),(568,'Recuso'),(569,'Vah Shir King (Race)'),(570,'Vah Shir Guard (Race)'),(571,'Portal Man (Race)'),(572,'Lujein'),(573,'Potamide'),(574,'Dryad'),(575,'Evil Treant'),(576,'Mutant Fly'),(577,'Tarew Marr'),(578,'Solusek Ro New'),(579,'Clockwork Golem'),(580,'Clockwork Brain'),(581,'Spectral Banshee'),(582,'Guard of Justice Race'),(583,'Mischief Castle'),(584,'Disease Boss'),(585,'Sol Ro Guard'),(586,'Bertoxxulous Race'),(587,'Tribunal Race'),(588,'Terris-Thule'),(589,'Vegerog'),(590,'Crocodile'),(591,'POP Bat'),(592,'Slarghilug'),(593,'Tranquilion'),(594,'Tin Soldier'),(595,'Nightmare Wraith'),(596,'Malarian'),(597,'Knight of Pestilence'),(598,'Lepertoloth'),(599,'Bubonian Boss'),(600,'Bubonian Underling'),(601,'Pusling'),(602,'Mephit'),(603,'Stormrider'),(604,'Junk Beast'),(605,'Broken Clockwork'),(606,'Giant Clockwork'),(607,'Clockwork Beetle'),(608,'Nightmare Goblin'),(609,'Karana Race'),(610,'Blood Raven'),(611,'Nightmare Gargoyle'),(612,'Mouths of Insanity'),(613,'Skeletal Horse'),(614,'Saryrn Race'),(615,'Fennin Ro'),(616,'Tormentor'),(617,'Necromancer Priest'),(618,'Nightmare, Planar'),(619,'Rallos Zek Race Faction'),(620,'Vallon Zek Race Faction'),(621,'Tallon Zek Race Faction'),(622,'Air Mephit'),(623,'Earth Mephit'),(624,'Fire Mephit'),(625,'Nightmare Mephit'),(626,'Zebuxoruk'),(627,'Mithaniel Marr (Race)'),(628,'Undead Knight'),(629,'The Rathe'),(630,'Xegony'),(631,'Greater Fiend'),(632,'Race Faction (632)'),(633,'Crab'),(634,'Phoenix'),(635,'Quarm (Race)'),(636,'Bear PoP'),(637,'Storm Taarid'),(638,'Storm Satuur'),(639,'Storm Kuraaln'),(640,'Storm Volaas'),(641,'Storm Mana'),(642,'Storm Fire'),(643,'Storm Celestial'),(644,'War Wraith'),(645,'Wrulon'),(646,'Kraken'),(647,'Poison Frog'),(648,'Queztocoatal'),(649,'Valorian (War Soldier)'),(650,'War Boar'),(651,'Efreeti PoP'),(652,'War Boar Unarmored'),(653,'Black Knight'),(654,'Animated Armor'),(655,'Undead Footman'),(656,'Rallos Zek Minion'),(657,'Arachnid - PoP'),(658,'Crystal Spider (Race)'),(659,'Zebuxoruk\'s Cage (Race)'),(660,'Bastion of Thunder Portal (Race)'),(661,'Guktan'),(662,'Troll Buccaneer'),(663,'Troll Freebooter'),(664,'Troll Sea Rover'),(665,'Spectre Pirate Boss'),(666,'Pirate Boss'),(667,'Pirate Dark Shaman'),(668,'Pirate Officer'),(669,'Gnome Pirate'),(670,'Dark Elf Pirate'),(671,'Ogre Pirate'),(672,'Human Pirate'),(673,'Erudite Pirate'),(674,'Poison Arrow Frog'),(675,'Troll Zombie'),(676,'Luggald'),(677,'Luggald Armored'),(678,'Luggald Robed'),(679,'Drogmor (Race)'),(680,'Dream Delvers'),(681,'Beta Ally'),(682,'Beta Warmly'),(683,'Beta Kindly'),(684,'Beta Amiable'),(685,'Beta Apprehensive'),(686,'Beta Dubious'),(687,'Beta Threatening'),(688,'Shissar (Race)'),(689,'Shik Nar (Race)'),(690,'Shik Nar of Mons Letalis'),(691,'Brownie (Race)'),(692,'Pixie (Race)'),(693,'Qeynos Citizen (Race)'),(694,'Erudite Citizen (Race)'),(695,'Clockwork Gnome (Race)'),(696,'Kaladim Citizen (Race)'),(697,'Faction697'),(698,'Faction698'),(699,'Faction699'),(700,'Mercenary Coalition'),(701,'Beta KOS Copy 1'),(702,'Beta KOS Copy 2'),(703,'Beta KOS Copy 3'),(704,'Beta KOS Copy 4'),(705,'Beta KOS Copy 5'),(706,'Beta KOS Copy 6'),(707,'Beta KOS Copy 7'),(708,'Beta KOS Copy 8'),(709,'The Yendan'),(710,'Guardians of War'),(711,'Castle Rulnavis'),(712,'Castle Tamrel'),(713,'Soldiers of Tallon'),(714,'Soldiers of Vallon'),(715,'Inhabitants of Rulnavis'),(716,'Inhabitants of Tamrel'),(717,'Keepers of Narikor'),(718,'The Disgraced'),(719,'Minions of Rot'),(720,'Memorial Gnomelike'),(721,'Iron Legion'),(722,'Faction722'),(723,'Faction723'),(724,'Faction724'),(725,'Faction725'),(726,'Faction726'),(727,'Faction727'),(728,'Faction728'),(729,'Faction729'),(730,'Faction730'),(731,'Faction731'),(732,'Faction732'),(733,'Faction733'),(734,'Faction734'),(735,'Faction735'),(736,'Faction736'),(737,'Faction737'),(738,'Faction738'),(739,'Faction739'),(740,'Faction740'),(741,'Faction741'),(742,'Faction742'),(743,'Faction743'),(744,'Faction744'),(745,'Faction745'),(746,'Faction746'),(747,'Faction747'),(748,'Faction748'),(749,'Faction749'),(750,'Faction750'),(751,'Faction751'),(752,'Faction752'),(753,'Faction753'),(754,'Faction754'),(755,'Faction755'),(756,'Faction756'),(757,'Faction757'),(758,'Faction758'),(759,'Faction759'),(760,'Faction760'),(761,'Faction761'),(762,'Faction762'),(763,'Faction763'),(764,'Faction764'),(765,'Faction765'),(766,'Faction766'),(767,'Faction767'),(768,'Faction768'),(769,'Faction769'),(770,'Faction770'),(771,'Faction771'),(772,'Faction772'),(773,'Faction773'),(774,'Faction774'),(775,'Faction775'),(776,'Faction776'),(777,'Faction777'),(778,'Faction778'),(779,'Faction779'),(780,'Faction780'),(781,'Faction781'),(782,'Faction782'),(783,'Faction783'),(784,'Faction784'),(785,'Faction785'),(786,'Faction786'),(787,'Faction787'),(788,'Faction788'),(789,'Faction789'),(790,'Faction790'),(791,'Faction791'),(792,'Faction792'),(793,'Faction793'),(794,'Faction794'),(795,'Faction795'),(796,'Faction796'),(797,'Faction797'),(798,'Faction798'),(799,'Faction799'),(800,'Faction800'),(801,'Faction801'),(802,'Faction802'),(803,'Faction803'),(804,'Faction804'),(805,'Faction805'),(806,'Faction806'),(807,'Faction807'),(808,'Faction808'),(809,'Faction809'),(810,'Faction810'),(811,'Faction811'),(812,'Faction812'),(813,'Faction813'),(814,'Faction814'),(815,'Faction815'),(816,'Faction816'),(817,'Faction817'),(818,'Faction818'),(819,'Faction819'),(820,'Faction820'),(821,'Faction821'),(822,'Faction822'),(823,'Faction823'),(824,'Faction824'),(825,'Faction825'),(826,'Faction826'),(827,'Faction827'),(828,'Faction828'),(829,'Faction829'),(830,'Faction830'),(831,'Faction831'),(832,'Faction832'),(833,'Faction833'),(834,'Faction834'),(835,'Faction835'),(836,'Faction836'),(837,'Faction837'),(838,'Faction838'),(839,'Faction839'),(840,'Faction840'),(841,'Faction841'),(842,'Faction842'),(843,'Faction843'),(844,'Faction844'),(845,'Faction845'),(846,'Faction846'),(847,'Faction847'),(848,'Faction848'),(849,'Faction849'),(850,'Faction850'),(851,'Faction851'),(852,'Faction852'),(853,'Faction853'),(854,'Faction854'),(855,'Faction855'),(856,'Faction856'),(857,'Faction857'),(858,'Faction858'),(859,'Faction859'),(860,'Faction860'),(861,'Faction861'),(862,'Faction862'),(863,'Faction863'),(864,'Faction864'),(865,'Faction865'),(866,'Faction866'),(867,'Faction867'),(868,'Faction868'),(869,'Faction869'),(870,'Faction870'),(871,'Faction871'),(872,'Faction872'),(873,'Faction873'),(874,'Faction874'),(875,'Faction875'),(876,'Faction876'),(877,'Faction877'),(878,'Faction878'),(879,'Faction879'),(880,'Faction880'),(881,'Faction881'),(882,'Faction882'),(883,'Faction883'),(884,'Faction884'),(885,'Faction885'),(886,'Faction886'),(887,'Faction887'),(888,'Faction888'),(889,'Faction889'),(890,'Faction890'),(891,'Faction891'),(892,'Faction892'),(893,'Faction893'),(894,'Faction894'),(895,'Faction895'),(896,'Faction896'),(897,'Faction897'),(898,'Faction898'),(899,'Faction899'),(900,'Faction900'),(901,'Faction901'),(902,'Faction902'),(903,'Faction903'),(904,'Faction904'),(905,'Faction905'),(906,'Faction906'),(907,'Faction907'),(908,'Faction908'),(909,'Faction909'),(910,'Faction910'),(911,'Faction911'),(912,'Faction912'),(913,'Faction913'),(914,'Faction914'),(915,'Faction915'),(916,'Faction916'),(917,'Faction917'),(918,'Faction918'),(919,'Faction919'),(920,'Faction920'),(921,'Faction921'),(922,'Faction922'),(923,'Faction923'),(924,'Faction924'),(925,'Faction925'),(926,'Faction926'),(927,'Faction927'),(928,'Faction928'),(929,'Faction929'),(930,'Faction930'),(931,'Faction931'),(932,'Faction932'),(933,'Faction933'),(934,'Faction934'),(935,'Faction935'),(936,'Faction936'),(937,'Faction937'),(938,'Faction938'),(939,'Faction939'),(940,'Faction940'),(941,'Faction941'),(942,'Faction942'),(943,'Faction943'),(944,'Faction944'),(945,'Faction945'),(946,'Faction946'),(947,'Faction947'),(948,'Faction948'),(949,'Faction949'),(950,'Faction950'),(951,'Faction951'),(952,'Faction952'),(953,'Faction953'),(954,'Faction954'),(955,'Faction955'),(956,'Faction956'),(957,'Faction957'),(958,'Faction958'),(959,'Faction959'),(960,'Faction960'),(961,'Faction961'),(962,'Faction962'),(963,'Faction963'),(964,'Faction964'),(965,'Faction965'),(966,'Faction966'),(967,'Faction967'),(968,'Faction968'),(969,'Faction969'),(970,'Faction970'),(971,'Faction971'),(972,'Faction972'),(973,'Faction973'),(974,'Faction974'),(975,'Faction975'),(976,'Faction976'),(977,'Faction977'),(978,'Faction978'),(979,'Faction979'),(980,'Faction980'),(981,'Faction981'),(982,'Faction982'),(983,'Faction983'),(984,'Faction984'),(985,'Faction985'),(986,'Faction986'),(987,'Faction987'),(988,'Faction988'),(989,'Faction989'),(990,'Faction990'),(991,'Faction991'),(992,'Faction992'),(993,'Faction993'),(994,'Faction994'),(995,'Faction995'),(996,'Faction996'),(997,'Faction997'),(998,'Faction998'),(999,'Faction999'),(1000,'Slaves of Gloomingdeep'),(1001,'Kobolds of Gloomingdeep'),(1002,'Creatures of Gloomingdeep'),(1003,'Guards of Gloomingdeep'),(1004,'Animals of Taelosia'),(1005,'Qeynos Elite Watch'),(1006,'Troupe of Free Speakers'),(1007,'Riftseekers'),(1008,'Discordant Creatures of Kuua'),(1009,'Denizens of Discord'),(1010,'Children of Dranik'),(1011,'Followers of Mekvidarsh'),(1012,'Followers of Loschryre'),(1013,'Overlord Mata Muram'),(1014,'BetaOmensNPCKOS'),(1015,'Creatures of Kuua'),(1016,'Dranik Loyalists'),(1017,'Senior Guides of Norrath'),(1018,'Children of Mistmoore'),(1019,'Elemental Invaders'),(1020,'Lanys T`Vyl'),(1021,'Dark Reign'),(1022,'Firiona Vie'),(1023,'Norrath\'s Keepers'),(1024,'Tirranun'),(1025,'Minions of Tirranun'),(1026,'Volkara'),(1027,'Volkara\'s Brood'),(1028,'Yar`lir'),(1029,'Thunder Guardians'),(1030,'Kessdona'),(1031,'Rikkukin'),(1032,'Stillmoon Acolytes'),(1033,'Vishimtar'),(1034,'Nest Guardians'),(1035,'Cursed Drakes'),(1036,'Scorchclaw Goblins'),(1037,'Frostflake Goblins'),(1038,'Whitecap Goblins'),(1039,'Dirtdigger Goblins'),(1040,'Greenfoot Goblins'),(1041,'Grel'),(1042,'Defenders of the Broodlands'),(1043,'BetaNPCKOS-PC'),(1044,'The Guardians'),(1045,'The Guardian\'s Alliance'),(1046,'The Dark Alliance'),(1047,'The Dark Suppliers'),(1048,'Sporali Collective'),(1049,'Deep Sporali'),(1050,'Expedition 328'),(1051,'Creep Reapers'),(1052,'Shadowmane'),(1053,'Ragepaw'),(1054,'Shiliskin Empire'),(1055,'Free Traders of Malgrinnor'),(1056,'Fallen Guard of Illsalin'),(1057,'Disciples of Jarzarrad'),(1058,'Scions of Dreadspire'),(1059,'Agents of Dreadspire'),(1060,'Creatures of Darkhollow'),(1061,'BetaNPCKOS-NPC'),(1062,'Assistants of the Scribe'),(1063,'Citizens of Freeport'),(1064,'Spirits of Arcstone'),(1065,'Fledgling Scrykin'),(1066,'Elder Scrykin'),(1067,'Constructs of Relic'),(1068,'Legions of Sverag'),(1069,'Ravenous Undead'),(1070,'Wildfang'),(1071,'Redfist Legionnaires'),(1072,'The Irebound'),(1073,'Ragefang'),(1074,'The Venom Swarm'),(1075,'Deathshed Legion'),(1076,'Blood Furies'),(1077,'Furies of the North'),(1078,'Stormbreaker Furies'),(1079,'Bonecracker Furies'),(1080,'Furies of Shir'),(1081,'The Wall-Borne'),(1082,'Legion of Rage'),(1083,'The Wretched'),(1084,'Trueblood Coven'),(1085,'Citizens of Takish-Hiz'),(1086,'Insurgents of Ro'),(1087,'Creatures of Elddar'),(1088,'Clan Vorzek'),(1089,'Tribe of the Nogdha'),(1090,'Servants of the Compact'),(1091,'Creatures of Sandflow'),(1092,'Blood of Ro'),(1093,'Direwind Gnolls'),(1094,'Forces of Dyn\'leth'),(1095,'Crusade of the Scale'),(1096,'Blackfeather Harpies'),(1097,'Blackfeather Royalty'),(1098,'Blackfeather Animals'),(1099,'Blackfeather Spiders'),(1100,'Shades of Zek'),(1101,'Ancestors of Valdeholm'),(1102,'Converts of Valdeholm'),(1103,'Valdeholm Citizens'),(1104,'Wraithguard'),(1105,'Wraithguard Leadership'),(1106,'Drakkin'),(1107,'Tuffein'),(1108,'Tuffein Leadership'),(1109,'Minohten'),(1110,'Nymphs of the Windwillow'),(1111,'Nymphs of the Darkwater'),(1112,'Blackfeather Raiders'),(1113,'Dromrek'),(1114,'Lost of the Windwillow'),(1115,'Foulblood Fieldstrider Centaur'),(1116,'Fieldstrider Centaur'),(1117,'Stonemight Goblins'),(1118,'Darkfell Clan'),(1119,'Guardians of the Grove'),(1120,'Coldeye Clan'),(1121,'Nightmoon Kobolds'),(1122,'Frostbite Clan'),(1123,'Drones of Stonehive'),(1124,'Legion of Stonehive'),(1125,'Spirits of Nokk'),(1126,'Guardians of the Dark Tower'),(1127,'The Blightfire Tainted'),(1128,'Madcaps - Mushroom Men'),(1129,'Circle of the Crystalwing'),(1130,'Selay'),(1131,'Dyn`leth'),(1132,'Lethar'),(1133,'Vergalid'),(1134,'Scholars of Solusek'),(1135,'Infiltrators and Traitors of Ashengate'),(1136,'Nature Animal'),(1137,'Crescent Reach Guards'),(1138,'Greater Shades of Zek'),(1139,'Newbie Guard'),(1140,'Drowned Dead'),(1141,'Sharpeye\'s Reef Runners'),(1142,'Blacksail Pirates'),(1143,'Stormscape Aviaks'),(1144,'Galigaba'),(1145,'King Peleke'),(1146,'Sunstone Goblins'),(1147,'King Vigdos'),(1148,'Tidewater Goblins'),(1149,'King Tondra'),(1150,'Platinum Efreeti'),(1151,'Sphinx of Atiiki'),(1152,'Nature Animal - Snake'),(1153,'Nature Animal - Crocodile'),(1154,'Nature Animal - Basilisk'),(1155,'Nature Animal - Shark'),(1156,'Nature Animal - Spider'),(1157,'Nature Animal - Wolf'),(1158,'Nature Animal - Bear'),(1159,'Nature Animal - Beetle'),(1160,'Nature Animal - Fish'),(1161,'Combine Citizens'),(1162,'Disciples of Zhisza'),(1163,'Brood of Vaakiszh'),(1164,'Fangs of Saarisz'),(1165,'Katta Elementals'),(1166,'Sirens of Maiden\'s Grave'),(1167,'The Cursed of Monkey Rock'),(1168,'Minions of Solusek Ro'),(1169,'Blacksail Smugglers'),(1170,'Combine Empire Merchants'),(1171,'Beta Enemy'),(1172,'Beta Friend'),(1173,'Beta Neutral 2'),(1174,'The Cursed of Monkey Rock (Instance)'),(1175,'Captains of Dyn`leth'),(1176,'Blood of Solusek'),(1177,'Guardian '),(1178,'Workshop Workers Union'),(1179,'Blackwater'),(1180,'Kirathas'),(1181,'The Borrowers'),(1182,'Erollisi\'s Scorned'),(1183,'Bertoxxulous\' Chosen'),(1184,'Camp Valor'),(1185,'Ladies of the Light'),(1186,'Loyalists of Kerafyrm'),(1187,'Emissaries of Claws of Veeshan'),(1188,'Crusaders of Veeshan'),(1189,'Brownie Rebels'),(1190,'Ak`Anon Strike Force V'),(1191,'Fang Breakers'),(1192,'The Fallen'),(1193,'Ancestors of the Crypt'),(1194,'Minions of Meldrath'),(1195,'Bloodmoon Were-Orcs'),(1196,'Darkvine Villagers'),(1197,'Wind Nymphs'),(1198,'Guardian Defense Forces'),(1199,'Residents of the Glade'),(1200,'Bayle\'s Irregulars'),(1201,'Plaguebringer Parishioners'),(1202,'Blackburrow Gnolls'),(1203,'Darkpaw Gnolls'),(1204,'Army of Light '),(1205,'Thaulen Teir\'Duuren'),(1206,'Kithicor Irregulars'),(1207,'Prisoners of the Dark Elves'),(1208,'Discordant Agents'),(1209,'Dragorn Forces'),(1210,'Discordant Army'),(1211,'Toskirakk Slaves'),(1212,'Toskirakk Slavers'),(1213,'Rallosian Guards'),(1214,'Toskirakk Merchants'),(1215,'Rathe Council'),(1216,'Rallosian Invaders'),(1217,'Rathe Living Heaps'),(1218,'Rathe Council Defenders'),(1219,'Darkhammer Dwarves'),(1220,'Primal Crystallines'),(1221,'Oceangreen Residents'),(1222,'Cirtan, Bayle\'s Herald'),(1223,'Silla Herald'),(1224,'Tynoc, Herald of Scale'),(1225,'Mitius, Herald of Change'),(1226,'Herald Argoth'),(1227,'Herald of Druzzil Ro'),(1228,'Ancient Blackburrow Gnolls'),(1229,'Sebilisian Empire'),(1230,'Discordant Armies'),(1231,'Tanglefuse\'s Clockworks'),(1232,'Underfoot Citizens'),(1233,'Underfoot Autarchs'),(1234,'Underfoot Denizens'),(1235,'Underfoot Protectors'),(1236,'Underfoot Devout'),(1237,'Cliknar'),(1238,'Underfoot Subversionists'),(1239,'Clockwork Magma Meter'),(1240,'Morell-Thule'),(1241,'Degmar\'s Loyalists'),(1242,'Degmar\'s Commoners'),(1243,'Degmar\'s Haunts'),(1244,'Brother Island Residents'),(1245,'Brother Island Animal'),(1246,'Sirens of the Endless Cavern'),(1247,'Faction1247'),(1248,'Faction1248'),(1249,'Faction1249'),(1250,'Faction1250'),(1251,'Faction1251'),(1252,'Faction1252'),(1253,'Faction1253'),(1254,'Faction1254'),(1255,'Faction1255'),(1256,'Faction1256'),(1257,'Faction1257'),(1258,'Faction1258'),(1259,'Faction1259'),(1260,'Faction1260'),(1261,'Faction1261'),(1262,'Faction1262'),(1263,'Faction1263'),(1264,'Faction1264'),(1265,'Faction1265'),(1266,'Faction1266'),(1267,'Faction1267'),(1268,'Faction1268'),(1269,'Faction1269'),(1270,'Faction1270'),(1271,'Faction1271'),(1272,'Faction1272'),(1273,'Faction1273'),(1274,'Faction1274'),(1275,'Faction1275'),(1276,'Faction1276'),(1277,'Faction1277'),(1278,'Faction1278'),(1279,'Faction1279'),(1280,'Faction1280'),(1281,'Faction1281'),(1282,'Faction1282'),(1283,'Faction1283'),(1284,'Faction1284'),(1285,'Faction1285'),(1286,'Faction1286'),(1287,'Faction1287'),(1288,'Faction1288'),(1289,'Faction1289'),(1290,'Faction1290'),(1291,'Faction1291'),(1292,'Faction1292'),(1293,'Faction1293'),(1294,'Faction1294'),(1295,'Faction1295'),(1296,'Faction1296'),(1297,'Faction1297'),(1298,'Faction1298'),(1299,'Faction1299'),(1300,'Faction1300'),(1301,'Faction1301'),(1302,'Faction1302'),(1303,'Faction1303'),(1304,'Faction1304'),(1305,'Faction1305'),(1306,'Faction1306'),(1307,'Faction1307'),(1308,'Faction1308'),(1309,'Faction1309'),(1310,'Faction1310'),(1311,'Faction1311'),(1312,'Faction1312'),(1313,'Faction1313'),(1314,'Faction1314'),(1315,'Faction1315'),(1316,'Faction1316'),(1317,'Faction1317'),(1318,'Faction1318'),(1319,'Faction1319'),(1320,'Faction1320'),(1321,'Faction1321'),(1322,'Faction1322'),(1323,'Faction1323'),(1324,'Faction1324'),(1325,'Faction1325'),(1326,'Faction1326'),(1327,'Faction1327'),(1328,'Faction1328'),(1329,'Faction1329'),(1330,'Faction1330'),(1331,'Faction1331'),(1332,'Faction1332'),(1333,'Faction1333'),(1334,'Faction1334'),(1335,'Faction1335'),(1336,'Faction1336'),(1337,'Faction1337'),(1338,'Faction1338'),(1339,'Faction1339'),(1340,'Faction1340'),(1341,'Faction1341'),(1342,'Faction1342'),(1343,'Faction1343'),(1344,'Faction1344'),(1345,'Faction1345'),(1346,'Faction1346'),(1347,'Faction1347'),(1348,'Faction1348'),(1349,'Faction1349'),(1350,'Faction1350'),(1351,'Faction1351'),(1352,'Faction1352'),(1353,'Faction1353'),(1354,'Faction1354'),(1355,'Faction1355'),(1356,'Faction1356'),(1357,'Faction1357'),(1358,'Faction1358'),(1359,'Faction1359'),(1360,'Faction1360'),(1361,'Faction1361'),(1362,'Faction1362'),(1363,'Faction1363'),(1364,'Faction1364'),(1365,'Faction1365'),(1366,'Faction1366'),(1367,'Faction1367'),(1368,'Faction1368'),(1369,'Faction1369'),(1370,'Faction1370'),(1371,'Faction1371'),(1372,'Faction1372'),(1373,'Faction1373'),(1374,'Faction1374'),(1375,'Faction1375'),(1376,'Faction1376'),(1377,'Faction1377'),(1378,'Faction1378'),(1379,'Faction1379'),(1380,'Faction1380'),(1381,'Faction1381'),(1382,'Faction1382'),(1383,'Faction1383'),(1384,'Faction1384'),(1385,'Faction1385'),(1386,'Faction1386'),(1387,'Faction1387'),(1388,'Faction1388'),(1389,'Faction1389'),(1390,'Faction1390'),(1391,'Faction1391'),(1392,'Faction1392'),(1393,'Faction1393'),(1394,'Faction1394'),(1395,'Faction1395'),(1396,'Faction1396'),(1397,'Faction1397'),(1398,'Faction1398'),(1399,'Faction1399'),(1400,'Faction1400'),(1401,'Faction1401'),(1402,'Faction1402'),(1403,'Faction1403'),(1404,'Faction1404'),(1405,'Faction1405'),(1406,'Faction1406'),(1407,'Faction1407'),(1408,'Faction1408'),(1409,'Faction1409'),(1410,'Faction1410'),(1411,'Faction1411'),(1412,'Faction1412'),(1413,'Faction1413'),(1414,'Faction1414'),(1415,'Faction1415'),(1416,'Faction1416'),(1417,'Faction1417'),(1418,'Faction1418'),(1419,'Faction1419'),(1420,'Faction1420'),(1421,'Faction1421'),(1422,'Faction1422'),(1423,'Faction1423'),(1424,'Faction1424'),(1425,'Faction1425'),(1426,'Faction1426'),(1427,'Faction1427'),(1428,'Faction1428'),(1429,'Faction1429'),(1430,'Faction1430'),(1431,'Faction1431'),(1432,'Faction1432'),(1433,'Faction1433'),(1434,'Faction1434'),(1435,'Faction1435'),(1436,'Faction1436'),(1437,'Faction1437'),(1438,'Faction1438'),(1439,'Faction1439'),(1440,'Faction1440'),(1441,'Faction1441'),(1442,'Faction1442'),(1443,'Faction1443'),(1444,'Faction1444'),(1445,'Faction1445'),(1446,'Faction1446'),(1447,'Faction1447'),(1448,'Faction1448'),(1449,'Faction1449'),(1450,'Faction1450'),(1451,'Faction1451'),(1452,'Faction1452'),(1453,'Faction1453'),(1454,'Faction1454'),(1455,'Faction1455'),(1456,'Faction1456'),(1457,'Faction1457'),(1458,'Faction1458'),(1459,'Faction1459'),(1460,'Faction1460'),(1461,'Faction1461'),(1462,'Faction1462'),(1463,'Faction1463'),(1464,'Faction1464'),(1465,'Faction1465'),(1466,'Faction1466'),(1467,'Faction1467'),(1468,'Faction1468'),(1469,'Faction1469'),(1470,'Faction1470'),(1471,'Faction1471'),(1472,'Faction1472'),(1473,'Faction1473'),(1474,'Faction1474'),(1475,'Faction1475'),(1476,'Faction1476'),(1477,'Faction1477'),(1478,'Faction1478'),(1479,'Faction1479'),(1480,'Faction1480'),(1481,'Faction1481'),(1482,'Faction1482'),(1483,'Seru'),(1484,'Hand of Seru'),(1485,'Eye of Seru'),(1486,'Heart of Seru'),(1487,'Shoulders of Seru'),(1488,'The Recuso'),(1489,'Gladiators and Slaves of Sanctus Seru'),(1490,'Grimlings of the Moor'),(1491,'Sonic Wolves of the Moor'),(1492,'Owlbears of the Moor'),(1493,'Grimling Invaders'),(1494,'Owlbear Invaders'),(1495,'Sonic Wolf Invaders'),(1496,'Grimling Defenders'),(1497,'Owlbear Defenders'),(1498,'Sonic Wolf Defenders'),(1499,'Citizens of Seru'),(1500,'Gor Taku'),(1501,'Shak Dratha'),(1502,'Katta Castellum Citizens'),(1503,'Validus Custodus'),(1504,'Magus Conlegium'),(1505,'Nathyn Illuminious'),(1506,'Coterie of the Eternal Night'),(1507,'Valdanov Zevfeer'),(1508,'Traders of the Haven'),(1509,'Haven Defenders'),(1510,'House of Fordel'),(1511,'House of Midst'),(1512,'House of Stout'),(1513,'Guardians of Shar Vahl'),(1514,'Testfaction'),(1515,'Dark Forest Denizens'),(1516,'Grimlings of the Forest'),(1517,'Deepwood Owlbears'),(1518,'Pack of the Great Moon'),(1519,'Lodikai'),(1520,'Whisperling'),(1521,'Akheva'),(1522,'Primordial Malice'),(1523,'Feast of the Burrowers'),(1524,'Johanius Barleou'),(1525,'Coterie Elite'),(1526,'Old Disciples of Kerafyrm'),(1527,'Spire Spirits'),(1528,'Thought Leeches'),(1529,'Khala Dun'),(1530,'Taruun'),(1531,'Jharin'),(1532,'Khati Sha'),(1533,'Dar Khura'),(1534,'Luclin Monsters'),(1535,'Brood of Ssraeshza'),(1536,'Emperor Ssraeshza'),(1537,'Iksar Temple Slaves'),(1538,'Spirits of Katta Castellum'),(1539,'Netherbians'),(1540,'Troglodytes'),(1541,'Hand Legionnaries'),(1542,'Haven Smugglers'),(1543,'Servants of Aero'),(1544,'Servants of Terra'),(1545,'Servants of Inferno'),(1546,'Servants of Hydro'),(1547,'Vornol Transon'),(1548,'The Vas Ren Clan'),(1549,'The Grol Baku Clan'),(1550,'The Cral Ligi Clan'),(1551,'The Tro Jeg Clan'),(1552,'Vah Shir Crusaders'),(1553,'Netherbian Ambush'),(1554,'Netherbian Caravan'),(1555,'Grieg'),(1556,'Luclin'),(1557,'Dark Sendings'),(1558,'Grimling Captives'),(1559,'Lake Recondite Bandits'),(1560,'Kanaad'),(1561,'Concilium Universus'),(1562,'Disciples of Rhag`Zadune'),(1563,'The Sambata Tribe'),(1564,'Dawnhoppers'),(1565,'Tarmok Tribe'),(1566,'Netok Tribe'),(1567,'Katta Traitors'),(1568,'Deepshade Collective'),(1569,'Deklean Korgad'),(1570,'Order of Autarkic Umbrage'),(1571,'Shei Vinitras'),(1572,'Anti Vinitras'),(1573,'The Bloodtribe'),(1574,'Minions of the Sunlord'),(1575,'Imps'),(1576,'Kingdom of Above and Below'),(1577,'The Truth'),(1578,'Deklean Korgad'),(1579,'Droga Goblins'),(1580,'Nurga Goblins'),(1581,'Luclin Friendly Monsters'),(1582,'Outcasts and Mutants'),(1583,'Cult of the Great Saprophyte'),(1584,'Citizens of Shar Vahl'),(1585,'Fiends of the Grove'),(1586,'Savage Spirit'),(1587,'Zordak Ragefire'),(1588,'Captain Cruikshanks'),(1589,'Scourge'),(1590,'Captain Stottal'),(1591,'Captain Smythe'),(1592,'Captain Dorian Dulein'),(1593,'Frogloks of Krup'),(1594,'Cult of the Arisen'),(1595,'New Alliance of Stone'),(1596,'Idelia the Serene'),(1597,'Residents of Jaggedpine'),(1598,'Anchorites of Brell Serilis'),(1599,'Darkpaws of Jaggedpine'),(1600,'Guardians of the Hatchling'),(1601,'Pirates of the Pine'),(1602,'Critters of Jaggedpine'),(1603,'Dryads of the Grove'),(1604,'Clan Grikbar'),(1605,'Haven Smuggler Associates'),(1606,'KOS to Beta Neutral'),(1607,'Plague Bringer'),(1608,'Spirits of Lxanvom'),(1609,'Askr the Lost'),(1610,'Greater Jord Giants'),(1611,'Greater Brann Giants'),(1612,'Greater Vind Giants'),(1613,'Greater Vann Giants'),(1614,'Lesser Jord Giants'),(1615,'Lesser Brann Giants'),(1616,'Lesser Vind Giants'),(1617,'Lesser Vann Giants'),(1618,'Storm Guardians'),(1619,'The Rainkeeper'),(1620,'Treants of Jaggedpine'),(1621,'Agnarr'),(1622,'Arboreans of the Faydark'),(1623,'Disciples of Kerafyrm'),(1624,'Servants of Saryrn'),(1625,'Guardians of Justice'),(1626,'Jacosh Steldenn'),(1627,'Prisoners of Justice'),(1628,'Creatures of Justice'),(1629,'Gralloks'),(1630,'Burning Dead'),(1631,'KOS All PC And Beta Neutral'),(1632,'Denizens of Water'),(1633,'Minions of Coirnav'),(1634,'Fish Lords'),(1635,'Dwellers of the Deep'),(1636,'Inhabitants of Tanaan'),(1637,'Truespirit Companion'),(1638,'Rallos Zek, The Warlord'),(1639,'Tallon Zek'),(1640,'Vallon Zek'),(1641,'Eriak'),(1642,'The Damned of Narikor'),(1643,'The Diaku'),(1644,'The Gindan'),(1645,'The Hendin'),(1646,'The Decorus'),(1647,'Gladiators of Drunder'),(1648,'Denizens of Fire'),(1649,'Minions of Fennin Ro'),(1650,'Inhabitants of Tranquility'),(1651,'Victim of Torment'),(1652,'Stampeding War Boar'),(1653,'War Boar Piglet'),(1654,'Inhabitants of Disease'),(1655,'Inhabitants of Valor'),(1656,'Battalion of Marr'),(1657,'Rats of Justice'),(1658,'Denizens of Storm'),(1659,'Lost Kingdom of Lok'),(1660,'Koka\'Vor Tribe'),(1661,'Inhabitants of Air'),(1662,'Guardians of the Living Earth'),(1663,'The Protectorate of the Twelve'),(1664,'Eino'),(1665,'Frogloks of Sebilis'),(1666,'Frogloks of Ykesha'),(1667,'Fallen Follies of Mischief'),(1668,'Lhranc the Disgraced'),(1669,'Minions of Enmity'),(1670,'Minions of Hope'),(1671,'Agents of the Pillars'),(1672,'Friends of Zordak Ragefire'),(1673,'Enemies of Zordak Ragefire'),(1674,'Kyle Bayle'),(1675,'Kyle Bayle\'s Royal Guard'),(1676,'Hills Revenant'),(1677,'Dead Hills Archaeologists'),(1678,'Xulous of the Dead Hills'),(1679,'The Kromtus'),(1680,'Bloodfeather Aviaks'),(1681,'The Thaell Ew'),(1682,'Faction1682'),(1683,'Faction1683'),(1684,'Faction1684'),(1685,'Faction1685'),(1686,'Faction1686'),(1687,'Faction1687'),(1688,'Faction1688'),(1689,'Faction1689'),(1690,'Faction1690'),(1691,'Faction1691'),(1692,'Faction1692'),(1693,'Faction1693'),(1694,'Faction1694'),(1695,'Faction1695'),(1696,'Faction1696'),(1697,'Faction1697'),(1698,'Faction1698'),(1699,'Faction1699'),(1700,'Torgiran'),(1701,'Warlord Ngrub'),(1702,'Resistance Miners'),(1703,'Nadox Initiate'),(1704,'Cursed Frogloks of Gukta'),(1705,'Creatures of Gunthak'),(1706,'Undead of Gunthak'),(1707,'Residents of Gunthak'),(1708,'Crew of the Scorned Maiden'),(1709,'Protectors of Gukta'),(1710,'Innothule Monster'),(1711,'Clerics of Gutka'),(1712,'Warriors of Gukta'),(1713,'Paladins of Gukta'),(1714,'Wizards of Gukta'),(1715,'Shaman of Gukta'),(1716,'High Council of Gukta'),(1717,'Lorekeepers of Gukta'),(1718,'Guktan Elders'),(1719,'Citizens of Gukta'),(1720,'Guktan Suppliers'),(1721,'Troll Raiders'),(1722,'Exiled Frogloks'),(1723,'Grimling Bandits'),(1724,'Newbie Monster'),(1725,'Syrik Iceblood'),(1726,'Inhabitants of Time'),(1727,'City Vermin'),(1728,'Betrayers of Di`Zok'),(1729,'Followers of Korucust'),(1730,'LDoNGood'),(1731,'LDoNEvil'),(1732,'Tribe Vrodak'),(1733,'Witnesses of Hate'),(1734,'Forgotten Guktan Spirits'),(1735,'Innoruuk\'s Curse of the Cauldron'),(1736,'Frostfoot Goblins'),(1737,'Lost Minions of Miragul'),(1738,'Planar Collective'),(1739,'Synarcana'),(1740,'Agents of the Synarcana'),(1741,'Orphans'),(1742,'Sustainers'),(1743,'Loyals'),(1744,'Progeny'),(1745,'Rujarkian Slavers'),(1746,'The Broken'),(1747,'Steelcrown'),(1748,'Spiritbound'),(1749,'Steelslaves'),(1750,'Citizens of Takish-Hiz'),(1751,'Geomantic Compact'),(1752,'Royal Attendants'),(1753,'Flowkeepers'),(1754,'Architects of Sand'),(1755,'Sandworkers'),(1756,'LDoN Hostages'),(1757,'Servants of the First Witness'),(1758,'Guktan Scouts'),(1759,'Wayfarers Brotherhood'),(1760,'Minions of Mischief'),(1761,'Nihil'),(1762,'Trusik Tribe'),(1763,'Legion of Mata Muram'),(1764,'Tunat`Muram'),(1765,'Zun`Muram'),(1766,'Pixtt'),(1767,'Hexxt'),(1768,'Rav'),(1769,'Creatures of Taelosia'),(1770,'Yunjo Slave Resistance'),(1771,'Gladiators of Mata Muram'),(1772,'The Sun'),(1773,'The Moon'),(1774,'Orcakar Players'),(1775,'Citizens of Argath'),(1776,'Living Steel'),(1777,'Argathian Looters'),(1778,'Citizens of Arelis'),(1779,'Farmers of the Lunanyn'),(1780,'Minions of War'),(1781,'Minions of the Sun'),(1782,'Dominion of Beasts'),(1783,'Citizens of Sarith'),(1784,'Devout of Oseka'),(1785,'Minions of Prexus'),(1786,'Seekers of Splendor'),(1787,'Order of Radiance'),(1788,'Devotees of Decay'),(1789,'Purity of Alra'),(1790,'Paragons of Purity'),(1791,'Shades of Alra'),(1792,'Paragons of Shadows'),(1793,'Arcanists of Alra'),(1794,'Paragons of the Arcane'),(1795,'Living Will of Alra'),(1796,'Paragons of Will'),(1797,'Servants of the Song'),(1798,'Citizens of Erillion'),(1799,'Disciples of Order'),(1800,'The Godblooded'),(1801,'Iceshard Manor'),(1802,'Dragon Death Keep'),(1803,'Apparitions of Fear'),(1804,'Beetles of Shard\'s Landing'),(1805,'Oashim of Shard\'s Landing'),(1806,'Pests of Shard\'s Landing'),(1807,'Scavengers of Shard\'s Landing'),(1808,'Kangon of Shard\'s Landing'),(1809,'Braxi of Shard\'s Landing'),(1810,'Wyverns of Shard\'s Landing'),(1811,'Selyrah of Shard\'s Landing'),(1812,'Goral of Shard\'s Landing'),(1813,'Snakes of Shard\'s Landing'),(1814,'Pumas of Shard\'s Landing'),(1815,'Grendlaen of Shard\'s Landing'),(1816,'Wolves of Shard\'s Landing'),(1817,'Hunters of Shard\'s Landing'),(1818,'Forsaken Believers'),(1819,'The Believers'),(1820,'The Conscripted'),(1821,'Heralds of the Unspoken'),(1822,'Harbingers of Thule'),(1823,'Va`Ker'),(1824,'Terrorwing'),(1825,'Crystal Circle Builders'),(1826,'The Unearthers'),(1827,'The Displaced'),(1828,'The Sol\'Dal'),(1829,'The Ember'),(1830,'Defenders of Decay'),(1831,'Warriors of Rodcet'),(1832,'Faction1832'),(1833,'Faction1833'),(1834,'Faction1834'),(1835,'Harrowing Horde'),(1836,'Western Plains Bandits'),(1837,'Ursarachnids'),(1838,'Doomscale Cultists'),(1839,'Nature Soul - Fire'),(1840,'Nature Soul - Water'),(1841,'Nature Soul - Earth'),(1842,'Nature Soul - Wood'),(1843,'Flaming Jacks'),(1844,'Ethernere Revenants'),(1845,'Ethernere Spirits'),(1846,'King Naythox Thex Loyalists'),(1847,'Queen Cristanos Thex Loyalists'),(1848,'Neriak Fourth Gate Residents'),(1849,'Qeynos Guards of West Karana'),(1850,'Fellowship of the Peacock'),(1851,'Damsel of Decay\'s Denizens'),(1852,'Enemies of Tranquility'),(1853,'Legion of the Overking'),(1854,'Empire of the Di`Zok'),(1855,'Kar`Zok'),(1856,'Flamescale Legion'),(1857,'Guardians of Konikor'),(1858,'Clan Droga'),(1859,'Majestic Centurion Alliance'),(1860,'The Clawdigger Clan'),(1861,'Scorpiki'),(1862,'Denizens of Veeshan\'s Peak'),(1863,'Servants of Esianti'),(1864,'Servants of Aalishai'),(1865,'Servants of Mearatas'),(1866,'Servants of Loruella'),(1867,'Contingent of the Alabaster Owl'),(1868,'Brass Phoenix Brigade'),(1869,'Company of the Alabaster Owl'),(1870,'Brass Phoenix Legion'),(1871,'Lords of Esianti'),(1872,'Lords of Aalishai'),(1873,'Bloodmoon Night-Orcs'),(1874,'Faction1874'),(1875,'Faction1875'),(1876,'Faction1876'),(1877,'Faction1877'),(1878,'Faction1878'),(1879,'Faction1879'),(1880,'Faction1880'),(1881,'Faction1881'),(1882,'Faction1882'),(1883,'Faction1883'),(1884,'Faction1884'),(1885,'Faction1885'),(1886,'Faction1886'),(1887,'Faction1887'),(1888,'Faction1888'),(1889,'Faction1889'),(1890,'Faction1890'),(1891,'Faction1891'),(1892,'Faction1892'),(1893,'Faction1893'),(1894,'Faction1894'),(1895,'Faction1895'),(1896,'Faction1896'),(1897,'Faction1897'),(1898,'Faction1898'),(1899,'Faction1899'),(1900,'Faction1900'),(1901,'Faction1901'),(1902,'Faction1902'),(1903,'Faction1903'),(1904,'Faction1904'),(1905,'Faction1905'),(1906,'Faction1906'),(1907,'Faction1907'),(1908,'Faction1908'),(1909,'Faction1909'),(1910,'Faction1910'),(1911,'Faction1911'),(1912,'Faction1912'),(1913,'Faction1913'),(1914,'Faction1914'),(1915,'Faction1915'),(1916,'Faction1916'),(1917,'Faction1917'),(1918,'Faction1918'),(1919,'Faction1919'),(1920,'Faction1920'),(1921,'Faction1921'),(1922,'Faction1922'),(1923,'Faction1923'),(1924,'Faction1924'),(1925,'Faction1925'),(1926,'Faction1926'),(1927,'Faction1927'),(1928,'Faction1928'),(1929,'Faction1929'),(1930,'Faction1930'),(1931,'Faction1931'),(1932,'Faction1932'),(1933,'Faction1933'),(1934,'Faction1934'),(1935,'Faction1935'),(1936,'Faction1936'),(1937,'Faction1937'),(1938,'Faction1938'),(1939,'Faction1939'),(1940,'Faction1940'),(1941,'Faction1941'),(1942,'Faction1942'),(1943,'Faction1943'),(1944,'Faction1944'),(1945,'Faction1945'),(1946,'Faction1946'),(1947,'Faction1947'),(1948,'Faction1948'),(1949,'Faction1949'),(1950,'Faction1950'),(1951,'Faction1951'),(1952,'Faction1952'),(1953,'Faction1953'),(1954,'Faction1954'),(1955,'Faction1955'),(1956,'Faction1956'),(1957,'Faction1957'),(1958,'Faction1958'),(1959,'Faction1959'),(1960,'Faction1960'),(1961,'Faction1961'),(1962,'Faction1962'),(1963,'Faction1963'),(1964,'Faction1964'),(1965,'Faction1965'),(1966,'Faction1966'),(1967,'Faction1967'),(1968,'Faction1968'),(1969,'Faction1969'),(1970,'Faction1970'),(1971,'Faction1971'),(1972,'Faction1972'),(1973,'Faction1973'),(1974,'Faction1974'),(1975,'Faction1975'),(1976,'Faction1976'),(1977,'Faction1977'),(1978,'Faction1978'),(1979,'Faction1979'),(1980,'Faction1980'),(1981,'Faction1981'),(1982,'Faction1982'),(1983,'Faction1983'),(1984,'Faction1984'),(1985,'Faction1985'),(1986,'Faction1986'),(1987,'Faction1987'),(1988,'Faction1988'),(1989,'Faction1989'),(1990,'Faction1990'),(1991,'Faction1991'),(1992,'Faction1992'),(1993,'Faction1993'),(1994,'Faction1994'),(1995,'Faction1995'),(1996,'Faction1996'),(1997,'Faction1997'),(1998,'Faction1998'),(1999,'Faction1999'),(2000,'Faction2000'),(2001,'Faction2001'),(2002,'Faction2002'),(2003,'Faction2003'),(2004,'Faction2004'),(2005,'Faction2005'),(2006,'Faction2006'),(2007,'Faction2007'),(2008,'Faction2008'),(2009,'Faction2009'),(2010,'Faction2010'),(2011,'Faction2011'),(2012,'Faction2012'),(2013,'Faction2013'),(2014,'Faction2014'),(2015,'Faction2015'),(2016,'Faction2016'),(2017,'Faction2017'),(2018,'Faction2018'),(2019,'Faction2019'),(2020,'Faction2020'),(2021,'Faction2021'),(2022,'Faction2022'),(2023,'Faction2023'),(2024,'Faction2024'),(2025,'Faction2025'),(2026,'Faction2026'),(2027,'Faction2027'),(2028,'Faction2028'),(2029,'Faction2029'),(2030,'Faction2030'),(2031,'Faction2031'),(2032,'Faction2032'),(2033,'Faction2033'),(2034,'Faction2034'),(2035,'Faction2035'),(2036,'Faction2036'),(2037,'Faction2037'),(2038,'Faction2038'),(2039,'Faction2039'),(2040,'Faction2040'),(2041,'Faction2041'),(2042,'Faction2042'),(2043,'Faction2043'),(2044,'Faction2044'),(2045,'Faction2045'),(2046,'Faction2046'),(2047,'Faction2047'); +/*!40000 ALTER TABLE `client_faction_names` ENABLE KEYS */; +UNLOCK TABLES; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2018-12-11 14:54:22 +-- MySQL dump 10.13 Distrib 5.7.24, for Linux (x86_64) +-- +-- Host: 192.168.0.3 Database: peqdb +-- ------------------------------------------------------ +-- Server version 5.7.24-0ubuntu0.16.04.1 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `client_server_faction_map` +-- + +DROP TABLE IF EXISTS `client_server_faction_map`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `client_server_faction_map` ( + `clientid` int(11) NOT NULL, + `serverid` int(11) NOT NULL, + PRIMARY KEY (`clientid`,`serverid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `client_server_faction_map` +-- + +LOCK TABLES `client_server_faction_map` WRITE; +/*!40000 ALTER TABLE `client_server_faction_map` DISABLE KEYS */; +INSERT INTO `client_server_faction_map` VALUES (41,377),(51,506),(60,431),(63,14),(64,357),(65,26),(68,481),(71,94),(73,421),(78,111),(88,386),(90,118),(98,185),(101,200),(104,238),(112,113),(117,148),(119,462),(121,434),(125,374),(143,368),(144,162),(153,420),(156,100),(160,426),(178,371),(201,382),(205,414),(207,165),(209,255),(211,269),(216,351),(217,5),(218,4),(219,9),(220,11),(221,21),(222,22),(223,33),(225,41),(226,43),(227,44),(228,46),(229,47),(230,53),(231,56),(232,57),(233,60),(234,63),(235,66),(236,69),(237,70),(238,71),(239,322),(240,76),(241,77),(242,79),(244,90),(245,91),(246,99),(247,151),(248,418),(249,226),(250,327),(251,106),(252,108),(253,28),(254,112),(255,115),(256,20),(257,119),(258,120),(259,121),(261,128),(262,135),(263,133),(264,359),(265,143),(266,145),(267,147),(268,50),(269,182),(270,155),(271,86),(272,159),(273,164),(274,169),(275,170),(276,174),(278,177),(279,178),(280,183),(281,184),(282,186),(283,243),(284,192),(285,207),(286,208),(287,209),(288,210),(289,211),(290,215),(291,217),(292,218),(293,219),(295,326),(296,235),(297,246),(298,247),(299,248),(300,259),(302,265),(303,268),(304,273),(305,275),(306,279),(307,281),(308,292),(309,300),(310,304),(311,311),(312,314),(313,250),(315,339),(316,283),(317,346),(318,353),(319,355),(320,361),(321,309),(322,220),(323,305),(324,347),(325,212),(326,92),(327,294),(328,213),(329,31),(330,105),(331,214),(332,149),(333,176),(334,88),(336,48),(337,232),(338,216),(340,256),(341,257),(342,240),(343,267),(344,18),(345,167),(346,51),(353,378),(354,229),(355,316),(361,12),(362,258),(363,331),(364,299),(365,249),(366,166),(367,507),(368,83),(370,87),(371,117),(372,227),(373,224),(374,233),(375,75),(376,131),(378,313),(379,29),(382,175),(385,80),(386,376),(387,17),(388,97),(394,295),(397,302),(398,274),(401,306),(402,236),(403,237),(404,342),(405,67),(406,49),(407,278),(409,343),(412,187),(415,320),(416,291),(417,397),(418,364),(419,188),(420,98),(423,456),(424,465),(425,156),(426,1),(427,308),(428,223),(429,179),(430,42),(431,345),(432,241),(433,160),(434,301),(435,352),(436,362),(437,391),(438,290),(439,303),(440,30),(441,193),(442,62),(443,24),(444,317),(445,282),(446,323),(447,251),(448,189),(449,344),(450,336),(451,23),(452,325),(454,89),(455,221),(456,114),(457,150),(458,116),(459,199),(460,399),(461,395),(462,32),(463,244),(464,365),(465,337),(467,134),(469,263),(471,40),(473,172),(474,310),(475,180),(532,461),(689,297),(692,253),(693,36),(694,380),(695,45),(1001,424),(1002,401),(1003,475),(1007,435),(1009,409),(1010,398),(1013,432),(1014,487),(1016,410),(1020,425),(1021,404),(1022,101),(1023,429),(1024,446),(1025,427),(1026,449),(1027,450),(1028,451),(1029,445),(1030,422),(1031,436),(1032,441),(1033,448),(1034,428),(1035,403),(1036,438),(1039,515),(1040,417),(1042,407),(1044,444),(1046,443),(1048,440),(1049,406),(1050,411),(1051,402),(1055,415),(1056,412),(1058,437),(1059,396),(1060,400),(1101,498),(1156,500),(1159,457),(1190,497),(1193,499),(1204,494),(1223,496),(1483,284),(1484,139),(1485,96),(1486,142),(1487,298),(1488,329),(1490,130),(1491,504),(1492,505),(1499,37),(1500,122),(1501,293),(1502,168),(1503,350),(1504,206),(1505,228),(1506,55),(1507,349),(1508,338),(1509,140),(1510,152),(1511,153),(1512,154),(1513,132),(1516,392),(1519,201),(1520,358),(1521,3),(1522,260),(1524,161),(1525,54),(1527,388),(1528,335),(1530,319),(1532,423),(1533,68),(1535,25),(1536,93),(1538,307),(1541,138),(1542,141),(1543,285),(1544,289),(1545,287),(1546,286),(1547,354),(1548,334),(1549,324),(1550,321),(1551,332),(1552,348),(1555,129),(1556,205),(1557,72),(1559,191),(1561,52),(1562,85),(1563,330),(1564,74),(1565,390),(1568,78),(1569,408),(1570,239),(1571,296),(1573,389),(1574,222),(1576,181),(1577,333),(1582,242),(1583,65),(1584,483),(1587,385),(1593,107),(1594,64),(1595,230),(1597,271),(1598,6),(1599,73),(1601,252),(1602,61),(1604,39),(1607,516),(1608,517),(1609,13),(1610,125),(1611,124),(1612,127),(1613,126),(1614,196),(1615,195),(1616,198),(1617,197),(1618,315),(1619,328),(1620,340),(1621,2),(1622,10),(1623,84),(1624,288),(1627,261),(1628,58),(1629,123),(1630,27),(1634,512),(1636,157),(1654,466),(1656,16),(1659,203),(1660,501),(1661,464),(1665,109),(1701,473),(1703,225),(1707,458),(1709,264),(1713,245),(1714,360),(1716,146),(1717,202),(1718,136),(1719,35),(1720,484),(1722,95),(1725,318),(1726,469),(1728,19),(1729,103),(1732,341),(1733,393),(1734,104),(1735,158),(1736,110),(1737,204),(1738,455),(1741,452),(1742,453),(1743,454),(1744,262),(1745,277),(1749,312),(1750,38),(1755,280),(1757,508),(1759,356),(1761,231),(1762,447),(1763,194),(1765,502),(1766,254),(1767,144),(1768,270),(1769,59),(1770,363),(1771,416),(1822,373); +/*!40000 ALTER TABLE `client_server_faction_map` ENABLE KEYS */; +UNLOCK TABLES; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2018-12-11 14:49:42 +-- MySQL dump 10.13 Distrib 5.7.24, for Linux (x86_64) +-- +-- Host: 192.168.0.3 Database: peqdb +-- ------------------------------------------------------ +-- Server version 5.7.24-0ubuntu0.16.04.1 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `faction_base_data` +-- + +DROP TABLE IF EXISTS `faction_base_data`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `faction_base_data` ( + `client_faction_id` smallint(6) NOT NULL, + `min` smallint(6) DEFAULT '-2000', + `max` smallint(6) DEFAULT '2000', + `unk_hero1` smallint(6) DEFAULT NULL, + `unk_hero2` smallint(6) DEFAULT NULL, + `unk_hero3` smallint(6) DEFAULT NULL, + PRIMARY KEY (`client_faction_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `faction_base_data` +-- + +LOCK TABLES `faction_base_data` WRITE; +/*!40000 ALTER TABLE `faction_base_data` DISABLE KEYS */; +INSERT INTO `faction_base_data` VALUES (65,-2000,2000,0,0,0),(106,-2000,2000,0,0,0),(121,-2000,2000,0,0,0),(128,-2000,2000,0,0,0),(138,-2000,2000,0,0,0),(144,-2000,2000,0,0,0),(217,-2000,2000,0,0,0),(218,-2000,2000,0,0,0),(219,-2000,2000,0,0,0),(220,-2000,2000,0,0,0),(221,-2000,2000,0,0,0),(222,-2000,2000,0,0,0),(223,-2000,2000,0,0,0),(225,-2000,2000,0,0,0),(226,-2000,2000,0,0,0),(227,-2000,2000,0,0,0),(228,-2000,2000,0,0,0),(229,-2000,2000,0,0,0),(230,-2000,2000,0,0,0),(231,-2000,2000,0,0,0),(232,-2000,2000,0,0,0),(233,-2000,2000,0,0,0),(234,-2000,2000,0,0,0),(235,-2000,2000,0,0,0),(236,-2000,2000,0,0,0),(237,-2000,2000,0,0,0),(238,-2000,2000,0,0,0),(239,-2000,2000,0,0,0),(240,-2000,2000,0,0,0),(241,-2000,2000,0,0,0),(242,-2000,2000,0,0,0),(243,-2000,2000,0,0,0),(244,-2000,2000,0,0,0),(245,-2000,2000,0,0,0),(246,-2000,2000,0,0,0),(247,-2000,2000,0,0,0),(248,-2000,2000,0,0,0),(249,-2000,2000,0,0,0),(250,-2000,2000,0,0,0),(251,-2000,2000,0,0,0),(252,-2000,2000,0,0,0),(253,-2000,2000,0,0,0),(254,-2000,2000,0,0,0),(255,-2000,2000,0,0,0),(256,-2000,2000,0,0,0),(257,-2000,2000,0,0,0),(258,-2000,2000,0,0,0),(259,-2000,2000,0,0,0),(261,-2000,2000,0,0,0),(262,-2000,2000,0,0,0),(263,-2000,2000,0,0,0),(264,-2000,2000,0,0,0),(265,-2000,2000,0,0,0),(266,-2000,2000,0,0,0),(267,-2000,2000,0,0,0),(269,-2000,2000,0,0,0),(270,-2000,2000,0,0,0),(271,-2000,2000,0,0,0),(272,-2000,2000,0,0,0),(273,-2000,2000,0,0,0),(274,-2000,2000,0,0,0),(275,-2000,2000,0,0,0),(276,-2000,2000,0,0,0),(277,-2000,2000,0,0,0),(278,-2000,2000,0,0,0),(279,-2000,2000,0,0,0),(280,-2000,2000,0,0,0),(281,-2000,2000,0,0,0),(282,-2000,2000,0,0,0),(283,-2000,2000,0,0,0),(284,-2000,2000,0,0,0),(285,-2000,2000,0,0,0),(286,-2000,2000,0,0,0),(287,-2000,2000,0,0,0),(288,-2000,2000,0,0,0),(289,-2000,2000,0,0,0),(290,-2000,2000,0,0,0),(291,-2000,2000,0,0,0),(292,-2000,2000,0,0,0),(293,-2000,2000,0,0,0),(295,-2000,2000,0,0,0),(296,-2000,2000,0,0,0),(297,-2000,2000,0,0,0),(298,-2000,2000,0,0,0),(299,-2000,2000,0,0,0),(300,-2000,2000,0,0,0),(302,-2000,2000,0,0,0),(304,-2000,2000,0,0,0),(305,-2000,2000,0,0,0),(306,-2000,2000,0,0,0),(307,-2000,2000,0,0,0),(308,-2000,2000,0,0,0),(309,-2000,2000,0,0,0),(310,-2000,2000,0,0,0),(311,-2000,2000,0,0,0),(312,-2000,2000,0,0,0),(313,-2000,2000,0,0,0),(315,-2000,2000,0,0,0),(316,-2000,2000,0,0,0),(317,-2000,2000,0,0,0),(318,-2000,2000,0,0,0),(319,-2000,2000,0,0,0),(320,-2000,2000,0,0,0),(321,-2000,2000,0,0,0),(322,-2000,2000,0,0,0),(323,-2000,2000,0,0,0),(324,-2000,2000,0,0,0),(325,-2000,2000,0,0,0),(326,-2000,2000,0,0,0),(327,-2000,2000,0,0,0),(328,-2000,2000,0,0,0),(329,-2000,2000,0,0,0),(330,-2000,2000,0,0,0),(331,-2000,2000,0,0,0),(332,-2000,2000,0,0,0),(333,-2000,2000,0,0,0),(334,-2000,2000,0,0,0),(336,-2000,2000,0,0,0),(337,-2000,2000,0,0,0),(338,-2000,2000,0,0,0),(340,-2000,2000,0,0,0),(341,-2000,2000,0,0,0),(342,-2000,2000,0,0,0),(343,-2000,2000,0,0,0),(345,-2000,2000,0,0,0),(346,-2000,2000,0,0,0),(353,-2000,2000,0,0,0),(354,-2000,2000,0,0,0),(355,-2000,2000,0,0,0),(361,-2000,2000,0,0,0),(362,-2000,2000,0,0,0),(363,-2000,2000,0,0,0),(364,-2000,2000,0,0,0),(365,-2000,2000,0,0,0),(366,-2000,2000,0,0,0),(367,-2000,2000,0,0,0),(368,-2000,2000,0,0,0),(370,-2000,2000,0,0,0),(371,-2000,2000,0,0,0),(372,-2000,2000,0,0,0),(373,-2000,2000,0,0,0),(374,-2000,2000,0,0,0),(375,-2000,2000,0,0,0),(376,-2000,2000,0,0,0),(377,-2000,2000,0,0,0),(378,-2000,2000,0,0,0),(379,-2000,2000,0,0,0),(382,-2000,2000,0,0,0),(385,-2000,2000,0,0,0),(387,-2000,2000,0,0,0),(388,-2000,2000,0,0,0),(390,-2000,2000,0,0,0),(391,-2000,2000,0,0,0),(394,-2000,2000,0,0,0),(397,-2000,2000,0,0,0),(398,-2000,2000,0,0,0),(401,-2000,2000,0,0,0),(402,-2000,2000,0,0,0),(404,0,2000,0,0,0),(405,-2000,2000,0,0,0),(406,-2000,2000,0,0,0),(407,-2000,2000,0,0,0),(409,-2000,2000,0,0,0),(412,-2000,2000,0,0,0),(415,-2000,2000,0,0,0),(416,-2000,2000,0,0,0),(417,-2000,2000,0,0,0),(418,-2000,2000,0,0,0),(419,-2000,2000,0,0,0),(420,-2000,2000,0,0,0),(421,-2000,2000,0,0,0),(422,-2000,2000,0,0,0),(423,-2000,2000,0,0,0),(425,-2000,2000,0,0,0),(426,-2000,2000,0,0,0),(427,-2000,2000,0,0,0),(428,-2000,2000,0,0,0),(429,-2000,2000,0,0,0),(430,-2000,2000,0,0,0),(431,-2000,2000,0,0,0),(432,-2000,2000,0,0,0),(433,-2000,2000,0,0,0),(434,-2000,2000,0,0,0),(435,-2000,2000,0,0,0),(436,-2000,2000,0,0,0),(437,-2000,2000,0,0,0),(438,-2000,2000,0,0,0),(439,-2000,2000,0,0,0),(440,-2000,2000,0,0,0),(441,-2000,2000,0,0,0),(442,-2000,2000,0,0,0),(443,-2000,2000,0,0,0),(444,-2000,2000,0,0,0),(445,-2000,2000,0,0,0),(446,-2000,2000,0,0,0),(447,-2000,2000,0,0,0),(448,-2000,2000,0,0,0),(449,-2000,2000,0,0,0),(450,-2000,2000,0,0,0),(451,-2000,2000,0,0,0),(452,-2000,2000,0,0,0),(453,-2000,2000,0,0,0),(454,-2000,2000,0,0,0),(455,-2000,2000,0,0,0),(456,-2000,2000,0,0,0),(457,-2000,2000,0,0,0),(458,-2000,2000,0,0,0),(459,-2000,2000,0,0,0),(460,-2000,2000,0,0,0),(461,-2000,2000,0,0,0),(462,-2000,2000,0,0,0),(463,-2000,2000,0,0,0),(464,-2000,2000,0,0,0),(465,-2000,2000,0,0,0),(467,-2000,2000,0,0,0),(468,-2000,2000,0,0,0),(469,-2000,2000,0,0,0),(471,-2000,2000,0,0,0),(472,-2000,2000,0,0,0),(473,-2000,2000,0,0,0),(474,-2000,2000,0,0,0),(475,-2000,2000,0,0,0),(530,-2000,2000,0,0,0),(548,-2000,2000,0,0,0),(680,-2000,2000,0,0,0),(690,-2000,2000,0,0,0),(711,0,5000,0,0,0),(712,0,5000,0,0,0),(713,-5000,0,0,0,0),(714,-5000,0,0,0,0),(715,-5000,0,0,0,0),(716,-5000,0,0,0,0),(720,-2000,2000,0,0,0),(721,-2000,2000,0,0,0),(1005,-2000,2000,0,0,0),(1007,-2000,0,0,0,0),(1010,-2000,0,0,0,0),(1013,-2000,0,0,0,0),(1016,-2000,2000,0,0,0),(1021,-2000,2000,0,0,0),(1022,-2000,2000,0,0,0),(1023,-2000,2000,0,0,0),(1024,-2000,0,0,0,0),(1025,-2000,0,0,0,0),(1026,-2000,0,0,0,0),(1027,-2000,0,0,0,0),(1028,-2000,0,0,0,0),(1029,-2000,0,0,0,0),(1030,-2000,0,0,0,0),(1031,-2000,0,0,0,0),(1032,-2000,0,0,0,0),(1033,-2000,0,0,0,0),(1034,-2000,0,0,0,0),(1035,-2000,0,0,0,0),(1048,-2000,2000,0,0,0),(1049,-2000,0,0,0,0),(1050,-2000,2000,0,0,0),(1051,-2000,0,0,0,0),(1052,-2000,0,0,0,0),(1053,-2000,0,0,0,0),(1054,-2000,0,0,0,0),(1055,-2000,2000,0,0,0),(1056,-2000,0,0,0,0),(1057,-2000,2000,0,0,0),(1058,-2000,0,0,0,0),(1059,-2000,2000,0,0,0),(1062,-2000,2000,0,0,0),(1063,-2000,2000,0,0,0),(1065,-2000,2000,0,0,0),(1066,-2000,2000,0,0,0),(1068,-2000,900,0,0,0),(1069,-2000,900,0,0,0),(1070,-2000,900,0,0,0),(1071,-2000,900,0,0,0),(1072,-2000,900,0,0,0),(1073,-2000,900,0,0,0),(1074,-2000,900,0,0,0),(1075,-2000,900,0,0,0),(1076,-2000,900,0,0,0),(1077,-2000,900,0,0,0),(1078,-2000,900,0,0,0),(1079,-2000,900,0,0,0),(1080,-2000,900,0,0,0),(1085,-2000,2000,0,0,0),(1086,-2000,0,0,0,0),(1088,-2000,2000,0,0,0),(1089,-2000,2000,0,0,0),(1090,-2000,2000,0,0,0),(1091,-2000,2000,0,0,0),(1092,-2000,2000,0,0,0),(1093,-2000,0,0,0,0),(1094,-2000,0,0,0,0),(1095,-2000,2000,0,0,0),(1100,-2000,0,0,0,0),(1101,-2000,0,0,0,0),(1103,-2000,0,0,0,0),(1104,-2000,2000,0,0,0),(1105,-2000,2000,0,0,0),(1107,-2000,2000,0,0,0),(1108,-2000,2000,0,0,0),(1109,-2000,2000,0,0,0),(1110,-2000,2000,0,0,0),(1111,-2000,0,0,0,0),(1112,-2000,0,0,0,0),(1113,-2000,0,0,0,0),(1114,-2000,0,0,0,0),(1115,-2000,0,0,0,0),(1116,-2000,2000,0,0,0),(1119,-2000,2000,0,0,0),(1120,-2000,1000,0,0,0),(1121,-2000,1000,0,0,0),(1123,-2000,0,0,0,0),(1124,-2000,0,0,0,0),(1125,-2000,0,0,0,0),(1129,-2000,2000,0,0,0),(1134,-2000,2000,0,0,0),(1135,-2000,2000,0,0,0),(1137,-2000,2000,0,0,0),(1140,-2000,2000,0,0,0),(1141,-2000,2000,0,0,0),(1142,-2000,2000,0,0,0),(1143,-2000,2000,0,0,0),(1144,-2000,2000,0,0,0),(1145,-2000,2000,0,0,0),(1146,-2000,2000,0,0,0),(1147,-2000,2000,0,0,0),(1148,-2000,2000,0,0,0),(1149,-2000,2000,0,0,0),(1166,-2000,2000,0,0,0),(1169,-2000,2000,0,0,0),(1170,-2000,2000,0,0,0),(1175,-2000,2000,0,0,0),(1176,-2000,2000,0,0,0),(1181,-2000,2000,100,20,100),(1182,-2000,2000,0,0,0),(1183,-2000,2000,0,0,0),(1184,-2000,2000,0,0,0),(1185,-2000,2000,0,0,0),(1186,-2000,2000,100,20,100),(1188,-2000,2000,0,0,0),(1189,-2000,2000,0,0,0),(1190,-2000,2000,0,0,0),(1191,-2000,2000,0,0,0),(1192,-2000,2000,100,20,100),(1193,-2000,2000,100,20,100),(1194,-2000,2000,100,20,100),(1195,-2000,2000,100,20,100),(1196,-2000,2000,100,20,100),(1197,-2000,2000,100,20,100),(1198,-2000,2000,100,20,100),(1199,-2000,2000,100,20,100),(1200,-2000,2000,100,20,100),(1201,-2000,2000,100,20,100),(1202,-2000,2000,100,20,100),(1203,-2000,2000,100,20,100),(1204,-200,2000,100,20,100),(1205,-200,2000,100,20,100),(1209,-2000,2000,100,20,100),(1210,-2000,2000,100,20,100),(1211,-2000,2000,100,20,100),(1212,-2000,2000,100,20,100),(1213,-2000,2000,100,20,100),(1214,-2000,2000,100,20,100),(1215,-2000,2000,100,20,100),(1216,-2000,2000,100,20,100),(1219,-2000,2000,100,20,100),(1220,-2000,2000,100,20,100),(1221,-2000,2000,100,20,100),(1222,-2000,2000,0,0,0),(1223,-2000,2000,0,0,0),(1224,-2000,2000,0,0,0),(1225,-2000,2000,0,0,0),(1226,-2000,2000,0,0,0),(1227,-2000,2000,0,0,0),(1229,0,2000,100,20,100),(1230,-2000,2000,100,20,100),(1232,-500,2000,0,0,0),(1233,-3000,0,0,0,0),(1234,-500,2000,0,0,0),(1235,-2000,0,0,0,0),(1237,-2000,0,0,0,0),(1238,-400,0,0,0,0),(1241,-2000,249,0,0,0),(1242,-2000,2000,0,0,0),(1243,-2000,0,0,0,0),(1244,-499,2000,0,0,0),(1483,-4000,2000,0,0,0),(1484,-2000,2000,0,0,0),(1485,-2000,500,0,0,0),(1486,-2000,2000,0,0,0),(1487,-2000,2000,0,0,0),(1488,-2000,2000,0,0,0),(1489,-2000,2000,0,0,0),(1490,-2000,2000,0,0,0),(1491,-2000,2000,0,0,0),(1499,-2000,2000,0,0,0),(1500,-2000,2000,0,0,0),(1501,-2000,2000,0,0,0),(1502,-2000,2000,0,0,0),(1503,-2000,2000,0,0,0),(1504,-2000,2000,0,0,0),(1505,-2000,2000,0,0,0),(1506,-2000,2000,0,0,0),(1507,-2000,2000,0,0,0),(1508,-500,2000,0,0,0),(1509,-749,2000,0,0,0),(1510,-500,2000,0,0,0),(1511,-500,2000,0,0,0),(1512,-500,2000,0,0,0),(1513,-2000,2000,0,0,0),(1516,-2000,2000,0,0,0),(1519,-2000,2000,0,0,0),(1520,-2000,2000,0,0,0),(1521,-2000,0,0,0,0),(1522,-2000,2000,0,0,0),(1524,-2000,2000,0,0,0),(1525,-2000,2000,0,0,0),(1526,-2000,2000,0,0,0),(1527,-2000,2000,0,0,0),(1528,-2000,2000,0,0,0),(1529,-2000,2000,0,0,0),(1530,-2000,2000,0,0,0),(1531,-2000,2000,0,0,0),(1532,-2000,2000,0,0,0),(1533,-2000,2000,0,0,0),(1535,-2000,2000,0,0,0),(1537,-2000,2000,0,0,0),(1538,-2000,2000,0,0,0),(1541,-2000,2000,0,0,0),(1542,-2000,2000,0,0,0),(1543,-2000,2000,0,0,0),(1544,-2000,2000,0,0,0),(1545,-2000,2000,0,0,0),(1546,-2000,2000,0,0,0),(1547,-2000,2000,0,0,0),(1548,-2000,2000,0,0,0),(1549,-2000,2000,0,0,0),(1550,-2000,2000,0,0,0),(1551,-2000,2000,0,0,0),(1552,-2000,2000,0,0,0),(1555,-2000,2000,0,0,0),(1556,-2000,2000,0,0,0),(1559,-2000,2000,0,0,0),(1560,-2000,2000,0,0,0),(1561,-2000,2000,0,0,0),(1562,-2000,2000,0,0,0),(1563,-2000,2000,0,0,0),(1564,-2000,2000,0,0,0),(1565,-2000,2000,0,0,0),(1566,-2000,2000,0,0,0),(1568,-2000,2000,0,0,0),(1569,-2000,2000,0,0,0),(1570,-2000,2000,0,0,0),(1571,-2000,2000,0,0,0),(1573,-2000,2000,0,0,0),(1574,-2000,2000,0,0,0),(1576,-2000,2000,0,0,0),(1577,-2000,2000,0,0,0),(1578,-2000,2000,0,0,0),(1582,-2000,2000,0,0,0),(1583,-2000,2000,0,0,0),(1584,-2000,2000,0,0,0),(1587,-2000,2000,0,0,0),(1593,-2000,2000,0,0,0),(1597,-1550,2000,0,0,0),(1598,-850,2000,0,0,0),(1599,-2050,2000,0,0,0),(1600,-2050,2000,0,0,0),(1601,-1550,2000,0,0,0),(1603,-2050,2000,0,0,0),(1605,-2000,2000,0,0,0),(1607,-2000,2000,0,0,0),(1609,-2000,2000,0,0,0),(1610,-2000,2000,0,0,0),(1611,-2000,2000,0,0,0),(1612,-2000,2000,0,0,0),(1613,-2000,2000,0,0,0),(1618,-2000,2000,0,0,0),(1620,-2000,2000,0,0,0),(1621,-2000,2000,0,0,0),(1622,-2000,2000,0,0,0),(1623,-2000,2000,0,0,0),(1624,-2000,2000,0,0,0),(1625,-2000,2000,0,0,0),(1626,-2000,2000,0,0,0),(1627,-2000,2000,0,0,0),(1628,-2000,2000,0,0,0),(1629,-2000,2000,0,0,0),(1630,-2000,2000,0,0,0),(1633,-2000,2000,0,0,0),(1636,-2000,2000,0,0,0),(1643,-2000,2000,0,0,0),(1656,-2000,2000,0,0,0),(1659,-2000,2000,0,0,0),(1660,-2000,2000,0,0,0),(1665,-2000,2000,0,0,0),(1671,-2000,0,0,0,0),(1674,-2000,0,0,0,0),(1675,-2000,0,0,0,0),(1676,-2000,0,0,0,0),(1677,-2000,2000,0,0,0),(1679,-350,400,0,0,0),(1680,-100,800,0,0,0),(1681,-150,800,0,0,0),(1701,-2000,2000,0,0,0),(1703,-2000,2000,0,0,0),(1704,-2000,2000,0,0,0),(1709,-2000,2000,0,0,0),(1711,-2000,2000,0,0,0),(1712,-2000,2000,0,0,0),(1713,-2000,2000,0,0,0),(1714,-2000,2000,0,0,0),(1715,-2000,2000,0,0,0),(1716,-2000,2000,0,0,0),(1717,-2000,2000,0,0,0),(1718,-2000,2000,0,0,0),(1719,-2000,2000,0,0,0),(1720,-2000,2000,0,0,0),(1722,-2000,2000,0,0,0),(1725,-2000,2000,0,0,0),(1728,-2000,2000,0,0,0),(1729,-2000,2000,0,0,0),(1732,-2000,2000,0,0,0),(1733,-2000,2000,0,0,0),(1734,-2000,2000,0,0,0),(1735,-2000,2000,0,0,0),(1736,-2000,2000,0,0,0),(1737,-2000,2000,0,0,0),(1738,-2000,2000,0,0,0),(1741,-2000,2000,0,0,0),(1742,-2000,2000,0,0,0),(1743,-2000,2000,0,0,0),(1744,-2000,2000,0,0,0),(1745,-2000,2000,0,0,0),(1746,-2000,2000,0,0,0),(1747,-2000,2000,0,0,0),(1748,-2000,2000,0,0,0),(1749,-2000,2000,0,0,0),(1750,-2000,2000,0,0,0),(1755,-2000,2000,0,0,0),(1758,-2000,2000,0,0,0),(1759,-2000,2000,0,0,0),(1761,-2000,2000,0,0,0),(1762,-2000,2000,0,0,0),(1763,-2000,2000,0,0,0),(1764,-2000,2000,0,0,0),(1765,-2000,2000,0,0,0),(1766,-2000,2000,0,0,0),(1767,-2000,2000,0,0,0),(1768,-2000,2000,0,0,0),(1770,-2000,2000,0,0,0),(1771,-2000,2000,0,0,0),(1775,-800,1500,0,0,0),(1777,-1000,0,0,0,0),(1778,-800,1500,0,0,0),(1779,-800,1500,0,0,0),(1780,-800,1500,0,0,0),(1781,-800,1500,0,0,0),(1783,-1000,1000,0,0,0),(1784,-1000,0,0,0,0),(1785,-800,1500,0,0,0),(1786,-1000,1000,0,0,0),(1787,-1000,0,0,0,0),(1788,-1000,0,0,0,0),(1789,-1000,99,0,0,0),(1790,-1000,0,0,0,0),(1791,-1000,99,0,0,0),(1792,-1000,0,0,0,0),(1793,-1000,99,0,0,0),(1794,-1000,0,0,0,0),(1795,-1000,99,0,0,0),(1796,-1000,0,0,0,0),(1798,-1000,1000,0,0,0),(1799,-1000,99,0,0,0),(1801,-2000,2000,0,0,0),(1802,-2000,2000,0,0,0),(1817,-500,7000,0,0,0),(1818,-1000,899,0,0,0),(1819,-2000,99,0,0,0),(1820,-2000,2000,0,0,0),(1821,-2000,0,0,0,0),(1822,0,4000,0,0,0),(1823,-1000,950,0,0,0),(1824,-2000,0,0,0,0),(1825,-2000,2000,0,0,0),(1828,-2000,2000,0,0,0),(1829,-2000,2000,0,0,0),(1830,-900,900,0,0,0),(1831,-900,900,0,0,0),(1846,-501,499,100,20,100),(1847,-501,499,100,20,100),(1852,-2000,-1000,0,0,0),(1853,-2000,2000,0,0,0),(1854,-2000,2000,0,0,0),(1855,-2000,2000,0,0,0),(1856,-2000,2000,0,0,0),(1857,-2000,2000,0,0,0),(1858,-2000,2000,0,0,0),(1859,-751,2000,100,20,100),(1860,-751,2000,100,20,100),(1862,-2000,2000,0,0,0),(1863,-600,800,0,0,0),(1864,-600,800,0,0,0),(1865,-600,800,0,0,0),(1866,-600,800,0,0,0),(1867,-2000,2000,0,0,0),(1868,-2000,2000,0,0,0),(1869,-2000,2000,0,0,0),(1870,-2000,2000,0,0,0),(1872,-2000,2000,0,0,0); +/*!40000 ALTER TABLE `faction_base_data` ENABLE KEYS */; +UNLOCK TABLES; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2018-12-11 14:53:10 diff --git a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql new file mode 100755 index 000000000..ff6f8a45e --- /dev/null +++ b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql @@ -0,0 +1,131 @@ +/* +This SQL update utilizes the new raw faction data from the client + +First we create a temporary table - which we will use to map any +custom factions in the eqemu db, that are either: + - eqemu utility factions + - obsoleted factions with no new mapping to the client + +This is done so that we can keep these factions while server owners either +stay with them, or migrate. They are moved to the 5000+ range, to not conflict +with client faction_ids. +*/ + +/* Create the temp table and start mappings at 5000 */ +CREATE TABLE custom_faction_mappings (old_faction int, new_faction int, primary key (old_faction)) engine=INNODB; + +select @startcustom:=5000; + +/* Insert the custom/obsolete factions into the temp mapping table */ +insert into custom_faction_mappings (select id, @startcustom := @startcustom +1 from faction_list where id not in (select serverid from client_server_faction_map) and id < 5000); + +CREATE TABLE IF NOT EXISTS faction_list_mod_oldfac AS SELECT * from faction_list_mod; + +/* Now we update all the tables for these custom factions */ + +update faction_list_mod set faction_id = (select new_faction from custom_faction_mappings where old_faction = faction_id) where faction_id < 5000 and faction_id in (select old_faction from custom_faction_mappings); + +CREATE TABLE IF NOT EXISTS faction_list_oldfac AS SELECT * from faction_list; + +/* The faction_list table was forcing faction name to be a key. Client does + not. Also, auto increment doesnt make sense anymore */ +ALTER TABLE faction_list CHANGE COLUMN `id` `id` INT(11) NOT NULL; +ALTER TABLE faction_list DROP INDEX `name`; + +update faction_list set id = +(select new_faction from custom_faction_mappings where old_faction = id) where id < 5000 and id in (select old_faction from custom_faction_mappings); + +/* At this point all faction_mods for unmapped factions will be ids 5000+ */ +/* So we can delete all the old ones still under 5000 - making room for the */ +/* new faction ids */ + +delete from faction_list_mod where faction_id < 5000; + +delete from faction_list where id < 5000; + +/* Make an entry for each faction */ +/* No base on client factions */ + +insert into faction_list (select id, name, 0 from client_faction_names); + +/* Create mods based on the client_faction_associations */ +/* No code changes required */ + +insert into faction_list_mod +(select null, faction_id, `mod`, concat("r", other_faction_id-50) +from client_faction_associations a +join client_faction_names n on n.id = a.other_faction_id +where other_faction_id between 51 and 180); + +insert into faction_list_mod +(select null, faction_id, `mod`, concat("c", other_faction_id) +from client_faction_associations a +join client_faction_names n on n.id = a.other_faction_id +where other_faction_id between 1 and 50); + +insert into faction_list_mod +(select null, faction_id, `mod`, concat("d", other_faction_id) +from client_faction_associations a +join client_faction_names n on n.id = a.other_faction_id +where other_faction_id between 201 and 216); + +/* And now we need to fix all the other faction tables to point to the new factions. */ + +CREATE TABLE IF NOT EXISTS npc_faction_oldfac AS SELECT * from npc_faction; + +update npc_faction set primaryfaction = (select new_faction from custom_faction_mappings where old_faction = primaryfaction) +where primaryfaction in (select old_faction from custom_faction_mappings); + +update npc_faction set primaryfaction = (select clientid from client_server_faction_map where serverid = primaryfaction) +where primaryfaction in (select serverid from client_server_faction_map); + +update npc_faction_entries set faction_id = (select new_faction from custom_faction_mappings where old_faction = faction_id) +where faction_id in (select old_faction from custom_faction_mappings); + +CREATE TABLE IF NOT EXISTS npc_faction_entries_oldfac AS SELECT * from npc_faction_entries; + +/* Move existing factions out of wat - the following replace would create key */ +/* duplicates along the way, but none when complete. */ + +update npc_faction_entries set faction_id = faction_id + 20000 +where faction_id in (select serverid from client_server_faction_map); + +update npc_faction_entries set faction_id = (select clientid from client_server_faction_map where faction_id > 20000 && serverid = (faction_id-20000)) +where faction_id > 20000 && (faction_id-20000) in (select serverid from client_server_faction_map); + +/* Removes any duplicates from the use of factions that are obsoleted */ +/* These are entries that have no new mapping whatsoever */ +delete from npc_faction_entries where faction_id > 20000; + + +/* +Update the faction_values now. + +We're deleting any faction_values for obsolete factions. These are factions +that were used, then switched away from in the past by servers, but the entries +were still there. +*/ +delete from faction_values + where faction_id not in (select old_faction from custom_faction_mappings) and faction_id not in (select serverid from client_server_faction_map); + +/* Custom faction mappings dont have to worry about range collision */ + +update faction_values set faction_id = (select new_faction from custom_faction_mappings where old_faction = faction_id) +where faction_id in (select old_faction from custom_faction_mappings); + +/* +Common factions have range collision issues, move them out of the way while +we process them. +*/ + +update faction_values set faction_id = faction_id + 20000 +where faction_id in (select serverid from client_server_faction_map); + +/* Put them in their correct places now based on client mapping */ + +update faction_values set faction_id = (select clientid from client_server_faction_map +where faction_id > 20000 && serverid = (faction_id-20000)) +where faction_id > 20000 && (faction_id-20000) in (select serverid from client_server_faction_map); + +/* Delete any stragglers */ +delete from faction_values where faction_id > 20000; From 3487086d46ab6cccac38fc29556da190214f8c18 Mon Sep 17 00:00:00 2001 From: Noudess Date: Tue, 18 Dec 2018 11:08:09 -0500 Subject: [PATCH 03/53] Update version of db needed for faction changes --- common/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/version.h b/common/version.h index e5603c247..8c5b98562 100644 --- a/common/version.h +++ b/common/version.h @@ -30,7 +30,7 @@ Manifest: https://github.com/EQEmu/Server/blob/master/utils/sql/db_update_manifest.txt */ -#define CURRENT_BINARY_DATABASE_VERSION 9130 +#define CURRENT_BINARY_DATABASE_VERSION 9132 #ifdef BOTS #define CURRENT_BINARY_BOTS_DATABASE_VERSION 9021 #else From 3b21d2eb26d6efd4207d7f596d69b6941ae2b56d Mon Sep 17 00:00:00 2001 From: Noudess Date: Tue, 18 Dec 2018 11:11:22 -0500 Subject: [PATCH 04/53] Spacing where some spaces crept in. --- zone/zonedb.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/zone/zonedb.cpp b/zone/zonedb.cpp index 0cfcf64c3..7d15a3008 100755 --- a/zone/zonedb.cpp +++ b/zone/zonedb.cpp @@ -4049,8 +4049,8 @@ bool ZoneDatabase::LoadFactionData() faction_array[index] = new Faction; strn0cpy(faction_array[index]->name, row[1], 50); faction_array[index]->base = atoi(row[2]); - faction_array[index]->min = MIN_PERSONAL_FACTION; - faction_array[index]->max = MAX_PERSONAL_FACTION; + faction_array[index]->min = MIN_PERSONAL_FACTION; + faction_array[index]->max = MAX_PERSONAL_FACTION; // Load in the mimimum and maximum faction that can be earned for this faction query = StringFormat("SELECT `min` , `max` FROM `faction_base_data` WHERE client_faction_id = %u", index); @@ -4073,7 +4073,7 @@ bool ZoneDatabase::LoadFactionData() continue; for (auto modRow = modResults.begin(); modRow != modResults.end(); ++modRow) { - faction_array[index]->mods[modRow[1]] = atoi(modRow[0]); + faction_array[index]->mods[modRow[1]] = atoi(modRow[0]); } } From 469224cfe78b507897518498f8e77af39879c547 Mon Sep 17 00:00:00 2001 From: Noudess Date: Tue, 18 Dec 2018 11:24:10 -0500 Subject: [PATCH 05/53] Update manifest versions --- utils/sql/db_update_manifest.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/sql/db_update_manifest.txt b/utils/sql/db_update_manifest.txt index 1254b2936..19c8bd324 100644 --- a/utils/sql/db_update_manifest.txt +++ b/utils/sql/db_update_manifest.txt @@ -384,8 +384,8 @@ 9128|2018_08_13_inventory_version_update.sql|SHOW TABLES LIKE 'inventory_version'|not_empty| 9129|2018_08_13_inventory_update.sql|SHOW TABLES LIKE 'inventory_versions'|empty| 9130|2018_11_25_name_filter_update.sql|SHOW COLUMNS FROM `name_filter` LIKE 'id'|empty| -9131|2018_12_12_client_faction_tables.sql|SHOW TABLES LIKE 'faction_base_data'|empty| -9132|2018_12_12_convert_to_client_functions.sql|SELECT `id` FROM `faction_list` WHERE `id` > 4999 |empty| +9133|2018_12_12_client_faction_tables.sql|SHOW TABLES LIKE 'faction_base_data'|empty| +9134|2018_12_12_convert_to_client_functions.sql|SELECT `id` FROM `faction_list` WHERE `id` > 4999 |empty| # Upgrade conditions: # This won't be needed after this system is implemented, but it is used database that are not From b5cc006e46da11865f9e14429eca77a41d97ffd5 Mon Sep 17 00:00:00 2001 From: Noudess Date: Tue, 18 Dec 2018 11:35:15 -0500 Subject: [PATCH 06/53] Update version of db needed for code. --- common/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/version.h b/common/version.h index 8c5b98562..ba57cf898 100644 --- a/common/version.h +++ b/common/version.h @@ -30,7 +30,7 @@ Manifest: https://github.com/EQEmu/Server/blob/master/utils/sql/db_update_manifest.txt */ -#define CURRENT_BINARY_DATABASE_VERSION 9132 +#define CURRENT_BINARY_DATABASE_VERSION 9134 #ifdef BOTS #define CURRENT_BINARY_BOTS_DATABASE_VERSION 9021 #else From d20ea3852cf0b5f098974db4496a674c13eac3af Mon Sep 17 00:00:00 2001 From: KimLS Date: Wed, 2 Jan 2019 20:57:40 -0800 Subject: [PATCH 07/53] Some changes to resend logic and default values --- common/net/daybreak_connection.cpp | 55 +++++++++++++++++------------- common/net/daybreak_connection.h | 8 ++--- 2 files changed, 35 insertions(+), 28 deletions(-) diff --git a/common/net/daybreak_connection.cpp b/common/net/daybreak_connection.cpp index 73bb51e82..60412c497 100644 --- a/common/net/daybreak_connection.cpp +++ b/common/net/daybreak_connection.cpp @@ -278,7 +278,6 @@ EQ::Net::DaybreakConnection::DaybreakConnection(DaybreakConnectionManager *owner m_hold_time = Clock::now(); m_buffered_packets_length = 0; m_rolling_ping = 500; - m_resend_delay = (m_rolling_ping * m_owner->m_options.resend_delay_factor) + m_owner->m_options.resend_delay_ms; m_combined.reset(new char[512]); m_combined[0] = 0; m_combined[1] = OP_Combined; @@ -301,7 +300,6 @@ EQ::Net::DaybreakConnection::DaybreakConnection(DaybreakConnectionManager *owner m_hold_time = Clock::now(); m_buffered_packets_length = 0; m_rolling_ping = 500; - m_resend_delay = (m_rolling_ping * m_owner->m_options.resend_delay_factor) + m_owner->m_options.resend_delay_ms; m_combined.reset(new char[512]); m_combined[0] = 0; m_combined[1] = OP_Combined; @@ -356,9 +354,6 @@ void EQ::Net::DaybreakConnection::ResetStats() void EQ::Net::DaybreakConnection::Process() { try { - m_resend_delay = (size_t)(m_rolling_ping * m_owner->m_options.resend_delay_factor) + m_owner->m_options.resend_delay_ms; - m_resend_delay = EQEmu::Clamp(m_resend_delay, m_owner->m_options.resend_delay_min, m_owner->m_options.resend_delay_max); - auto now = Clock::now(); auto time_since_hold = (size_t)std::chrono::duration_cast(now - m_hold_time).count(); if (time_since_hold >= m_owner->m_options.hold_length_ms) { @@ -1020,17 +1015,17 @@ void EQ::Net::DaybreakConnection::ProcessResend(int stream) if (m_status == DbProtocolStatus::StatusDisconnected) { return; } - + auto now = Clock::now(); auto s = &m_streams[stream]; for (auto &entry : s->sent_packets) { auto time_since_last_send = std::chrono::duration_cast(now - entry.second.last_sent); if (entry.second.times_resent == 0) { - if ((size_t)time_since_last_send.count() > m_resend_delay) { + if ((size_t)time_since_last_send.count() > entry.second.resend_delay) { InternalBufferedSend(entry.second.packet); entry.second.last_sent = now; entry.second.times_resent++; - m_rolling_ping += 100; + entry.second.resend_delay = EQEmu::Clamp(entry.second.resend_delay * 2, m_owner->m_options.resend_delay_min, m_owner->m_options.resend_delay_max); } } else { @@ -1039,12 +1034,12 @@ void EQ::Net::DaybreakConnection::ProcessResend(int stream) Close(); return; } - - if ((size_t)time_since_last_send.count() > m_resend_delay) { + + if ((size_t)time_since_last_send.count() > entry.second.resend_delay) { InternalBufferedSend(entry.second.packet); entry.second.last_sent = now; entry.second.times_resent++; - m_rolling_ping += 100; + entry.second.resend_delay = EQEmu::Clamp(entry.second.resend_delay * 2, m_owner->m_options.resend_delay_min, m_owner->m_options.resend_delay_max); } } } @@ -1183,16 +1178,16 @@ void EQ::Net::DaybreakConnection::SendKeepAlive() void EQ::Net::DaybreakConnection::InternalSend(Packet &p) { m_last_send = Clock::now(); - + auto send_func = [](uv_udp_send_t* req, int status) { delete[](char*)req->data; delete req; }; - + if (PacketCanBeEncoded(p)) { DynamicPacket out; out.PutPacket(0, p); - + for (int i = 0; i < 2; ++i) { switch (m_encode_passes[i]) { case EncodeCompression: @@ -1211,20 +1206,20 @@ void EQ::Net::DaybreakConnection::InternalSend(Packet &p) break; } } - + AppendCRC(out); - + uv_udp_send_t *send_req = new uv_udp_send_t; memset(send_req, 0, sizeof(*send_req)); sockaddr_in send_addr; uv_ip4_addr(m_endpoint.c_str(), m_port, &send_addr); uv_buf_t send_buffers[1]; - + char *data = new char[out.Length()]; memcpy(data, out.Data(), out.Length()); send_buffers[0] = uv_buf_init(data, out.Length()); send_req->data = send_buffers[0].base; - + m_stats.sent_bytes += out.Length(); m_stats.sent_packets++; if (m_owner->m_options.simulated_out_packet_loss && m_owner->m_options.simulated_out_packet_loss >= m_owner->m_rand.Int(0, 100)) { @@ -1232,30 +1227,30 @@ void EQ::Net::DaybreakConnection::InternalSend(Packet &p) delete send_req; return; } - + uv_udp_send(send_req, &m_owner->m_socket, send_buffers, 1, (sockaddr*)&send_addr, send_func); return; } - + uv_udp_send_t *send_req = new uv_udp_send_t; sockaddr_in send_addr; uv_ip4_addr(m_endpoint.c_str(), m_port, &send_addr); uv_buf_t send_buffers[1]; - + char *data = new char[p.Length()]; memcpy(data, p.Data(), p.Length()); send_buffers[0] = uv_buf_init(data, p.Length()); send_req->data = send_buffers[0].base; - + m_stats.sent_bytes += p.Length(); m_stats.sent_packets++; - + if (m_owner->m_options.simulated_out_packet_loss && m_owner->m_options.simulated_out_packet_loss >= m_owner->m_rand.Int(0, 100)) { delete[](char*)send_req->data; delete send_req; return; } - + uv_udp_send(send_req, &m_owner->m_socket, send_buffers, 1, (sockaddr*)&send_addr, send_func); } @@ -1294,6 +1289,10 @@ void EQ::Net::DaybreakConnection::InternalQueuePacket(Packet &p, int stream_id, sent.last_sent = Clock::now(); sent.first_sent = Clock::now(); sent.times_resent = 0; + sent.resend_delay = EQEmu::Clamp( + static_cast((m_rolling_ping * m_owner->m_options.resend_delay_factor) + m_owner->m_options.resend_delay_ms), + m_owner->m_options.resend_delay_min, + m_owner->m_options.resend_delay_max); stream->sent_packets.insert(std::make_pair(stream->sequence_out, sent)); stream->sequence_out++; @@ -1322,6 +1321,10 @@ void EQ::Net::DaybreakConnection::InternalQueuePacket(Packet &p, int stream_id, sent.last_sent = Clock::now(); sent.first_sent = Clock::now(); sent.times_resent = 0; + sent.resend_delay = EQEmu::Clamp( + static_cast((m_rolling_ping * m_owner->m_options.resend_delay_factor) + m_owner->m_options.resend_delay_ms), + m_owner->m_options.resend_delay_min, + m_owner->m_options.resend_delay_max); stream->sent_packets.insert(std::make_pair(stream->sequence_out, sent)); stream->sequence_out++; @@ -1342,6 +1345,10 @@ void EQ::Net::DaybreakConnection::InternalQueuePacket(Packet &p, int stream_id, sent.last_sent = Clock::now(); sent.first_sent = Clock::now(); sent.times_resent = 0; + sent.resend_delay = EQEmu::Clamp( + static_cast((m_rolling_ping * m_owner->m_options.resend_delay_factor) + m_owner->m_options.resend_delay_ms), + m_owner->m_options.resend_delay_min, + m_owner->m_options.resend_delay_max); stream->sent_packets.insert(std::make_pair(stream->sequence_out, sent)); stream->sequence_out++; diff --git a/common/net/daybreak_connection.h b/common/net/daybreak_connection.h index 05b420133..823fd82e8 100644 --- a/common/net/daybreak_connection.h +++ b/common/net/daybreak_connection.h @@ -132,7 +132,6 @@ namespace EQ std::unique_ptr m_combined; DaybreakConnectionStats m_stats; Timestamp m_last_session_stats; - size_t m_resend_delay; size_t m_rolling_ping; Timestamp m_close_time; @@ -142,6 +141,7 @@ namespace EQ Timestamp last_sent; Timestamp first_sent; size_t times_resent; + size_t resend_delay; }; struct DaybreakStream @@ -205,10 +205,10 @@ namespace EQ DaybreakConnectionManagerOptions() { max_connection_count = 0; keepalive_delay_ms = 9000; - resend_delay_ms = 150; - resend_delay_factor = 1.5; + resend_delay_ms = 30; + resend_delay_factor = 1.25; resend_delay_min = 150; - resend_delay_max = 1000; + resend_delay_max = 3000; connect_delay_ms = 500; stale_connection_ms = 90000; connect_stale_ms = 5000; From 37ed9233025287def69151f1de024faeecd03f7b Mon Sep 17 00:00:00 2001 From: Noudess Date: Thu, 3 Jan 2019 16:42:58 -0500 Subject: [PATCH 08/53] Fixed code on insert to not worried about extra fields in target db --- .../required/2018_12_12_convert_to_client_functions.sql | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql index ff6f8a45e..c236c2b0a 100755 --- a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql +++ b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql @@ -46,7 +46,7 @@ delete from faction_list where id < 5000; /* Make an entry for each faction */ /* No base on client factions */ -insert into faction_list (select id, name, 0 from client_faction_names); +insert into faction_list (id, name, base) (select id, name, 0 from client_faction_names); /* Create mods based on the client_faction_associations */ /* No code changes required */ @@ -110,6 +110,8 @@ delete from faction_values /* Custom faction mappings dont have to worry about range collision */ +select "Updating faction_values for custom factions"; + update faction_values set faction_id = (select new_faction from custom_faction_mappings where old_faction = faction_id) where faction_id in (select old_faction from custom_faction_mappings); @@ -118,11 +120,15 @@ Common factions have range collision issues, move them out of the way while we process them. */ +select "Offsetting core faction_values so that we can map them without conflict"; + update faction_values set faction_id = faction_id + 20000 where faction_id in (select serverid from client_server_faction_map); /* Put them in their correct places now based on client mapping */ +select "Updating core faction_values to use new faction ids...."; + update faction_values set faction_id = (select clientid from client_server_faction_map where faction_id > 20000 && serverid = (faction_id-20000)) where faction_id > 20000 && (faction_id-20000) in (select serverid from client_server_faction_map); From 6c1e3ae3d6e9cc8417ebae2a214c2da4b3f54d27 Mon Sep 17 00:00:00 2001 From: KimLS Date: Thu, 3 Jan 2019 20:04:09 -0800 Subject: [PATCH 09/53] Added some rules for network server startup, added a limit on number of resends per connection channel per cycle (default is 10) --- common/net/daybreak_connection.cpp | 7 +++++++ common/net/daybreak_connection.h | 4 +++- common/ruletypes.h | 8 ++++++++ ucs/clientlist.cpp | 6 ++++++ world/net.cpp | 8 +++++++- zone/net.cpp | 5 +++++ 6 files changed, 36 insertions(+), 2 deletions(-) diff --git a/common/net/daybreak_connection.cpp b/common/net/daybreak_connection.cpp index 60412c497..13827581c 100644 --- a/common/net/daybreak_connection.cpp +++ b/common/net/daybreak_connection.cpp @@ -1016,6 +1016,7 @@ void EQ::Net::DaybreakConnection::ProcessResend(int stream) return; } + auto resends = 0; auto now = Clock::now(); auto s = &m_streams[stream]; for (auto &entry : s->sent_packets) { @@ -1026,6 +1027,7 @@ void EQ::Net::DaybreakConnection::ProcessResend(int stream) entry.second.last_sent = now; entry.second.times_resent++; entry.second.resend_delay = EQEmu::Clamp(entry.second.resend_delay * 2, m_owner->m_options.resend_delay_min, m_owner->m_options.resend_delay_max); + resends++; } } else { @@ -1040,8 +1042,13 @@ void EQ::Net::DaybreakConnection::ProcessResend(int stream) entry.second.last_sent = now; entry.second.times_resent++; entry.second.resend_delay = EQEmu::Clamp(entry.second.resend_delay * 2, m_owner->m_options.resend_delay_min, m_owner->m_options.resend_delay_max); + resends++; } } + + if (resends >= m_owner->m_options.resends_per_connection_cycle) { + return; + } } } diff --git a/common/net/daybreak_connection.h b/common/net/daybreak_connection.h index 823fd82e8..f7ea49e22 100644 --- a/common/net/daybreak_connection.h +++ b/common/net/daybreak_connection.h @@ -208,7 +208,8 @@ namespace EQ resend_delay_ms = 30; resend_delay_factor = 1.25; resend_delay_min = 150; - resend_delay_max = 3000; + resend_delay_max = 5000; + resends_per_connection_cycle = 10; connect_delay_ms = 500; stale_connection_ms = 90000; connect_stale_ms = 5000; @@ -233,6 +234,7 @@ namespace EQ size_t resend_delay_ms; size_t resend_delay_min; size_t resend_delay_max; + int resends_per_connection_cycle; size_t connect_delay_ms; size_t connect_stale_ms; size_t stale_connection_ms; diff --git a/common/ruletypes.h b/common/ruletypes.h index 623260af4..12ce35b6a 100644 --- a/common/ruletypes.h +++ b/common/ruletypes.h @@ -704,6 +704,14 @@ RULE_CATEGORY(Console) RULE_INT(Console, SessionTimeOut, 600000) // Amount of time in ms for the console session to time out RULE_CATEGORY_END() +RULE_CATEGORY(Network) +RULE_INT(Network, ResendDelayBaseMS, 50) +RULE_REAL(Network, ResendDelayFactor, 1.5) +RULE_INT(Network, ResendDelayMinMS, 250) +RULE_INT(Network, ResendDelayMaxMS, 5000) +RULE_INT(Network, ResendsPerCycle, 10) +RULE_CATEGORY_END() + RULE_CATEGORY(QueryServ) RULE_BOOL(QueryServ, PlayerLogChat, false) // Logs Player Chat RULE_BOOL(QueryServ, PlayerLogTrades, false) // Logs Player Trades diff --git a/ucs/clientlist.cpp b/ucs/clientlist.cpp index 130914952..3701d4dc2 100644 --- a/ucs/clientlist.cpp +++ b/ucs/clientlist.cpp @@ -469,6 +469,12 @@ Clientlist::Clientlist(int ChatPort) { EQ::Net::EQStreamManagerOptions chat_opts(ChatPort, false, false); chat_opts.opcode_size = 1; chat_opts.daybreak_options.stale_connection_ms = 300000; + chat_opts.daybreak_options.resend_delay_ms = RuleI(Network, ResendDelayBaseMS); + chat_opts.daybreak_options.resend_delay_factor = RuleR(Network, ResendDelayFactor); + chat_opts.daybreak_options.resend_delay_min = RuleI(Network, ResendDelayMinMS); + chat_opts.daybreak_options.resend_delay_max = RuleI(Network, ResendDelayMaxMS); + chat_opts.daybreak_options.resends_per_connection_cycle = RuleI(Network, ResendsPerCycle); + chatsf = new EQ::Net::EQStreamManager(chat_opts); ChatOpMgr = new RegularOpcodeManager; diff --git a/world/net.cpp b/world/net.cpp index 7065ea6c3..65be8c3d0 100644 --- a/world/net.cpp +++ b/world/net.cpp @@ -495,6 +495,12 @@ int main(int argc, char** argv) { }); EQ::Net::EQStreamManagerOptions opts(9000, false, false); + opts.daybreak_options.resend_delay_ms = RuleI(Network, ResendDelayBaseMS); + opts.daybreak_options.resend_delay_factor = RuleR(Network, ResendDelayFactor); + opts.daybreak_options.resend_delay_min = RuleI(Network, ResendDelayMinMS); + opts.daybreak_options.resend_delay_max = RuleI(Network, ResendDelayMaxMS); + opts.daybreak_options.resends_per_connection_cycle = RuleI(Network, ResendsPerCycle); + EQ::Net::EQStreamManager eqsm(opts); //register all the patches we have avaliable with the stream identifier. @@ -622,4 +628,4 @@ void CheckForServerScript(bool force_download) { system("wget -N --no-check-certificate --quiet -O eqemu_server.pl https://raw.githubusercontent.com/EQEmu/Server/master/utils/scripts/eqemu_server.pl"); #endif } -} \ No newline at end of file +} diff --git a/zone/net.cpp b/zone/net.cpp index 641c69248..c13fc5e84 100644 --- a/zone/net.cpp +++ b/zone/net.cpp @@ -460,6 +460,11 @@ int main(int argc, char** argv) { Log(Logs::General, Logs::Zone_Server, "Starting EQ Network server on port %d", Config->ZonePort); EQ::Net::EQStreamManagerOptions opts(Config->ZonePort, false, true); + opts.daybreak_options.resend_delay_ms = RuleI(Network, ResendDelayBaseMS); + opts.daybreak_options.resend_delay_factor = RuleR(Network, ResendDelayFactor); + opts.daybreak_options.resend_delay_min = RuleI(Network, ResendDelayMinMS); + opts.daybreak_options.resend_delay_max = RuleI(Network, ResendDelayMaxMS); + opts.daybreak_options.resends_per_connection_cycle = RuleI(Network, ResendsPerCycle); eqsm.reset(new EQ::Net::EQStreamManager(opts)); eqsf_open = true; From 4b21f901b98e28abbdfaf02ed121008559d65954 Mon Sep 17 00:00:00 2001 From: Noudess Date: Fri, 4 Jan 2019 13:11:28 -0500 Subject: [PATCH 10/53] Performance changes. Now tested on rolath, peq and EZ servers --- .../2018_12_12_client_faction_tables.sql | 3 +- ...2018_12_12_convert_to_client_functions.sql | 29 +++++++------------ 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/utils/sql/git/required/2018_12_12_client_faction_tables.sql b/utils/sql/git/required/2018_12_12_client_faction_tables.sql index 4c2b6a0d0..4c2bfa225 100644 --- a/utils/sql/git/required/2018_12_12_client_faction_tables.sql +++ b/utils/sql/git/required/2018_12_12_client_faction_tables.sql @@ -128,7 +128,8 @@ DROP TABLE IF EXISTS `client_server_faction_map`; CREATE TABLE `client_server_faction_map` ( `clientid` int(11) NOT NULL, `serverid` int(11) NOT NULL, - PRIMARY KEY (`clientid`,`serverid`) + PRIMARY KEY (`clientid`,`serverid`), + INDEX serverid (`serverid`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql index c236c2b0a..f76c5e7d3 100755 --- a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql +++ b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql @@ -14,6 +14,7 @@ with client faction_ids. /* Create the temp table and start mappings at 5000 */ CREATE TABLE custom_faction_mappings (old_faction int, new_faction int, primary key (old_faction)) engine=INNODB; +select "Moving custom factions to safe range, well above known client values" ``; select @startcustom:=5000; /* Insert the custom/obsolete factions into the temp mapping table */ @@ -101,37 +102,29 @@ delete from npc_faction_entries where faction_id > 20000; /* Update the faction_values now. -We're deleting any faction_values for obsolete factions. These are factions -that were used, then switched away from in the past by servers, but the entries -were still there. */ delete from faction_values where faction_id not in (select old_faction from custom_faction_mappings) and faction_id not in (select serverid from client_server_faction_map); /* Custom faction mappings dont have to worry about range collision */ -select "Updating faction_values for custom factions"; +select "Updating faction_values for custom factions" ``; update faction_values set faction_id = (select new_faction from custom_faction_mappings where old_faction = faction_id) where faction_id in (select old_faction from custom_faction_mappings); /* -Common factions have range collision issues, move them out of the way while -we process them. +There are so many of these, Im going to update in place to save time. +To do this we must remove the unique keys, as these will be violated until +the update is complete */ -select "Offsetting core faction_values so that we can map them without conflict"; +select "Updating core faction_values to use new faction ids...." ``; -update faction_values set faction_id = faction_id + 20000 -where faction_id in (select serverid from client_server_faction_map); +alter table faction_values drop primary key; -/* Put them in their correct places now based on client mapping */ +update faction_values v +join client_server_faction_map m on v.faction_id = m.serverid +set faction_id = m.clientid; -select "Updating core faction_values to use new faction ids...."; - -update faction_values set faction_id = (select clientid from client_server_faction_map -where faction_id > 20000 && serverid = (faction_id-20000)) -where faction_id > 20000 && (faction_id-20000) in (select serverid from client_server_faction_map); - -/* Delete any stragglers */ -delete from faction_values where faction_id > 20000; +ALTER TABLE `faction_values` ADD PRIMARY KEY `lookup` (`char_id`,`faction_id`); From 90b46c7bda081c94a714d5e8fe357b7fea9aea81 Mon Sep 17 00:00:00 2001 From: Noudess Date: Sat, 5 Jan 2019 12:01:40 -0500 Subject: [PATCH 11/53] Change backup table names per Akka Add commented out secion illustrating what next manifgest might do for cleanup. --- ...2018_12_12_convert_to_client_functions.sql | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql index f76c5e7d3..8b6a3f8e7 100755 --- a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql +++ b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql @@ -20,19 +20,20 @@ select @startcustom:=5000; /* Insert the custom/obsolete factions into the temp mapping table */ insert into custom_faction_mappings (select id, @startcustom := @startcustom +1 from faction_list where id not in (select serverid from client_server_faction_map) and id < 5000); -CREATE TABLE IF NOT EXISTS faction_list_mod_oldfac AS SELECT * from faction_list_mod; +CREATE TABLE IF NOT EXISTS faction_list_mod_prefix AS SELECT * from faction_list_mod; /* Now we update all the tables for these custom factions */ update faction_list_mod set faction_id = (select new_faction from custom_faction_mappings where old_faction = faction_id) where faction_id < 5000 and faction_id in (select old_faction from custom_faction_mappings); -CREATE TABLE IF NOT EXISTS faction_list_oldfac AS SELECT * from faction_list; +CREATE TABLE IF NOT EXISTS faction_list_prefix AS SELECT * from faction_list; /* The faction_list table was forcing faction name to be a key. Client does not. Also, auto increment doesnt make sense anymore */ ALTER TABLE faction_list CHANGE COLUMN `id` `id` INT(11) NOT NULL; ALTER TABLE faction_list DROP INDEX `name`; + update faction_list set id = (select new_faction from custom_faction_mappings where old_faction = id) where id < 5000 and id in (select old_faction from custom_faction_mappings); @@ -72,7 +73,7 @@ where other_faction_id between 201 and 216); /* And now we need to fix all the other faction tables to point to the new factions. */ -CREATE TABLE IF NOT EXISTS npc_faction_oldfac AS SELECT * from npc_faction; +CREATE TABLE IF NOT EXISTS npc_faction_prefix AS SELECT * from npc_faction; update npc_faction set primaryfaction = (select new_faction from custom_faction_mappings where old_faction = primaryfaction) where primaryfaction in (select old_faction from custom_faction_mappings); @@ -83,7 +84,7 @@ where primaryfaction in (select serverid from client_server_faction_map); update npc_faction_entries set faction_id = (select new_faction from custom_faction_mappings where old_faction = faction_id) where faction_id in (select old_faction from custom_faction_mappings); -CREATE TABLE IF NOT EXISTS npc_faction_entries_oldfac AS SELECT * from npc_faction_entries; +CREATE TABLE IF NOT EXISTS npc_faction_entries_prefix AS SELECT * from npc_faction_entries; /* Move existing factions out of wat - the following replace would create key */ /* duplicates along the way, but none when complete. */ @@ -101,8 +102,10 @@ delete from npc_faction_entries where faction_id > 20000; /* Update the faction_values now. - */ + +CREATE TABLE IF NOT EXISTS faction_values_prefix AS SELECT * from faction_values; + delete from faction_values where faction_id not in (select old_faction from custom_faction_mappings) and faction_id not in (select serverid from client_server_faction_map); @@ -128,3 +131,21 @@ join client_server_faction_map m on v.faction_id = m.serverid set faction_id = m.clientid; ALTER TABLE `faction_values` ADD PRIMARY KEY `lookup` (`char_id`,`faction_id`); + +/* +Delete temporary tables +*/ + +DROP TABLE IF EXISTS `custom_faction_mappings`; + +/* + * The following to be deleted in a future update, once everyone is + * happy with the conversion + +DROP TABLE IF EXISTS faction_list_mod_prefix; +DROP TABLE IF EXISTS faction_list_prefix; +DROP TABLE IF EXISTS npc_faction_prefix; +DROP TABLE IF EXISTS npc_faction_entries_prefix; +DROP TABLE IF NOT EXISTS faction_values_prefix; + + */ From bd47e2121f8c4fc571f93637d95dc7f8ad516d28 Mon Sep 17 00:00:00 2001 From: Noudess Date: Sat, 5 Jan 2019 12:17:10 -0500 Subject: [PATCH 12/53] Reconstruct faction_list to get rid of obsolete fields. --- .../2018_12_12_convert_to_client_functions.sql | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql index 8b6a3f8e7..c73bc060a 100755 --- a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql +++ b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql @@ -28,11 +28,15 @@ update faction_list_mod set faction_id = (select new_faction from custom_faction CREATE TABLE IF NOT EXISTS faction_list_prefix AS SELECT * from faction_list; -/* The faction_list table was forcing faction name to be a key. Client does - not. Also, auto increment doesnt make sense anymore */ -ALTER TABLE faction_list CHANGE COLUMN `id` `id` INT(11) NOT NULL; -ALTER TABLE faction_list DROP INDEX `name`; +DROP TABLE faction_list; +CREATE TABLE `faction_list` ( + `id` int(11) NOT NULL, + `name` varchar(50) NOT NULL DEFAULT '', + `base` smallint(6) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `id` (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=486 DEFAULT CHARSET=utf8 as select id, name, base from faction_list_prefix; update faction_list set id = (select new_faction from custom_faction_mappings where old_faction = id) where id < 5000 and id in (select old_faction from custom_faction_mappings); From ca6bcdb1f9ece05a1ec22f310b23cb9e2c232427 Mon Sep 17 00:00:00 2001 From: Noudess Date: Sat, 5 Jan 2019 12:46:52 -0500 Subject: [PATCH 13/53] Updates to match up with db versions that have chwqanges since PR created. --- common/version.h | 2 +- utils/sql/db_update_manifest.txt | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/common/version.h b/common/version.h index ba57cf898..5f78cdb3a 100644 --- a/common/version.h +++ b/common/version.h @@ -30,7 +30,7 @@ Manifest: https://github.com/EQEmu/Server/blob/master/utils/sql/db_update_manifest.txt */ -#define CURRENT_BINARY_DATABASE_VERSION 9134 +#define CURRENT_BINARY_DATABASE_VERSION 9136 #ifdef BOTS #define CURRENT_BINARY_BOTS_DATABASE_VERSION 9021 #else diff --git a/utils/sql/db_update_manifest.txt b/utils/sql/db_update_manifest.txt index 1460e576d..ada18ec51 100644 --- a/utils/sql/db_update_manifest.txt +++ b/utils/sql/db_update_manifest.txt @@ -386,8 +386,10 @@ 9130|2018_11_25_name_filter_update.sql|SHOW COLUMNS FROM `name_filter` LIKE 'id'|empty| 9131|2018_12_13_spell_buckets.sql|SHOW TABLES LIKE 'spell_buckets'|empty| 9132|2018_12_16_global_base_scaling.sql|SHOW TABLES LIKE 'npc_scale_global_base'|empty| -9133|2018_12_12_client_faction_tables.sql|SHOW TABLES LIKE 'faction_base_data'|empty| -9134|2018_12_12_convert_to_client_functions.sql|SELECT `id` FROM `faction_list` WHERE `id` > 4999 |empty| +9133|2018_11_25_StuckBehavior.sql|SHOW COLUMNS FROM `npc_types` LIKE 'stuck_behavior'|empty| +9134|2019_01_04_update_global_base_scaling.sql|SELECT * FROM db_version WHERE version >= 9134|empty| +9135|2018_12_12_client_faction_tables.sql|SHOW TABLES LIKE 'faction_base_data'|empty| +9136|2018_12_12_convert_to_client_functions.sql|SELECT `id` FROM `faction_list` WHERE `id` > 4999 |empty| # Upgrade conditions: # This won't be needed after this system is implemented, but it is used database that are not From d7e98bba17a4fb4735d8bd7eecbd776239462daa Mon Sep 17 00:00:00 2001 From: Noudess Date: Sat, 5 Jan 2019 12:59:47 -0500 Subject: [PATCH 14/53] Remove comments. --- .../2018_12_12_client_faction_tables.sql | 130 +----------------- 1 file changed, 1 insertion(+), 129 deletions(-) diff --git a/utils/sql/git/required/2018_12_12_client_faction_tables.sql b/utils/sql/git/required/2018_12_12_client_faction_tables.sql index 4c2bfa225..7483795be 100644 --- a/utils/sql/git/required/2018_12_12_client_faction_tables.sql +++ b/utils/sql/git/required/2018_12_12_client_faction_tables.sql @@ -1,182 +1,68 @@ --- MySQL dump 10.13 Distrib 5.7.24, for Linux (x86_64) --- --- Host: 192.168.0.3 Database: peqdb --- ------------------------------------------------------ --- Server version 5.7.24-0ubuntu0.16.04.1 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - -- -- Table structure for table `client_faction_associations` -- DROP TABLE IF EXISTS `client_faction_associations`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; + CREATE TABLE `client_faction_associations` ( `faction_id` int(11) NOT NULL, `other_faction_id` int(11) NOT NULL, `mod` int(11) DEFAULT NULL, PRIMARY KEY (`faction_id`,`other_faction_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `client_faction_associations` -- LOCK TABLES `client_faction_associations` WRITE; -/*!40000 ALTER TABLE `client_faction_associations` DISABLE KEYS */; INSERT INTO `client_faction_associations` VALUES (65,51,-600),(65,52,-600),(65,53,-600),(65,54,-600),(65,55,-600),(65,56,-700),(65,57,-600),(65,58,-600),(65,59,-750),(65,60,-750),(65,61,-600),(65,62,-600),(65,178,-1000),(65,180,-600),(65,661,-600),(65,1106,-600),(106,51,-50),(106,52,-50),(106,56,-500),(106,57,-50),(106,59,-750),(106,60,-750),(106,62,-50),(106,178,-750),(106,180,-50),(106,661,-50),(106,1106,-50),(121,9,-200),(121,56,-200),(121,59,-625),(121,60,-625),(121,178,-725),(217,51,-500),(217,52,-500),(217,53,-500),(217,54,-500),(217,55,-500),(217,56,-500),(217,57,-500),(217,58,-500),(217,59,-500),(217,60,-500),(217,61,-500),(217,62,-500),(217,180,-500),(217,203,-500),(217,661,-500),(217,1106,-500),(218,51,-1000),(218,52,-1000),(218,53,-1000),(218,54,-1000),(218,55,-1000),(218,56,-1000),(218,57,-1000),(218,58,-1000),(218,59,-1000),(218,60,-1000),(218,61,-1000),(218,62,-1000),(218,178,-1000),(218,180,-1000),(218,201,-1000),(218,202,-1000),(218,204,-1000),(218,205,-1000),(218,206,-1000),(218,207,-1000),(218,208,-1000),(218,209,-1000),(218,210,-1000),(218,211,-1000),(218,212,-1000),(218,213,-1000),(218,214,-1000),(218,215,-1000),(218,216,-1000),(218,661,-1000),(218,1106,-1000),(219,56,-200),(219,59,-375),(219,60,-375),(219,178,-375),(220,5,-200),(220,11,-200),(220,12,50),(220,13,50),(220,14,50),(220,51,50),(220,52,-50),(220,54,-50),(220,56,-300),(220,57,50),(220,58,-150),(220,59,-750),(220,60,-750),(220,61,-50),(220,178,-1000),(220,180,-50),(220,201,-200),(220,202,-50),(220,203,-300),(220,205,-50),(220,206,-200),(220,211,-300),(220,213,25),(220,216,-300),(220,661,50),(220,1106,50),(221,3,-750),(221,4,-300),(221,5,50),(221,6,-200),(221,9,-25),(221,11,50),(221,51,50),(221,52,-300),(221,53,-25),(221,54,-300),(221,55,-300),(221,56,-50),(221,57,50),(221,58,-300),(221,59,-300),(221,60,-250),(221,61,-300),(221,62,-25),(221,178,-300),(221,180,-300),(221,201,100),(221,202,-750),(221,203,-15),(221,204,-750),(221,205,-750),(221,206,-15),(221,207,-750),(221,208,-750),(221,209,-750),(221,210,-750),(221,211,-750),(221,212,-750),(221,213,-750),(221,214,-750),(221,215,-750),(221,216,-750),(221,661,50),(221,1106,50),(222,51,-750),(222,52,-750),(222,53,-750),(222,54,-750),(222,55,-750),(222,56,-400),(222,57,-750),(222,58,-750),(222,59,50),(222,60,-200),(222,61,-750),(222,62,-750),(222,178,-750),(222,180,-750),(222,201,50),(222,203,50),(222,206,50),(222,661,-750),(222,1106,-750),(223,3,-100),(223,4,-100),(223,5,-50),(223,6,-100),(223,7,-100),(223,8,-25),(223,9,50),(223,10,-100),(223,11,-50),(223,12,-100),(223,13,-100),(223,14,-100),(223,15,-100),(223,51,50),(223,52,-25),(223,53,-75),(223,54,-50),(223,55,-300),(223,56,-50),(223,57,50),(223,58,-150),(223,59,-750),(223,60,-500),(223,61,-50),(223,62,-75),(223,178,-750),(223,180,-25),(223,202,-100),(223,203,-300),(223,204,-100),(223,205,50),(223,206,-200),(223,208,-100),(223,209,-100),(223,210,-100),(223,211,-100),(223,213,-100),(223,214,-200),(223,215,-100),(223,216,-200),(223,661,50),(223,1106,50),(225,51,-875),(225,52,-875),(225,53,-875),(225,54,-875),(225,55,-875),(225,56,-875),(225,57,-875),(225,58,-875),(225,59,-625),(225,60,-625),(225,61,-875),(225,62,-875),(225,178,-875),(225,180,-875),(225,661,-875),(225,1106,-875),(226,5,-200),(226,11,-200),(226,56,-50),(226,59,-100),(226,60,-100),(226,62,-10),(226,178,-200),(226,201,-200),(226,203,-200),(226,206,-200),(226,207,10),(226,215,100),(226,216,-100),(227,5,-200),(227,11,-200),(227,51,-10),(227,52,-10),(227,54,-10),(227,55,-10),(227,56,-100),(227,57,-10),(227,59,-100),(227,60,-100),(227,178,-200),(227,180,-10),(227,201,-200),(227,202,100),(227,203,-200),(227,205,10),(227,206,-200),(227,216,-200),(227,661,-10),(227,1106,-10),(228,51,-750),(228,52,-750),(228,54,-750),(228,55,-750),(228,56,-25),(228,57,-750),(228,59,-1000),(228,61,-750),(228,62,-750),(228,178,-1000),(228,180,-750),(228,661,-750),(228,1106,-750),(229,9,-200),(229,56,-200),(229,59,-375),(229,60,-375),(229,178,-375),(230,3,-100),(230,4,-100),(230,6,-100),(230,7,-100),(230,9,-10),(230,10,-100),(230,11,-50),(230,15,-100),(230,51,50),(230,52,-50),(230,53,-150),(230,54,-200),(230,55,-200),(230,56,-150),(230,58,-200),(230,59,-850),(230,60,-750),(230,61,-150),(230,62,-50),(230,178,-1000),(230,180,-50),(230,201,50),(230,202,-25),(230,203,-25),(230,204,-25),(230,205,-25),(230,207,-25),(230,208,-25),(230,209,-25),(230,210,-25),(230,211,-25),(230,212,-25),(230,213,-25),(230,214,-100),(230,215,-25),(230,661,50),(230,1106,50),(231,1,-50),(231,4,-50),(231,5,-200),(231,6,-50),(231,7,-50),(231,8,-50),(231,9,-50),(231,10,-50),(231,11,-200),(231,14,50),(231,15,-50),(231,16,-50),(231,51,-100),(231,52,-100),(231,53,50),(231,54,-100),(231,55,-50),(231,56,-300),(231,57,-100),(231,58,-150),(231,59,-750),(231,60,-750),(231,61,-100),(231,62,-100),(231,178,-750),(231,180,-100),(231,201,-200),(231,202,-100),(231,203,-300),(231,204,-50),(231,205,-100),(231,206,-200),(231,207,-50),(231,208,-50),(231,211,-300),(231,212,-50),(231,213,-50),(231,214,-50),(231,215,-50),(231,216,-300),(231,661,-100),(231,1106,-100),(232,1,50),(232,5,-50),(232,51,-501),(232,52,-750),(232,53,-501),(232,54,-750),(232,55,-750),(232,56,-10),(232,57,-750),(232,58,-1000),(232,59,-499),(232,60,50),(232,61,-750),(232,62,-501),(232,178,-750),(232,180,-750),(232,201,-50),(232,202,-500),(232,203,50),(232,204,-500),(232,205,-500),(232,207,-500),(232,208,-500),(232,209,-500),(232,210,-500),(232,211,50),(232,212,-500),(232,213,-500),(232,214,-100),(232,215,-500),(232,661,-501),(232,1106,-501),(233,1,-50),(233,4,-50),(233,5,-200),(233,6,-50),(233,7,-50),(233,8,-50),(233,9,-50),(233,10,-50),(233,11,-200),(233,12,50),(233,15,-50),(233,16,-50),(233,51,-100),(233,52,-100),(233,53,50),(233,54,-100),(233,55,-25),(233,56,-300),(233,57,-100),(233,58,-150),(233,59,-750),(233,60,-750),(233,61,-100),(233,62,-15),(233,178,-750),(233,180,-100),(233,201,-200),(233,202,-50),(233,203,-300),(233,204,-50),(233,205,-50),(233,206,-200),(233,207,-50),(233,208,-50),(233,211,-50),(233,212,-50),(233,214,-50),(233,215,-50),(233,216,-300),(233,661,-100),(233,1106,-100),(234,51,-750),(234,52,-750),(234,53,-750),(234,54,-1000),(234,55,-1000),(234,56,-490),(234,57,-750),(234,58,-750),(234,59,-750),(234,60,-750),(234,61,-750),(234,62,-750),(234,178,-750),(234,180,-750),(234,661,-750),(234,1106,-750),(235,1,50),(235,5,-200),(235,51,-1000),(235,52,-1000),(235,53,-1000),(235,54,-1000),(235,55,-1000),(235,56,-250),(235,57,-1000),(235,58,-1000),(235,59,50),(235,60,-200),(235,61,-1000),(235,62,-1000),(235,178,-1000),(235,180,-1000),(235,201,-100),(235,202,-200),(235,203,50),(235,204,-100),(235,205,-100),(235,206,50),(235,207,-100),(235,208,-100),(235,209,-100),(235,210,-100),(235,211,100),(235,212,-100),(235,213,-100),(235,214,-50),(235,215,-200),(235,661,-1000),(235,1106,-1000),(236,3,-600),(236,4,-600),(236,5,50),(236,6,-600),(236,7,-10),(236,8,-10),(236,9,-25),(236,10,-10),(236,11,50),(236,15,-10),(236,16,-10),(236,51,-50),(236,52,-50),(236,53,-10),(236,54,-90),(236,55,-99),(236,56,50),(236,57,-75),(236,58,-50),(236,59,-50),(236,60,-50),(236,61,-50),(236,62,-50),(236,178,-50),(236,180,-50),(236,202,-200),(236,204,-200),(236,205,-10),(236,206,50),(236,207,-200),(236,208,-200),(236,209,-50),(236,210,-300),(236,212,-50),(236,214,-200),(236,215,-300),(236,661,-50),(236,1106,-50),(237,3,-1000),(237,4,-1000),(237,5,50),(237,6,-1000),(237,11,25),(237,51,-500),(237,52,-750),(237,53,-500),(237,54,-750),(237,55,-750),(237,56,-50),(237,57,-750),(237,58,-750),(237,59,50),(237,60,-500),(237,61,-750),(237,62,-500),(237,178,-750),(237,180,-750),(237,201,-50),(237,202,-600),(237,203,50),(237,204,-600),(237,205,-600),(237,206,50),(237,207,-600),(237,208,-600),(237,209,-600),(237,210,-600),(237,211,-50),(237,212,-600),(237,213,-600),(237,214,-600),(237,215,-600),(237,216,-300),(237,661,-500),(237,1106,-500),(238,3,-200),(238,4,-200),(238,5,50),(238,9,50),(238,11,50),(238,12,50),(238,13,50),(238,14,50),(238,51,-25),(238,52,-50),(238,53,-10),(238,54,-50),(238,55,-100),(238,57,-75),(238,58,-100),(238,59,-75),(238,60,-50),(238,61,-100),(238,62,50),(238,178,-150),(238,180,-50),(238,201,100),(238,202,-100),(238,203,25),(238,204,-100),(238,205,-100),(238,206,25),(238,207,-100),(238,208,-100),(238,209,-100),(238,210,-200),(238,212,-450),(238,213,-50),(238,214,-200),(238,215,-300),(238,216,25),(238,661,-25),(238,1106,-25),(239,3,-750),(239,4,-500),(239,5,50),(239,6,-500),(239,11,50),(239,12,-200),(239,13,-200),(239,14,-200),(239,51,-50),(239,52,-100),(239,53,-25),(239,54,-500),(239,55,-500),(239,56,50),(239,57,-500),(239,58,-500),(239,59,-400),(239,60,-450),(239,61,-100),(239,62,-100),(239,178,-500),(239,180,-100),(239,201,-25),(239,202,-200),(239,203,-25),(239,204,-200),(239,205,-200),(239,206,50),(239,207,-200),(239,208,-200),(239,209,-200),(239,210,-200),(239,211,-100),(239,212,-200),(239,213,-200),(239,214,-200),(239,215,-750),(239,216,-200),(239,661,-50),(239,1106,-50),(240,1,50),(240,2,50),(240,3,50),(240,5,-200),(240,9,50),(240,11,-200),(240,16,50),(240,51,-50),(240,52,-50),(240,53,-50),(240,55,-50),(240,56,-250),(240,59,-500),(240,60,-450),(240,62,50),(240,178,-500),(240,180,-50),(240,201,-200),(240,202,100),(240,205,100),(240,206,-200),(240,209,50),(240,216,50),(240,661,-50),(240,1106,-50),(241,3,-50),(241,5,-50),(241,9,50),(241,11,-25),(241,51,-50),(241,52,-50),(241,53,-75),(241,54,-25),(241,55,-75),(241,56,-200),(241,57,-50),(241,58,-50),(241,59,-800),(241,60,-600),(241,61,50),(241,62,-25),(241,178,-800),(241,180,-50),(241,201,-50),(241,205,25),(241,206,-100),(241,208,-25),(241,210,10),(241,214,-100),(241,216,-75),(241,661,-50),(241,1106,-50),(242,3,50),(242,5,-200),(242,9,-50),(242,11,-200),(242,51,-150),(242,52,-200),(242,53,50),(242,54,-50),(242,55,-30),(242,56,-500),(242,57,-140),(242,58,-300),(242,59,-750),(242,60,-750),(242,61,-150),(242,62,-40),(242,178,-1000),(242,180,-200),(242,201,-200),(242,203,-200),(242,206,-200),(242,209,100),(242,661,-150),(242,1106,-150),(243,5,-200),(243,11,-200),(243,56,-100),(243,59,-100),(243,60,-100),(243,178,-100),(244,3,-500),(244,4,-200),(244,6,-200),(244,7,-200),(244,9,50),(244,11,50),(244,51,-200),(244,52,-300),(244,53,-300),(244,54,-600),(244,55,-600),(244,56,50),(244,57,-600),(244,58,-600),(244,59,-100),(244,60,-150),(244,61,-600),(244,62,-150),(244,178,-600),(244,180,-300),(244,201,25),(244,202,-150),(244,203,25),(244,204,-600),(244,205,25),(244,206,50),(244,207,-600),(244,208,-600),(244,209,-600),(244,210,-600),(244,212,-300),(244,213,-25),(244,214,-600),(244,215,-600),(244,216,-25),(244,661,-200),(244,1106,-200),(245,1,-25),(245,2,-25),(245,3,-25),(245,4,-25),(245,5,-200),(245,6,-25),(245,7,-25),(245,8,-25),(245,9,-100),(245,10,-25),(245,11,-50),(245,12,50),(245,13,50),(245,14,50),(245,15,-25),(245,16,-25),(245,51,-25),(245,52,-50),(245,53,-25),(245,54,-25),(245,55,-25),(245,56,-500),(245,57,-25),(245,58,-25),(245,59,-800),(245,60,-750),(245,61,-10),(245,62,50),(245,178,-800),(245,180,-50),(245,201,-200),(245,202,50),(245,203,-300),(245,206,-300),(245,213,50),(245,661,-25),(245,1106,-25),(246,4,50),(246,5,-200),(246,11,-200),(246,51,-10),(246,52,-10),(246,54,50),(246,55,50),(246,56,-750),(246,57,50),(246,58,-25),(246,59,-750),(246,60,-750),(246,61,-10),(246,62,-10),(246,178,-750),(246,180,-10),(246,201,-300),(246,203,-400),(246,206,-600),(246,215,50),(246,661,-10),(246,1106,-10),(247,3,-1000),(247,4,-1000),(247,6,-1000),(247,51,-1000),(247,52,-1000),(247,53,-1000),(247,54,-1000),(247,55,-1000),(247,56,-1000),(247,57,-1000),(247,58,-1000),(247,59,-1000),(247,60,-1000),(247,61,-1000),(247,62,-1000),(247,178,-1000),(247,180,-1000),(247,661,-1000),(247,1106,-1000),(248,5,-1000),(248,11,-1000),(248,51,-25),(248,52,-50),(248,53,-50),(248,56,-1000),(248,58,-25),(248,59,-1000),(248,60,-1000),(248,61,-10),(248,62,-10),(248,178,-1000),(248,180,-50),(248,201,-1000),(248,203,-1000),(248,206,-1000),(248,209,50),(248,211,-25),(248,215,50),(248,216,-25),(248,661,-25),(248,1106,-25),(249,51,-2000),(249,52,-2000),(249,53,-2000),(249,54,-2000),(249,55,-2000),(249,56,-2000),(249,57,-2000),(249,58,-2000),(249,59,-2000),(249,60,-2000),(249,61,-2000),(249,62,-2000),(249,178,-1000),(249,180,-2000),(249,661,-2000),(249,1106,-2000),(250,51,-1000),(250,52,-1000),(250,53,-1000),(250,54,-1000),(250,55,-1000),(250,56,-1000),(250,57,-1000),(250,58,-1000),(250,59,-1000),(250,60,-1000),(250,61,-1000),(250,62,-1000),(250,178,-1000),(250,180,-1000),(250,661,-1000),(250,1106,-1000),(251,51,-499),(251,52,-499),(251,53,-499),(251,54,-499),(251,55,-499),(251,56,-650),(251,57,-499),(251,58,-499),(251,59,-1000),(251,60,-750),(251,61,-499),(251,62,-499),(251,178,-1000),(251,180,-499),(251,201,-1000),(251,203,-1000),(251,206,-1000),(251,211,-250),(251,661,-499),(251,1106,-499),(252,51,-1000),(252,52,-1000),(252,53,-1000),(252,54,-1000),(252,55,-1000),(252,56,-1000),(252,57,-1000),(252,58,-1000),(252,59,-1000),(252,60,-1000),(252,61,-1000),(252,62,-1000),(252,178,-1000),(252,180,-1000),(252,661,-1000),(252,1106,-1000),(253,51,-1000),(253,52,-1000),(253,53,-1000),(253,54,-1000),(253,55,-1000),(253,56,-1000),(253,57,-1000),(253,58,-1000),(253,59,-1000),(253,60,-1000),(253,61,-1000),(253,62,-1000),(253,178,-1000),(253,180,-1000),(253,661,-1000),(253,1106,-1000),(254,1,-50),(254,2,-50),(254,3,-50),(254,4,-50),(254,5,-200),(254,6,-50),(254,7,-50),(254,8,-50),(254,9,-50),(254,10,-50),(254,11,-200),(254,13,50),(254,15,-50),(254,16,-50),(254,51,-50),(254,52,-100),(254,53,50),(254,54,-50),(254,55,-10),(254,56,-500),(254,57,-25),(254,58,-150),(254,59,-750),(254,60,-750),(254,61,-100),(254,62,-25),(254,178,-750),(254,180,-100),(254,201,-200),(254,202,-50),(254,203,-300),(254,204,-50),(254,205,-50),(254,206,-200),(254,207,-50),(254,208,-50),(254,211,-50),(254,212,-50),(254,213,-50),(254,214,-50),(254,215,-50),(254,216,-150),(254,661,-50),(254,1106,-50),(255,1,50),(255,3,50),(255,4,50),(255,5,-200),(255,6,50),(255,11,-200),(255,16,50),(255,51,-50),(255,52,-100),(255,53,-50),(255,54,-25),(255,55,-50),(255,56,-500),(255,57,-50),(255,58,-25),(255,59,-850),(255,60,-750),(255,61,-10),(255,62,50),(255,178,-1000),(255,180,-100),(255,201,-200),(255,202,50),(255,203,-400),(255,204,-10),(255,205,50),(255,206,-400),(255,207,-10),(255,208,-10),(255,209,-10),(255,210,-10),(255,211,50),(255,212,-10),(255,213,-10),(255,214,-10),(255,215,-10),(255,216,-10),(255,661,-50),(255,1106,-50),(256,51,-1000),(256,52,-1000),(256,53,-1000),(256,54,-1000),(256,55,-1000),(256,56,-1000),(256,57,-1000),(256,58,-1000),(256,59,-1000),(256,60,-1000),(256,61,-1000),(256,62,-1000),(256,178,-1000),(256,180,-1000),(256,661,-1000),(256,1106,-1000),(257,51,-1000),(257,52,-1000),(257,53,-1000),(257,54,-1000),(257,55,-1000),(257,56,-1000),(257,57,-1000),(257,58,-1000),(257,59,-1000),(257,60,-1000),(257,61,-1000),(257,62,-1000),(257,178,-1000),(257,180,-1000),(257,661,-1000),(257,1106,-1000),(258,51,-1000),(258,52,-1000),(258,53,-1000),(258,54,-1000),(258,55,-1000),(258,56,-1000),(258,57,-1000),(258,58,-1000),(258,59,-1000),(258,60,-1000),(258,61,-1000),(258,62,-1000),(258,178,-1000),(258,180,-1000),(258,661,-1000),(258,1106,-1000),(259,51,-1000),(259,52,-1000),(259,53,-1000),(259,54,-1000),(259,55,-1000),(259,56,-1000),(259,57,-1000),(259,58,-1000),(259,59,-1000),(259,60,-1000),(259,61,-1000),(259,62,-1000),(259,178,-1000),(259,180,-1000),(259,661,-1000),(259,1106,-1000),(261,1,-25),(261,5,50),(261,51,-750),(261,52,-750),(261,53,-900),(261,54,-750),(261,55,-750),(261,56,-250),(261,57,-750),(261,58,-1000),(261,59,-350),(261,60,50),(261,61,-750),(261,62,-750),(261,178,-750),(261,180,-750),(261,203,50),(261,211,75),(261,661,-750),(261,1106,-750),(262,3,25),(262,4,10),(262,5,-200),(262,6,10),(262,7,10),(262,9,-50),(262,11,-200),(262,52,-75),(262,53,-100),(262,54,-50),(262,55,-50),(262,56,-300),(262,57,-25),(262,58,-75),(262,59,-1000),(262,60,-750),(262,61,-25),(262,62,-50),(262,178,-1000),(262,180,-75),(262,201,-200),(262,203,-300),(262,205,-100),(262,206,-200),(262,207,50),(262,212,50),(262,214,50),(262,216,-150),(263,1,50),(263,3,25),(263,4,25),(263,5,-300),(263,6,50),(263,11,-300),(263,16,50),(263,51,-15),(263,52,-25),(263,53,-25),(263,55,-25),(263,56,-300),(263,57,-10),(263,58,-5),(263,59,-750),(263,60,-700),(263,61,50),(263,178,-1000),(263,180,-25),(263,201,-400),(263,202,25),(263,203,-300),(263,205,25),(263,206,-300),(263,207,25),(263,210,25),(263,211,50),(263,212,15),(263,215,15),(263,661,-15),(263,1106,-15),(264,5,-1000),(264,7,50),(264,11,-1000),(264,51,-50),(264,52,-50),(264,53,-50),(264,54,-50),(264,55,-50),(264,56,-1000),(264,57,-50),(264,58,-50),(264,59,-1000),(264,60,-1000),(264,61,-50),(264,62,-50),(264,178,-1000),(264,180,-50),(264,201,-1000),(264,203,-1000),(264,206,-1000),(264,211,-25),(264,216,-10),(264,661,-50),(264,1106,-50),(265,3,-200),(265,4,-200),(265,6,-200),(265,7,-100),(265,8,-100),(265,12,-200),(265,13,-200),(265,14,-200),(265,51,-500),(265,52,-500),(265,54,-500),(265,55,-500),(265,56,-50),(265,57,-500),(265,58,-500),(265,59,-800),(265,60,-800),(265,61,-500),(265,62,-500),(265,178,-800),(265,180,-500),(265,201,-50),(265,202,-475),(265,203,100),(265,204,-475),(265,205,-475),(265,206,-475),(265,207,-475),(265,208,-475),(265,209,-475),(265,210,-475),(265,211,-25),(265,212,-475),(265,213,-475),(265,214,-475),(265,215,-475),(265,216,-475),(265,661,-500),(265,1106,-500),(266,5,-200),(266,9,-50),(266,11,-200),(266,51,-1),(266,52,-1),(266,54,-1),(266,55,-1),(266,56,-500),(266,57,-1),(266,59,-500),(266,60,-500),(266,61,-1),(266,62,-1),(266,178,-600),(266,180,-1),(266,201,-100),(266,203,-100),(266,206,-200),(266,661,-1),(266,1106,-1),(267,5,-200),(267,9,-50),(267,11,-200),(267,51,-25),(267,52,-50),(267,53,50),(267,54,-25),(267,55,-25),(267,56,-500),(267,57,-25),(267,58,-200),(267,59,-625),(267,60,-625),(267,61,-50),(267,62,-25),(267,178,-725),(267,180,-50),(267,201,-100),(267,203,-100),(267,206,-200),(267,661,-25),(267,1106,-25),(269,4,50),(269,5,-550),(269,11,-550),(269,56,-450),(269,59,-1000),(269,60,-750),(269,178,-1000),(269,201,-450),(269,203,-450),(269,206,-450),(269,207,50),(269,211,-150),(269,215,50),(270,1,50),(270,3,-600),(270,4,-600),(270,5,-50),(270,6,-600),(270,16,50),(270,51,-500),(270,52,-500),(270,53,-125),(270,54,-750),(270,55,-750),(270,56,50),(270,57,-50),(270,58,-500),(270,59,-250),(270,60,-350),(270,61,-500),(270,62,-150),(270,178,-1000),(270,180,-500),(270,201,25),(270,202,-300),(270,203,25),(270,204,-600),(270,205,-150),(270,206,50),(270,207,-400),(270,208,-400),(270,209,-100),(270,210,-300),(270,211,50),(270,212,-200),(270,213,-50),(270,214,-500),(270,215,-600),(270,216,25),(270,661,-500),(270,1106,-500),(271,3,-200),(271,4,-200),(271,5,50),(271,6,-200),(271,11,50),(271,51,50),(271,52,-30),(271,53,25),(271,54,-175),(271,55,-200),(271,56,25),(271,57,50),(271,58,-150),(271,59,-75),(271,60,-25),(271,61,-175),(271,62,-25),(271,178,-375),(271,180,-30),(271,201,50),(271,202,-100),(271,203,25),(271,204,-100),(271,205,-100),(271,206,100),(271,207,-100),(271,208,-100),(271,209,-200),(271,210,-200),(271,211,-25),(271,212,-100),(271,213,-50),(271,214,-300),(271,215,-200),(271,216,25),(271,661,50),(271,1106,50),(272,5,-200),(272,6,50),(272,9,-100),(272,11,-200),(272,51,50),(272,52,-200),(272,53,-200),(272,54,25),(272,55,-50),(272,56,-400),(272,57,50),(272,58,-200),(272,59,-850),(272,60,-750),(272,62,-100),(272,178,-1000),(272,180,-200),(272,201,-550),(272,202,-50),(272,203,-400),(272,204,-50),(272,205,-50),(272,206,-400),(272,207,100),(272,208,-50),(272,209,-50),(272,210,-50),(272,211,-150),(272,212,-50),(272,213,-50),(272,214,-50),(272,215,100),(272,216,-200),(272,661,50),(272,1106,50),(273,56,-200),(273,59,-375),(273,60,-375),(273,178,-275),(274,5,-200),(274,11,-200),(274,51,-10),(274,52,-5),(274,54,-10),(274,55,-10),(274,56,-500),(274,57,-10),(274,59,-750),(274,60,-750),(274,61,-10),(274,62,-10),(274,178,-1000),(274,180,-5),(274,661,-10),(274,1106,-10),(275,5,-200),(275,11,-200),(275,12,50),(275,13,50),(275,14,50),(275,51,-10),(275,52,-75),(275,55,50),(275,56,-1000),(275,57,-10),(275,58,-75),(275,59,-750),(275,60,-750),(275,61,-10),(275,62,-25),(275,178,-1000),(275,180,-75),(275,201,-200),(275,203,-200),(275,204,25),(275,206,-400),(275,207,25),(275,208,25),(275,213,50),(275,214,75),(275,661,-10),(275,1106,-10),(276,3,20),(276,4,30),(276,5,-200),(276,6,30),(276,9,-10),(276,11,-200),(276,51,-50),(276,52,-75),(276,53,-20),(276,54,100),(276,55,80),(276,56,-750),(276,58,-75),(276,59,-750),(276,60,-750),(276,61,-25),(276,62,-50),(276,178,-750),(276,180,-75),(276,201,-100),(276,203,-100),(276,204,10),(276,206,-100),(276,208,10),(276,210,20),(276,212,25),(276,215,50),(276,216,-50),(276,661,-50),(276,1106,-50),(277,4,50),(277,5,-200),(277,6,50),(277,11,-200),(277,51,-450),(277,52,-450),(277,53,-600),(277,54,-300),(277,55,-300),(277,56,-500),(277,57,-300),(277,58,-450),(277,59,-850),(277,60,-500),(277,61,-300),(277,62,-500),(277,178,-1000),(277,180,-450),(277,201,-200),(277,203,-200),(277,205,50),(277,206,-200),(277,209,-200),(277,213,-200),(277,215,50),(277,661,-450),(277,1106,-450),(278,3,-200),(278,4,-200),(278,51,-500),(278,52,-500),(278,54,-750),(278,55,-750),(278,57,-500),(278,59,-1),(278,60,-1),(278,61,-500),(278,62,-500),(278,178,-750),(278,180,-500),(278,661,-500),(278,1106,-500),(279,5,-200),(279,11,-200),(279,51,-1),(279,52,-1),(279,56,-1000),(279,57,-1),(279,59,-750),(279,60,-750),(279,61,-1),(279,62,-1),(279,178,-1000),(279,180,-1),(279,661,-1),(279,1106,-1),(280,3,50),(280,5,-200),(280,9,-50),(280,11,-200),(280,51,50),(280,56,-300),(280,57,50),(280,59,-1000),(280,60,-700),(280,178,-1000),(280,201,-200),(280,203,-200),(280,206,-200),(280,207,100),(280,212,25),(280,215,10),(280,216,-25),(280,661,50),(280,1106,50),(281,3,50),(281,4,25),(281,5,-200),(281,6,25),(281,7,10),(281,9,-100),(281,11,-200),(281,52,-10),(281,56,-350),(281,58,-10),(281,59,-750),(281,60,-750),(281,178,-1000),(281,180,-10),(281,201,-200),(281,203,-200),(281,204,50),(281,206,-200),(281,207,10),(281,208,100),(281,212,25),(281,214,50),(281,216,-100),(282,51,-1000),(282,52,-1000),(282,53,-1000),(282,54,-1000),(282,55,-1000),(282,56,-1000),(282,57,-1000),(282,58,-1000),(282,59,-1000),(282,60,-1000),(282,61,-1000),(282,62,-1000),(282,178,-1000),(282,180,-1000),(282,661,-1000),(282,1106,-1000),(283,51,-1000),(283,52,-1000),(283,53,-1000),(283,54,-1000),(283,55,-1000),(283,56,-1000),(283,57,-1000),(283,58,-1000),(283,59,-1000),(283,60,-1000),(283,61,-1000),(283,62,-1000),(283,178,-1000),(283,180,-1000),(283,661,-1000),(283,1106,-1000),(284,5,-25),(284,8,100),(284,9,25),(284,11,-25),(284,51,50),(284,52,-25),(284,54,25),(284,56,-50),(284,57,50),(284,58,-25),(284,59,-600),(284,60,-550),(284,178,-600),(284,180,-25),(284,201,-200),(284,203,-200),(284,204,50),(284,205,50),(284,206,-200),(284,207,50),(284,209,50),(284,211,-25),(284,215,50),(284,216,-50),(284,661,50),(284,1106,50),(285,51,-2000),(285,52,-2000),(285,53,-2000),(285,54,-2000),(285,55,-2000),(285,56,-2000),(285,57,-2000),(285,58,-2000),(285,59,-2000),(285,60,-2000),(285,61,-2000),(285,62,-2000),(285,178,-1000),(285,180,-2000),(285,661,-2000),(285,1106,-2000),(286,61,375),(286,201,-100),(286,203,-100),(286,206,-200),(287,51,-1000),(287,52,-1000),(287,54,-1000),(287,55,-1000),(287,56,-1000),(287,57,-1000),(287,59,-1000),(287,60,-1000),(287,61,-1000),(287,62,-1000),(287,178,-1000),(287,180,-1000),(287,661,-1000),(287,1106,-1000),(288,5,-50),(288,9,-50),(288,11,-50),(288,51,-50),(288,52,-50),(288,53,-25),(288,54,-50),(288,55,-50),(288,56,-99),(288,57,-50),(288,58,-75),(288,59,-750),(288,60,-750),(288,61,-10),(288,62,50),(288,178,-750),(288,180,-50),(288,201,-25),(288,203,-25),(288,206,-25),(288,211,-25),(288,661,-50),(288,1106,-50),(289,3,10),(289,5,-200),(289,9,-50),(289,11,-200),(289,51,-50),(289,52,-75),(289,54,-60),(289,55,-25),(289,56,-99),(289,57,-60),(289,59,-750),(289,60,-500),(289,61,-60),(289,62,-60),(289,178,-750),(289,180,-75),(289,661,-50),(289,1106,-50),(290,3,10),(290,5,-200),(290,9,-50),(290,11,-200),(290,12,-10),(290,13,-10),(290,14,-10),(290,51,-50),(290,52,50),(290,53,-80),(290,54,-75),(290,55,-80),(290,56,-750),(290,57,-75),(290,58,100),(290,59,-800),(290,60,-900),(290,61,-20),(290,62,-15),(290,178,-800),(290,180,50),(290,201,-300),(290,202,75),(290,203,-300),(290,206,-300),(290,209,-25),(290,211,-100),(290,213,-50),(290,214,50),(290,216,-50),(290,661,-50),(290,1106,-50),(291,3,50),(291,5,-25),(291,9,-25),(291,11,-25),(291,51,50),(291,52,-25),(291,53,-25),(291,54,-50),(291,55,-50),(291,56,-250),(291,57,50),(291,58,-50),(291,59,-750),(291,60,-500),(291,61,-10),(291,62,-10),(291,178,-750),(291,180,-25),(291,201,-50),(291,203,-50),(291,206,-50),(291,207,50),(291,212,50),(291,216,-50),(291,661,50),(291,1106,50),(292,5,-200),(292,9,-10),(292,11,-200),(292,51,-25),(292,52,-30),(292,53,-40),(292,54,-10),(292,55,-20),(292,56,-450),(292,58,-30),(292,59,-900),(292,60,-900),(292,61,100),(292,62,-5),(292,178,-900),(292,180,-30),(292,661,-25),(292,1106,-25),(293,5,-200),(293,9,-10),(293,11,-200),(293,51,-1),(293,54,-50),(293,55,-50),(293,56,-500),(293,57,-50),(293,59,-750),(293,60,-750),(293,61,-5),(293,62,-1),(293,178,-750),(293,661,-1),(293,1106,-1),(295,51,-1000),(295,52,-1000),(295,53,-1000),(295,54,-1000),(295,55,-1000),(295,56,-1000),(295,57,-1000),(295,58,-1000),(295,59,-1000),(295,60,-1000),(295,61,-1000),(295,62,-1000),(295,178,-1000),(295,180,-1000),(295,661,-1000),(295,1106,-1000),(296,3,-200),(296,5,50),(296,11,50),(296,12,50),(296,13,50),(296,14,50),(296,54,-500),(296,55,-500),(296,56,50),(296,58,-500),(296,61,-500),(296,178,-500),(296,201,25),(296,202,-150),(296,203,25),(296,204,-150),(296,205,-150),(296,206,100),(296,207,-150),(296,208,-150),(296,209,-150),(296,210,-150),(296,211,-150),(296,212,-150),(296,213,-150),(296,214,-150),(296,215,-450),(297,5,-200),(297,11,-200),(297,51,-1),(297,54,-1),(297,55,-1),(297,56,-750),(297,57,-1),(297,59,-750),(297,60,-750),(297,178,-1000),(297,201,-200),(297,202,1000),(297,203,-200),(297,206,-200),(297,661,-1),(297,1106,-1),(298,3,50),(298,5,-200),(298,9,-50),(298,11,-200),(298,53,50),(298,56,-750),(298,59,-750),(298,60,-750),(298,178,-750),(298,210,100),(298,211,-500),(299,51,-1000),(299,52,-1000),(299,53,-1000),(299,54,-1000),(299,55,-1000),(299,56,-1000),(299,57,-1000),(299,58,-1000),(299,59,-1000),(299,60,-1000),(299,61,-1000),(299,62,-1000),(299,178,-1000),(299,180,-1000),(299,201,-1000),(299,202,-1000),(299,203,-1000),(299,204,-1000),(299,205,-1000),(299,206,-1000),(299,207,-1000),(299,208,-1000),(299,209,-1000),(299,210,-1000),(299,211,-1000),(299,212,-1000),(299,213,-1000),(299,214,-1000),(299,215,-1000),(299,216,-1000),(299,661,-1000),(299,1106,-1000),(300,5,-200),(300,11,-200),(300,53,-25),(300,54,25),(300,56,-675),(300,58,-25),(300,59,-800),(300,60,-800),(300,61,50),(300,62,10),(300,178,-800),(300,201,-600),(300,203,-600),(300,205,100),(300,206,-600),(300,207,50),(300,208,-100),(300,209,25),(300,210,25),(300,214,-100),(300,215,25),(302,4,50),(302,5,-200),(302,6,25),(302,9,-50),(302,11,-200),(302,51,50),(302,52,-50),(302,53,-150),(302,55,-100),(302,56,-400),(302,57,50),(302,58,-125),(302,59,-850),(302,60,-750),(302,61,-50),(302,62,-100),(302,178,-850),(302,180,-50),(302,201,-450),(302,202,-25),(302,203,-300),(302,205,-25),(302,206,-300),(302,207,100),(302,209,25),(302,211,-25),(302,213,-50),(302,215,100),(302,216,-200),(302,661,50),(302,1106,50),(304,51,-75),(304,52,-75),(304,53,-50),(304,54,-75),(304,55,-25),(304,56,-25),(304,57,-75),(304,58,-75),(304,59,-75),(304,60,-75),(304,61,-75),(304,62,-75),(304,178,-75),(304,180,-75),(304,202,-25),(304,205,-10),(304,214,-10),(304,216,25),(304,661,-75),(304,1106,-75),(305,2,-1),(305,3,-1),(305,4,-1),(305,5,-200),(305,6,-1),(305,7,-1),(305,8,-1),(305,9,50),(305,10,-1),(305,11,-200),(305,12,-1),(305,13,-1),(305,14,-1),(305,15,-1),(305,16,-1),(305,51,-99),(305,52,50),(305,54,-99),(305,55,-99),(305,56,-750),(305,57,-99),(305,59,-750),(305,60,-750),(305,61,-99),(305,62,-99),(305,178,-750),(305,180,50),(305,201,-350),(305,203,-750),(305,205,50),(305,206,-350),(305,207,25),(305,209,25),(305,211,25),(305,214,50),(305,661,-99),(305,1106,-99),(306,51,-1000),(306,52,-1000),(306,53,-1000),(306,54,-1000),(306,55,-1000),(306,56,-1000),(306,57,-1000),(306,58,-1000),(306,59,-1000),(306,60,-1000),(306,61,-1000),(306,62,-1000),(306,178,-1000),(306,180,-1000),(306,661,-1000),(306,1106,-1000),(307,51,-1000),(307,52,-1000),(307,53,-1000),(307,54,-1000),(307,55,-1000),(307,56,-1000),(307,57,-1000),(307,58,-1000),(307,59,-1000),(307,60,-1000),(307,61,-1000),(307,62,-1000),(307,178,-1000),(307,180,-1000),(307,661,-1000),(307,1106,-1000),(308,1,-200),(308,2,-200),(308,3,-1000),(308,4,-200),(308,5,50),(308,6,-200),(308,7,-200),(308,8,-200),(308,9,-100),(308,11,-50),(308,12,-200),(308,13,-200),(308,14,-200),(308,16,-200),(308,51,-750),(308,52,-750),(308,53,-750),(308,54,-750),(308,55,-750),(308,56,-200),(308,57,-750),(308,58,-750),(308,59,50),(308,60,-250),(308,61,-750),(308,62,-750),(308,178,-750),(308,180,-750),(308,202,-200),(308,203,50),(308,204,-200),(308,205,-200),(308,206,50),(308,207,-200),(308,208,-200),(308,209,-200),(308,210,-200),(308,211,-50),(308,212,-200),(308,213,-200),(308,214,-200),(308,215,-200),(308,216,-200),(308,661,-750),(308,1106,-750),(309,1,-25),(309,2,-25),(309,3,-25),(309,4,-25),(309,5,-200),(309,6,-25),(309,7,50),(309,8,-25),(309,9,-50),(309,10,-25),(309,11,-200),(309,12,-25),(309,13,-25),(309,14,-25),(309,15,-25),(309,16,-25),(309,51,50),(309,56,-50),(309,57,50),(309,59,-700),(309,60,-650),(309,178,-1000),(309,201,-200),(309,203,-200),(309,206,-200),(309,210,50),(309,211,-25),(309,214,25),(309,216,-25),(309,661,50),(309,1106,50),(310,5,-200),(310,6,50),(310,11,-200),(310,51,-25),(310,52,-25),(310,53,-25),(310,54,50),(310,55,25),(310,56,-1000),(310,57,50),(310,58,-25),(310,59,-800),(310,60,-600),(310,178,-1000),(310,180,-25),(310,201,-200),(310,203,-200),(310,206,-400),(310,207,10),(310,209,10),(310,215,100),(310,661,-25),(310,1106,-25),(311,1,50),(311,5,-200),(311,11,-200),(311,51,50),(311,53,-50),(311,54,-50),(311,55,-50),(311,56,-200),(311,57,50),(311,58,-25),(311,59,-300),(311,60,-200),(311,61,-50),(311,62,-50),(311,178,-400),(311,201,-50),(311,203,-200),(311,206,-50),(311,211,50),(311,661,50),(311,1106,50),(312,1,50),(312,5,-200),(312,9,-25),(312,11,-200),(312,12,-25),(312,13,-25),(312,14,-25),(312,16,50),(312,51,-75),(312,52,50),(312,53,-150),(312,54,-100),(312,55,-150),(312,56,-750),(312,57,-80),(312,58,50),(312,59,-900),(312,60,-1000),(312,61,-25),(312,62,-15),(312,178,-750),(312,180,50),(312,201,-500),(312,202,50),(312,203,-500),(312,206,-500),(312,210,-10),(312,211,-500),(312,215,-50),(312,216,-100),(312,661,-75),(312,1106,-75),(313,3,-1000),(313,4,-1000),(313,5,-1000),(313,10,-1000),(313,11,-1000),(313,12,-1000),(313,13,-1000),(313,14,-1000),(313,15,-1000),(313,51,-1000),(313,52,-1000),(313,53,-1000),(313,54,-1000),(313,55,-1000),(313,56,-1000),(313,57,-1000),(313,58,-1000),(313,59,-1000),(313,60,-1000),(313,61,-1000),(313,62,-1000),(313,178,-1000),(313,180,-1000),(313,209,50),(313,661,-1000),(313,1106,-1000),(315,51,-1000),(315,52,-1000),(315,53,-1000),(315,54,-1000),(315,55,-1000),(315,56,-1000),(315,57,-1000),(315,58,-1000),(315,59,-1000),(315,60,-1000),(315,61,-1000),(315,62,-1000),(315,178,-1000),(315,180,-1000),(315,216,-20),(315,661,-1000),(315,1106,-1000),(316,5,-200),(316,9,50),(316,11,-200),(316,51,-1),(316,52,-1),(316,54,100),(316,55,50),(316,56,-750),(316,57,50),(316,59,-750),(316,60,-750),(316,62,-1),(316,178,-750),(316,180,-1),(316,201,-200),(316,203,-200),(316,205,50),(316,206,-800),(316,207,50),(316,209,100),(316,215,100),(316,661,-1),(316,1106,-1),(317,3,-200),(317,51,-1000),(317,52,-1000),(317,53,-1000),(317,54,-1000),(317,55,-1000),(317,56,-1000),(317,57,-1000),(317,58,-1000),(317,59,-1000),(317,60,-1000),(317,61,-1000),(317,62,-1000),(317,178,-1000),(317,180,-1000),(317,661,-1000),(317,1106,-1000),(318,51,-75),(318,52,-1000),(318,53,-75),(318,54,-1000),(318,55,-1000),(318,56,-75),(318,57,-1000),(318,58,-1000),(318,59,-75),(318,60,-75),(318,61,-1000),(318,62,-75),(318,178,-1000),(318,180,-1000),(318,202,-1000),(318,204,-1000),(318,205,-5),(318,207,-1000),(318,208,-1000),(318,209,-1000),(318,210,-1000),(318,212,-1000),(318,213,-5),(318,214,-1000),(318,215,-1000),(318,216,-1000),(318,661,-75),(318,1106,-75),(319,51,-1000),(319,52,-1000),(319,53,-1000),(319,54,-1000),(319,55,-1000),(319,56,-1000),(319,57,-1000),(319,58,-1000),(319,59,-1000),(319,60,-1000),(319,61,-1000),(319,62,-1000),(319,178,-1000),(319,180,-1000),(319,661,-1000),(319,1106,-1000),(320,1,50),(320,5,-200),(320,8,25),(320,9,-10),(320,11,-400),(320,12,-50),(320,13,-50),(320,14,-50),(320,16,50),(320,51,-50),(320,52,50),(320,53,-100),(320,54,-100),(320,55,-150),(320,56,-750),(320,57,-75),(320,58,25),(320,59,-900),(320,60,-600),(320,61,-25),(320,62,-25),(320,178,-1000),(320,180,50),(320,201,-500),(320,203,-500),(320,204,25),(320,206,-500),(320,208,25),(320,211,50),(320,213,-25),(320,214,75),(320,661,-50),(320,1106,-50),(321,4,-200),(321,6,-200),(321,51,-875),(321,52,-875),(321,53,-875),(321,54,-875),(321,55,-875),(321,56,-875),(321,57,-875),(321,58,-875),(321,59,-625),(321,60,-625),(321,61,-875),(321,62,-875),(321,178,-875),(321,180,-875),(321,661,-875),(321,1106,-875),(322,2,-10),(322,3,-10),(322,4,-10),(322,5,-200),(322,6,-10),(322,7,-10),(322,8,-10),(322,9,50),(322,10,-10),(322,11,-200),(322,12,-10),(322,13,-10),(322,14,-10),(322,15,-10),(322,16,-10),(322,54,-50),(322,55,-50),(322,56,-550),(322,57,-50),(322,58,50),(322,59,-750),(322,60,-750),(322,178,-750),(322,201,-300),(322,202,50),(322,203,-300),(322,205,50),(322,206,-300),(322,211,-200),(322,214,-50),(323,1,50),(323,5,-600),(323,9,-25),(323,11,-200),(323,16,50),(323,51,-75),(323,52,-75),(323,53,-80),(323,54,-50),(323,55,-80),(323,56,-750),(323,57,-25),(323,58,-25),(323,59,-750),(323,60,-750),(323,61,-25),(323,62,50),(323,178,-1000),(323,180,-75),(323,201,-200),(323,202,50),(323,203,-200),(323,206,-200),(323,215,25),(323,216,-200),(323,661,-75),(323,1106,-75),(324,6,375),(324,11,-200),(324,52,-200),(324,53,-200),(324,55,-200),(324,56,-200),(324,58,-200),(324,59,-200),(324,60,-200),(324,62,-200),(324,178,-250),(324,180,-200),(324,201,-200),(324,203,-200),(324,206,-200),(324,207,100),(324,209,100),(324,211,-100),(324,213,-100),(324,215,500),(325,5,-200),(325,9,-50),(325,11,-200),(325,51,-30),(325,52,-30),(325,54,-5),(325,56,-750),(325,57,-20),(325,59,-750),(325,60,-750),(325,61,-10),(325,62,-10),(325,178,-750),(325,180,-30),(325,661,-30),(325,1106,-30),(326,1,50),(326,5,-200),(326,11,-200),(326,51,-50),(326,52,-50),(326,53,-50),(326,54,50),(326,55,50),(326,56,-750),(326,57,50),(326,58,-50),(326,59,-750),(326,60,-750),(326,61,-10),(326,62,-25),(326,178,-1000),(326,180,-50),(326,201,-200),(326,202,-50),(326,203,-200),(326,205,-25),(326,206,-200),(326,213,-50),(326,215,50),(326,216,-50),(326,661,-50),(326,1106,-50),(327,5,-200),(327,9,-200),(327,10,50),(327,11,-200),(327,15,50),(327,51,-25),(327,52,50),(327,53,-100),(327,54,-100),(327,55,-100),(327,56,-750),(327,57,-25),(327,59,-900),(327,60,-750),(327,61,-25),(327,62,-25),(327,178,-1000),(327,180,50),(327,201,-200),(327,203,-200),(327,205,-100),(327,206,-200),(327,214,100),(327,661,-25),(327,1106,-25),(328,5,-200),(328,9,-10),(328,11,-200),(328,51,-50),(328,54,-99),(328,55,-99),(328,56,-750),(328,57,-99),(328,59,-750),(328,60,-750),(328,61,-20),(328,62,-30),(328,178,-750),(328,661,-50),(328,1106,-50),(329,56,-200),(329,59,-375),(329,60,-375),(329,178,-475),(329,201,-100),(329,203,-100),(329,206,-100),(329,216,-200),(330,3,-50),(330,4,-25),(330,9,25),(330,52,-25),(330,53,-25),(330,54,-25),(330,55,-50),(330,56,-150),(330,58,-25),(330,59,-600),(330,60,-550),(330,61,-25),(330,62,-25),(330,178,-600),(330,180,-25),(330,201,-25),(330,203,-50),(330,204,-100),(330,205,25),(330,206,-25),(330,208,-100),(330,211,25),(330,212,-25),(330,214,-100),(330,215,-25),(331,9,-180),(332,3,-50),(332,4,-25),(332,5,-200),(332,9,50),(332,11,-300),(332,12,-50),(332,13,-50),(332,14,-50),(332,52,-50),(332,53,-50),(332,54,-200),(332,55,-200),(332,56,-300),(332,57,-75),(332,58,-150),(332,59,-750),(332,60,-500),(332,61,-25),(332,62,-100),(332,178,-750),(332,180,-50),(332,201,-200),(332,202,-50),(332,203,-300),(332,206,-300),(332,208,-50),(332,209,-50),(332,210,-50),(332,211,-75),(332,212,-30),(332,213,-50),(332,214,-200),(332,215,-10),(332,216,-300),(333,5,-200),(333,11,-200),(333,51,-10),(333,52,-10),(333,53,-10),(333,54,-10),(333,55,-10),(333,56,-750),(333,57,-10),(333,58,-10),(333,59,-750),(333,60,-750),(333,61,-10),(333,62,50),(333,178,-750),(333,180,-10),(333,201,-200),(333,204,-100),(333,206,-200),(333,661,-10),(333,1106,-10),(334,3,-750),(334,4,-750),(334,5,50),(334,6,-750),(334,7,-100),(334,8,-50),(334,10,-50),(334,11,50),(334,15,-50),(334,51,-500),(334,52,-750),(334,53,-400),(334,54,-750),(334,55,-750),(334,56,50),(334,57,-750),(334,58,-750),(334,59,-200),(334,60,-200),(334,61,-750),(334,62,-500),(334,178,-750),(334,180,-750),(334,201,-25),(334,202,-500),(334,203,-25),(334,204,-500),(334,205,-500),(334,206,50),(334,207,-500),(334,208,-500),(334,209,-500),(334,210,-500),(334,211,-50),(334,212,-500),(334,213,-25),(334,214,-500),(334,215,-500),(334,216,-25),(334,661,-500),(334,1106,-500),(336,3,-50),(336,4,-25),(336,9,50),(336,51,50),(336,53,-50),(336,55,-50),(336,56,-75),(336,57,50),(336,58,-50),(336,59,-300),(336,60,-200),(336,61,-50),(336,62,-50),(336,178,-400),(336,201,-25),(336,203,-50),(336,204,-5),(336,205,50),(336,206,25),(336,208,-10),(336,214,-25),(336,661,50),(336,1106,50),(337,3,-200),(337,4,-200),(337,9,-50),(337,12,-200),(337,13,-200),(337,14,-200),(337,51,-875),(337,52,-875),(337,53,-875),(337,54,-875),(337,55,-875),(337,57,-875),(337,58,-875),(337,60,875),(337,61,-875),(337,62,-875),(337,178,-875),(337,180,-875),(337,661,-875),(337,1106,-875),(338,3,-200),(338,4,-200),(338,9,-50),(338,12,-200),(338,13,-200),(338,14,-200),(338,51,-750),(338,52,-750),(338,54,-750),(338,55,-750),(338,56,-50),(338,57,-750),(338,59,-50),(338,60,1000),(338,61,-750),(338,62,-750),(338,178,-1000),(338,180,-750),(338,661,-750),(338,1106,-750),(340,3,-200),(340,4,-200),(340,5,50),(340,6,-200),(340,11,25),(340,51,-250),(340,52,-500),(340,53,-200),(340,54,-600),(340,55,-800),(340,56,50),(340,57,-50),(340,58,-500),(340,59,-200),(340,60,-250),(340,61,-600),(340,62,-250),(340,178,-600),(340,180,-500),(340,201,-200),(340,202,-200),(340,203,-100),(340,204,-600),(340,205,-200),(340,206,100),(340,207,-200),(340,208,-200),(340,209,-200),(340,210,-200),(340,211,-200),(340,212,-200),(340,213,-200),(340,214,-200),(340,215,-600),(340,216,-200),(340,661,-250),(340,1106,-250),(341,5,-200),(341,11,-200),(341,52,-25),(341,53,-25),(341,54,-25),(341,55,-25),(341,56,-200),(341,58,-25),(341,59,-850),(341,60,-750),(341,61,-25),(341,62,-25),(341,178,-850),(341,180,-25),(341,201,-200),(341,202,-50),(341,203,-200),(341,204,-25),(341,205,-50),(341,206,-200),(341,208,-25),(341,209,-25),(341,211,-200),(341,212,100),(341,213,-100),(341,214,-25),(341,216,-100),(342,5,-200),(342,11,-200),(342,12,50),(342,13,50),(342,14,50),(342,51,50),(342,52,-200),(342,53,-25),(342,54,-200),(342,56,-400),(342,57,50),(342,58,-200),(342,59,-850),(342,60,-750),(342,61,-50),(342,62,-50),(342,178,-850),(342,180,-200),(342,201,-200),(342,202,-100),(342,203,-300),(342,205,-100),(342,206,-200),(342,207,50),(342,209,-100),(342,210,-100),(342,211,-200),(342,212,50),(342,213,50),(342,214,-25),(342,216,-300),(342,661,50),(342,1106,50),(343,4,750),(343,6,750),(343,51,-600),(343,52,-600),(343,53,-600),(343,54,-600),(343,55,-600),(343,56,-600),(343,57,-600),(343,58,-600),(343,59,-600),(343,60,-600),(343,61,-600),(343,62,-600),(343,178,-600),(343,180,-600),(343,215,750),(343,661,-600),(343,1106,-600),(345,5,-400),(345,9,-25),(345,11,-400),(345,12,-50),(345,13,-50),(345,14,-50),(345,52,-25),(345,53,-70),(345,54,-50),(345,55,-50),(345,56,-500),(345,57,-10),(345,58,-60),(345,59,-750),(345,60,-750),(345,61,-10),(345,62,-50),(345,178,-750),(345,180,-25),(345,201,-750),(345,202,-5),(345,203,-500),(345,205,-20),(345,206,-500),(345,209,-3),(345,211,-50),(345,213,-20),(345,215,-5),(345,216,-80),(346,5,-300),(346,9,-50),(346,11,-300),(346,51,50),(346,56,-300),(346,59,-750),(346,60,-750),(346,178,-750),(346,201,-300),(346,203,-300),(346,204,50),(346,206,-200),(346,207,100),(346,208,75),(346,212,75),(346,214,50),(346,661,50),(346,1106,50),(355,3,50),(355,4,50),(355,5,-200),(355,6,50),(355,9,-25),(355,11,-200),(355,53,-10),(355,54,25),(355,56,-200),(355,57,25),(355,59,-800),(355,60,-700),(355,61,50),(355,178,-750),(355,201,-200),(355,203,-200),(355,206,-200),(355,207,50),(355,209,25),(355,210,25),(355,212,25),(355,215,25),(355,216,-25),(361,5,-200),(361,7,100),(361,9,-100),(361,11,-200),(361,56,-1000),(361,59,-1000),(361,60,-1000),(361,178,-1000),(362,3,50),(362,5,-200),(362,11,-200),(362,51,50),(362,56,-200),(362,57,50),(362,59,-800),(362,60,-600),(362,178,-800),(362,201,-200),(362,203,-100),(362,204,100),(362,206,-200),(362,208,75),(362,211,-100),(362,661,50),(362,1106,50),(363,3,-350),(363,4,-350),(363,6,-350),(363,11,-50),(363,12,50),(363,13,50),(363,14,50),(363,51,-250),(363,52,-500),(363,53,-150),(363,54,-600),(363,55,-700),(363,56,50),(363,57,-25),(363,58,-500),(363,59,-250),(363,60,-300),(363,61,-550),(363,62,-150),(363,178,-350),(363,180,-500),(363,201,25),(363,202,-200),(363,203,25),(363,204,-200),(363,205,-200),(363,206,50),(363,207,-200),(363,208,-200),(363,209,-200),(363,210,-200),(363,211,-200),(363,212,-200),(363,213,50),(363,214,-150),(363,215,-600),(363,216,-150),(363,661,-250),(363,1106,-250),(364,3,-100),(364,51,-1000),(364,52,-1000),(364,53,-1000),(364,54,-1000),(364,55,-1000),(364,56,-1000),(364,57,-1000),(364,58,-1000),(364,59,-1000),(364,60,-1000),(364,61,-1000),(364,62,-1000),(364,178,-1000),(364,180,-1000),(364,201,-1000),(364,202,-1000),(364,203,-1000),(364,204,-1000),(364,205,-1000),(364,206,-1000),(364,207,-1000),(364,208,-1000),(364,209,-1000),(364,210,-1000),(364,211,50),(364,212,-1000),(364,213,-1000),(364,214,-1000),(364,215,-1000),(364,216,-1000),(364,661,-1000),(364,1106,-1000),(366,1,-550),(366,2,-550),(366,3,-600),(366,4,-550),(366,5,-600),(366,6,-600),(366,7,-550),(366,8,-550),(366,9,-400),(366,10,-550),(366,11,-550),(366,12,-550),(366,13,-550),(366,14,-550),(366,15,-550),(366,16,-550),(366,52,-200),(366,53,-200),(366,54,-300),(366,55,-300),(366,56,-200),(366,58,-200),(366,59,-750),(366,60,-550),(366,62,-300),(366,178,-750),(366,180,-200),(366,201,-750),(366,202,-200),(366,203,-750),(366,204,-750),(366,206,-750),(366,208,-750),(366,209,-750),(366,210,-750),(366,211,-750),(366,212,-200),(366,213,-750),(366,214,-1000),(366,215,-200),(366,216,-750),(370,3,-750),(370,4,-750),(370,5,50),(370,6,-750),(370,7,-300),(370,9,25),(370,11,50),(370,51,-200),(370,52,-875),(370,53,-200),(370,54,-875),(370,55,-875),(370,56,50),(370,57,-875),(370,58,-875),(370,59,-400),(370,60,-450),(370,61,-875),(370,62,-200),(370,178,-875),(370,180,-875),(370,201,-25),(370,202,-750),(370,203,-25),(370,204,-750),(370,205,-75),(370,206,50),(370,207,-750),(370,208,-750),(370,209,-750),(370,210,-750),(370,211,-50),(370,212,-750),(370,213,-75),(370,214,-750),(370,215,-750),(370,216,-150),(370,661,-200),(370,1106,-200),(371,51,-875),(371,52,-875),(371,53,-875),(371,54,-875),(371,55,-875),(371,56,1000),(371,57,-875),(371,58,-875),(371,59,1000),(371,60,1000),(371,61,-875),(371,62,-875),(371,178,-875),(371,180,-875),(371,661,-875),(371,1106,-875),(372,51,-875),(372,52,-875),(372,53,-875),(372,54,-875),(372,55,-875),(372,56,-875),(372,57,-875),(372,58,-875),(372,59,-875),(372,60,-875),(372,61,-875),(372,62,-875),(372,178,-875),(372,180,-875),(372,661,-875),(372,1106,-875),(373,51,-750),(373,52,-750),(373,53,-750),(373,54,-750),(373,55,-750),(373,56,-750),(373,57,-750),(373,58,-750),(373,59,-750),(373,60,-750),(373,61,-750),(373,62,-750),(373,178,-750),(373,180,-750),(373,661,-750),(373,1106,-750),(375,51,-1000),(375,52,-1000),(375,53,-1000),(375,54,-1000),(375,55,-1000),(375,56,-1000),(375,57,-1000),(375,58,-1000),(375,59,-1000),(375,60,-1000),(375,61,-1000),(375,62,-1000),(375,178,-1000),(375,180,-1000),(375,661,-1000),(375,1106,-1000),(376,59,1000),(377,5,-200),(377,51,-875),(377,52,-875),(377,53,-875),(377,54,-875),(377,55,-875),(377,56,-250),(377,57,-875),(377,58,-875),(377,59,50),(377,60,-200),(377,61,-875),(377,62,-875),(377,178,-875),(377,180,-875),(377,661,-875),(377,1106,-875),(378,5,-500),(378,11,-500),(378,51,-1600),(378,52,-1700),(378,53,-1700),(378,54,-700),(378,55,-1200),(378,56,-1500),(378,57,-1000),(378,58,-1300),(378,59,-2000),(378,60,-2000),(378,61,-525),(378,62,-1000),(378,178,-2000),(378,180,-1700),(378,661,-1600),(378,1106,-1600),(379,9,50),(379,51,-550),(379,52,-550),(379,53,-550),(379,54,-700),(379,55,-700),(379,56,-550),(379,57,-550),(379,58,-500),(379,59,-700),(379,60,-800),(379,61,-550),(379,62,-550),(379,178,-800),(379,180,-550),(379,201,-100),(379,202,25),(379,203,-50),(379,205,25),(379,206,-200),(379,214,-50),(379,661,-550),(379,1106,-550),(382,5,-1000),(382,11,-1000),(382,51,-50),(382,52,-50),(382,53,-1000),(382,55,-25),(382,56,-1000),(382,57,-50),(382,58,-50),(382,59,-1000),(382,60,-1000),(382,61,-50),(382,62,-50),(382,178,-1000),(382,180,-50),(382,201,-1000),(382,203,-1000),(382,206,-1000),(382,215,25),(382,661,-50),(382,1106,-50),(387,51,-1000),(387,52,-1000),(387,53,-1000),(387,54,-1000),(387,55,-1000),(387,56,-1000),(387,57,-1000),(387,58,-1000),(387,59,-1000),(387,60,-1000),(387,61,-1000),(387,62,-1000),(387,178,-1000),(387,180,-1000),(387,661,-1000),(387,1106,-1000),(388,56,-750),(388,59,-1000),(388,60,-850),(388,178,-1000),(390,51,-100),(390,52,-100),(390,53,-100),(390,54,-100),(390,55,-100),(390,56,-100),(390,57,-100),(390,58,-100),(390,59,-100),(390,60,-100),(390,61,-100),(390,62,-100),(390,178,-100),(390,180,-100),(390,661,-100),(390,1106,-100),(391,51,-100),(391,52,-100),(391,53,-100),(391,54,-100),(391,55,-100),(391,56,-100),(391,57,-100),(391,58,-100),(391,59,-100),(391,60,-100),(391,61,-100),(391,62,-100),(391,178,-100),(391,180,-100),(391,661,-100),(391,1106,-100),(394,1,25),(394,3,-750),(394,4,-750),(394,5,25),(394,6,-750),(394,10,50),(394,11,25),(394,15,50),(394,16,25),(394,51,-500),(394,52,-400),(394,53,-600),(394,54,-600),(394,55,-600),(394,56,-50),(394,57,-600),(394,58,-600),(394,59,-500),(394,60,50),(394,61,-600),(394,62,-400),(394,178,-600),(394,180,-400),(394,201,-50),(394,202,-600),(394,203,50),(394,204,-600),(394,205,-600),(394,206,-50),(394,207,-600),(394,208,-600),(394,209,-600),(394,210,-600),(394,211,100),(394,212,-600),(394,213,-600),(394,214,-600),(394,215,-600),(394,661,-500),(394,1106,-500),(398,51,-1000),(398,52,-1000),(398,53,-1000),(398,54,-1000),(398,55,-1000),(398,56,-1000),(398,57,-1000),(398,58,-1000),(398,59,-1000),(398,60,-1000),(398,61,-1000),(398,62,-1000),(398,178,-1000),(398,180,-1000),(398,661,-1000),(398,1106,-1000),(401,5,-300),(401,8,50),(401,11,-200),(401,51,-25),(401,52,-25),(401,54,50),(401,55,50),(401,56,-1000),(401,57,50),(401,58,-25),(401,59,-800),(401,60,-600),(401,178,-1000),(401,180,-25),(401,661,-25),(401,1106,-25),(404,1,-100),(404,2,-100),(404,3,-100),(404,4,-100),(404,5,-100),(404,6,-100),(404,7,-100),(404,8,-100),(404,9,-100),(404,11,-100),(404,12,-100),(404,13,-100),(404,14,-100),(404,16,-100),(405,51,-200),(405,52,-200),(405,53,-200),(405,54,-200),(405,55,-200),(405,56,-200),(405,57,-200),(405,58,-200),(405,59,-200),(405,60,-200),(405,61,-200),(405,62,-200),(405,178,-200),(405,180,-200),(405,661,-200),(405,1106,-200),(406,51,-100),(406,52,-100),(406,53,-100),(406,54,-100),(406,55,-100),(406,56,-100),(406,57,-100),(406,58,-50),(406,59,-100),(406,60,-100),(406,61,-100),(406,62,-100),(406,178,-100),(406,180,-100),(406,202,100),(406,661,-100),(406,1106,-100),(407,51,-800),(407,52,-800),(407,53,-800),(407,54,-800),(407,55,-800),(407,56,-800),(407,57,-800),(407,58,-800),(407,59,-800),(407,60,-800),(407,61,-800),(407,62,-800),(407,178,-800),(407,180,-800),(407,661,-800),(407,1106,-800),(409,51,-625),(409,52,-625),(409,53,-625),(409,54,-625),(409,55,-625),(409,56,-625),(409,57,-625),(409,58,-625),(409,59,-625),(409,60,-625),(409,61,-625),(409,62,-625),(409,178,-625),(409,180,-625),(409,661,-625),(409,1106,-625),(412,5,-200),(412,11,-200),(412,51,-475),(412,52,-475),(412,53,-475),(412,54,-475),(412,55,-475),(412,56,-475),(412,57,-475),(412,58,-475),(412,59,-1000),(412,60,-1000),(412,61,-475),(412,62,-475),(412,178,-1000),(412,180,-475),(412,201,-500),(412,203,-500),(412,206,-500),(412,211,-75),(412,215,25),(412,216,-100),(412,661,-475),(412,1106,-475),(415,12,50),(415,51,50),(415,213,50),(415,661,50),(415,1106,50),(416,12,-25),(416,51,-400),(416,52,-400),(416,53,-400),(416,54,-400),(416,55,-400),(416,56,-400),(416,57,-400),(416,58,-400),(416,59,-400),(416,60,-400),(416,61,-400),(416,62,-400),(416,178,-400),(416,180,-400),(416,213,-25),(416,661,-400),(416,1106,-400),(417,56,-750),(417,59,-750),(417,60,-750),(417,201,-750),(417,203,-750),(417,206,-750),(417,211,-750),(418,51,-750),(418,52,-750),(418,53,-750),(418,54,-750),(418,55,-750),(418,57,-750),(418,58,-750),(418,61,-750),(418,62,-750),(418,180,-750),(418,202,-750),(418,204,-750),(418,205,-750),(418,207,-750),(418,208,-750),(418,209,-750),(418,210,-750),(418,212,-750),(418,213,-750),(418,214,-750),(418,215,-750),(418,216,-750),(418,661,-750),(418,1106,-750),(419,51,-550),(419,52,-550),(419,53,-550),(419,54,-550),(419,55,-550),(419,56,-550),(419,57,-550),(419,58,-550),(419,59,-550),(419,60,-450),(419,61,-550),(419,62,-550),(419,178,-550),(419,180,-550),(419,211,100),(419,661,-550),(419,1106,-550),(420,51,-1000),(420,52,-1000),(420,53,-1000),(420,54,-1000),(420,55,-1000),(420,56,-1000),(420,57,-1000),(420,58,-1000),(420,59,-1000),(420,60,-1000),(420,61,-1000),(420,62,-1000),(420,178,-1000),(420,180,-1000),(420,201,-1000),(420,202,-1000),(420,203,-1000),(420,204,-1000),(420,205,-1000),(420,207,-1000),(420,208,-1000),(420,209,-1000),(420,210,-1000),(420,211,-1000),(420,212,-1000),(420,213,-1000),(420,214,-1000),(420,215,-1000),(420,216,-1000),(420,661,-1000),(420,1106,-1000),(421,3,-500),(421,4,-500),(421,5,50),(421,6,-500),(421,11,50),(421,51,-600),(421,52,-1000),(421,53,-600),(421,54,-1000),(421,55,-1000),(421,56,150),(421,57,-1000),(421,58,-1000),(421,59,-200),(421,60,-200),(421,61,-1000),(421,62,-600),(421,178,-1000),(421,180,-1000),(421,202,-1000),(421,204,-1000),(421,205,-1000),(421,206,150),(421,207,-1000),(421,208,-1000),(421,209,-1000),(421,210,-1000),(421,212,-1000),(421,213,-1000),(421,214,-1000),(421,215,-1000),(421,216,-1000),(421,661,-600),(421,1106,-600),(422,3,100),(422,4,100),(422,5,-1000),(422,6,100),(422,11,-1000),(422,56,-1000),(422,59,-1000),(422,60,-1000),(422,178,-1000),(422,201,-1000),(422,202,100),(422,203,-1000),(422,204,100),(422,206,-1000),(422,207,100),(422,211,-250),(422,212,100),(422,215,100),(423,51,-1000),(423,52,-1000),(423,53,-1000),(423,54,-1000),(423,55,-1000),(423,56,-1000),(423,57,-1000),(423,58,-1000),(423,59,-1000),(423,60,-1000),(423,61,-1000),(423,62,-1000),(423,178,-1000),(423,180,-1000),(423,661,-1000),(423,1106,-1000),(425,51,-1000),(425,52,-1000),(425,53,-1000),(425,54,-1000),(425,55,-1000),(425,56,-1100),(425,57,-1000),(425,58,-1000),(425,59,-1000),(425,60,-1000),(425,61,-1000),(425,62,-1000),(425,178,-1000),(425,180,-1000),(425,201,-1000),(425,202,-1000),(425,203,-1000),(425,204,-1000),(425,205,-1000),(425,206,-1100),(425,207,-1000),(425,208,-1000),(425,209,-1000),(425,210,-1000),(425,211,-1000),(425,212,-1000),(425,213,-1000),(425,214,-1000),(425,215,-1000),(425,216,-1000),(425,661,-1000),(425,1106,-1000),(426,51,-1000),(426,52,-1000),(426,53,-1000),(426,54,-1000),(426,55,-1000),(426,56,-1000),(426,57,-1000),(426,58,-1000),(426,59,-1000),(426,60,-1000),(426,61,-1000),(426,62,-1000),(426,178,-1000),(426,180,-1000),(426,661,-1000),(426,1106,-1000),(427,51,-400),(427,52,-400),(427,53,-400),(427,54,-400),(427,55,-400),(427,56,-400),(427,57,-400),(427,58,-400),(427,59,-400),(427,60,-400),(427,61,-400),(427,62,-400),(427,178,-400),(427,180,-400),(427,215,200),(427,661,-400),(427,1106,-400),(428,51,-600),(428,52,-600),(428,53,-1000),(428,54,-600),(428,55,-600),(428,56,-600),(428,57,-600),(428,58,-600),(428,59,-600),(428,60,-600),(428,61,-600),(428,62,-600),(428,178,-600),(428,180,-600),(428,202,200),(428,216,-1000),(428,661,-600),(428,1106,-600),(429,51,-800),(429,52,-800),(429,53,-800),(429,54,-800),(429,55,-800),(429,56,-800),(429,57,-800),(429,58,-800),(429,59,-800),(429,60,-800),(429,61,-800),(429,62,-800),(429,178,-800),(429,180,-800),(429,661,-800),(429,1106,-800),(430,51,-800),(430,52,-800),(430,53,-800),(430,54,-800),(430,55,-800),(430,56,-800),(430,57,-800),(430,58,-800),(430,59,-800),(430,60,-800),(430,61,-800),(430,62,-800),(430,178,-800),(430,180,-800),(430,216,200),(430,661,-800),(430,1106,-800),(431,51,-800),(431,52,-800),(431,53,-800),(431,54,-800),(431,55,-800),(431,56,-800),(431,57,-800),(431,58,-800),(431,59,-800),(431,60,-800),(431,61,-800),(431,62,-800),(431,178,-800),(431,180,-800),(431,661,-800),(431,1106,-800),(434,51,-1000),(434,52,-1000),(434,53,-1000),(434,54,-1000),(434,55,-1000),(434,56,-1000),(434,57,-1000),(434,58,-1000),(434,59,-1000),(434,60,-1000),(434,61,-1000),(434,62,-1000),(434,178,-1000),(434,180,-1000),(434,661,-1000),(434,1106,-1000),(435,51,-1000),(435,52,-1000),(435,53,-1000),(435,54,-1000),(435,55,-1000),(435,56,-1000),(435,57,-1000),(435,58,-1000),(435,59,-1000),(435,60,-1000),(435,61,-1000),(435,62,-1000),(435,178,-1000),(435,180,-1000),(435,661,-1000),(435,1106,-1000),(436,51,-800),(436,52,-800),(436,53,-800),(436,54,-800),(436,55,-800),(436,56,-800),(436,57,-800),(436,58,-800),(436,59,-800),(436,60,-800),(436,61,-800),(436,62,-800),(436,178,-800),(436,180,-800),(436,216,200),(436,661,-800),(436,1106,-800),(437,205,100),(438,5,-1000),(438,11,-1000),(438,56,-1000),(438,59,-1000),(438,60,-1000),(438,178,-400),(438,201,-1000),(438,202,-100),(438,203,-1000),(438,204,-100),(438,205,-100),(438,206,-1000),(438,208,-100),(438,209,-100),(438,210,-100),(438,211,-1000),(438,212,-100),(438,213,-1000),(438,214,-100),(438,215,100),(438,216,-1000),(440,51,-1000),(440,52,-1000),(440,53,-1000),(440,54,-1000),(440,55,-1000),(440,56,-1000),(440,57,-1000),(440,58,-1000),(440,59,-1000),(440,60,-1000),(440,61,-1000),(440,62,-1000),(440,178,50),(440,180,-1000),(440,201,-1000),(440,202,-1000),(440,204,-1000),(440,205,-1000),(440,206,-1000),(440,207,-1000),(440,208,-1000),(440,209,-1000),(440,210,-1000),(440,211,-1000),(440,212,-1000),(440,213,-1000),(440,214,-1000),(440,215,-1000),(440,216,-1200),(440,661,-1000),(440,1106,-1000),(441,1,50),(441,51,-1000),(441,52,-1000),(441,53,-1000),(441,54,-1000),(441,55,-1000),(441,56,-1000),(441,57,-1000),(441,58,-1000),(441,59,-1000),(441,60,-1000),(441,61,-1000),(441,62,-1000),(441,178,50),(441,180,-1000),(441,201,-50),(441,202,-1000),(441,204,-1000),(441,205,-1000),(441,206,-50),(441,207,-1000),(441,208,-1000),(441,209,-1000),(441,210,-1000),(441,211,-1000),(441,212,-1000),(441,213,-1000),(441,214,-1000),(441,215,-1000),(441,216,-1500),(441,661,-1000),(441,1106,-1000),(442,5,25),(442,51,-1000),(442,52,-1000),(442,53,-1000),(442,54,-1000),(442,55,-1000),(442,56,-1000),(442,57,-1000),(442,58,-1000),(442,59,-1000),(442,60,-1000),(442,61,-1000),(442,62,-1000),(442,178,50),(442,180,-1000),(442,201,-250),(442,202,-1000),(442,203,25),(442,204,-1000),(442,205,-1000),(442,206,-250),(442,207,-1000),(442,208,-1000),(442,209,-1000),(442,210,-1000),(442,211,-1000),(442,212,-1000),(442,213,-1000),(442,214,-1000),(442,215,-1000),(442,216,-1200),(442,661,-1000),(442,1106,-1000),(443,3,-1000),(443,4,-1000),(443,6,-1000),(443,11,50),(443,51,-1000),(443,52,-1000),(443,53,-1000),(443,54,-1000),(443,55,-1000),(443,56,-1000),(443,57,-1000),(443,58,-1000),(443,59,-1000),(443,60,-1000),(443,61,-1000),(443,62,-1000),(443,178,50),(443,180,-1000),(443,202,-1000),(443,203,50),(443,204,-1000),(443,205,-1000),(443,207,-1000),(443,208,-1000),(443,209,-1000),(443,210,-1000),(443,211,-1000),(443,212,-1000),(443,213,-1000),(443,214,-1000),(443,215,-1000),(443,216,-1200),(443,661,-1000),(443,1106,-1000),(444,7,50),(444,51,-1000),(444,52,-1000),(444,53,-1000),(444,54,-1000),(444,55,-1000),(444,56,-1000),(444,57,-1000),(444,58,-1000),(444,59,-1000),(444,60,-1000),(444,61,-1000),(444,62,-1000),(444,178,50),(444,180,-1000),(444,202,-1000),(444,204,-1000),(444,205,-1000),(444,207,-1000),(444,208,-1000),(444,209,-1000),(444,210,-1000),(444,211,-1000),(444,212,-1000),(444,213,-1000),(444,214,-1000),(444,215,-1000),(444,216,-1200),(444,661,-1000),(444,1106,-1000),(445,3,-1000),(445,4,-1000),(445,6,-1000),(445,8,-1000),(445,10,50),(445,12,-1000),(445,13,-1000),(445,14,-1000),(445,15,50),(445,51,-1000),(445,52,-1000),(445,53,-1000),(445,54,-1000),(445,55,-1000),(445,56,-1000),(445,57,-1000),(445,58,-1000),(445,59,-1000),(445,60,-1000),(445,61,-1000),(445,62,-1000),(445,178,50),(445,180,-1000),(445,202,-1000),(445,203,50),(445,204,-1000),(445,205,-1000),(445,207,-1000),(445,208,-1000),(445,209,-1000),(445,210,-1000),(445,211,-1000),(445,212,-1000),(445,213,-1000),(445,214,-1000),(445,215,-1000),(445,216,-1500),(445,661,-1000),(445,1106,-1000),(446,51,-1000),(446,52,-1000),(446,53,-1000),(446,54,-1000),(446,55,-1000),(446,56,-1000),(446,57,-1000),(446,58,-1000),(446,59,-1000),(446,60,-1000),(446,61,-1000),(446,62,-1000),(446,178,-1000),(446,180,-1000),(446,201,-1000),(446,202,-1000),(446,203,-1000),(446,204,-1000),(446,205,-1000),(446,206,-1000),(446,207,-1000),(446,208,-1000),(446,209,-1000),(446,210,-1000),(446,211,-1000),(446,212,-1000),(446,213,-1000),(446,214,-1000),(446,215,-1000),(446,216,-1000),(446,661,-1000),(446,1106,-1000),(447,51,200),(447,52,200),(447,53,200),(447,54,200),(447,55,200),(447,56,200),(447,57,200),(447,58,200),(447,59,200),(447,60,200),(447,61,200),(447,62,500),(447,178,200),(447,180,200),(447,661,200),(447,1106,200),(448,51,-550),(448,52,-550),(448,53,-550),(448,54,-550),(448,55,-550),(448,56,-550),(448,57,-550),(448,58,-550),(448,59,-550),(448,60,-550),(448,61,-550),(448,62,-550),(448,178,-550),(448,180,-550),(448,211,100),(448,661,-550),(448,1106,-550),(449,5,-400),(449,11,-400),(449,56,-400),(449,59,-400),(449,60,-400),(449,178,-400),(449,201,-400),(449,203,-400),(449,206,-400),(450,51,-1000),(450,52,-1000),(450,53,-1000),(450,54,-1000),(450,55,-1000),(450,56,-1000),(450,57,-1000),(450,58,-1000),(450,59,-1000),(450,60,-1000),(450,61,-1000),(450,62,-1000),(450,178,-1000),(450,180,-1000),(450,661,-1000),(450,1106,-1000),(451,51,-800),(451,52,-800),(451,53,-800),(451,54,-800),(451,55,-800),(451,56,-800),(451,57,-800),(451,58,-800),(451,59,-800),(451,60,-800),(451,61,-800),(451,62,-800),(451,178,-800),(451,180,-800),(451,661,-800),(451,1106,-800),(452,6,150),(452,51,-600),(452,52,-1000),(452,53,-1000),(452,54,-600),(452,55,-600),(452,56,-1000),(452,57,-600),(452,58,-1000),(452,59,-1000),(452,60,-1000),(452,61,-600),(452,62,-1000),(452,178,-1000),(452,180,-1000),(452,215,150),(452,661,-600),(452,1106,-600),(454,51,-1000),(454,52,-1000),(454,53,-1000),(454,54,-1000),(454,55,-1000),(454,56,-1000),(454,57,-1000),(454,58,-1000),(454,59,-1000),(454,60,-1000),(454,61,-1000),(454,62,-1000),(454,178,-1000),(454,180,-1000),(454,201,-1000),(454,202,-1000),(454,203,-1000),(454,204,-1000),(454,205,-1000),(454,206,-1000),(454,207,-1000),(454,208,-1000),(454,209,-1000),(454,210,-1000),(454,211,-1000),(454,212,-1000),(454,213,-1000),(454,214,-1000),(454,215,-1000),(454,216,-1000),(454,661,-1000),(454,1106,-1000),(455,2,-1000),(455,3,-1000),(455,4,-1000),(455,5,-1000),(455,6,-1000),(455,8,-1000),(455,10,-1000),(455,11,-1000),(455,12,-1000),(455,13,-1000),(455,14,-1000),(455,15,-1000),(455,16,-1000),(455,51,-1000),(455,52,-1000),(455,53,-1000),(455,54,-1000),(455,55,-1000),(455,56,-1000),(455,57,-1000),(455,58,-1000),(455,59,-1000),(455,60,-1000),(455,61,-1000),(455,62,-1000),(455,178,-1000),(455,180,-1000),(455,201,-1000),(455,202,-1000),(455,203,-1000),(455,204,-1000),(455,205,-1000),(455,206,-1000),(455,207,-1000),(455,208,-1000),(455,209,-1000),(455,210,-1000),(455,211,-1000),(455,212,-1000),(455,213,-1000),(455,214,-1000),(455,215,-1000),(455,216,100),(455,661,-1000),(455,1106,-1000),(457,51,-800),(457,52,-800),(457,53,-800),(457,54,-800),(457,55,-800),(457,56,-800),(457,57,-800),(457,58,-800),(457,59,-800),(457,60,-800),(457,61,-800),(457,62,-800),(457,178,-800),(457,180,-800),(457,661,-800),(457,1106,-800),(459,205,200),(460,51,-200),(460,52,-200),(460,53,-200),(460,54,-200),(460,55,-200),(460,56,-200),(460,57,-200),(460,58,-150),(460,59,-200),(460,60,-200),(460,61,-200),(460,62,-200),(460,178,-200),(460,180,-200),(460,202,100),(460,661,-200),(460,1106,-200),(461,51,-1000),(461,52,-1000),(461,53,-1000),(461,54,-1000),(461,55,-1000),(461,56,-1000),(461,57,-1000),(461,58,-1000),(461,59,-1000),(461,60,-1000),(461,61,-1000),(461,62,-1000),(461,178,-1000),(461,180,-1000),(461,661,-1000),(461,1106,-1000),(462,51,-800),(462,52,-800),(462,53,-800),(462,54,-800),(462,55,-800),(462,56,-800),(462,57,-800),(462,58,-800),(462,59,-800),(462,60,-800),(462,61,-800),(462,62,-800),(462,178,-800),(462,180,-800),(462,661,-800),(462,1106,-800),(463,51,-200),(463,52,-200),(463,53,-200),(463,54,-200),(463,55,-200),(463,56,-200),(463,57,-200),(463,58,-200),(463,59,-200),(463,60,-200),(463,61,-200),(463,62,-200),(463,178,-200),(463,180,-200),(463,661,-200),(463,1106,-200),(467,51,-1000),(467,52,-1000),(467,53,-1000),(467,54,-1000),(467,55,-1000),(467,56,-1000),(467,57,-1000),(467,58,-1000),(467,59,-1000),(467,60,-1000),(467,61,-1000),(467,62,-1000),(467,178,-1000),(467,180,-1000),(467,661,-1000),(467,1106,-1000),(468,51,-1000),(468,52,-1000),(468,53,-1000),(468,54,-1000),(468,55,-1000),(468,56,-1000),(468,57,-1000),(468,58,-1000),(468,59,-1000),(468,60,-1000),(468,61,-1000),(468,62,-1000),(468,178,-1000),(468,180,-1000),(468,661,-1000),(468,1106,-1000),(469,5,-1000),(469,11,-1000),(469,56,-1000),(469,59,-1000),(469,60,-1000),(469,178,-400),(469,201,-1000),(469,202,-100),(469,203,-1000),(469,204,-100),(469,205,-100),(469,206,-1000),(469,208,-100),(469,209,-100),(469,210,-100),(469,211,-1000),(469,212,-100),(469,213,-1000),(469,214,-100),(469,215,100),(469,216,-1000),(471,51,-800),(471,52,-800),(471,53,-800),(471,54,-800),(471,55,-800),(471,56,-800),(471,57,-800),(471,58,-800),(471,59,-800),(471,60,-800),(471,61,-800),(471,62,-800),(471,178,-800),(471,180,-800),(471,211,200),(471,661,-800),(471,1106,-800),(472,51,-1000),(472,52,-1000),(472,53,-1000),(472,54,-1000),(472,55,-1000),(472,56,-1000),(472,57,-1000),(472,58,-1000),(472,59,-1000),(472,60,-1000),(472,61,-1000),(472,62,-1000),(472,178,-1000),(472,180,-1000),(472,661,-1000),(472,1106,-1000),(473,5,-300),(473,11,-300),(473,56,-500),(473,59,-500),(473,60,-500),(473,178,-500),(474,51,-99),(474,52,-99),(474,53,-99),(474,54,-99),(474,55,-99),(474,56,-99),(474,57,-99),(474,58,-99),(474,59,-99),(474,60,-99),(474,61,-99),(474,62,-99),(474,178,-99),(474,180,-99),(474,661,-99),(474,1106,-99),(475,51,-875),(475,52,-875),(475,53,-875),(475,54,-875),(475,55,-875),(475,56,-875),(475,57,-875),(475,58,-875),(475,59,-875),(475,60,-875),(475,61,-875),(475,62,-875),(475,178,-875),(475,180,-875),(475,661,-875),(475,1106,-875),(548,51,-1000),(548,52,-1000),(548,53,-1000),(548,54,-1000),(548,55,-1000),(548,56,-1000),(548,57,-1000),(548,58,-1000),(548,59,-1000),(548,60,-1000),(548,61,-1000),(548,62,-1000),(548,178,-1000),(548,180,-1000),(548,661,-1000),(548,1106,-1000),(680,51,-100),(680,52,-100),(680,53,-100),(680,54,-100),(680,55,-100),(680,56,-100),(680,57,-100),(680,58,-100),(680,59,-100),(680,60,-100),(680,61,-100),(680,62,-100),(680,178,-100),(680,180,-100),(680,661,-100),(680,1106,-100),(711,51,-750),(711,52,-750),(711,53,-750),(711,54,-750),(711,55,-750),(711,56,-750),(711,57,-750),(711,58,-750),(711,59,-750),(711,60,-750),(711,61,-750),(711,62,-750),(711,178,-750),(711,180,-750),(711,661,-750),(711,1106,-750),(712,51,-750),(712,52,-750),(712,53,-750),(712,54,-750),(712,55,-750),(712,56,-750),(712,57,-750),(712,58,-750),(712,59,-750),(712,60,-750),(712,61,-750),(712,62,-750),(712,178,-750),(712,180,-750),(712,661,-750),(712,1106,-750),(713,51,-1000),(713,52,-1000),(713,53,-1000),(713,54,-1000),(713,55,-1000),(713,56,-1000),(713,57,-1000),(713,58,-1000),(713,59,-1000),(713,60,-1000),(713,61,-1000),(713,62,-1000),(713,178,-1000),(713,180,-1000),(713,661,-1000),(713,1106,-1000),(714,51,-1000),(714,52,-1000),(714,53,-1000),(714,54,-1000),(714,55,-1000),(714,56,-1000),(714,57,-1000),(714,58,-1000),(714,59,-1000),(714,60,-1000),(714,61,-1000),(714,62,-1000),(714,178,-1000),(714,180,-1000),(714,661,-1000),(714,1106,-1000),(715,51,-1000),(715,52,-1000),(715,53,-1000),(715,54,-1000),(715,55,-1000),(715,56,-1000),(715,57,-1000),(715,58,-1000),(715,59,-1000),(715,60,-1000),(715,61,-1000),(715,62,-1000),(715,178,-1000),(715,180,-1000),(715,661,-1000),(715,1106,-1000),(716,51,-1000),(716,52,-1000),(716,53,-1000),(716,54,-1000),(716,55,-1000),(716,56,-1000),(716,57,-1000),(716,58,-1000),(716,59,-1000),(716,60,-1000),(716,61,-1000),(716,62,-1000),(716,178,-1000),(716,180,-1000),(716,661,-1000),(716,1106,-1000),(720,51,375),(720,52,375),(720,54,375),(720,55,375),(720,56,0),(720,58,375),(720,59,0),(720,60,0),(720,61,375),(720,180,375),(720,661,375),(720,1106,375),(721,51,375),(721,52,375),(721,54,375),(721,55,375),(721,56,0),(721,58,375),(721,59,0),(721,60,0),(721,61,375),(721,180,375),(721,661,375),(721,1106,375),(1007,51,-2000),(1007,52,-2000),(1007,53,-2000),(1007,54,-2000),(1007,55,-2000),(1007,56,-2000),(1007,57,-2000),(1007,58,-2000),(1007,59,-2000),(1007,60,-2000),(1007,61,-2000),(1007,62,-2000),(1007,178,-2000),(1007,180,-2000),(1007,661,-2000),(1007,1106,-2000),(1010,51,-2000),(1010,52,-2000),(1010,53,-2000),(1010,54,-2000),(1010,55,-2000),(1010,56,-2000),(1010,57,-2000),(1010,58,-2000),(1010,59,-2000),(1010,60,-2000),(1010,61,-2000),(1010,62,-2000),(1010,178,-2000),(1010,180,-2000),(1010,661,-2000),(1010,1106,-2000),(1013,51,-2000),(1013,52,-2000),(1013,53,-2000),(1013,54,-2000),(1013,55,-2000),(1013,56,-2000),(1013,57,-2000),(1013,58,-2000),(1013,59,-2000),(1013,60,-2000),(1013,61,-2000),(1013,62,-2000),(1013,178,-2000),(1013,180,-2000),(1013,661,-2000),(1013,1106,-2000),(1016,51,-800),(1016,52,-800),(1016,53,-800),(1016,54,-800),(1016,55,-800),(1016,56,-800),(1016,57,-800),(1016,58,-800),(1016,59,-800),(1016,60,-800),(1016,61,-800),(1016,62,-800),(1016,178,-800),(1016,180,-800),(1016,661,-800),(1016,1106,-800),(1021,201,-100),(1021,202,-100),(1021,203,-100),(1021,204,-600),(1021,205,-100),(1021,206,-100),(1021,207,-100),(1021,208,-600),(1021,209,-100),(1021,210,-600),(1021,211,-100),(1021,212,-600),(1021,213,-100),(1021,214,-100),(1021,215,-600),(1021,216,-100),(1021,396,-100),(1022,201,-1000),(1022,203,-1000),(1022,206,-1000),(1022,211,-1000),(1022,213,-500),(1023,201,-600),(1023,202,-100),(1023,203,-600),(1023,204,-100),(1023,205,-100),(1023,206,-600),(1023,207,-100),(1023,208,-100),(1023,209,-100),(1023,210,-100),(1023,211,-600),(1023,212,-100),(1023,213,-100),(1023,214,-100),(1023,215,-100),(1023,216,-100),(1023,396,-100),(1024,51,-2000),(1024,52,-2000),(1024,53,-2000),(1024,54,-2000),(1024,55,-2000),(1024,56,-2000),(1024,57,-2000),(1024,58,-2000),(1024,59,-2000),(1024,60,-2000),(1024,61,-2000),(1024,62,-2000),(1024,178,-2000),(1024,180,-2000),(1024,661,-2000),(1024,1106,-2000),(1025,51,-2000),(1025,52,-2000),(1025,53,-2000),(1025,54,-2000),(1025,55,-2000),(1025,56,-2000),(1025,57,-2000),(1025,58,-2000),(1025,59,-2000),(1025,60,-2000),(1025,61,-2000),(1025,62,-2000),(1025,178,-2000),(1025,180,-2000),(1025,661,-2000),(1025,1106,-2000),(1026,51,-2000),(1026,52,-2000),(1026,53,-2000),(1026,54,-2000),(1026,55,-2000),(1026,56,-2000),(1026,57,-2000),(1026,58,-2000),(1026,59,-2000),(1026,60,-2000),(1026,61,-2000),(1026,62,-2000),(1026,178,-2000),(1026,180,-2000),(1026,661,-2000),(1026,1106,-2000),(1027,51,-2000),(1027,52,-2000),(1027,53,-2000),(1027,54,-2000),(1027,55,-2000),(1027,56,-2000),(1027,57,-2000),(1027,58,-2000),(1027,59,-2000),(1027,60,-2000),(1027,61,-2000),(1027,62,-2000),(1027,178,-2000),(1027,180,-2000),(1027,661,-2000),(1027,1106,-2000),(1028,51,-2000),(1028,52,-2000),(1028,53,-2000),(1028,54,-2000),(1028,55,-2000),(1028,56,-2000),(1028,57,-2000),(1028,58,-2000),(1028,59,-2000),(1028,60,-2000),(1028,61,-2000),(1028,62,-2000),(1028,178,-2000),(1028,180,-2000),(1028,661,-2000),(1028,1106,-2000),(1029,51,-2000),(1029,52,-2000),(1029,53,-2000),(1029,54,-2000),(1029,55,-2000),(1029,56,-2000),(1029,57,-2000),(1029,58,-2000),(1029,59,-2000),(1029,60,-2000),(1029,61,-2000),(1029,62,-2000),(1029,178,-2000),(1029,180,-2000),(1029,661,-2000),(1029,1106,-2000),(1030,51,-2000),(1030,52,-2000),(1030,53,-2000),(1030,54,-2000),(1030,55,-2000),(1030,56,-2000),(1030,57,-2000),(1030,58,-2000),(1030,59,-2000),(1030,60,-2000),(1030,61,-2000),(1030,62,-2000),(1030,178,-2000),(1030,180,-2000),(1030,661,-2000),(1030,1106,-2000),(1031,51,-2000),(1031,52,-2000),(1031,53,-2000),(1031,54,-2000),(1031,55,-2000),(1031,56,-2000),(1031,57,-2000),(1031,58,-2000),(1031,59,-2000),(1031,60,-2000),(1031,61,-2000),(1031,62,-2000),(1031,178,-2000),(1031,180,-2000),(1031,661,-2000),(1031,1106,-2000),(1032,51,-2000),(1032,52,-2000),(1032,53,-2000),(1032,54,-2000),(1032,55,-2000),(1032,56,-2000),(1032,57,-2000),(1032,58,-2000),(1032,59,-2000),(1032,60,-2000),(1032,61,-2000),(1032,62,-2000),(1032,178,-2000),(1032,180,-2000),(1032,661,-2000),(1032,1106,-2000),(1033,51,-2000),(1033,52,-2000),(1033,53,-2000),(1033,54,-2000),(1033,55,-2000),(1033,56,-2000),(1033,57,-2000),(1033,58,-2000),(1033,59,-2000),(1033,60,-2000),(1033,61,-2000),(1033,62,-2000),(1033,178,-2000),(1033,180,-2000),(1033,661,-2000),(1033,1106,-2000),(1034,51,-2000),(1034,52,-2000),(1034,53,-2000),(1034,54,-2000),(1034,55,-2000),(1034,56,-2000),(1034,57,-2000),(1034,58,-2000),(1034,59,-2000),(1034,60,-2000),(1034,61,-2000),(1034,62,-2000),(1034,178,-2000),(1034,180,-2000),(1034,661,-2000),(1034,1106,-2000),(1035,51,-2000),(1035,52,-2000),(1035,53,-2000),(1035,54,-2000),(1035,55,-2000),(1035,56,-2000),(1035,57,-2000),(1035,58,-2000),(1035,59,-2000),(1035,60,-2000),(1035,61,-2000),(1035,62,-2000),(1035,178,-2000),(1035,180,-2000),(1035,661,-2000),(1035,1106,-2000),(1049,51,-2000),(1049,52,-2000),(1049,53,-2000),(1049,54,-2000),(1049,55,-2000),(1049,56,-2000),(1049,57,-2000),(1049,58,-2000),(1049,59,-2000),(1049,60,-2000),(1049,61,-2000),(1049,62,-2000),(1049,178,-2000),(1049,180,-2000),(1049,661,-2000),(1049,1106,-2000),(1051,51,-2000),(1051,52,-2000),(1051,53,-2000),(1051,54,-2000),(1051,55,-2000),(1051,56,-2000),(1051,57,-2000),(1051,58,-2000),(1051,59,-2000),(1051,60,-2000),(1051,61,-2000),(1051,62,-2000),(1051,178,-2000),(1051,180,-2000),(1051,661,-2000),(1051,1106,-2000),(1052,51,-2000),(1052,52,-2000),(1052,53,-2000),(1052,54,-2000),(1052,55,-2000),(1052,56,-2000),(1052,57,-2000),(1052,58,-2000),(1052,59,-2000),(1052,60,-2000),(1052,61,-2000),(1052,62,-2000),(1052,178,-2000),(1052,180,-2000),(1052,661,-2000),(1052,1106,-2000),(1053,51,-2000),(1053,52,-2000),(1053,53,-2000),(1053,54,-2000),(1053,55,-2000),(1053,56,-2000),(1053,57,-2000),(1053,58,-2000),(1053,59,-2000),(1053,60,-2000),(1053,61,-2000),(1053,62,-2000),(1053,178,-2000),(1053,180,-2000),(1053,661,-2000),(1053,1106,-2000),(1054,51,-2000),(1054,52,-2000),(1054,53,-2000),(1054,54,-2000),(1054,55,-2000),(1054,56,-2000),(1054,57,-2000),(1054,58,-2000),(1054,59,-2000),(1054,60,-2000),(1054,61,-2000),(1054,62,-2000),(1054,178,-2000),(1054,180,-2000),(1054,661,-2000),(1054,1106,-2000),(1055,51,-500),(1055,52,-500),(1055,53,-500),(1055,54,-500),(1055,55,-500),(1055,56,-500),(1055,57,-500),(1055,58,-500),(1055,59,-500),(1055,60,-500),(1055,61,-500),(1055,62,-500),(1055,178,-500),(1055,180,-500),(1055,661,-500),(1055,1106,-500),(1056,51,-2000),(1056,52,-2000),(1056,53,-2000),(1056,54,-2000),(1056,55,-2000),(1056,56,-2000),(1056,57,-2000),(1056,58,-2000),(1056,59,-2000),(1056,60,-2000),(1056,61,-2000),(1056,62,-2000),(1056,178,-2000),(1056,180,-2000),(1056,661,-2000),(1056,1106,-2000),(1058,51,-2000),(1058,52,-2000),(1058,53,-2000),(1058,54,-2000),(1058,55,-2000),(1058,56,-2000),(1058,57,-2000),(1058,58,-2000),(1058,59,-2000),(1058,60,-2000),(1058,61,-2000),(1058,62,-2000),(1058,178,-2000),(1058,180,-2000),(1058,661,-2000),(1058,1106,-2000),(1059,51,-1000),(1059,52,-1000),(1059,53,-1000),(1059,54,-1000),(1059,55,-1000),(1059,56,-1000),(1059,57,-1000),(1059,58,-1000),(1059,59,-1000),(1059,60,-1000),(1059,61,-1000),(1059,62,-1000),(1059,178,-1000),(1059,180,-1000),(1059,661,-1000),(1059,1106,-1000),(1062,51,-500),(1062,52,-500),(1062,53,-500),(1062,54,-500),(1062,55,-500),(1062,56,-500),(1062,57,-500),(1062,58,-500),(1062,59,-500),(1062,60,-500),(1062,61,-500),(1062,62,-500),(1062,178,-500),(1062,180,-500),(1062,661,-500),(1062,1106,-500),(1066,51,-1000),(1066,52,-1000),(1066,53,-1000),(1066,54,-1000),(1066,55,-1000),(1066,56,-1000),(1066,57,-1000),(1066,58,-1000),(1066,59,-1000),(1066,60,-1000),(1066,61,-1000),(1066,62,-1000),(1066,178,-1000),(1066,180,-1000),(1066,661,-1000),(1066,1106,-1000),(1068,51,-1000),(1068,52,-1000),(1068,53,-1000),(1068,54,-1000),(1068,55,-1000),(1068,56,-1000),(1068,57,-1000),(1068,58,-1000),(1068,59,-1000),(1068,60,-1000),(1068,61,-1000),(1068,62,-1000),(1068,178,-1000),(1068,180,-1000),(1068,661,-1000),(1068,1106,-1000),(1069,51,-1000),(1069,52,-1000),(1069,53,-1000),(1069,54,-1000),(1069,55,-1000),(1069,56,-1000),(1069,57,-1000),(1069,58,-1000),(1069,59,-1000),(1069,60,-1000),(1069,61,-1000),(1069,62,-1000),(1069,178,-1000),(1069,180,-1000),(1069,661,-1000),(1069,1106,-1000),(1070,51,-1000),(1070,52,-1000),(1070,53,-1000),(1070,54,-1000),(1070,55,-1000),(1070,56,-1000),(1070,57,-1000),(1070,58,-1000),(1070,59,-1000),(1070,60,-1000),(1070,61,-1000),(1070,62,-1000),(1070,178,-1000),(1070,180,-1000),(1070,661,-1000),(1070,1106,-1000),(1071,51,-1000),(1071,52,-1000),(1071,53,-1000),(1071,54,-1000),(1071,55,-1000),(1071,56,-1000),(1071,57,-1000),(1071,58,-1000),(1071,59,-1000),(1071,60,-1000),(1071,61,-1000),(1071,62,-1000),(1071,178,-1000),(1071,180,-1000),(1071,661,-1000),(1071,1106,-1000),(1072,51,-1000),(1072,52,-1000),(1072,53,-1000),(1072,54,-1000),(1072,55,-1000),(1072,56,-1000),(1072,57,-1000),(1072,58,-1000),(1072,59,-1000),(1072,60,-1000),(1072,61,-1000),(1072,62,-1000),(1072,178,-1000),(1072,180,-1000),(1072,661,-1000),(1072,1106,-1000),(1073,51,-1000),(1073,52,-1000),(1073,53,-1000),(1073,54,-1000),(1073,55,-1000),(1073,56,-1000),(1073,57,-1000),(1073,58,-1000),(1073,59,-1000),(1073,60,-1000),(1073,61,-1000),(1073,62,-1000),(1073,178,-1000),(1073,180,-1000),(1073,661,-1000),(1073,1106,-1000),(1074,51,-1000),(1074,52,-1000),(1074,53,-1000),(1074,54,-1000),(1074,55,-1000),(1074,56,-1000),(1074,57,-1000),(1074,58,-1000),(1074,59,-1000),(1074,60,-1000),(1074,61,-1000),(1074,62,-1000),(1074,178,-1000),(1074,180,-1000),(1074,661,-1000),(1074,1106,-1000),(1075,51,-1000),(1075,52,-1000),(1075,53,-1000),(1075,54,-1000),(1075,55,-1000),(1075,56,-1000),(1075,57,-1000),(1075,58,-1000),(1075,59,-1000),(1075,60,-1000),(1075,61,-1000),(1075,62,-1000),(1075,178,-1000),(1075,180,-1000),(1075,661,-1000),(1075,1106,-1000),(1076,51,-1000),(1076,52,-1000),(1076,53,-1000),(1076,54,-1000),(1076,55,-1000),(1076,56,-1000),(1076,57,-1000),(1076,58,-1000),(1076,59,-1000),(1076,60,-1000),(1076,61,-1000),(1076,62,-1000),(1076,178,-1000),(1076,180,-1000),(1076,661,-1000),(1076,1106,-1000),(1077,51,-1000),(1077,52,-1000),(1077,53,-1000),(1077,54,-1000),(1077,55,-1000),(1077,56,-1000),(1077,57,-1000),(1077,58,-1000),(1077,59,-1000),(1077,60,-1000),(1077,61,-1000),(1077,62,-1000),(1077,178,-1000),(1077,180,-1000),(1077,661,-1000),(1077,1106,-1000),(1078,51,-1000),(1078,52,-1000),(1078,53,-1000),(1078,54,-1000),(1078,55,-1000),(1078,56,-1000),(1078,57,-1000),(1078,58,-1000),(1078,59,-1000),(1078,60,-1000),(1078,61,-1000),(1078,62,-1000),(1078,178,-1000),(1078,180,-1000),(1078,661,-1000),(1078,1106,-1000),(1079,51,-1000),(1079,52,-1000),(1079,53,-1000),(1079,54,-1000),(1079,55,-1000),(1079,56,-1000),(1079,57,-1000),(1079,58,-1000),(1079,59,-1000),(1079,60,-1000),(1079,61,-1000),(1079,62,-1000),(1079,178,-1000),(1079,180,-1000),(1079,661,-1000),(1079,1106,-1000),(1080,51,-1000),(1080,52,-1000),(1080,53,-1000),(1080,54,-1000),(1080,55,-1000),(1080,56,-1000),(1080,57,-1000),(1080,58,-1000),(1080,59,-1000),(1080,60,-1000),(1080,61,-1000),(1080,62,-1000),(1080,178,-1000),(1080,180,-1000),(1080,661,-1000),(1080,1106,-1000),(1086,51,-2000),(1086,52,-2000),(1086,53,-2000),(1086,54,-2000),(1086,55,-2000),(1086,56,-2000),(1086,57,-2000),(1086,58,-2000),(1086,59,-2000),(1086,60,-2000),(1086,61,-2000),(1086,62,-2000),(1086,178,-2000),(1086,180,-2000),(1086,661,-2000),(1086,1106,-2000),(1088,51,-1000),(1088,52,-1000),(1088,53,-1000),(1088,54,-1000),(1088,55,-1000),(1088,56,-1000),(1088,57,-1000),(1088,58,-1000),(1088,59,-1000),(1088,60,-1000),(1088,61,-1000),(1088,62,-1000),(1088,178,-1000),(1088,180,-1000),(1088,661,-1000),(1088,1106,-1000),(1089,51,-1000),(1089,52,-1000),(1089,53,-1000),(1089,54,-1000),(1089,55,-1000),(1089,56,-1000),(1089,57,-1000),(1089,58,-1000),(1089,59,-1000),(1089,60,-1000),(1089,61,-1000),(1089,62,-1000),(1089,178,-1000),(1089,180,-1000),(1089,661,-1000),(1089,1106,-1000),(1090,51,-1000),(1090,52,-1000),(1090,53,-1000),(1090,54,-1000),(1090,55,-1000),(1090,56,-1000),(1090,57,-1000),(1090,58,-1000),(1090,59,-1000),(1090,60,-1000),(1090,61,-1000),(1090,62,-1000),(1090,178,-1000),(1090,180,-1000),(1090,661,-1000),(1090,1106,-1000),(1091,51,-1000),(1091,52,-1000),(1091,53,-1000),(1091,54,-1000),(1091,55,-1000),(1091,56,-1000),(1091,57,-1000),(1091,58,-1000),(1091,59,-1000),(1091,60,-1000),(1091,61,-1000),(1091,62,-1000),(1091,178,-1000),(1091,180,-1000),(1091,661,-1000),(1091,1106,-1000),(1092,51,-1000),(1092,52,-1000),(1092,53,-1000),(1092,54,-1000),(1092,55,-1000),(1092,56,-1000),(1092,57,-1000),(1092,58,-1000),(1092,59,-1000),(1092,60,-1000),(1092,61,-1000),(1092,62,-1000),(1092,178,-1000),(1092,180,-1000),(1092,661,-1000),(1092,1106,-1000),(1093,51,-1000),(1093,52,-1000),(1093,53,-1000),(1093,54,-1000),(1093,55,-1000),(1093,56,-1000),(1093,57,-1000),(1093,58,-1000),(1093,59,-1000),(1093,60,-1000),(1093,61,-1000),(1093,62,-1000),(1093,178,-1000),(1093,180,-1000),(1093,661,-1000),(1093,1106,-1000),(1094,51,-1000),(1094,52,-1000),(1094,53,-1000),(1094,54,-1000),(1094,55,-1000),(1094,56,-1000),(1094,57,-1000),(1094,58,-1000),(1094,59,-1000),(1094,60,-1000),(1094,61,-1000),(1094,62,-1000),(1094,178,-1000),(1094,180,-1000),(1094,661,-1000),(1094,1106,-1000),(1100,51,-1000),(1100,52,-1000),(1100,53,-1000),(1100,54,-1000),(1100,55,-1000),(1100,56,-1000),(1100,57,-1000),(1100,58,-1000),(1100,59,-1000),(1100,60,-1000),(1100,61,-1000),(1100,62,-1000),(1100,178,-1000),(1100,180,-1000),(1100,661,-1000),(1100,1106,-1000),(1101,51,-1000),(1101,52,-1000),(1101,53,-1000),(1101,54,-1000),(1101,55,-1000),(1101,56,-1000),(1101,57,-1000),(1101,58,-1000),(1101,59,-1000),(1101,60,-1000),(1101,61,-1000),(1101,62,-1000),(1101,178,-1000),(1101,180,-1000),(1101,661,-1000),(1101,1106,-1000),(1103,51,-1000),(1103,52,-1000),(1103,53,-1000),(1103,54,-1000),(1103,55,-1000),(1103,56,-1000),(1103,57,-1000),(1103,58,-1000),(1103,59,-1000),(1103,60,-1000),(1103,61,-1000),(1103,62,-1000),(1103,178,-1000),(1103,180,-1000),(1103,661,-1000),(1103,1106,-1000),(1104,51,-500),(1104,52,-500),(1104,53,-500),(1104,54,-500),(1104,55,-500),(1104,56,-500),(1104,57,-500),(1104,58,-500),(1104,59,-500),(1104,60,-500),(1104,61,-500),(1104,62,-500),(1104,178,-500),(1104,180,-500),(1104,661,-500),(1104,1106,-500),(1105,51,-200),(1105,52,-200),(1105,53,-200),(1105,54,-200),(1105,55,-200),(1105,56,-200),(1105,57,-200),(1105,58,-200),(1105,59,-200),(1105,60,-200),(1105,61,-200),(1105,62,-200),(1105,178,-200),(1105,180,-200),(1105,661,-200),(1105,1106,-200),(1107,51,-700),(1107,52,-700),(1107,53,-700),(1107,54,-700),(1107,55,-700),(1107,56,-700),(1107,57,-700),(1107,58,-700),(1107,59,-700),(1107,60,-700),(1107,61,-700),(1107,62,-700),(1107,178,-700),(1107,180,-700),(1107,661,-700),(1107,1106,-700),(1111,51,-1000),(1111,52,-1000),(1111,53,-1000),(1111,54,-1000),(1111,55,-1000),(1111,56,-1000),(1111,57,-1000),(1111,58,-1000),(1111,59,-1000),(1111,60,-1000),(1111,61,-1000),(1111,62,-1000),(1111,178,-1000),(1111,180,-1000),(1111,661,-1000),(1111,1106,-1000),(1112,51,-1000),(1112,52,-1000),(1112,53,-1000),(1112,54,-1000),(1112,55,-1000),(1112,56,-1000),(1112,57,-1000),(1112,58,-1000),(1112,59,-1000),(1112,60,-1000),(1112,61,-1000),(1112,62,-1000),(1112,178,-1000),(1112,180,-1000),(1112,661,-1000),(1112,1106,-1000),(1113,51,-1000),(1113,52,-1000),(1113,53,-1000),(1113,54,-1000),(1113,55,-1000),(1113,56,-1000),(1113,57,-1000),(1113,58,-1000),(1113,59,-1000),(1113,60,-1000),(1113,61,-1000),(1113,62,-1000),(1113,178,-1000),(1113,180,-1000),(1113,661,-1000),(1113,1106,-1000),(1114,51,-1000),(1114,52,-1000),(1114,53,-1000),(1114,54,-1000),(1114,55,-1000),(1114,56,-1000),(1114,57,-1000),(1114,58,-1000),(1114,59,-1000),(1114,60,-1000),(1114,61,-1000),(1114,62,-1000),(1114,178,-1000),(1114,180,-1000),(1114,661,-1000),(1114,1106,-1000),(1115,51,-1000),(1115,52,-1000),(1115,53,-1000),(1115,54,-1000),(1115,55,-1000),(1115,56,-1000),(1115,57,-1000),(1115,58,-1000),(1115,59,-1000),(1115,60,-1000),(1115,61,-1000),(1115,62,-1000),(1115,178,-1000),(1115,180,-1000),(1115,661,-1000),(1115,1106,-1000),(1120,51,-1000),(1120,52,-1000),(1120,53,-1000),(1120,54,-1000),(1120,55,-1000),(1120,56,-1000),(1120,57,-1000),(1120,58,-1000),(1120,59,-1000),(1120,60,-1000),(1120,61,-1000),(1120,62,-1000),(1120,178,-1000),(1120,180,-1000),(1120,661,-1000),(1120,1106,-1000),(1121,51,-1000),(1121,52,-1000),(1121,53,-1000),(1121,54,-1000),(1121,55,-1000),(1121,56,-1000),(1121,57,-1000),(1121,58,-1000),(1121,59,-1000),(1121,60,-1000),(1121,61,-1000),(1121,62,-1000),(1121,178,-1000),(1121,180,-1000),(1121,661,-1000),(1121,1106,-1000),(1123,51,-100),(1123,52,-100),(1123,53,-100),(1123,54,-100),(1123,55,-100),(1123,56,-100),(1123,57,-100),(1123,58,-100),(1123,59,-100),(1123,60,-100),(1123,61,-100),(1123,62,-100),(1123,178,-100),(1123,180,-100),(1123,661,-100),(1123,1106,-100),(1124,51,-1000),(1124,52,-1000),(1124,53,-1000),(1124,54,-1000),(1124,55,-1000),(1124,56,-1000),(1124,57,-1000),(1124,58,-1000),(1124,59,-1000),(1124,60,-1000),(1124,61,-1000),(1124,62,-1000),(1124,178,-1000),(1124,180,-1000),(1124,661,-1000),(1124,1106,-1000),(1125,51,-1000),(1125,52,-1000),(1125,53,-1000),(1125,54,-1000),(1125,55,-1000),(1125,56,-1000),(1125,57,-1000),(1125,58,-1000),(1125,59,-1000),(1125,60,-1000),(1125,61,-1000),(1125,62,-1000),(1125,178,-1000),(1125,180,-1000),(1125,661,-1000),(1125,1106,-1000),(1134,51,-50),(1134,52,-50),(1134,53,-50),(1134,54,-50),(1134,55,-50),(1134,56,-50),(1134,57,-50),(1134,58,-50),(1134,59,-50),(1134,60,-50),(1134,61,-50),(1134,62,-50),(1134,178,-50),(1134,180,-50),(1134,661,-50),(1134,1106,-50),(1135,51,-150),(1135,52,-150),(1135,53,-150),(1135,54,-150),(1135,55,-150),(1135,56,-150),(1135,57,-150),(1135,58,-150),(1135,59,-150),(1135,60,-150),(1135,61,-150),(1135,62,-150),(1135,178,-150),(1135,180,-150),(1135,661,-150),(1135,1106,-150),(1137,1106,100),(1140,51,-1000),(1140,52,-1000),(1140,53,-1000),(1140,54,-1000),(1140,55,-1000),(1140,56,-1000),(1140,57,-1000),(1140,58,-1000),(1140,59,-1000),(1140,60,-1000),(1140,61,-1000),(1140,62,-1000),(1140,178,-1000),(1140,180,-1000),(1140,661,-1000),(1140,1106,-1000),(1141,51,-1000),(1141,52,-1000),(1141,53,-1000),(1141,54,-1000),(1141,55,-1000),(1141,56,-1000),(1141,57,-1000),(1141,58,-1000),(1141,59,-1000),(1141,60,-1000),(1141,61,-1000),(1141,62,-1000),(1141,178,-1000),(1141,180,-1000),(1141,661,-1000),(1141,1106,-1000),(1142,51,-1000),(1142,52,-1000),(1142,53,-1000),(1142,54,-1000),(1142,55,-1000),(1142,56,-1000),(1142,57,-1000),(1142,58,-1000),(1142,59,-1000),(1142,60,-1000),(1142,61,-1000),(1142,62,-1000),(1142,178,-1000),(1142,180,-1000),(1142,661,-1000),(1142,1106,-1000),(1143,51,-500),(1143,52,-500),(1143,53,-500),(1143,54,-500),(1143,55,-500),(1143,56,-500),(1143,57,-500),(1143,58,-500),(1143,59,-500),(1143,60,-500),(1143,61,-500),(1143,62,-500),(1143,178,-500),(1143,180,-500),(1143,661,-500),(1143,1106,-500),(1144,51,-250),(1144,52,-250),(1144,53,-250),(1144,54,-250),(1144,55,-250),(1144,56,-250),(1144,57,-250),(1144,58,-250),(1144,59,-250),(1144,60,-250),(1144,61,-250),(1144,62,-250),(1144,178,-250),(1144,180,-250),(1144,661,-250),(1144,1106,-250),(1145,51,-500),(1145,52,-500),(1145,53,-500),(1145,54,-500),(1145,55,-500),(1145,56,-500),(1145,57,-500),(1145,58,-500),(1145,59,-500),(1145,60,-500),(1145,61,-500),(1145,62,-500),(1145,178,-500),(1145,180,-500),(1145,661,-500),(1145,1106,-500),(1146,51,-800),(1146,52,-800),(1146,53,-800),(1146,54,-800),(1146,55,-800),(1146,56,-800),(1146,57,-800),(1146,58,-800),(1146,59,-800),(1146,60,-800),(1146,61,-800),(1146,62,-800),(1146,178,-800),(1146,180,-800),(1146,661,-800),(1146,1106,-800),(1147,51,-800),(1147,52,-800),(1147,53,-800),(1147,54,-800),(1147,55,-800),(1147,56,-800),(1147,57,-800),(1147,58,-800),(1147,59,-800),(1147,60,-800),(1147,61,-800),(1147,62,-800),(1147,178,-800),(1147,180,-800),(1147,661,-800),(1147,1106,-800),(1148,51,-800),(1148,52,-800),(1148,53,-800),(1148,54,-800),(1148,55,-800),(1148,56,-800),(1148,57,-800),(1148,58,-800),(1148,59,-800),(1148,60,-800),(1148,61,-800),(1148,62,-800),(1148,178,-800),(1148,180,-800),(1148,661,-800),(1148,1106,-800),(1149,51,-800),(1149,52,-800),(1149,53,-800),(1149,54,-800),(1149,55,-800),(1149,56,-800),(1149,57,-800),(1149,58,-800),(1149,59,-800),(1149,60,-800),(1149,61,-800),(1149,62,-800),(1149,178,-800),(1149,180,-800),(1149,661,-800),(1149,1106,-800),(1166,51,-1000),(1166,52,-1000),(1166,53,-1000),(1166,54,-1000),(1166,55,-1000),(1166,56,-1000),(1166,57,-1000),(1166,58,-1000),(1166,59,-1000),(1166,60,-1000),(1166,61,-1000),(1166,62,-1000),(1166,178,-1000),(1166,180,-1000),(1166,661,-1000),(1166,1106,-1000),(1169,51,-100),(1169,52,-100),(1169,53,-100),(1169,54,-100),(1169,55,-100),(1169,56,-100),(1169,57,-100),(1169,58,-100),(1169,59,-100),(1169,60,-100),(1169,61,-100),(1169,62,-100),(1169,178,-100),(1169,180,-100),(1169,661,-100),(1169,1106,-100),(1170,51,-100),(1170,52,-100),(1170,53,-100),(1170,54,-100),(1170,55,-100),(1170,56,-100),(1170,57,-100),(1170,58,-100),(1170,59,-100),(1170,60,-100),(1170,61,-100),(1170,62,-100),(1170,178,-100),(1170,180,-100),(1170,661,-100),(1170,1106,-100),(1175,51,-1000),(1175,52,-1000),(1175,53,-1000),(1175,54,-1000),(1175,55,-1000),(1175,56,-1000),(1175,57,-1000),(1175,58,-1000),(1175,59,-1000),(1175,60,-1000),(1175,61,-1000),(1175,62,-1000),(1175,178,-1000),(1175,180,-1000),(1175,661,-1000),(1175,1106,-1000),(1176,51,-1000),(1176,52,-1000),(1176,53,-1000),(1176,54,-1000),(1176,55,-1000),(1176,56,-1000),(1176,57,-1000),(1176,58,-1000),(1176,59,-1000),(1176,60,-1000),(1176,61,-1000),(1176,62,-1000),(1176,178,-1000),(1176,180,-1000),(1176,661,-1000),(1176,1106,-1000),(1181,51,-1000),(1181,52,-1000),(1181,53,-1000),(1181,54,-1000),(1181,55,-1000),(1181,56,-1000),(1181,57,-1000),(1181,58,-1000),(1181,59,-1000),(1181,60,-1000),(1181,61,-1000),(1181,62,-1000),(1181,178,-1000),(1181,180,-1000),(1181,661,-1000),(1181,1106,-1000),(1182,51,-1000),(1182,52,-1000),(1182,53,-1000),(1182,54,-1000),(1182,55,-1000),(1182,56,-1000),(1182,57,-1000),(1182,58,-1000),(1182,59,-1000),(1182,60,-1000),(1182,61,-1000),(1182,62,-1000),(1182,178,-1000),(1182,180,-1000),(1182,661,-1000),(1182,1106,-1000),(1183,51,-500),(1183,52,-500),(1183,53,-500),(1183,54,-500),(1183,55,-500),(1183,56,-500),(1183,57,-500),(1183,58,-500),(1183,59,-500),(1183,60,-500),(1183,61,-500),(1183,62,-500),(1183,178,-500),(1183,180,-500),(1183,661,-500),(1183,1106,-500),(1184,51,-500),(1184,52,-500),(1184,53,-500),(1184,54,-500),(1184,55,-500),(1184,56,-500),(1184,57,-500),(1184,58,-500),(1184,59,-500),(1184,60,-500),(1184,61,-500),(1184,62,-500),(1184,178,-500),(1184,180,-500),(1184,661,-500),(1184,1106,-500),(1185,51,-500),(1185,52,-500),(1185,53,-500),(1185,54,-500),(1185,55,-500),(1185,56,-500),(1185,57,-500),(1185,58,-500),(1185,59,-500),(1185,60,-500),(1185,61,-500),(1185,62,-500),(1185,178,-500),(1185,180,-500),(1185,661,-500),(1185,1106,-500),(1186,51,-1000),(1186,52,-1000),(1186,53,-1000),(1186,54,-1000),(1186,55,-1000),(1186,56,-1000),(1186,57,-1000),(1186,58,-1000),(1186,59,-1000),(1186,60,-1000),(1186,61,-1000),(1186,62,-1000),(1186,178,-1000),(1186,180,-1000),(1186,661,-1000),(1186,1106,-1000),(1188,51,-500),(1188,52,-500),(1188,53,-500),(1188,54,-500),(1188,55,-500),(1188,56,-500),(1188,57,-500),(1188,58,-500),(1188,59,-500),(1188,60,-500),(1188,61,-500),(1188,62,-500),(1188,178,-500),(1188,180,-500),(1188,661,-500),(1188,1106,-500),(1189,51,-500),(1189,52,-500),(1189,53,-500),(1189,54,-500),(1189,55,-500),(1189,56,-500),(1189,57,-500),(1189,58,-500),(1189,59,-500),(1189,60,-500),(1189,61,-500),(1189,62,-500),(1189,178,-500),(1189,180,-500),(1189,661,-500),(1189,1106,-500),(1190,51,-500),(1190,52,-500),(1190,53,-500),(1190,54,-500),(1190,55,-500),(1190,56,-500),(1190,57,-500),(1190,58,-500),(1190,59,-500),(1190,60,-500),(1190,61,-500),(1190,62,-500),(1190,178,-500),(1190,180,-500),(1190,661,-500),(1190,1106,-500),(1191,51,-500),(1191,52,-500),(1191,53,-500),(1191,54,-500),(1191,55,-500),(1191,56,-500),(1191,57,-500),(1191,58,-500),(1191,59,-500),(1191,60,-500),(1191,61,-500),(1191,62,-500),(1191,178,-500),(1191,180,-500),(1191,661,-500),(1191,1106,-500),(1192,51,-1000),(1192,52,-1000),(1192,53,-1000),(1192,54,-1000),(1192,55,-1000),(1192,56,-1000),(1192,57,-1000),(1192,58,-1000),(1192,59,-1000),(1192,60,-1000),(1192,61,-1000),(1192,62,-1000),(1192,178,-1000),(1192,180,-1000),(1192,661,-1000),(1192,1106,-1000),(1193,51,-1000),(1193,52,-1000),(1193,53,-1000),(1193,54,-1000),(1193,55,-1000),(1193,56,-1000),(1193,57,-1000),(1193,58,-1000),(1193,59,-1000),(1193,60,-1000),(1193,61,-1000),(1193,62,-1000),(1193,178,-1000),(1193,180,-1000),(1193,661,-1000),(1193,1106,-1000),(1194,51,-1000),(1194,52,-1000),(1194,53,-1000),(1194,54,-1000),(1194,55,-1000),(1194,56,-1000),(1194,57,-1000),(1194,58,-1000),(1194,59,-1000),(1194,60,-1000),(1194,61,-1000),(1194,62,-1000),(1194,178,-1000),(1194,180,-1000),(1194,661,-1000),(1194,1106,-1000),(1195,51,-1000),(1195,52,-1000),(1195,53,-1000),(1195,54,-1000),(1195,55,-1000),(1195,56,-1000),(1195,57,-1000),(1195,58,-1000),(1195,59,-1000),(1195,60,-1000),(1195,61,-1000),(1195,62,-1000),(1195,178,-1000),(1195,180,-1000),(1195,661,-1000),(1195,1106,-1000),(1196,51,-1000),(1196,52,-1000),(1196,53,-1000),(1196,54,-1000),(1196,55,-1000),(1196,56,-1000),(1196,57,-1000),(1196,58,-1000),(1196,59,-1000),(1196,60,-1000),(1196,61,-1000),(1196,62,-1000),(1196,178,-1000),(1196,180,-1000),(1196,661,-1000),(1196,1106,-1000),(1197,51,-1000),(1197,52,-1000),(1197,53,-1000),(1197,54,-1000),(1197,55,-1000),(1197,56,-1000),(1197,57,-1000),(1197,58,-1000),(1197,59,-1000),(1197,60,-1000),(1197,61,-1000),(1197,62,-1000),(1197,178,-1000),(1197,180,-1000),(1197,661,-1000),(1197,1106,-1000),(1198,51,-1000),(1198,52,-1000),(1198,53,-1000),(1198,54,-1000),(1198,55,-1000),(1198,56,-1000),(1198,57,-1000),(1198,58,-1000),(1198,59,-1000),(1198,60,-1000),(1198,61,-1000),(1198,62,-1000),(1198,178,-1000),(1198,180,-1000),(1198,661,-1000),(1198,1106,-1000),(1199,51,-100),(1199,52,-100),(1199,53,-100),(1199,54,-100),(1199,55,-100),(1199,56,-100),(1199,57,-100),(1199,58,-100),(1199,59,-100),(1199,60,-100),(1199,61,-100),(1199,62,-100),(1199,178,-100),(1199,180,-100),(1199,661,-100),(1199,1106,-100),(1200,51,-100),(1200,52,-100),(1200,53,-100),(1200,54,-100),(1200,55,-100),(1200,56,-100),(1200,57,-100),(1200,58,-100),(1200,59,-100),(1200,60,-100),(1200,61,-100),(1200,62,-100),(1200,178,-100),(1200,180,-100),(1200,661,-100),(1200,1106,-100),(1201,51,-1000),(1201,52,-1000),(1201,53,-1000),(1201,54,-1000),(1201,55,-1000),(1201,56,-1000),(1201,57,-1000),(1201,58,-1000),(1201,59,-1000),(1201,60,-1000),(1201,61,-1000),(1201,62,-1000),(1201,178,-1000),(1201,180,-1000),(1201,661,-1000),(1201,1106,-1000),(1202,51,-1000),(1202,52,-1000),(1202,53,-1000),(1202,54,-1000),(1202,55,-1000),(1202,56,-1000),(1202,57,-1000),(1202,58,-1000),(1202,59,-1000),(1202,60,-1000),(1202,61,-1000),(1202,62,-1000),(1202,178,-1000),(1202,180,-1000),(1202,661,-1000),(1202,1106,-1000),(1203,51,-300),(1203,52,-300),(1203,53,-300),(1203,54,-300),(1203,55,-300),(1203,56,-300),(1203,57,-300),(1203,58,-300),(1203,59,-300),(1203,60,-300),(1203,61,-300),(1203,62,-300),(1203,178,-300),(1203,180,-300),(1203,661,-300),(1203,1106,-300),(1204,51,-300),(1204,52,-300),(1204,53,-300),(1204,54,-300),(1204,55,-300),(1204,56,-300),(1204,57,-300),(1204,58,-300),(1204,59,-300),(1204,60,-300),(1204,61,-300),(1204,62,-300),(1204,178,-300),(1204,180,-300),(1204,661,-300),(1204,1106,-300),(1205,51,-300),(1205,52,-300),(1205,53,-300),(1205,54,-300),(1205,55,-300),(1205,56,-300),(1205,57,-300),(1205,58,-300),(1205,59,-300),(1205,60,-300),(1205,61,-300),(1205,62,-300),(1205,178,-300),(1205,180,-300),(1205,661,-300),(1205,1106,-300),(1209,51,-500),(1209,52,-500),(1209,53,-500),(1209,54,-500),(1209,55,-500),(1209,56,-500),(1209,57,-500),(1209,58,-500),(1209,59,-500),(1209,60,-500),(1209,61,-500),(1209,62,-500),(1209,178,-500),(1209,180,-500),(1209,661,-500),(1209,1106,-500),(1210,51,-1000),(1210,52,-1000),(1210,53,-1000),(1210,54,-1000),(1210,55,-1000),(1210,56,-1000),(1210,57,-1000),(1210,58,-1000),(1210,59,-1000),(1210,60,-1000),(1210,61,-1000),(1210,62,-1000),(1210,178,-1000),(1210,180,-1000),(1210,661,-1000),(1210,1106,-1000),(1211,51,100),(1211,52,100),(1211,53,100),(1211,54,100),(1211,55,100),(1211,56,100),(1211,57,100),(1211,58,100),(1211,59,100),(1211,60,100),(1211,61,100),(1211,62,100),(1211,178,100),(1211,180,100),(1211,661,100),(1211,1106,100),(1212,51,-100),(1212,52,-100),(1212,53,-100),(1212,54,-100),(1212,55,-100),(1212,56,-100),(1212,57,-100),(1212,58,-100),(1212,59,-100),(1212,60,-100),(1212,61,-100),(1212,62,-100),(1212,178,-100),(1212,180,-100),(1212,661,-100),(1212,1106,-100),(1213,51,-1000),(1213,52,-1000),(1213,53,-1000),(1213,54,-1000),(1213,55,-1000),(1213,56,-1000),(1213,57,-1000),(1213,58,-1000),(1213,59,-1000),(1213,60,-1000),(1213,61,-1000),(1213,62,-1000),(1213,178,-1000),(1213,180,-1000),(1213,661,-1000),(1213,1106,-1000),(1216,51,-1000),(1216,52,-1000),(1216,53,-1000),(1216,54,-1000),(1216,55,-1000),(1216,56,-1000),(1216,57,-1000),(1216,58,-1000),(1216,59,-1000),(1216,60,-1000),(1216,61,-1000),(1216,62,-1000),(1216,178,-1000),(1216,180,-1000),(1216,661,-1000),(1216,1106,-1000),(1220,51,-1000),(1220,52,-1000),(1220,53,-1000),(1220,54,-1000),(1220,55,-1000),(1220,56,-1000),(1220,57,-1000),(1220,58,-1000),(1220,59,-1000),(1220,60,-1000),(1220,61,-1000),(1220,62,-1000),(1220,178,-1000),(1220,180,-1000),(1220,661,-1000),(1220,1106,-1000),(1222,51,-500),(1222,52,-500),(1222,53,-500),(1222,54,-500),(1222,55,-500),(1222,56,-500),(1222,57,-500),(1222,58,-500),(1222,59,-500),(1222,60,-500),(1222,61,-500),(1222,62,-500),(1222,178,-500),(1222,180,-500),(1222,661,-500),(1222,1106,-500),(1223,51,-500),(1223,52,-500),(1223,53,-500),(1223,54,-500),(1223,55,-500),(1223,56,-500),(1223,57,-500),(1223,58,-500),(1223,59,-500),(1223,60,-500),(1223,61,-500),(1223,62,-500),(1223,178,-500),(1223,180,-500),(1223,661,-500),(1223,1106,-500),(1224,51,-500),(1224,52,-500),(1224,53,-500),(1224,54,-500),(1224,55,-500),(1224,56,-500),(1224,57,-500),(1224,58,-500),(1224,59,-500),(1224,60,-500),(1224,61,-500),(1224,62,-500),(1224,178,-500),(1224,180,-500),(1224,661,-500),(1224,1106,-500),(1225,51,-500),(1225,52,-500),(1225,53,-500),(1225,54,-500),(1225,55,-500),(1225,56,-500),(1225,57,-500),(1225,58,-500),(1225,59,-500),(1225,60,-500),(1225,61,-500),(1225,62,-500),(1225,178,-500),(1225,180,-500),(1225,661,-500),(1225,1106,-500),(1226,51,-500),(1226,52,-500),(1226,53,-500),(1226,54,-500),(1226,55,-500),(1226,56,-500),(1226,57,-500),(1226,58,-500),(1226,59,-500),(1226,60,-500),(1226,61,-500),(1226,62,-500),(1226,178,-500),(1226,180,-500),(1226,661,-500),(1226,1106,-500),(1227,51,-500),(1227,52,-500),(1227,53,-500),(1227,54,-500),(1227,55,-500),(1227,56,-500),(1227,57,-500),(1227,58,-500),(1227,59,-500),(1227,60,-500),(1227,61,-500),(1227,62,-500),(1227,178,-500),(1227,180,-500),(1227,661,-500),(1227,1106,-500),(1229,51,-1000),(1229,52,-1000),(1229,53,-1000),(1229,54,-1000),(1229,55,-1000),(1229,56,-1000),(1229,57,-1000),(1229,58,-1000),(1229,59,-1000),(1229,60,-1000),(1229,61,-1000),(1229,62,-1000),(1229,178,-1000),(1229,180,-1000),(1229,661,-1000),(1229,1106,-1000),(1230,51,-1000),(1230,52,-1000),(1230,53,-1000),(1230,54,-1000),(1230,55,-1000),(1230,56,-1000),(1230,57,-1000),(1230,58,-1000),(1230,59,-1000),(1230,60,-1000),(1230,61,-1000),(1230,62,-1000),(1230,178,-1000),(1230,180,-1000),(1230,661,-1000),(1230,1106,-1000),(1232,51,1),(1232,52,1),(1232,53,1),(1232,54,1),(1232,55,1),(1232,56,1),(1232,57,1),(1232,58,1),(1232,59,1),(1232,60,1),(1232,61,1),(1232,62,1),(1232,178,1),(1232,180,1),(1232,661,1),(1232,1106,1),(1233,51,-1000),(1233,52,-1000),(1233,53,-1000),(1233,54,-1000),(1233,55,-1000),(1233,56,-1000),(1233,57,-1000),(1233,58,-1000),(1233,59,-1000),(1233,60,-1000),(1233,61,-1000),(1233,62,-1000),(1233,178,-1000),(1233,180,-1000),(1233,661,-1000),(1233,1106,-1000),(1234,51,1),(1234,52,1),(1234,53,1),(1234,54,1),(1234,55,1),(1234,56,1),(1234,57,1),(1234,58,1),(1234,59,1),(1234,60,1),(1234,61,1),(1234,62,1),(1234,178,1),(1234,180,1),(1234,661,1),(1234,1106,1),(1235,51,-2000),(1235,52,-2000),(1235,53,-2000),(1235,54,-2000),(1235,55,-2000),(1235,56,-2000),(1235,57,-2000),(1235,58,-2000),(1235,59,-2000),(1235,60,-2000),(1235,61,-2000),(1235,62,-2000),(1235,178,-2000),(1235,180,-2000),(1235,661,-2000),(1235,1106,-2000),(1237,51,-2000),(1237,52,-2000),(1237,53,-2000),(1237,54,-2000),(1237,55,-2000),(1237,56,-2000),(1237,57,-2000),(1237,58,-2000),(1237,59,-2000),(1237,60,-2000),(1237,61,-2000),(1237,62,-2000),(1237,178,-2000),(1237,180,-2000),(1237,661,-2000),(1237,1106,-2000),(1238,51,-100),(1238,52,-100),(1238,53,-100),(1238,54,-100),(1238,55,-100),(1238,56,-100),(1238,57,-100),(1238,58,-100),(1238,59,-100),(1238,60,-100),(1238,61,-100),(1238,62,-100),(1238,178,-100),(1238,180,-100),(1238,661,-100),(1238,1106,-100),(1241,51,-750),(1241,52,-750),(1241,53,-750),(1241,54,-750),(1241,55,-750),(1241,56,-750),(1241,57,-750),(1241,58,-750),(1241,59,-750),(1241,60,-750),(1241,61,-750),(1241,62,-750),(1241,178,-750),(1241,180,-750),(1241,661,-750),(1241,1106,-750),(1242,51,-500),(1242,52,-500),(1242,53,-500),(1242,54,-500),(1242,55,-500),(1242,56,-500),(1242,57,-500),(1242,58,-500),(1242,59,-500),(1242,60,-500),(1242,61,-500),(1242,62,-500),(1242,178,-500),(1242,180,-500),(1242,661,-500),(1242,1106,-500),(1243,51,-2000),(1243,52,-2000),(1243,53,-2000),(1243,54,-2000),(1243,55,-2000),(1243,56,-2000),(1243,57,-2000),(1243,58,-2000),(1243,59,-2000),(1243,60,-2000),(1243,61,-2000),(1243,62,-2000),(1243,178,-2000),(1243,180,-2000),(1243,661,-2000),(1243,1106,-2000),(1244,51,-50),(1244,52,-50),(1244,53,-50),(1244,54,-50),(1244,55,-50),(1244,56,-50),(1244,57,-50),(1244,58,-50),(1244,59,-50),(1244,60,-50),(1244,61,-50),(1244,62,-50),(1244,178,-50),(1244,180,-50),(1244,661,-50),(1244,1106,-50),(1483,5,-800),(1483,11,-800),(1483,51,-1000),(1483,52,-1000),(1483,53,-1000),(1483,54,-1000),(1483,55,-1000),(1483,56,-1000),(1483,57,-1000),(1483,58,-1000),(1483,59,-1000),(1483,60,-1000),(1483,61,-1000),(1483,62,-1000),(1483,178,-1000),(1483,180,-1000),(1483,201,-800),(1483,203,-800),(1483,206,-800),(1483,661,-1000),(1483,1106,-1000),(1484,5,-800),(1484,11,-800),(1484,56,-800),(1484,59,-800),(1484,60,-800),(1484,178,-800),(1484,201,-800),(1484,203,-800),(1484,206,-800),(1485,5,-800),(1485,11,-800),(1485,51,-400),(1485,52,-400),(1485,53,-400),(1485,54,-400),(1485,55,-400),(1485,56,-800),(1485,57,-400),(1485,58,-400),(1485,59,-800),(1485,60,-800),(1485,61,-400),(1485,62,-400),(1485,178,-800),(1485,661,-400),(1485,1106,-400),(1486,5,-800),(1486,11,-800),(1486,51,-250),(1486,52,-250),(1486,53,-250),(1486,54,-250),(1486,55,-250),(1486,56,-800),(1486,57,-250),(1486,58,-250),(1486,59,-800),(1486,60,-800),(1486,61,-250),(1486,62,-250),(1486,178,-800),(1486,661,-250),(1486,1106,-250),(1487,5,-800),(1487,11,-800),(1487,56,-800),(1487,59,-800),(1487,60,-800),(1487,178,-800),(1490,51,-1000),(1490,52,-1000),(1490,53,-1000),(1490,54,-1000),(1490,55,-1000),(1490,56,-1000),(1490,57,-1000),(1490,58,-1000),(1490,59,-1000),(1490,60,-1000),(1490,61,-1000),(1490,62,-1000),(1490,178,-1000),(1490,180,-1000),(1490,661,-1000),(1490,1106,-1000),(1491,51,-1000),(1491,52,-1000),(1491,53,-1000),(1491,54,-1000),(1491,55,-1000),(1491,56,-1000),(1491,57,-1000),(1491,58,-1000),(1491,59,-1000),(1491,60,-1000),(1491,61,-1000),(1491,62,-1000),(1491,178,-1000),(1491,180,-1000),(1491,661,-1000),(1491,1106,-1000),(1500,51,-250),(1500,52,-250),(1500,53,-250),(1500,54,-250),(1500,55,-250),(1500,56,-250),(1500,57,-250),(1500,58,-250),(1500,59,-250),(1500,60,-250),(1500,61,-250),(1500,62,-250),(1500,178,-250),(1500,180,-250),(1500,661,-250),(1500,1106,-250),(1501,3,-800),(1501,51,-550),(1501,52,-550),(1501,53,-550),(1501,54,-550),(1501,55,-550),(1501,56,-550),(1501,57,-550),(1501,58,-550),(1501,59,-550),(1501,60,-550),(1501,61,-550),(1501,62,-550),(1501,178,-550),(1501,180,-550),(1501,661,-550),(1501,1106,-550),(1502,5,-550),(1502,11,-550),(1502,56,-400),(1502,59,-400),(1502,60,-400),(1502,178,-400),(1502,201,-550),(1502,203,-550),(1502,206,-550),(1503,5,-550),(1503,11,-550),(1503,56,-400),(1503,59,-400),(1503,60,-400),(1503,178,-400),(1503,201,-550),(1503,203,-550),(1503,206,-550),(1504,5,-550),(1504,11,-550),(1504,56,-400),(1504,59,-400),(1504,60,-400),(1504,178,-400),(1504,201,-550),(1504,203,-550),(1504,206,-550),(1505,1,-200),(1505,2,-400),(1505,3,-400),(1505,4,-200),(1505,5,-200),(1505,6,-200),(1505,7,-200),(1505,8,-200),(1505,9,-200),(1505,10,-200),(1505,11,-200),(1505,12,-200),(1505,13,-200),(1505,14,-200),(1505,15,-200),(1505,16,-200),(1506,1,-800),(1506,2,-800),(1506,3,-800),(1506,4,-800),(1506,5,-500),(1506,6,-800),(1506,7,-800),(1506,8,-800),(1506,9,-800),(1506,10,-800),(1506,11,-500),(1506,12,-800),(1506,13,-800),(1506,14,-800),(1506,15,-800),(1506,16,-800),(1507,1,-800),(1507,2,-800),(1507,3,-800),(1507,4,-800),(1507,5,-500),(1507,6,-800),(1507,7,-800),(1507,8,-800),(1507,9,-800),(1507,10,-800),(1507,11,-500),(1507,12,-800),(1507,13,-800),(1507,14,-800),(1507,15,-800),(1507,16,-800),(1508,51,-50),(1508,52,-50),(1508,53,-50),(1508,54,-50),(1508,55,-50),(1508,56,-100),(1508,57,-50),(1508,58,-50),(1508,59,-100),(1508,60,-100),(1508,61,-50),(1508,62,-50),(1508,178,-100),(1508,180,-50),(1508,661,-50),(1508,1106,-50),(1509,51,-50),(1509,52,-50),(1509,53,-50),(1509,54,-50),(1509,55,-50),(1509,56,-50),(1509,57,-50),(1509,58,-50),(1509,59,-50),(1509,60,-50),(1509,61,-50),(1509,62,-50),(1509,178,-50),(1509,180,-50),(1509,661,-50),(1509,1106,-50),(1510,51,-99),(1510,52,-200),(1510,53,-200),(1510,54,-200),(1510,55,-200),(1510,56,-250),(1510,57,-200),(1510,58,-200),(1510,59,-250),(1510,60,-250),(1510,61,-200),(1510,62,-200),(1510,178,-250),(1510,180,-200),(1510,661,-99),(1510,1106,-99),(1511,7,101),(1511,12,101),(1511,13,101),(1511,14,101),(1511,51,-200),(1511,52,-200),(1511,53,-200),(1511,54,-200),(1511,55,-200),(1511,56,-250),(1511,57,-200),(1511,58,-200),(1511,59,-250),(1511,60,-250),(1511,61,-200),(1511,62,-200),(1511,178,-250),(1511,180,-200),(1511,661,-200),(1511,1106,-200),(1512,51,-200),(1512,52,-200),(1512,53,-200),(1512,54,-200),(1512,55,-200),(1512,56,-250),(1512,57,-200),(1512,58,-99),(1512,59,-250),(1512,60,-250),(1512,61,-99),(1512,62,-99),(1512,178,-250),(1512,180,-200),(1512,661,-200),(1512,1106,-200),(1513,180,1000),(1516,51,-1000),(1516,52,-1000),(1516,53,-1000),(1516,54,-1000),(1516,55,-1000),(1516,56,-1000),(1516,57,-1000),(1516,58,-1000),(1516,59,-1000),(1516,60,-1000),(1516,61,-1000),(1516,62,-1000),(1516,178,-1000),(1516,180,-1000),(1516,661,-1000),(1516,1106,-1000),(1519,51,-1000),(1519,52,-1000),(1519,53,-1000),(1519,54,-1000),(1519,55,-1000),(1519,56,-1000),(1519,57,-1000),(1519,58,-1000),(1519,59,-1000),(1519,60,-1000),(1519,61,-1000),(1519,62,-1000),(1519,178,-1000),(1519,180,-1000),(1519,661,-1000),(1519,1106,-1000),(1520,51,-100),(1520,52,-100),(1520,53,-100),(1520,54,-100),(1520,55,-100),(1520,56,-100),(1520,57,-100),(1520,58,-100),(1520,59,-100),(1520,60,-100),(1520,61,-100),(1520,62,-100),(1520,178,-100),(1520,180,-100),(1520,661,-100),(1520,1106,-100),(1521,51,-2000),(1521,52,-2000),(1521,53,-2000),(1521,54,-2000),(1521,55,-2000),(1521,56,-2000),(1521,57,-2000),(1521,58,-2000),(1521,59,-2000),(1521,60,-2000),(1521,61,-2000),(1521,62,-2000),(1521,178,-2000),(1521,180,-2000),(1521,201,-2000),(1521,202,-2000),(1521,203,-2000),(1521,204,-2000),(1521,205,-2000),(1521,206,-2000),(1521,207,-2000),(1521,208,-2000),(1521,209,-2000),(1521,210,-2000),(1521,211,-2000),(1521,212,-2000),(1521,213,-2000),(1521,214,-2000),(1521,215,-2000),(1521,216,-2000),(1521,661,-2000),(1521,1106,-2000),(1522,1,-50),(1522,2,-50),(1522,3,-800),(1522,4,-800),(1522,5,-50),(1522,6,-800),(1522,7,-800),(1522,8,-50),(1522,9,-50),(1522,10,-50),(1522,11,-50),(1522,12,-50),(1522,13,-50),(1522,14,-50),(1522,15,-50),(1522,16,-50),(1522,51,-50),(1522,52,-50),(1522,53,-50),(1522,54,-800),(1522,55,-800),(1522,56,-50),(1522,57,-50),(1522,58,-800),(1522,59,-50),(1522,60,-50),(1522,61,-800),(1522,62,-50),(1522,178,-50),(1522,180,-50),(1522,201,-50),(1522,202,-800),(1522,203,-50),(1522,204,-800),(1522,205,-50),(1522,206,-50),(1522,207,-800),(1522,208,-800),(1522,209,-800),(1522,210,-800),(1522,211,-50),(1522,212,-800),(1522,213,-50),(1522,214,-800),(1522,215,-800),(1522,216,-50),(1522,661,-50),(1522,1106,-50),(1524,5,-550),(1524,11,-550),(1524,56,-400),(1524,59,-400),(1524,60,-400),(1524,178,-400),(1524,201,-550),(1524,203,-550),(1524,206,-550),(1525,1,-800),(1525,2,-800),(1525,3,-800),(1525,4,-800),(1525,5,-500),(1525,6,-800),(1525,7,-800),(1525,8,-800),(1525,9,-800),(1525,10,-800),(1525,11,-500),(1525,12,-800),(1525,13,-800),(1525,14,-800),(1525,15,-800),(1525,16,-800),(1527,51,-1000),(1527,52,-1000),(1527,53,-1000),(1527,54,-1000),(1527,55,-1000),(1527,56,-1000),(1527,57,-1000),(1527,58,-1000),(1527,59,-1000),(1527,60,-1000),(1527,61,-1000),(1527,62,-1000),(1527,178,-1000),(1527,180,-1000),(1527,661,-1000),(1527,1106,-1000),(1528,51,-1000),(1528,52,-1000),(1528,53,-1000),(1528,54,-1000),(1528,55,-1000),(1528,56,-1000),(1528,57,-1000),(1528,58,-1000),(1528,59,-1000),(1528,60,-1000),(1528,61,-1000),(1528,62,-1000),(1528,178,-1000),(1528,180,-1000),(1528,661,-1000),(1528,1106,-1000),(1529,1,750),(1530,9,750),(1531,8,750),(1532,15,750),(1533,10,750),(1535,51,-1000),(1535,52,-1000),(1535,53,-1000),(1535,54,-1000),(1535,55,-1000),(1535,56,-1000),(1535,57,-1000),(1535,58,-1000),(1535,59,-1000),(1535,60,-1000),(1535,61,-1000),(1535,62,-1000),(1535,178,-1000),(1535,180,-1000),(1535,661,-1000),(1535,1106,-1000),(1537,51,-1),(1537,52,-1),(1537,53,-1),(1537,54,-1),(1537,55,-1),(1537,56,-1),(1537,57,-1),(1537,58,-1),(1537,59,-1),(1537,60,-1),(1537,61,-1),(1537,62,-1),(1537,178,1101),(1537,180,-1),(1537,661,-1),(1537,1106,-1),(1538,5,-450),(1538,11,-450),(1541,54,-450),(1541,56,-450),(1541,59,-450),(1541,60,-450),(1541,178,-450),(1542,1,350),(1542,5,350),(1542,8,450),(1542,9,550),(1542,11,350),(1542,16,350),(1542,51,-350),(1542,52,-350),(1542,53,-350),(1542,54,-350),(1542,55,-350),(1542,56,-99),(1542,57,-350),(1542,58,-350),(1542,59,-99),(1542,60,-99),(1542,61,-350),(1542,62,-350),(1542,178,-99),(1542,180,-350),(1542,201,300),(1542,203,300),(1542,206,300),(1542,661,-350),(1542,1106,-350),(1543,216,450),(1544,202,450),(1545,213,450),(1546,209,450),(1547,51,-250),(1547,52,-250),(1547,53,-250),(1547,54,-250),(1547,55,-250),(1547,56,-250),(1547,57,-250),(1547,58,-250),(1547,59,-250),(1547,60,-250),(1547,61,-250),(1547,62,-250),(1547,178,-250),(1547,180,-250),(1547,661,-250),(1547,1106,-250),(1552,180,250),(1555,51,-550),(1555,52,-550),(1555,53,-550),(1555,54,-550),(1555,55,-550),(1555,56,-550),(1555,57,-550),(1555,58,-550),(1555,59,-550),(1555,60,-550),(1555,61,-550),(1555,62,-550),(1555,178,-550),(1555,180,-550),(1555,661,-550),(1555,1106,-550),(1556,51,-400),(1556,52,-400),(1556,53,-400),(1556,54,-400),(1556,55,-400),(1556,56,-400),(1556,57,-400),(1556,58,-400),(1556,59,-400),(1556,60,-400),(1556,61,-400),(1556,62,-400),(1556,178,-400),(1556,180,-400),(1556,661,-400),(1556,1106,-400),(1559,1,-800),(1559,2,-800),(1559,3,-800),(1559,4,-800),(1559,5,-800),(1559,6,-800),(1559,7,-800),(1559,8,-450),(1559,9,-50),(1559,10,-800),(1559,11,-800),(1559,12,-800),(1559,13,-800),(1559,14,-800),(1559,15,-800),(1559,16,-800),(1561,5,-550),(1561,11,-550),(1561,56,-400),(1561,59,-400),(1561,60,-400),(1561,178,-400),(1561,201,-550),(1561,203,-550),(1561,206,-550),(1562,51,-1000),(1562,52,-1000),(1562,53,-1000),(1562,54,-1000),(1562,55,-1000),(1562,56,-1000),(1562,57,-1000),(1562,58,-1000),(1562,59,-1000),(1562,60,-1000),(1562,61,-1000),(1562,62,-1000),(1562,178,-1000),(1562,180,-1000),(1562,661,-1000),(1562,1106,-1000),(1563,51,-99),(1563,52,-99),(1563,53,-99),(1563,54,-99),(1563,55,-99),(1563,56,-99),(1563,57,-99),(1563,58,-99),(1563,59,-99),(1563,60,-99),(1563,61,-99),(1563,62,-99),(1563,178,-99),(1563,180,-99),(1563,661,-99),(1563,1106,-99),(1564,51,-1000),(1564,52,-1000),(1564,53,-1000),(1564,54,-1000),(1564,55,-1000),(1564,56,-1000),(1564,57,-1000),(1564,58,-1000),(1564,59,-1000),(1564,60,-1000),(1564,61,-1000),(1564,62,-1000),(1564,178,-1000),(1564,180,-1000),(1564,661,-1000),(1564,1106,-1000),(1565,51,-99),(1565,52,-99),(1565,53,-99),(1565,54,-99),(1565,55,-99),(1565,56,-99),(1565,57,-99),(1565,58,-99),(1565,59,-99),(1565,60,-99),(1565,61,-99),(1565,62,-99),(1565,178,-99),(1565,180,-99),(1565,661,-99),(1565,1106,-99),(1568,51,-1000),(1568,52,-1000),(1568,53,-1000),(1568,54,-1000),(1568,55,-1000),(1568,56,-1000),(1568,57,-1000),(1568,58,-1000),(1568,59,-1000),(1568,60,-1000),(1568,61,-1000),(1568,62,-1000),(1568,178,-1000),(1568,180,-1000),(1568,661,-1000),(1568,1106,-1000),(1570,5,350),(1570,11,350),(1570,51,-800),(1570,52,-800),(1570,53,-800),(1570,54,-800),(1570,55,-800),(1570,56,-800),(1570,57,-800),(1570,58,-800),(1570,59,-800),(1570,60,-800),(1570,61,-800),(1570,62,-800),(1570,178,-800),(1570,180,-800),(1570,661,-800),(1570,1106,-800),(1571,51,-1000),(1571,52,-1000),(1571,53,-1000),(1571,54,-1000),(1571,55,-1000),(1571,56,-1000),(1571,57,-1000),(1571,58,-1000),(1571,59,-1000),(1571,60,-1000),(1571,61,-1000),(1571,62,-1000),(1571,178,-1000),(1571,180,-1000),(1571,661,-1000),(1571,1106,-1000),(1573,51,-250),(1573,52,-250),(1573,53,-250),(1573,54,-250),(1573,55,-250),(1573,56,-250),(1573,57,-250),(1573,58,-250),(1573,59,-250),(1573,60,-250),(1573,61,-250),(1573,62,-250),(1573,178,-250),(1573,180,-250),(1573,661,-250),(1573,1106,-250),(1574,51,-800),(1574,52,-800),(1574,53,-800),(1574,54,-800),(1574,55,-800),(1574,56,-800),(1574,57,-800),(1574,58,-800),(1574,59,-800),(1574,60,-800),(1574,61,-800),(1574,62,-800),(1574,178,-800),(1574,180,-800),(1574,201,550),(1574,203,550),(1574,206,550),(1574,211,550),(1574,661,-800),(1574,1106,-800),(1582,1,-550),(1582,2,500),(1582,5,-550),(1582,6,200),(1582,7,-550),(1582,9,-550),(1582,10,200),(1582,11,-550),(1582,12,-550),(1582,13,-550),(1582,14,-550),(1582,16,-550),(1583,51,-800),(1583,52,-800),(1583,53,-800),(1583,54,-800),(1583,55,-800),(1583,56,-800),(1583,57,-800),(1583,58,-800),(1583,59,-800),(1583,60,-800),(1583,61,-800),(1583,62,-800),(1583,178,-800),(1583,180,-800),(1583,661,-800),(1583,1106,-800),(1584,180,751),(1587,51,-1000),(1587,52,-1000),(1587,53,-1000),(1587,54,-1000),(1587,55,-1000),(1587,56,-1000),(1587,57,-1000),(1587,58,-1000),(1587,59,-1000),(1587,60,-1000),(1587,61,-1000),(1587,62,-1000),(1587,178,-1000),(1587,180,-1000),(1587,661,-1000),(1587,1106,-1000),(1593,56,-450),(1593,59,-450),(1593,60,-450),(1593,178,-800),(1593,201,-1000),(1593,203,-1000),(1593,206,-1000),(1593,211,-450),(1597,52,-20),(1597,56,-350),(1597,59,-750),(1597,60,-750),(1597,178,-750),(1597,180,-50),(1597,201,-350),(1597,203,-350),(1597,206,-350),(1597,207,100),(1597,209,50),(1597,211,-80),(1597,215,50),(1598,51,-50),(1598,52,-50),(1598,53,-50),(1598,54,-50),(1598,55,-50),(1598,56,-50),(1598,57,-50),(1598,58,-50),(1598,59,-50),(1598,60,-50),(1598,61,-50),(1598,62,-50),(1598,178,-50),(1598,180,-50),(1598,202,100),(1598,661,-50),(1598,1106,-50),(1599,51,-1000),(1599,52,-1000),(1599,53,-1000),(1599,54,-1000),(1599,55,-1000),(1599,56,-1000),(1599,57,-1000),(1599,58,-1000),(1599,59,-1000),(1599,60,-1000),(1599,61,-1000),(1599,62,-1000),(1599,178,-1000),(1599,180,-1000),(1599,661,-1000),(1599,1106,-1000),(1600,51,-1000),(1600,52,-1000),(1600,53,-1000),(1600,54,-1000),(1600,55,-1000),(1600,56,-1000),(1600,57,-1000),(1600,58,-1000),(1600,59,-1000),(1600,60,-1000),(1600,61,-1000),(1600,62,-1000),(1600,178,-1000),(1600,180,-1000),(1600,661,-1000),(1600,1106,-1000),(1601,9,100),(1601,51,-475),(1601,52,-475),(1601,53,-475),(1601,54,-475),(1601,55,-475),(1601,56,-475),(1601,57,-475),(1601,58,-475),(1601,59,-475),(1601,60,-475),(1601,61,-475),(1601,62,-475),(1601,178,-475),(1601,180,-475),(1601,661,-475),(1601,1106,-475),(1603,51,-75),(1603,52,-75),(1603,53,-75),(1603,54,-75),(1603,55,-75),(1603,56,-75),(1603,57,-75),(1603,58,-75),(1603,59,-75),(1603,60,-75),(1603,61,-75),(1603,62,-75),(1603,178,-75),(1603,180,-75),(1603,201,-400),(1603,203,-400),(1603,206,-400),(1603,207,75),(1603,209,75),(1603,215,75),(1603,661,-75),(1603,1106,-75),(1605,51,50),(1605,52,50),(1605,53,50),(1605,54,50),(1605,55,50),(1605,56,50),(1605,57,50),(1605,58,50),(1605,59,50),(1605,60,50),(1605,61,50),(1605,62,50),(1605,178,50),(1605,180,50),(1605,661,50),(1605,1106,50),(1607,51,-1000),(1607,52,-1000),(1607,53,-1000),(1607,54,-1000),(1607,55,-1000),(1607,56,-1000),(1607,57,-1000),(1607,58,-1000),(1607,59,-1000),(1607,60,-1000),(1607,61,-1000),(1607,62,-1000),(1607,178,-1000),(1607,180,-1000),(1607,661,-1000),(1607,1106,-1000),(1609,207,200),(1610,51,-1000),(1610,52,-1000),(1610,53,-1000),(1610,54,-1000),(1610,55,-1000),(1610,56,-1000),(1610,57,-1000),(1610,58,-1000),(1610,59,-1000),(1610,60,-1000),(1610,61,-1000),(1610,62,-1000),(1610,178,-1000),(1610,180,-1000),(1610,661,-1000),(1610,1106,-1000),(1611,51,-1000),(1611,52,-1000),(1611,53,-1000),(1611,54,-1000),(1611,55,-1000),(1611,56,-1000),(1611,57,-1000),(1611,58,-1000),(1611,59,-1000),(1611,60,-1000),(1611,61,-1000),(1611,62,-1000),(1611,178,-1000),(1611,180,-1000),(1611,661,-1000),(1611,1106,-1000),(1612,51,-1000),(1612,52,-1000),(1612,53,-1000),(1612,54,-1000),(1612,55,-1000),(1612,56,-1000),(1612,57,-1000),(1612,58,-1000),(1612,59,-1000),(1612,60,-1000),(1612,61,-1000),(1612,62,-1000),(1612,178,-1000),(1612,180,-1000),(1612,661,-1000),(1612,1106,-1000),(1613,51,-1000),(1613,52,-1000),(1613,53,-1000),(1613,54,-1000),(1613,55,-1000),(1613,56,-1000),(1613,57,-1000),(1613,58,-1000),(1613,59,-1000),(1613,60,-1000),(1613,61,-1000),(1613,62,-1000),(1613,178,-1000),(1613,180,-1000),(1613,661,-1000),(1613,1106,-1000),(1618,51,-1000),(1618,52,-1000),(1618,53,-1000),(1618,54,-1000),(1618,55,-1000),(1618,56,-1000),(1618,57,-1000),(1618,58,-1000),(1618,59,-1000),(1618,60,-1000),(1618,61,-1000),(1618,62,-1000),(1618,178,-1000),(1618,180,-1000),(1618,661,-1000),(1618,1106,-1000),(1620,51,-250),(1620,52,-450),(1620,53,-250),(1620,55,-50),(1620,56,-500),(1620,57,-250),(1620,58,-250),(1620,59,-500),(1620,60,-500),(1620,61,-50),(1620,62,-250),(1620,178,-500),(1620,180,-250),(1620,661,-250),(1620,1106,-250),(1621,51,-1000),(1621,52,-1000),(1621,53,-1000),(1621,54,-1000),(1621,55,-1000),(1621,56,-1000),(1621,57,-1000),(1621,58,-1000),(1621,59,-1000),(1621,60,-1000),(1621,61,-1000),(1621,62,-1000),(1621,178,-1000),(1621,180,-1000),(1621,661,-1000),(1621,1106,-1000),(1622,51,-480),(1622,52,-480),(1622,53,-480),(1622,54,-480),(1622,55,-480),(1622,56,-480),(1622,57,-480),(1622,58,-480),(1622,59,-480),(1622,60,-480),(1622,61,-480),(1622,62,-480),(1622,178,-480),(1622,180,-480),(1622,661,-480),(1622,1106,-480),(1623,51,-1000),(1623,52,-1000),(1623,53,-1000),(1623,54,-1000),(1623,55,-1000),(1623,56,-1000),(1623,57,-1000),(1623,58,-1000),(1623,59,-1000),(1623,60,-1000),(1623,61,-1000),(1623,62,-1000),(1623,178,-1000),(1623,180,-1000),(1623,661,-1000),(1623,1106,-1000),(1624,51,-1000),(1624,52,-1000),(1624,53,-1000),(1624,54,-1000),(1624,55,-1000),(1624,56,-1000),(1624,57,-1000),(1624,58,-1000),(1624,59,-1000),(1624,60,-1000),(1624,61,-1000),(1624,62,-1000),(1624,178,-1000),(1624,180,-1000),(1624,661,-1000),(1624,1106,-1000),(1627,51,-95),(1627,52,-95),(1627,53,-95),(1627,54,-95),(1627,55,-95),(1627,56,-95),(1627,57,-95),(1627,58,-95),(1627,59,-95),(1627,60,-95),(1627,61,-95),(1627,62,-95),(1627,178,-95),(1627,180,-95),(1627,661,-95),(1627,1106,-95),(1628,51,-700),(1628,52,-700),(1628,53,-700),(1628,54,-700),(1628,55,-700),(1628,56,-700),(1628,57,-700),(1628,58,-700),(1628,59,-700),(1628,60,-700),(1628,61,-700),(1628,62,-700),(1628,178,-700),(1628,180,-700),(1628,661,-700),(1628,1106,-700),(1629,51,-1000),(1629,52,-1000),(1629,53,-1000),(1629,54,-1000),(1629,55,-1000),(1629,56,-1000),(1629,57,-1000),(1629,58,-1000),(1629,59,-1000),(1629,60,-1000),(1629,61,-1000),(1629,62,-1000),(1629,178,-1000),(1629,180,-1000),(1629,661,-1000),(1629,1106,-1000),(1630,1,-600),(1630,2,-600),(1630,3,-600),(1630,4,-600),(1630,5,-500),(1630,6,-600),(1630,7,-600),(1630,8,-600),(1630,9,-600),(1630,10,-600),(1630,11,-500),(1630,12,-600),(1630,13,-600),(1630,14,-600),(1630,15,-600),(1630,16,-600),(1630,213,100),(1633,51,-1000),(1633,52,-1000),(1633,53,-1000),(1633,54,-1000),(1633,55,-1000),(1633,56,-1000),(1633,57,-1000),(1633,58,-1000),(1633,59,-1000),(1633,60,-1000),(1633,61,-1000),(1633,62,-1000),(1633,178,-1000),(1633,180,-1000),(1633,661,-1000),(1633,1106,-1000),(1643,51,-1000),(1643,52,-1000),(1643,53,-1000),(1643,54,-1000),(1643,55,-1000),(1643,56,-1000),(1643,57,-1000),(1643,58,-1000),(1643,59,-1000),(1643,60,-1000),(1643,61,-1000),(1643,62,-1000),(1643,178,-1000),(1643,180,-1000),(1643,211,450),(1643,661,-1000),(1643,1106,-1000),(1659,51,-1000),(1659,52,-1000),(1659,53,-1000),(1659,54,-1000),(1659,55,-1000),(1659,56,-1000),(1659,57,-1000),(1659,58,-1000),(1659,59,-1000),(1659,60,-1000),(1659,61,-1000),(1659,62,-1000),(1659,178,-1000),(1659,180,-1000),(1659,661,-1000),(1659,1106,-1000),(1660,51,-1000),(1660,52,-1000),(1660,53,-1000),(1660,54,-1000),(1660,55,-1000),(1660,56,-1000),(1660,57,-1000),(1660,58,-1000),(1660,59,-1000),(1660,60,-1000),(1660,61,-1000),(1660,62,-1000),(1660,178,-1000),(1660,180,-1000),(1660,661,-1000),(1660,1106,-1000),(1665,51,-1000),(1665,52,-1000),(1665,53,-1000),(1665,54,-1000),(1665,55,-1000),(1665,56,-1000),(1665,57,-1000),(1665,58,-1000),(1665,59,-1000),(1665,60,-1000),(1665,61,-1000),(1665,62,-1000),(1665,178,-1000),(1665,180,-1000),(1665,201,-500),(1665,202,-500),(1665,203,-500),(1665,204,-500),(1665,205,-500),(1665,206,-500),(1665,207,-500),(1665,208,-500),(1665,209,-500),(1665,210,-500),(1665,211,-500),(1665,212,-500),(1665,213,-500),(1665,214,-500),(1665,215,-500),(1665,216,-500),(1665,661,-1000),(1665,1106,-1000),(1671,51,-400),(1671,52,-400),(1671,53,-400),(1671,54,-400),(1671,55,-400),(1671,56,-400),(1671,57,-400),(1671,58,-400),(1671,59,-400),(1671,60,-400),(1671,61,-400),(1671,62,-400),(1671,178,-400),(1671,180,-400),(1671,661,-400),(1671,1106,-400),(1674,51,-1000),(1674,52,-1000),(1674,53,-1000),(1674,54,-1000),(1674,55,-1000),(1674,56,-1000),(1674,57,-1000),(1674,58,-1000),(1674,59,-1000),(1674,60,-1000),(1674,61,-1000),(1674,62,-1000),(1674,178,-1000),(1674,180,-1000),(1674,661,-1000),(1674,1106,-1000),(1675,51,-1000),(1675,52,-1000),(1675,53,-1000),(1675,54,-1000),(1675,55,-1000),(1675,56,-1000),(1675,57,-1000),(1675,58,-1000),(1675,59,-1000),(1675,60,-1000),(1675,61,-1000),(1675,62,-1000),(1675,178,-1000),(1675,180,-1000),(1675,661,-1000),(1675,1106,-1000),(1676,51,-1000),(1676,52,-1000),(1676,53,-1000),(1676,54,-1000),(1676,55,-1000),(1676,56,-1000),(1676,57,-1000),(1676,58,-1000),(1676,59,-1000),(1676,60,-1000),(1676,61,-1000),(1676,62,-1000),(1676,178,-1000),(1676,180,-1000),(1676,661,-1000),(1676,1106,-1000),(1677,51,-100),(1677,52,-100),(1677,53,-100),(1677,54,-100),(1677,55,-100),(1677,56,-100),(1677,57,-100),(1677,58,-100),(1677,59,-100),(1677,60,-100),(1677,61,-100),(1677,62,-100),(1677,178,-100),(1677,180,-100),(1677,661,-100),(1677,1106,-100),(1679,51,-100),(1679,52,-100),(1679,53,-100),(1679,54,-100),(1679,55,-100),(1679,56,-100),(1679,57,-100),(1679,58,-100),(1679,59,-100),(1679,60,-100),(1679,61,-100),(1679,62,-100),(1679,178,-100),(1679,180,-100),(1679,661,-100),(1679,1106,-100),(1680,51,-300),(1680,52,-300),(1680,53,-300),(1680,54,-300),(1680,55,-300),(1680,56,-300),(1680,57,-300),(1680,58,-300),(1680,59,-300),(1680,60,-300),(1680,61,-300),(1680,62,-300),(1680,178,-300),(1680,180,-300),(1680,661,-300),(1680,1106,-300),(1681,51,-300),(1681,52,-300),(1681,53,-300),(1681,54,-300),(1681,55,-300),(1681,56,-300),(1681,57,-300),(1681,58,-300),(1681,59,-300),(1681,60,-300),(1681,61,-300),(1681,62,-300),(1681,178,-300),(1681,180,-300),(1681,661,-300),(1681,1106,-300),(1701,51,-1000),(1701,52,-1000),(1701,53,-1000),(1701,54,-1000),(1701,55,-1000),(1701,56,-1000),(1701,57,-1000),(1701,58,-1000),(1701,59,-1000),(1701,60,-1000),(1701,61,-1000),(1701,62,-1000),(1701,178,-1000),(1701,180,-1000),(1701,661,-1000),(1701,1106,-1000),(1703,51,-1000),(1703,52,-1000),(1703,53,-1000),(1703,54,-1000),(1703,55,-1000),(1703,56,-1000),(1703,57,-1000),(1703,58,-1000),(1703,59,-1000),(1703,60,-1000),(1703,61,-1000),(1703,62,-1000),(1703,178,-1000),(1703,180,-1000),(1703,661,-1000),(1703,1106,-1000),(1704,56,-1000),(1704,59,-1000),(1704,60,-1000),(1704,178,-1000),(1704,208,100),(1709,56,-1000),(1709,59,-1000),(1709,60,-1000),(1709,178,-1000),(1711,56,-1000),(1711,59,-1000),(1711,60,-1000),(1711,178,-1000),(1712,56,-1000),(1712,59,-1000),(1712,60,-1000),(1712,178,-1000),(1713,56,-1000),(1713,59,-1000),(1713,60,-1000),(1713,178,-1000),(1714,56,-1000),(1714,59,-1000),(1714,60,-1000),(1714,178,-1000),(1715,56,-1000),(1715,59,-1000),(1715,60,-1000),(1715,178,-1000),(1716,56,-1000),(1716,59,-1000),(1716,60,-1000),(1716,178,-1000),(1716,661,100),(1717,56,-1000),(1717,59,-1000),(1717,60,-1000),(1717,178,-1000),(1717,661,100),(1718,56,-1000),(1718,59,-1000),(1718,60,-1000),(1718,178,-1000),(1718,661,100),(1719,56,-1000),(1719,59,-1000),(1719,60,-1000),(1719,178,-1000),(1720,56,-1000),(1720,59,-1000),(1720,60,-1000),(1720,178,-1000),(1720,208,50),(1720,661,100),(1722,51,-1000),(1722,52,-1000),(1722,53,-1000),(1722,54,-1000),(1722,55,-1000),(1722,56,-1000),(1722,57,-1000),(1722,58,-1000),(1722,59,-1000),(1722,60,-1000),(1722,61,-1000),(1722,62,-1000),(1722,178,-1000),(1722,180,-1000),(1722,661,-1000),(1722,1106,-1000),(1728,51,-1000),(1728,52,-1000),(1728,53,-1000),(1728,54,-1000),(1728,55,-1000),(1728,56,-1000),(1728,57,-1000),(1728,58,-1000),(1728,59,-1000),(1728,60,-1000),(1728,61,-1000),(1728,62,-1000),(1728,178,-1000),(1728,180,-1000),(1728,661,-1000),(1728,1106,-1000),(1729,51,-1000),(1729,52,-1000),(1729,53,-1000),(1729,54,-1000),(1729,55,-1000),(1729,56,-1000),(1729,57,-1000),(1729,58,-1000),(1729,59,-1000),(1729,60,-1000),(1729,61,-1000),(1729,62,-1000),(1729,178,-1000),(1729,180,-1000),(1729,661,-1000),(1729,1106,-1000),(1732,51,-1000),(1732,52,-1000),(1732,53,-1000),(1732,54,-1000),(1732,55,-1000),(1732,56,-1000),(1732,57,-1000),(1732,58,-1000),(1732,59,-1000),(1732,60,-1000),(1732,61,-1000),(1732,62,-1000),(1732,178,-1000),(1732,180,-1000),(1732,661,-1000),(1732,1106,-1000),(1733,51,-1000),(1733,52,-1000),(1733,53,-1000),(1733,54,-1000),(1733,55,-1000),(1733,56,-1000),(1733,57,-1000),(1733,58,-1000),(1733,59,-1000),(1733,60,-1000),(1733,61,-1000),(1733,62,-1000),(1733,178,-1000),(1733,180,-1000),(1733,661,-1000),(1733,1106,-1000),(1734,51,-1000),(1734,52,-1000),(1734,53,-1000),(1734,54,-1000),(1734,55,-1000),(1734,56,-1000),(1734,57,-1000),(1734,58,-1000),(1734,59,-1000),(1734,60,-1000),(1734,61,-1000),(1734,62,-1000),(1734,178,-1000),(1734,180,-1000),(1734,661,-1000),(1734,1106,-1000),(1735,51,-1000),(1735,52,-1000),(1735,53,-1000),(1735,54,-1000),(1735,55,-1000),(1735,56,-1000),(1735,57,-1000),(1735,58,-1000),(1735,59,-1000),(1735,60,-1000),(1735,61,-1000),(1735,62,-1000),(1735,178,-1000),(1735,180,-1000),(1735,661,-1000),(1735,1106,-1000),(1736,51,-1000),(1736,52,-1000),(1736,53,-1000),(1736,54,-1000),(1736,55,-1000),(1736,56,-1000),(1736,57,-1000),(1736,58,-1000),(1736,59,-1000),(1736,60,-1000),(1736,61,-1000),(1736,62,-1000),(1736,178,-1000),(1736,180,-1000),(1736,661,-1000),(1736,1106,-1000),(1737,51,-1000),(1737,52,-1000),(1737,53,-1000),(1737,54,-1000),(1737,55,-1000),(1737,56,-1000),(1737,57,-1000),(1737,58,-1000),(1737,59,-1000),(1737,60,-1000),(1737,61,-1000),(1737,62,-1000),(1737,178,-1000),(1737,180,-1000),(1737,661,-1000),(1737,1106,-1000),(1738,51,-1000),(1738,52,-1000),(1738,53,-1000),(1738,54,-1000),(1738,55,-1000),(1738,56,-1000),(1738,57,-1000),(1738,58,-1000),(1738,59,-1000),(1738,60,-1000),(1738,61,-1000),(1738,62,-1000),(1738,178,-1000),(1738,180,-1000),(1738,661,-1000),(1738,1106,-1000),(1741,51,-1000),(1741,52,-1000),(1741,53,-1000),(1741,54,-1000),(1741,55,-1000),(1741,56,-1000),(1741,57,-1000),(1741,58,-1000),(1741,59,-1000),(1741,60,-1000),(1741,61,-1000),(1741,62,-1000),(1741,178,-1000),(1741,180,-1000),(1741,661,-1000),(1741,1106,-1000),(1742,51,-1000),(1742,52,-1000),(1742,53,-1000),(1742,54,-1000),(1742,55,-1000),(1742,56,-1000),(1742,57,-1000),(1742,58,-1000),(1742,59,-1000),(1742,60,-1000),(1742,61,-1000),(1742,62,-1000),(1742,178,-1000),(1742,180,-1000),(1742,661,-1000),(1742,1106,-1000),(1743,51,-1000),(1743,52,-1000),(1743,53,-1000),(1743,54,-1000),(1743,55,-1000),(1743,56,-1000),(1743,57,-1000),(1743,58,-1000),(1743,59,-1000),(1743,60,-1000),(1743,61,-1000),(1743,62,-1000),(1743,178,-1000),(1743,180,-1000),(1743,661,-1000),(1743,1106,-1000),(1744,51,-1000),(1744,52,-1000),(1744,53,-1000),(1744,54,-1000),(1744,55,-1000),(1744,56,-1000),(1744,57,-1000),(1744,58,-1000),(1744,59,-1000),(1744,60,-1000),(1744,61,-1000),(1744,62,-1000),(1744,178,-1000),(1744,180,-1000),(1744,661,-1000),(1744,1106,-1000),(1745,51,-1000),(1745,52,-1000),(1745,53,-1000),(1745,54,-1000),(1745,55,-1000),(1745,56,-1000),(1745,57,-1000),(1745,58,-1000),(1745,59,-1000),(1745,60,-1000),(1745,61,-1000),(1745,62,-1000),(1745,178,-1000),(1745,180,-1000),(1745,661,-1000),(1745,1106,-1000),(1746,51,-1000),(1746,52,-1000),(1746,53,-1000),(1746,54,-1000),(1746,55,-1000),(1746,56,-1000),(1746,57,-1000),(1746,58,-1000),(1746,59,-1000),(1746,60,-1000),(1746,61,-1000),(1746,62,-1000),(1746,178,-1000),(1746,180,-1000),(1746,661,-1000),(1746,1106,-1000),(1747,51,-1000),(1747,52,-1000),(1747,53,-1000),(1747,54,-1000),(1747,55,-1000),(1747,56,-1000),(1747,57,-1000),(1747,58,-1000),(1747,59,-1000),(1747,60,-1000),(1747,61,-1000),(1747,62,-1000),(1747,178,-1000),(1747,180,-1000),(1747,661,-1000),(1747,1106,-1000),(1748,51,-1000),(1748,52,-1000),(1748,53,-1000),(1748,54,-1000),(1748,55,-1000),(1748,56,-1000),(1748,57,-1000),(1748,58,-1000),(1748,59,-1000),(1748,60,-1000),(1748,61,-1000),(1748,62,-1000),(1748,178,-1000),(1748,180,-1000),(1748,661,-1000),(1748,1106,-1000),(1749,51,-1000),(1749,52,-1000),(1749,53,-1000),(1749,54,-1000),(1749,55,-1000),(1749,56,-1000),(1749,57,-1000),(1749,58,-1000),(1749,59,-1000),(1749,60,-1000),(1749,61,-1000),(1749,62,-1000),(1749,178,-1000),(1749,180,-1000),(1749,661,-1000),(1749,1106,-1000),(1750,51,-1000),(1750,52,-1000),(1750,53,-1000),(1750,54,-1000),(1750,55,-1000),(1750,56,-1000),(1750,57,-1000),(1750,58,-1000),(1750,59,-1000),(1750,60,-1000),(1750,61,-1000),(1750,62,-1000),(1750,178,-1000),(1750,180,-1000),(1750,661,-1000),(1750,1106,-1000),(1755,51,-1000),(1755,52,-1000),(1755,53,-1000),(1755,54,-1000),(1755,55,-1000),(1755,56,-1000),(1755,57,-1000),(1755,58,-1000),(1755,59,-1000),(1755,60,-1000),(1755,61,-1000),(1755,62,-1000),(1755,178,-1000),(1755,180,-1000),(1755,661,-1000),(1755,1106,-1000),(1758,51,100),(1758,52,100),(1758,53,100),(1758,54,100),(1758,55,100),(1758,56,100),(1758,57,100),(1758,58,100),(1758,59,100),(1758,60,100),(1758,61,100),(1758,62,100),(1758,178,100),(1758,180,100),(1758,661,100),(1758,1106,100),(1759,51,-100),(1759,52,-100),(1759,53,-100),(1759,54,-100),(1759,55,-100),(1759,56,-100),(1759,57,-100),(1759,58,-100),(1759,59,-100),(1759,60,-100),(1759,61,-100),(1759,62,-100),(1759,178,-100),(1759,180,-100),(1759,661,-100),(1759,1106,-100),(1761,51,-100),(1761,52,-100),(1761,53,-100),(1761,54,-100),(1761,55,-100),(1761,56,-100),(1761,57,-100),(1761,58,-100),(1761,59,-100),(1761,60,-100),(1761,61,-100),(1761,62,-100),(1761,178,-100),(1761,180,-100),(1761,661,-100),(1761,1106,-100),(1762,51,-1000),(1762,52,-1000),(1762,53,-1000),(1762,54,-1000),(1762,55,-1000),(1762,56,-1000),(1762,57,-1000),(1762,58,-1000),(1762,59,-1000),(1762,60,-1000),(1762,61,-1000),(1762,62,-1000),(1762,178,-1000),(1762,180,-1000),(1762,661,-1000),(1762,1106,-1000),(1763,51,-1001),(1763,52,-1001),(1763,53,-1001),(1763,54,-1001),(1763,55,-1001),(1763,56,-1001),(1763,57,-1001),(1763,58,-1001),(1763,59,-1001),(1763,60,-1001),(1763,61,-1001),(1763,62,-1001),(1763,178,-1001),(1763,180,-1001),(1763,661,-1001),(1763,1106,-1001),(1764,51,-1000),(1764,52,-1000),(1764,53,-1000),(1764,54,-1000),(1764,55,-1000),(1764,56,-1000),(1764,57,-1000),(1764,58,-1000),(1764,59,-1000),(1764,60,-1000),(1764,61,-1000),(1764,62,-1000),(1764,178,-1000),(1764,180,-1000),(1764,661,-1000),(1764,1106,-1000),(1765,51,-1000),(1765,52,-1000),(1765,53,-1000),(1765,54,-1000),(1765,55,-1000),(1765,56,-1000),(1765,57,-1000),(1765,58,-1000),(1765,59,-1000),(1765,60,-1000),(1765,61,-1000),(1765,62,-1000),(1765,178,-1000),(1765,180,-1000),(1765,661,-1000),(1765,1106,-1000),(1766,51,-1000),(1766,52,-1000),(1766,53,-1000),(1766,54,-1000),(1766,55,-1000),(1766,56,-1000),(1766,57,-1000),(1766,58,-1000),(1766,59,-1000),(1766,60,-1000),(1766,61,-1000),(1766,62,-1000),(1766,178,-1000),(1766,180,-1000),(1766,661,-1000),(1766,1106,-1000),(1767,51,-1000),(1767,52,-1000),(1767,53,-1000),(1767,54,-1000),(1767,55,-1000),(1767,56,-1000),(1767,57,-1000),(1767,58,-1000),(1767,59,-1000),(1767,60,-1000),(1767,61,-1000),(1767,62,-1000),(1767,178,-1000),(1767,180,-1000),(1767,661,-1000),(1767,1106,-1000),(1768,51,-1000),(1768,52,-1000),(1768,53,-1000),(1768,54,-1000),(1768,55,-1000),(1768,56,-1000),(1768,57,-1000),(1768,58,-1000),(1768,59,-1000),(1768,60,-1000),(1768,61,-1000),(1768,62,-1000),(1768,178,-1000),(1768,180,-1000),(1768,661,-1000),(1768,1106,-1000),(1770,51,-400),(1770,52,-400),(1770,53,-400),(1770,54,-400),(1770,55,-400),(1770,56,-400),(1770,57,-400),(1770,58,-400),(1770,59,-400),(1770,60,-400),(1770,61,-400),(1770,62,-400),(1770,178,-400),(1770,180,-400),(1770,661,-400),(1770,1106,-400),(1771,51,-750),(1771,52,-750),(1771,53,-750),(1771,54,-750),(1771,55,-750),(1771,56,-750),(1771,57,-750),(1771,58,-750),(1771,59,-750),(1771,60,-750),(1771,61,-750),(1771,62,-750),(1771,178,-750),(1771,180,-750),(1771,661,-750),(1771,1106,-750),(1775,51,50),(1775,52,50),(1775,53,50),(1775,54,50),(1775,55,50),(1775,56,50),(1775,57,50),(1775,58,50),(1775,59,50),(1775,60,50),(1775,61,50),(1775,62,50),(1775,178,50),(1775,180,50),(1775,661,50),(1775,1106,50),(1777,51,-2000),(1777,52,-2000),(1777,53,-2000),(1777,54,-2000),(1777,55,-2000),(1777,56,-2000),(1777,57,-2000),(1777,58,-2000),(1777,59,-2000),(1777,60,-2000),(1777,61,-2000),(1777,62,-2000),(1777,178,-2000),(1777,180,-2000),(1777,661,-2000),(1777,1106,-2000),(1778,51,10),(1778,52,10),(1778,53,10),(1778,54,10),(1778,55,10),(1778,56,10),(1778,57,10),(1778,58,10),(1778,59,10),(1778,60,10),(1778,61,10),(1778,62,10),(1778,178,10),(1778,180,10),(1778,661,10),(1778,1106,10),(1779,51,30),(1779,52,30),(1779,53,30),(1779,54,30),(1779,55,30),(1779,56,30),(1779,57,30),(1779,58,30),(1779,59,30),(1779,60,30),(1779,61,30),(1779,62,30),(1779,178,30),(1779,180,30),(1779,661,30),(1779,1106,30),(1780,51,90),(1780,52,90),(1780,53,90),(1780,54,90),(1780,55,90),(1780,56,90),(1780,57,90),(1780,58,90),(1780,59,90),(1780,60,90),(1780,61,90),(1780,62,90),(1780,178,90),(1780,180,90),(1780,661,90),(1780,1106,90),(1781,51,90),(1781,52,90),(1781,53,90),(1781,54,90),(1781,55,90),(1781,56,90),(1781,57,90),(1781,58,90),(1781,59,90),(1781,60,90),(1781,61,90),(1781,62,90),(1781,178,90),(1781,180,90),(1781,661,90),(1781,1106,90),(1783,51,10),(1783,52,10),(1783,53,10),(1783,54,10),(1783,55,10),(1783,56,10),(1783,57,10),(1783,58,10),(1783,59,10),(1783,60,10),(1783,61,10),(1783,62,10),(1783,178,10),(1783,180,10),(1783,661,10),(1783,1106,10),(1784,51,-1000),(1784,52,-1000),(1784,53,-1000),(1784,54,-1000),(1784,55,-1000),(1784,56,-1000),(1784,57,-1000),(1784,58,-1000),(1784,59,-1000),(1784,60,-1000),(1784,61,-1000),(1784,62,-1000),(1784,178,-1000),(1784,180,-1000),(1784,661,-1000),(1784,1106,-1000),(1785,51,90),(1785,52,90),(1785,53,90),(1785,54,90),(1785,55,90),(1785,56,90),(1785,57,90),(1785,58,90),(1785,59,90),(1785,60,90),(1785,61,90),(1785,62,90),(1785,178,90),(1785,180,90),(1785,661,90),(1785,1106,90),(1786,51,10),(1786,52,10),(1786,53,10),(1786,54,10),(1786,55,10),(1786,56,10),(1786,57,10),(1786,58,10),(1786,59,10),(1786,60,10),(1786,61,10),(1786,62,10),(1786,178,10),(1786,180,10),(1786,661,10),(1786,1106,10),(1787,51,-2000),(1787,52,-2000),(1787,53,-2000),(1787,54,-2000),(1787,55,-2000),(1787,56,-2000),(1787,57,-2000),(1787,58,-2000),(1787,59,-2000),(1787,60,-2000),(1787,61,-2000),(1787,62,-2000),(1787,178,-2000),(1787,180,-2000),(1787,661,-2000),(1787,1106,-2000),(1788,51,-2000),(1788,52,-2000),(1788,53,-2000),(1788,54,-2000),(1788,55,-2000),(1788,56,-2000),(1788,57,-2000),(1788,58,-2000),(1788,59,-2000),(1788,60,-2000),(1788,61,-2000),(1788,62,-2000),(1788,178,-2000),(1788,180,-2000),(1788,661,-2000),(1788,1106,-2000),(1789,51,-110),(1789,52,-110),(1789,53,-110),(1789,54,-110),(1789,55,-110),(1789,56,-110),(1789,57,-110),(1789,58,-110),(1789,59,-110),(1789,60,-110),(1789,61,-110),(1789,62,-110),(1789,178,-110),(1789,180,-110),(1789,661,-110),(1789,1106,-110),(1790,51,-1000),(1790,52,-1000),(1790,53,-1000),(1790,54,-1000),(1790,55,-1000),(1790,56,-1000),(1790,57,-1000),(1790,58,-1000),(1790,59,-1000),(1790,60,-1000),(1790,61,-1000),(1790,62,-1000),(1790,178,-1000),(1790,180,-1000),(1790,661,-1000),(1790,1106,-1000),(1791,51,-110),(1791,52,-110),(1791,53,-110),(1791,54,-110),(1791,55,-110),(1791,56,-110),(1791,57,-110),(1791,58,-110),(1791,59,-110),(1791,60,-110),(1791,61,-110),(1791,62,-110),(1791,178,-110),(1791,180,-110),(1791,661,-110),(1791,1106,-110),(1792,51,-1000),(1792,52,-1000),(1792,53,-1000),(1792,54,-1000),(1792,55,-1000),(1792,56,-1000),(1792,57,-1000),(1792,58,-1000),(1792,59,-1000),(1792,60,-1000),(1792,61,-1000),(1792,62,-1000),(1792,178,-1000),(1792,180,-1000),(1792,661,-1000),(1792,1106,-1000),(1793,51,-110),(1793,52,-110),(1793,53,-110),(1793,54,-110),(1793,55,-110),(1793,56,-110),(1793,57,-110),(1793,58,-110),(1793,59,-110),(1793,60,-110),(1793,61,-110),(1793,62,-110),(1793,178,-110),(1793,180,-110),(1793,661,-110),(1793,1106,-110),(1794,51,-1000),(1794,52,-1000),(1794,53,-1000),(1794,54,-1000),(1794,55,-1000),(1794,56,-1000),(1794,57,-1000),(1794,58,-1000),(1794,59,-1000),(1794,60,-1000),(1794,61,-1000),(1794,62,-1000),(1794,178,-1000),(1794,180,-1000),(1794,661,-1000),(1794,1106,-1000),(1795,51,-110),(1795,52,-110),(1795,53,-110),(1795,54,-110),(1795,55,-110),(1795,56,-110),(1795,57,-110),(1795,58,-110),(1795,59,-110),(1795,60,-110),(1795,61,-110),(1795,62,-110),(1795,178,-110),(1795,180,-110),(1795,661,-110),(1795,1106,-110),(1796,51,-1000),(1796,52,-1000),(1796,53,-1000),(1796,54,-1000),(1796,55,-1000),(1796,56,-1000),(1796,57,-1000),(1796,58,-1000),(1796,59,-1000),(1796,60,-1000),(1796,61,-1000),(1796,62,-1000),(1796,178,-1000),(1796,180,-1000),(1796,661,-1000),(1796,1106,-1000),(1798,51,-110),(1798,52,-110),(1798,53,-110),(1798,54,-110),(1798,55,-110),(1798,56,-110),(1798,57,-110),(1798,58,-110),(1798,59,-110),(1798,60,-110),(1798,61,-110),(1798,62,-110),(1798,178,-110),(1798,180,-110),(1798,661,-110),(1798,1106,-110),(1799,51,-1000),(1799,52,-1000),(1799,53,-1000),(1799,54,-1000),(1799,55,-1000),(1799,56,-1000),(1799,57,-1000),(1799,58,-1000),(1799,59,-1000),(1799,60,-1000),(1799,61,-1000),(1799,62,-1000),(1799,178,-1000),(1799,180,-1000),(1799,661,-1000),(1799,1106,-1000),(1801,51,0),(1801,52,0),(1801,53,0),(1801,54,0),(1801,55,0),(1801,56,0),(1801,57,0),(1801,58,0),(1801,59,0),(1801,60,100),(1801,61,0),(1801,62,0),(1801,178,0),(1801,180,0),(1801,211,100),(1801,661,0),(1801,1106,0),(1802,51,-1000),(1802,52,-1000),(1802,53,-1000),(1802,54,-1000),(1802,55,-1000),(1802,56,-1000),(1802,57,-1000),(1802,58,-1000),(1802,59,-1000),(1802,60,-1000),(1802,61,-1000),(1802,62,-1000),(1802,178,-1000),(1802,180,-1000),(1802,211,100),(1802,661,-1000),(1802,1106,-1000),(1817,51,-500),(1817,52,-500),(1817,53,-500),(1817,54,-500),(1817,55,-500),(1817,56,-500),(1817,57,-500),(1817,58,-500),(1817,59,-500),(1817,60,-500),(1817,61,-500),(1817,62,-500),(1817,178,-500),(1817,180,-500),(1817,661,-500),(1817,1106,-500),(1818,51,-1000),(1818,52,-1000),(1818,53,-1000),(1818,54,-1000),(1818,55,-1000),(1818,56,-1000),(1818,57,-1000),(1818,58,-1000),(1818,59,-1000),(1818,60,-1000),(1818,61,-1000),(1818,62,-1000),(1818,178,-1000),(1818,180,-1000),(1818,661,-1000),(1818,1106,-1000),(1819,51,-100),(1819,52,-100),(1819,53,-100),(1819,54,-100),(1819,55,-100),(1819,56,-100),(1819,57,-100),(1819,58,-100),(1819,59,-100),(1819,60,-100),(1819,61,-100),(1819,62,-100),(1819,178,-100),(1819,180,-100),(1819,661,-100),(1819,1106,-100),(1820,51,100),(1820,52,100),(1820,53,100),(1820,54,100),(1820,55,100),(1820,56,100),(1820,57,100),(1820,58,100),(1820,59,100),(1820,60,100),(1820,61,100),(1820,62,100),(1820,178,100),(1820,180,100),(1820,661,100),(1820,1106,100),(1821,51,-101),(1821,52,-101),(1821,53,-101),(1821,54,-101),(1821,55,-101),(1821,56,-101),(1821,57,-101),(1821,58,-101),(1821,59,-101),(1821,60,-101),(1821,61,-101),(1821,62,-101),(1821,178,-101),(1821,180,-101),(1821,661,-101),(1821,1106,-101),(1822,203,200),(1823,51,-1000),(1823,52,-1000),(1823,53,-1000),(1823,54,-1000),(1823,55,-1000),(1823,56,-1000),(1823,57,-1000),(1823,58,-1000),(1823,59,-1000),(1823,60,-1000),(1823,61,-1000),(1823,62,-1000),(1823,178,-1000),(1823,180,-1000),(1823,661,-1000),(1823,1106,-1000),(1824,51,-1000),(1824,52,-1000),(1824,53,-1000),(1824,54,-1000),(1824,55,-1000),(1824,56,-1000),(1824,57,-1000),(1824,58,-1000),(1824,59,-1000),(1824,60,-1000),(1824,61,-1000),(1824,62,-1000),(1824,178,-1000),(1824,180,-1000),(1824,661,-1000),(1824,1106,-1000),(1828,51,-1000),(1828,52,-1000),(1828,53,-1000),(1828,54,-1000),(1828,55,-1000),(1828,56,-1000),(1828,57,-1000),(1828,58,-1000),(1828,59,-1000),(1828,60,-1000),(1828,61,-1000),(1828,62,-1000),(1828,178,-1000),(1828,180,-1000),(1828,661,-1000),(1828,1106,-1000),(1829,51,-1000),(1829,52,-1000),(1829,53,-1000),(1829,54,-1000),(1829,55,-1000),(1829,56,-1000),(1829,57,-1000),(1829,58,-1000),(1829,59,-1000),(1829,60,-1000),(1829,61,-1000),(1829,62,-1000),(1829,178,-1000),(1829,180,-1000),(1829,661,-1000),(1829,1106,-1000),(1830,51,-800),(1830,52,-800),(1830,53,-800),(1830,54,-800),(1830,55,-800),(1830,56,-800),(1830,57,-800),(1830,58,-800),(1830,59,-800),(1830,60,-800),(1830,61,-800),(1830,62,-800),(1830,178,-800),(1830,180,-800),(1830,661,-800),(1830,1106,-800),(1831,51,-800),(1831,52,-800),(1831,53,-800),(1831,54,-800),(1831,55,-800),(1831,56,-800),(1831,57,-800),(1831,58,-800),(1831,59,-800),(1831,60,-800),(1831,61,-800),(1831,62,-800),(1831,178,-800),(1831,180,-800),(1831,661,-800),(1831,1106,-800),(1846,1,100),(1846,5,-100),(1846,11,-100),(1846,12,100),(1846,13,100),(1846,14,100),(1846,16,100),(1846,51,-2000),(1846,52,-2000),(1846,53,-2000),(1846,54,-2000),(1846,55,-2000),(1846,57,-2000),(1846,58,-2000),(1846,59,-2000),(1846,60,-2000),(1846,61,-2000),(1846,62,-2000),(1846,178,-2000),(1846,180,-2000),(1846,206,50),(1846,661,-2000),(1846,1106,-2000),(1847,1,-100),(1847,5,100),(1847,11,100),(1847,12,-100),(1847,13,-100),(1847,14,-100),(1847,16,-100),(1847,51,-2000),(1847,52,-2000),(1847,53,-2000),(1847,54,-2000),(1847,55,-2000),(1847,57,-2000),(1847,58,-2000),(1847,59,-2000),(1847,60,-2000),(1847,61,-2000),(1847,62,-2000),(1847,178,-2000),(1847,180,-2000),(1847,206,50),(1847,661,-2000),(1847,1106,-2000),(1852,51,-2000),(1852,52,-2000),(1852,53,-2000),(1852,54,-2000),(1852,55,-2000),(1852,56,-2000),(1852,57,-2000),(1852,58,-2000),(1852,59,-2000),(1852,60,-2000),(1852,61,-2000),(1852,62,-2000),(1852,178,-2000),(1852,180,-2000),(1852,661,-2000),(1852,1106,-2000),(1853,51,-1000),(1853,52,-1000),(1853,53,-1000),(1853,54,-1000),(1853,55,-1000),(1853,56,-1000),(1853,57,-1000),(1853,58,-1000),(1853,59,-1000),(1853,60,-1000),(1853,61,-1000),(1853,62,-1000),(1853,178,-1000),(1853,180,-1000),(1853,661,-1000),(1853,1106,-1000),(1854,51,-1000),(1854,52,-1000),(1854,53,-1000),(1854,54,-1000),(1854,55,-1000),(1854,56,-1000),(1854,57,-1000),(1854,58,-1000),(1854,59,-1000),(1854,60,-1000),(1854,61,-1000),(1854,62,-1000),(1854,178,-1000),(1854,180,-1000),(1854,661,-1000),(1854,1106,-1000),(1855,51,-1000),(1855,52,-1000),(1855,53,-1000),(1855,54,-1000),(1855,55,-1000),(1855,56,-1000),(1855,57,-1000),(1855,58,-1000),(1855,59,-1000),(1855,60,-1000),(1855,61,-1000),(1855,62,-1000),(1855,178,-800),(1855,180,-800),(1855,661,-800),(1855,1106,-800),(1856,51,-75),(1856,52,-75),(1856,53,-50),(1856,54,-75),(1856,55,-25),(1856,56,-25),(1856,57,-75),(1856,58,-75),(1856,59,-75),(1856,60,-75),(1856,61,-75),(1856,62,-75),(1856,178,-75),(1856,180,-75),(1856,202,-25),(1856,205,-10),(1856,214,-10),(1856,216,25),(1856,661,-75),(1856,1106,-75),(1857,51,-1000),(1857,52,-1000),(1857,53,-1000),(1857,54,-1000),(1857,55,-1000),(1857,56,-1000),(1857,57,-1000),(1857,58,-1000),(1857,59,-1000),(1857,60,-1000),(1857,61,-1000),(1857,62,-1000),(1857,178,-1000),(1857,180,-1000),(1857,661,-1000),(1857,1106,-1000),(1858,51,-1000),(1858,52,-1000),(1858,53,-1000),(1858,54,-1000),(1858,55,-1000),(1858,56,-1000),(1858,57,-1000),(1858,58,-1000),(1858,59,-1000),(1858,60,-1000),(1858,61,-1000),(1858,62,-1000),(1858,178,-1000),(1858,180,-1000),(1858,661,-1000),(1858,1106,-1000),(1859,1,1),(1859,2,1),(1859,3,100),(1859,4,250),(1859,5,1),(1859,6,250),(1859,7,1),(1859,8,100),(1859,9,1),(1859,10,100),(1859,11,1),(1859,12,1),(1859,13,1),(1859,14,100),(1859,15,100),(1859,16,1),(1859,51,-100),(1859,52,100),(1859,53,-100),(1859,54,250),(1859,55,250),(1859,56,-250),(1859,57,250),(1859,58,-250),(1859,59,-100),(1859,60,-100),(1859,61,250),(1859,62,-250),(1859,178,-100),(1859,180,150),(1859,201,-300),(1859,202,-500),(1859,203,-300),(1859,204,500),(1859,205,-500),(1859,206,-300),(1859,207,500),(1859,208,200),(1859,209,200),(1859,210,200),(1859,211,-200),(1859,212,200),(1859,213,-500),(1859,214,200),(1859,215,500),(1859,216,100),(1859,661,250),(1859,1106,-250),(1860,1,250),(1860,2,250),(1860,3,1),(1860,4,1),(1860,5,100),(1860,6,1),(1860,7,100),(1860,8,1),(1860,9,100),(1860,10,1),(1860,11,100),(1860,12,100),(1860,13,100),(1860,14,1),(1860,15,1),(1860,16,100),(1860,51,100),(1860,52,-100),(1860,53,100),(1860,54,-250),(1860,55,-250),(1860,56,250),(1860,57,-250),(1860,58,250),(1860,59,100),(1860,60,100),(1860,61,-250),(1860,62,250),(1860,178,100),(1860,180,-150),(1860,201,300),(1860,202,500),(1860,203,300),(1860,204,-500),(1860,205,500),(1860,206,300),(1860,207,-500),(1860,208,-200),(1860,209,-200),(1860,210,-200),(1860,211,200),(1860,212,-200),(1860,213,500),(1860,214,-200),(1860,215,-500),(1860,216,-100),(1860,661,-250),(1860,1106,250),(1862,51,-75),(1862,52,-75),(1862,53,-50),(1862,54,-75),(1862,55,-25),(1862,56,-25),(1862,57,-75),(1862,58,-75),(1862,59,-75),(1862,60,-75),(1862,61,-75),(1862,62,-75),(1862,178,-75),(1862,180,-75),(1862,202,-25),(1862,205,-10),(1862,214,-10),(1862,216,25),(1862,661,-75),(1862,1106,-75),(1863,51,-600),(1863,52,-600),(1863,53,-600),(1863,54,-600),(1863,55,-600),(1863,56,-600),(1863,57,-600),(1863,58,-600),(1863,59,-600),(1863,60,-600),(1863,61,-600),(1863,62,-600),(1863,178,-600),(1863,180,-600),(1863,661,-600),(1863,1106,-600),(1864,51,-600),(1864,52,-600),(1864,53,-600),(1864,54,-600),(1864,55,-600),(1864,56,-600),(1864,57,-600),(1864,58,-600),(1864,59,-600),(1864,60,-600),(1864,61,-600),(1864,62,-600),(1864,178,-600),(1864,180,-600),(1864,661,-600),(1864,1106,-600),(1865,51,-600),(1865,52,-600),(1865,53,-600),(1865,54,-600),(1865,55,-600),(1865,56,-600),(1865,57,-600),(1865,58,-600),(1865,59,-600),(1865,60,-600),(1865,61,-600),(1865,62,-600),(1865,178,-600),(1865,180,-600),(1865,661,-600),(1865,1106,-600),(1866,51,-600),(1866,52,-600),(1866,53,-600),(1866,54,-600),(1866,55,-600),(1866,56,-600),(1866,57,-600),(1866,58,-600),(1866,59,-600),(1866,60,-600),(1866,61,-600),(1866,62,-600),(1866,178,-600),(1866,180,-600),(1866,661,-600),(1866,1106,-600),(1867,51,1),(1867,52,1),(1867,53,1),(1867,54,1),(1867,55,1),(1867,56,1),(1867,57,1),(1867,58,1),(1867,59,1),(1867,60,1),(1867,61,1),(1867,62,1),(1867,178,1),(1867,180,1),(1867,661,1),(1867,1106,1),(1868,51,1),(1868,52,1),(1868,53,1),(1868,54,1),(1868,55,1),(1868,56,1),(1868,57,1),(1868,58,1),(1868,59,1),(1868,60,1),(1868,61,1),(1868,62,1),(1868,178,1),(1868,180,1),(1868,661,1),(1868,1106,1),(1869,51,1),(1869,52,1),(1869,53,1),(1869,54,1),(1869,55,1),(1869,56,1),(1869,57,1),(1869,58,1),(1869,59,1),(1869,60,1),(1869,61,1),(1869,62,1),(1869,178,1),(1869,180,1),(1869,661,1),(1869,1106,1),(1870,51,1),(1870,52,1),(1870,53,1),(1870,54,1),(1870,55,1),(1870,56,1),(1870,57,1),(1870,58,1),(1870,59,1),(1870,60,1),(1870,61,1),(1870,62,1),(1870,178,1),(1870,180,1),(1870,661,1),(1870,1106,1),(1872,51,1),(1872,52,1),(1872,53,1),(1872,54,1),(1872,55,1),(1872,56,1),(1872,57,1),(1872,58,1),(1872,59,1),(1872,60,1),(1872,61,1),(1872,62,1),(1872,178,1),(1872,180,1),(1872,661,1),(1872,1106,1); -/*!40000 ALTER TABLE `client_faction_associations` ENABLE KEYS */; UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2018-12-11 14:51:29 --- MySQL dump 10.13 Distrib 5.7.24, for Linux (x86_64) --- --- Host: 192.168.0.3 Database: peqdb --- ------------------------------------------------------ --- Server version 5.7.24-0ubuntu0.16.04.1 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Table structure for table `client_faction_names` -- DROP TABLE IF EXISTS `client_faction_names`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; CREATE TABLE `client_faction_names` ( `id` int(11) NOT NULL, `name` varchar(45) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `client_faction_names` -- LOCK TABLES `client_faction_names` WRITE; -/*!40000 ALTER TABLE `client_faction_names` DISABLE KEYS */; INSERT INTO `client_faction_names` VALUES (0,'NoFaction'),(1,'Warrior'),(2,'Cleric'),(3,'Paladin'),(4,'Ranger'),(5,'ShadowKnight'),(6,'Druid'),(7,'Monk'),(8,'Bard'),(9,'Rogue'),(10,'Shaman'),(11,'Necromancer'),(12,'Wizard'),(13,'Magician'),(14,'Enchanter'),(15,'Beastlord'),(16,'Berserker'),(17,'GUILDMASTERWARRIOR'),(18,'GUILDMASTERCLERIC'),(19,'GUILDMASTERPALADIN'),(20,'GUILDMASTERRANGER'),(21,'GUILDMASTERSK'),(22,'GUILDMASTERDRUID'),(23,'GUILDMASTERMONK'),(24,'GUILDMASTERBARD'),(25,'GUILDMASTERROGUE'),(26,'GUILDMASTERSHAMAN'),(27,'GUILDMASTERNECRO'),(28,'GUILDMASTERWIZARD'),(29,'GUILDMASTERMAGICIAN'),(30,'GUILDMASTERENCHANTER'),(31,'Class31'),(32,'Merchant'),(33,'Class33'),(34,'Class34'),(35,'Class35'),(36,'Class36'),(37,'Class37'),(38,'Class38'),(39,'Class39'),(40,'Class40'),(41,'Class41'),(42,'Class42'),(43,'Class43'),(44,'Class44'),(45,'Class45'),(46,'Class46'),(47,'Class47'),(48,'Class48'),(49,'Class49'),(50,'Class50'),(51,'Human'),(52,'Barbarian'),(53,'Erudite'),(54,'Wood Elf'),(55,'High Elf'),(56,'Dark Elf'),(57,'Half Elf'),(58,'Dwarf'),(59,'Troll'),(60,'Ogre'),(61,'Halfling'),(62,'Gnome'),(63,'Aviak'),(64,'Werewolf'),(65,'Brownies of Faydwer'),(66,'Centaur'),(67,'Clay Golem'),(68,'Cyclops'),(69,'Trakanon (Race)'),(70,'Venril Sathir (Race)'),(71,'Evil Eye'),(72,'Fire Beetle'),(73,'Kerran (Race)'),(74,'Fish'),(75,'Fairy (Race)'),(76,'Froglok'),(77,'Froglok Ghoul'),(78,'Fungus Man'),(79,'Gargoyle'),(80,'Race Faction (80)'),(81,'Gelatinous Cube'),(82,'Ghost'),(83,'Ghoul'),(84,'Giant Bat'),(85,'Beta KOS Copy 9'),(86,'Giant Rat'),(87,'Giant Snake'),(88,'Giant Spider'),(89,'Gnoll'),(90,'Goblin'),(91,'Gorilla'),(92,'Wolf'),(93,'Bear'),(94,'Human Guard (Race)'),(95,'Demi Lich (Race)'),(96,'Imp'),(97,'Griffon'),(98,'Kobold'),(99,'Lava Dragon'),(100,'Lion'),(101,'Lizard Man'),(102,'Mimic'),(103,'Minotaur'),(104,'Orc'),(105,'Human Beggar'),(106,'Pixies of Faydwer'),(107,'Drachnid (Race)'),(108,'Solusek Ro (Race)'),(109,'Kunark Goblin (Race)'),(110,'Skeleton'),(111,'Shark (Race)'),(112,'Tunare (Race)'),(113,'Tiger'),(114,'Treant'),(115,'Vampire'),(116,'Rallos Zek (Race)'),(117,'High Hold Citizen'),(118,'Tentacle'),(119,'Will-O-Wisp'),(120,'Zombie'),(121,'Qeynos Citizens'),(122,'Ship'),(123,'Launch'),(124,'Piranha'),(125,'Elemental'),(126,'Puma'),(127,'Neriak Citizen'),(128,'Erudin Citizens'),(129,'Bixie'),(130,'Reanimated Hand'),(131,'Rivervale Guard'),(132,'Scarecrow'),(133,'Skunk'),(134,'Snake Elemental'),(135,'Spectre'),(136,'Sphinx'),(137,'Armadillo'),(138,'Clockworks of Ak`Anon'),(139,'Drake'),(140,'Halas Citizen'),(141,'Alligator'),(142,'Grobb Citizen'),(143,'Oggok Citizen'),(144,'Kaladim Citizens'),(145,'Cazic-Thule (Race)'),(146,'Cockatrice'),(147,'Diasy Men'),(148,'Elf Vampire'),(149,'Amygdalan'),(150,'Dervish'),(151,'Efreeti'),(152,'Froglok Tadpole'),(153,'Kedge'),(154,'Leech'),(155,'Sword Fish'),(156,'Fel Guard'),(157,'Mammoth'),(158,'Eye of Zomm'),(159,'Wasp'),(160,'Mermaid'),(161,'Harpie'),(162,'Fayguard'),(163,'Drixie'),(164,'Ghost Ship'),(165,'Clam'),(166,'Sea Horse'),(167,'Ghost Dwarf'),(168,'Erudite Ghost'),(169,'Saber-toothed Cat'),(170,'SpiritWolf'),(171,'Gorgon'),(172,'Dragon Skeleton'),(173,'Innoruuk (Race)'),(174,'Unicorn Nightmare'),(175,'Pegasus'),(176,'Djinn (Race)'),(177,'Invisible Man'),(178,'Iksar'),(179,'Scorpion'),(180,'Vah Shir'),(181,'Sarnak'),(182,'Draglok Invalid Race'),(183,'Lycanthrope'),(184,'Mosquito'),(185,'Rhino'),(186,'Xalgoz Race'),(187,'Kunark Goblin'),(188,'Yeti'),(189,'Iksar Citizen'),(190,'Forest Giant'),(191,'Boat'),(192,'Race Faction (192)'),(193,'Race Faction (193)'),(194,'Burynai'),(195,'Goo'),(196,'Spectral Sarnak'),(197,'Spectral Iksar'),(198,'Kunark Fish'),(199,'Iksar Scorpion'),(200,'Erollisi Marr (Race)'),(201,'Bertoxxulous'),(202,'Brell Serilis'),(203,'Cazic-Thule'),(204,'Erollisi Marr'),(205,'Fizzlethorp'),(206,'Innoruuk'),(207,'Karana'),(208,'Mithaniel Marr'),(209,'Prexus'),(210,'Quellious'),(211,'Rallos Zek'),(212,'Rodcet Nife'),(213,'Solusek Ro'),(214,'Tribunal'),(215,'Tunare'),(216,'Veeshan'),(217,'Allize Volew'),(218,'Allize Taeew'),(219,'Antonius Bayle'),(220,'Arcane Scientists'),(221,'Bloodsabers'),(222,'Broken Skull Clan'),(223,'Circle of Unseen Hands'),(224,'Clan Drippycan'),(225,'Clan Runnyeye'),(226,'Clerics of Tunare'),(227,'Clerics of Underfoot'),(228,'Clurg'),(229,'Coalition of Tradefolk'),(230,'Corrupt Qeynos Guards'),(231,'Craftkeepers'),(232,'Craknek Warriors'),(233,'Crimson Hands'),(234,'Crushbone Orcs'),(235,'DaBashers'),(236,'Dark Bargainers'),(237,'Dark Ones'),(238,'Dark Reflection'),(239,'The Dead'),(240,'Deepmuses'),(241,'Deeppockets'),(242,'Deepwater Knights'),(243,'Drafling'),(244,'Ebon Mask'),(245,'Eldritch Collective'),(246,'Faydarks Champions'),(247,'Horde of Xalgoz'),(248,'Inhabitants of Firiona Vie'),(249,'Nagafen'),(250,'The Kromdul'),(251,'Frogloks of Guk'),(252,'Frogloks of Kunark'),(253,'Burynai Legion'),(254,'Gate Callers'),(255,'Gem Choppers'),(256,'Bloodgills'),(257,'Goblins of Cleaving Tooth'),(258,'Goblins of Fire Peak'),(259,'Goblins of Mountain Death'),(260,'Gnarled Fist'),(261,'Green Blood Knights'),(262,'Guards of Qeynos'),(263,'Guardians of the Vale'),(264,'Whistling Fist Brotherhood'),(265,'Heretics'),(266,'High Council of Erudin'),(267,'High Guard of Erudin'),(268,'Combine Empire'),(269,'Kithicor Residents'),(270,'Indigo Brotherhood'),(271,'Dismal Rage'),(272,'Jaggedpine Treefolk'),(273,'Kane Bayle'),(274,'Kazon Stormhammer'),(275,'Keepers of the Art'),(276,'Kelethin Merchants'),(277,'Kerra of Barren Coast'),(278,'King Naythox Thex'),(279,'King Tearis Thex'),(280,'Knights of Thunder'),(281,'Knights of Truth'),(282,'Kobolds of Fire Pit'),(283,'Pack of Tomar'),(284,'League of Antonican Bards'),(285,'Mayong Mistmoore'),(286,'Mayor Gubbin'),(287,'Meldrath'),(288,'Merchants of Ak`Anon'),(289,'Merchants of Erudin'),(290,'Merchants of Kaladim'),(291,'Merchants of Qeynos'),(292,'Merchants of Rivervale'),(293,'Miners Guild 249'),(294,'Miragul'),(295,'The Kromdek'),(296,'Opal Darkbriar'),(297,'Paladins of Underfoot'),(298,'Peace Keepers'),(299,'Phinigel Autropos'),(300,'Priests of Mischief'),(301,'Priests of Nagafen'),(302,'Protectors of Pine'),(303,'Queen Cristanos Thex'),(304,'Ring of Scale'),(305,'Rogues of the White Rose'),(306,'Sabertooths of Blackburrow'),(307,'Sarnak Collective'),(308,'Shadowknights of Night Keep'),(309,'Silent Fist Clan'),(310,'Soldiers of Tunare'),(311,'Steel Warriors'),(312,'Storm Guard'),(313,'Pirates of Gunthak'),(314,'Syth of Permafrost'),(315,'Trakanon'),(316,'Tunare\'s Scouts'),(317,'Undead Frogloks of Guk'),(318,'Venril Sathir'),(319,'Vox'),(320,'Wolves of the North'),(321,'Split Paw Clan'),(322,'Miners Guild 628'),(323,'Solusek Mining Co.'),(324,'Unkempt Druids'),(325,'Merchants of Felwithe'),(326,'Emerald Warriors'),(327,'Shamen of Justice'),(328,'Merchants of Halas'),(329,'Carson McCabe'),(330,'The Freeport Militia'),(331,'Merchants of Highpass'),(332,'Highpass Guards'),(333,'King Ak`Anon'),(334,'Dreadguard Outer'),(335,'Thoughtbleeders of Fear'),(336,'Coalition of Tradefolk Underground'),(337,'Oggok Guards'),(338,'Merchants of Oggok'),(339,'Bonethrowers'),(340,'Priests of Innoruuk'),(341,'Priests of Life'),(342,'Order of Three'),(343,'Surefall Protected Animals'),(344,'Beta Neutral'),(345,'Karana Residents'),(346,'Commons Residents'),(347,'Shark'),(348,'Runnyeye A'),(349,'Runnyeye B'),(350,'Runnyeye C'),(351,'Neriak Outer'),(352,'Neriak Inner'),(353,'Neriak Ogre'),(354,'Neriak Troll'),(355,'Storm Reapers'),(356,'Diseased Animal'),(357,'Akhevan (Plane of Shadow)'),(358,'Corrupt Akhevan'),(359,'Defenders of Luclin'),(360,'Iskar'),(361,'Ashen Order'),(362,'Priests of Marr'),(363,'The Spurned'),(364,'Shralok Orcs'),(365,'Pickclaw Goblins'),(366,'Karana Bandits'),(367,'Donovon'),(368,'Dervish Cutthroats'),(369,'Timmerain Darkbrow'),(370,'Dreadguard Inner'),(371,'Neriak Ghoul'),(372,'Najena'),(373,'Mucktail Gnolls'),(374,'Oggok Resident'),(375,'Death Fist Orcs (good)'),(376,'Grobb Merchants'),(377,'Grobb Guard'),(378,'Stone Hive Bixies'),(379,'Butcherblock Bandits'),(380,'Wood Elf Bards'),(381,'Tunare\'s Martyrs 2'),(382,'Kerra Isle'),(383,'Thunder Hooves'),(384,'Fay Scout'),(385,'Defective Clockwork'),(386,'Unrest Inhabitants'),(387,'Befallen Inhabitants'),(388,'Fairie'),(389,'Golem'),(390,'New Combine Guards'),(391,'New Combine'),(392,'Faction392'),(393,'Djinn'),(394,'Shamen of War'),(395,'Morawk'),(396,'Agnostic'),(397,'Sky Talons (good)'),(398,'Riptide Goblins'),(399,'Sea Furies'),(400,'Cult of Fear'),(401,'Song Weavers'),(402,'Oracle of K`Arnon'),(403,'Oracle of Marud'),(404,'Truespirit'),(405,'Dain Frostreaver IV'),(406,'Coldain'),(407,'Ry`Gorr Clan Snow Orcs'),(408,'Faction408'),(409,'Tserrina Syl`Tor'),(410,'Guide1'),(411,'Guide2'),(412,'Krag'),(413,'Guide3'),(414,'Residents of Fear'),(415,'Temple of Solusek Ro'),(416,'Shadowed Men'),(417,'Ankhefenmut'),(418,'Zazamoukh'),(419,'Kromrif'),(420,'Fallen of Bloody Kithicor'),(421,'Aggressors of Kithicor'),(422,'Defenders of Kithicor'),(423,'Verish Mal'),(424,'Inhabitants of Sky'),(425,'Inhabitants of Hate'),(426,'Agents of Mistmoore'),(427,'Spirocs of Timorous'),(428,'Minions of Underfoot'),(429,'King Tormax'),(430,'Claws of Veeshan'),(431,'Ulthork'),(432,'Othmir'),(433,'Jaled Dar'),(434,'Sirens of the Grotto'),(435,'Velketor'),(436,'Yelinak'),(437,'Denizens of Mischief'),(438,'Servants of Tunare'),(439,'Snowfang Gnolls'),(440,'Cabilis Residents'),(441,'Legion of Cabilis'),(442,'Crusaders of Greenmist'),(443,'Brood of Kotiz'),(444,'Swift Tails'),(445,'Scaled Mystics'),(446,'The Forsaken'),(447,'Pirates of Iceclad'),(448,'Kromzek'),(449,'Tunarean Court'),(450,'Thrall of Kly'),(451,'Brood of Di`Zok'),(452,'The Hotwingz'),(453,'Citizens of Torsis'),(454,'Drusella Sathir'),(455,'Minions of Scale'),(456,'Gelistial'),(457,'Holgresh'),(458,'Geonid Collective'),(459,'Lithiniath'),(460,'Citizens of Froststone'),(461,'Crystal Denizens'),(462,'Chetari'),(463,'Paebala'),(464,'Zlandicar'),(465,'Tizmak Clan'),(466,'Guardians of the Shrine'),(467,'Guardians of Veeshan'),(468,'The Sleeper'),(469,'Protectors of Growth'),(470,'Peoples Republic of Thurgadin'),(471,'Clan Kolbok'),(472,'Warders of The Claw'),(473,'Kejek Village'),(474,'Sporali'),(475,'King Xorbb'),(476,'Beta Good'),(477,'Beta Evil'),(478,'Beta Warmly'),(479,'Beta KOS'),(480,'Faction480'),(481,'Faction481'),(482,'Tribunal (Race)'),(483,'Bertoxxulous (Race)'),(484,'Bristlebane (Race)'),(485,'Faydrake'),(486,'Sarnak Skeleton'),(487,'Ratman'),(488,'Wyvern'),(489,'Wurm'),(490,'Devourer'),(491,'Iksar Golem'),(492,'Iksar Skeleton'),(493,'Man-Eating Plant'),(494,'Raptor'),(495,'Sarnak Golem'),(496,'Water Dragon'),(497,'Iksar Hand'),(498,'Cactus Man'),(499,'Flying Monkey'),(500,'Brontotherium'),(501,'Snow Dervish'),(502,'Dire Wolf'),(503,'Manticore'),(504,'Totem Man'),(505,'Cold Spectre'),(506,'Enchanted Armor'),(507,'Snow Bunny'),(508,'Walrus'),(509,'Rock Gem Man'),(510,'Race Faction (510)'),(511,'Race Faction (511)'),(512,'Yakman'),(513,'Faun'),(514,'Coldain (Race)'),(515,'Velious Dragon'),(516,'Hag'),(517,'Hippogriff'),(518,'Siren'),(519,'Frost Giant'),(520,'Storm Giant'),(521,'Otter Man'),(522,'Walrus Man'),(523,'Clockwork Dragon'),(524,'Abhorrent'),(525,'Sea Turtle'),(526,'BandWdragons'),(527,'Ghost Dragon'),(528,'Race Faction (528)'),(529,'Prismatic Dragon'),(530,'Shik Nar of Fungus Grove'),(531,'Rockhopper'),(532,'Underbulk'),(533,'Grimling'),(534,'Vacuum Worm'),(535,'Race Faction (535)'),(536,'Kahli Shah'),(537,'Owlbear'),(538,'Rhino Beetle'),(539,'Vampyre'),(540,'Earth Elemental (Race)'),(541,'Air Elemental (Race)'),(542,'Water Elemental (Race)'),(543,'Fire Elemental (Race)'),(544,'Wetfang Minnow'),(545,'Thought Horror'),(546,'Tegi'),(547,'Horse'),(548,'Shissar of Chelsith'),(549,'Fungal Fiend'),(550,'Vampire Volatalis'),(551,'Stonegrabber'),(552,'Scarlet Cheetah'),(553,'Zelniak'),(554,'Lightcrawler'),(555,'Shade'),(556,'Sunflower'),(557,'Sun Revenant'),(558,'Shrieker'),(559,'Galorian'),(560,'Netherbian'),(561,'Akheva (Race Type)'),(562,'Spire Spirit'),(563,'Sonic Wolf'),(564,'Ground Shaker'),(565,'Vah Shir Skeleton'),(566,'Mutant Humanoid'),(567,'Seru Race'),(568,'Recuso'),(569,'Vah Shir King (Race)'),(570,'Vah Shir Guard (Race)'),(571,'Portal Man (Race)'),(572,'Lujein'),(573,'Potamide'),(574,'Dryad'),(575,'Evil Treant'),(576,'Mutant Fly'),(577,'Tarew Marr'),(578,'Solusek Ro New'),(579,'Clockwork Golem'),(580,'Clockwork Brain'),(581,'Spectral Banshee'),(582,'Guard of Justice Race'),(583,'Mischief Castle'),(584,'Disease Boss'),(585,'Sol Ro Guard'),(586,'Bertoxxulous Race'),(587,'Tribunal Race'),(588,'Terris-Thule'),(589,'Vegerog'),(590,'Crocodile'),(591,'POP Bat'),(592,'Slarghilug'),(593,'Tranquilion'),(594,'Tin Soldier'),(595,'Nightmare Wraith'),(596,'Malarian'),(597,'Knight of Pestilence'),(598,'Lepertoloth'),(599,'Bubonian Boss'),(600,'Bubonian Underling'),(601,'Pusling'),(602,'Mephit'),(603,'Stormrider'),(604,'Junk Beast'),(605,'Broken Clockwork'),(606,'Giant Clockwork'),(607,'Clockwork Beetle'),(608,'Nightmare Goblin'),(609,'Karana Race'),(610,'Blood Raven'),(611,'Nightmare Gargoyle'),(612,'Mouths of Insanity'),(613,'Skeletal Horse'),(614,'Saryrn Race'),(615,'Fennin Ro'),(616,'Tormentor'),(617,'Necromancer Priest'),(618,'Nightmare, Planar'),(619,'Rallos Zek Race Faction'),(620,'Vallon Zek Race Faction'),(621,'Tallon Zek Race Faction'),(622,'Air Mephit'),(623,'Earth Mephit'),(624,'Fire Mephit'),(625,'Nightmare Mephit'),(626,'Zebuxoruk'),(627,'Mithaniel Marr (Race)'),(628,'Undead Knight'),(629,'The Rathe'),(630,'Xegony'),(631,'Greater Fiend'),(632,'Race Faction (632)'),(633,'Crab'),(634,'Phoenix'),(635,'Quarm (Race)'),(636,'Bear PoP'),(637,'Storm Taarid'),(638,'Storm Satuur'),(639,'Storm Kuraaln'),(640,'Storm Volaas'),(641,'Storm Mana'),(642,'Storm Fire'),(643,'Storm Celestial'),(644,'War Wraith'),(645,'Wrulon'),(646,'Kraken'),(647,'Poison Frog'),(648,'Queztocoatal'),(649,'Valorian (War Soldier)'),(650,'War Boar'),(651,'Efreeti PoP'),(652,'War Boar Unarmored'),(653,'Black Knight'),(654,'Animated Armor'),(655,'Undead Footman'),(656,'Rallos Zek Minion'),(657,'Arachnid - PoP'),(658,'Crystal Spider (Race)'),(659,'Zebuxoruk\'s Cage (Race)'),(660,'Bastion of Thunder Portal (Race)'),(661,'Guktan'),(662,'Troll Buccaneer'),(663,'Troll Freebooter'),(664,'Troll Sea Rover'),(665,'Spectre Pirate Boss'),(666,'Pirate Boss'),(667,'Pirate Dark Shaman'),(668,'Pirate Officer'),(669,'Gnome Pirate'),(670,'Dark Elf Pirate'),(671,'Ogre Pirate'),(672,'Human Pirate'),(673,'Erudite Pirate'),(674,'Poison Arrow Frog'),(675,'Troll Zombie'),(676,'Luggald'),(677,'Luggald Armored'),(678,'Luggald Robed'),(679,'Drogmor (Race)'),(680,'Dream Delvers'),(681,'Beta Ally'),(682,'Beta Warmly'),(683,'Beta Kindly'),(684,'Beta Amiable'),(685,'Beta Apprehensive'),(686,'Beta Dubious'),(687,'Beta Threatening'),(688,'Shissar (Race)'),(689,'Shik Nar (Race)'),(690,'Shik Nar of Mons Letalis'),(691,'Brownie (Race)'),(692,'Pixie (Race)'),(693,'Qeynos Citizen (Race)'),(694,'Erudite Citizen (Race)'),(695,'Clockwork Gnome (Race)'),(696,'Kaladim Citizen (Race)'),(697,'Faction697'),(698,'Faction698'),(699,'Faction699'),(700,'Mercenary Coalition'),(701,'Beta KOS Copy 1'),(702,'Beta KOS Copy 2'),(703,'Beta KOS Copy 3'),(704,'Beta KOS Copy 4'),(705,'Beta KOS Copy 5'),(706,'Beta KOS Copy 6'),(707,'Beta KOS Copy 7'),(708,'Beta KOS Copy 8'),(709,'The Yendan'),(710,'Guardians of War'),(711,'Castle Rulnavis'),(712,'Castle Tamrel'),(713,'Soldiers of Tallon'),(714,'Soldiers of Vallon'),(715,'Inhabitants of Rulnavis'),(716,'Inhabitants of Tamrel'),(717,'Keepers of Narikor'),(718,'The Disgraced'),(719,'Minions of Rot'),(720,'Memorial Gnomelike'),(721,'Iron Legion'),(722,'Faction722'),(723,'Faction723'),(724,'Faction724'),(725,'Faction725'),(726,'Faction726'),(727,'Faction727'),(728,'Faction728'),(729,'Faction729'),(730,'Faction730'),(731,'Faction731'),(732,'Faction732'),(733,'Faction733'),(734,'Faction734'),(735,'Faction735'),(736,'Faction736'),(737,'Faction737'),(738,'Faction738'),(739,'Faction739'),(740,'Faction740'),(741,'Faction741'),(742,'Faction742'),(743,'Faction743'),(744,'Faction744'),(745,'Faction745'),(746,'Faction746'),(747,'Faction747'),(748,'Faction748'),(749,'Faction749'),(750,'Faction750'),(751,'Faction751'),(752,'Faction752'),(753,'Faction753'),(754,'Faction754'),(755,'Faction755'),(756,'Faction756'),(757,'Faction757'),(758,'Faction758'),(759,'Faction759'),(760,'Faction760'),(761,'Faction761'),(762,'Faction762'),(763,'Faction763'),(764,'Faction764'),(765,'Faction765'),(766,'Faction766'),(767,'Faction767'),(768,'Faction768'),(769,'Faction769'),(770,'Faction770'),(771,'Faction771'),(772,'Faction772'),(773,'Faction773'),(774,'Faction774'),(775,'Faction775'),(776,'Faction776'),(777,'Faction777'),(778,'Faction778'),(779,'Faction779'),(780,'Faction780'),(781,'Faction781'),(782,'Faction782'),(783,'Faction783'),(784,'Faction784'),(785,'Faction785'),(786,'Faction786'),(787,'Faction787'),(788,'Faction788'),(789,'Faction789'),(790,'Faction790'),(791,'Faction791'),(792,'Faction792'),(793,'Faction793'),(794,'Faction794'),(795,'Faction795'),(796,'Faction796'),(797,'Faction797'),(798,'Faction798'),(799,'Faction799'),(800,'Faction800'),(801,'Faction801'),(802,'Faction802'),(803,'Faction803'),(804,'Faction804'),(805,'Faction805'),(806,'Faction806'),(807,'Faction807'),(808,'Faction808'),(809,'Faction809'),(810,'Faction810'),(811,'Faction811'),(812,'Faction812'),(813,'Faction813'),(814,'Faction814'),(815,'Faction815'),(816,'Faction816'),(817,'Faction817'),(818,'Faction818'),(819,'Faction819'),(820,'Faction820'),(821,'Faction821'),(822,'Faction822'),(823,'Faction823'),(824,'Faction824'),(825,'Faction825'),(826,'Faction826'),(827,'Faction827'),(828,'Faction828'),(829,'Faction829'),(830,'Faction830'),(831,'Faction831'),(832,'Faction832'),(833,'Faction833'),(834,'Faction834'),(835,'Faction835'),(836,'Faction836'),(837,'Faction837'),(838,'Faction838'),(839,'Faction839'),(840,'Faction840'),(841,'Faction841'),(842,'Faction842'),(843,'Faction843'),(844,'Faction844'),(845,'Faction845'),(846,'Faction846'),(847,'Faction847'),(848,'Faction848'),(849,'Faction849'),(850,'Faction850'),(851,'Faction851'),(852,'Faction852'),(853,'Faction853'),(854,'Faction854'),(855,'Faction855'),(856,'Faction856'),(857,'Faction857'),(858,'Faction858'),(859,'Faction859'),(860,'Faction860'),(861,'Faction861'),(862,'Faction862'),(863,'Faction863'),(864,'Faction864'),(865,'Faction865'),(866,'Faction866'),(867,'Faction867'),(868,'Faction868'),(869,'Faction869'),(870,'Faction870'),(871,'Faction871'),(872,'Faction872'),(873,'Faction873'),(874,'Faction874'),(875,'Faction875'),(876,'Faction876'),(877,'Faction877'),(878,'Faction878'),(879,'Faction879'),(880,'Faction880'),(881,'Faction881'),(882,'Faction882'),(883,'Faction883'),(884,'Faction884'),(885,'Faction885'),(886,'Faction886'),(887,'Faction887'),(888,'Faction888'),(889,'Faction889'),(890,'Faction890'),(891,'Faction891'),(892,'Faction892'),(893,'Faction893'),(894,'Faction894'),(895,'Faction895'),(896,'Faction896'),(897,'Faction897'),(898,'Faction898'),(899,'Faction899'),(900,'Faction900'),(901,'Faction901'),(902,'Faction902'),(903,'Faction903'),(904,'Faction904'),(905,'Faction905'),(906,'Faction906'),(907,'Faction907'),(908,'Faction908'),(909,'Faction909'),(910,'Faction910'),(911,'Faction911'),(912,'Faction912'),(913,'Faction913'),(914,'Faction914'),(915,'Faction915'),(916,'Faction916'),(917,'Faction917'),(918,'Faction918'),(919,'Faction919'),(920,'Faction920'),(921,'Faction921'),(922,'Faction922'),(923,'Faction923'),(924,'Faction924'),(925,'Faction925'),(926,'Faction926'),(927,'Faction927'),(928,'Faction928'),(929,'Faction929'),(930,'Faction930'),(931,'Faction931'),(932,'Faction932'),(933,'Faction933'),(934,'Faction934'),(935,'Faction935'),(936,'Faction936'),(937,'Faction937'),(938,'Faction938'),(939,'Faction939'),(940,'Faction940'),(941,'Faction941'),(942,'Faction942'),(943,'Faction943'),(944,'Faction944'),(945,'Faction945'),(946,'Faction946'),(947,'Faction947'),(948,'Faction948'),(949,'Faction949'),(950,'Faction950'),(951,'Faction951'),(952,'Faction952'),(953,'Faction953'),(954,'Faction954'),(955,'Faction955'),(956,'Faction956'),(957,'Faction957'),(958,'Faction958'),(959,'Faction959'),(960,'Faction960'),(961,'Faction961'),(962,'Faction962'),(963,'Faction963'),(964,'Faction964'),(965,'Faction965'),(966,'Faction966'),(967,'Faction967'),(968,'Faction968'),(969,'Faction969'),(970,'Faction970'),(971,'Faction971'),(972,'Faction972'),(973,'Faction973'),(974,'Faction974'),(975,'Faction975'),(976,'Faction976'),(977,'Faction977'),(978,'Faction978'),(979,'Faction979'),(980,'Faction980'),(981,'Faction981'),(982,'Faction982'),(983,'Faction983'),(984,'Faction984'),(985,'Faction985'),(986,'Faction986'),(987,'Faction987'),(988,'Faction988'),(989,'Faction989'),(990,'Faction990'),(991,'Faction991'),(992,'Faction992'),(993,'Faction993'),(994,'Faction994'),(995,'Faction995'),(996,'Faction996'),(997,'Faction997'),(998,'Faction998'),(999,'Faction999'),(1000,'Slaves of Gloomingdeep'),(1001,'Kobolds of Gloomingdeep'),(1002,'Creatures of Gloomingdeep'),(1003,'Guards of Gloomingdeep'),(1004,'Animals of Taelosia'),(1005,'Qeynos Elite Watch'),(1006,'Troupe of Free Speakers'),(1007,'Riftseekers'),(1008,'Discordant Creatures of Kuua'),(1009,'Denizens of Discord'),(1010,'Children of Dranik'),(1011,'Followers of Mekvidarsh'),(1012,'Followers of Loschryre'),(1013,'Overlord Mata Muram'),(1014,'BetaOmensNPCKOS'),(1015,'Creatures of Kuua'),(1016,'Dranik Loyalists'),(1017,'Senior Guides of Norrath'),(1018,'Children of Mistmoore'),(1019,'Elemental Invaders'),(1020,'Lanys T`Vyl'),(1021,'Dark Reign'),(1022,'Firiona Vie'),(1023,'Norrath\'s Keepers'),(1024,'Tirranun'),(1025,'Minions of Tirranun'),(1026,'Volkara'),(1027,'Volkara\'s Brood'),(1028,'Yar`lir'),(1029,'Thunder Guardians'),(1030,'Kessdona'),(1031,'Rikkukin'),(1032,'Stillmoon Acolytes'),(1033,'Vishimtar'),(1034,'Nest Guardians'),(1035,'Cursed Drakes'),(1036,'Scorchclaw Goblins'),(1037,'Frostflake Goblins'),(1038,'Whitecap Goblins'),(1039,'Dirtdigger Goblins'),(1040,'Greenfoot Goblins'),(1041,'Grel'),(1042,'Defenders of the Broodlands'),(1043,'BetaNPCKOS-PC'),(1044,'The Guardians'),(1045,'The Guardian\'s Alliance'),(1046,'The Dark Alliance'),(1047,'The Dark Suppliers'),(1048,'Sporali Collective'),(1049,'Deep Sporali'),(1050,'Expedition 328'),(1051,'Creep Reapers'),(1052,'Shadowmane'),(1053,'Ragepaw'),(1054,'Shiliskin Empire'),(1055,'Free Traders of Malgrinnor'),(1056,'Fallen Guard of Illsalin'),(1057,'Disciples of Jarzarrad'),(1058,'Scions of Dreadspire'),(1059,'Agents of Dreadspire'),(1060,'Creatures of Darkhollow'),(1061,'BetaNPCKOS-NPC'),(1062,'Assistants of the Scribe'),(1063,'Citizens of Freeport'),(1064,'Spirits of Arcstone'),(1065,'Fledgling Scrykin'),(1066,'Elder Scrykin'),(1067,'Constructs of Relic'),(1068,'Legions of Sverag'),(1069,'Ravenous Undead'),(1070,'Wildfang'),(1071,'Redfist Legionnaires'),(1072,'The Irebound'),(1073,'Ragefang'),(1074,'The Venom Swarm'),(1075,'Deathshed Legion'),(1076,'Blood Furies'),(1077,'Furies of the North'),(1078,'Stormbreaker Furies'),(1079,'Bonecracker Furies'),(1080,'Furies of Shir'),(1081,'The Wall-Borne'),(1082,'Legion of Rage'),(1083,'The Wretched'),(1084,'Trueblood Coven'),(1085,'Citizens of Takish-Hiz'),(1086,'Insurgents of Ro'),(1087,'Creatures of Elddar'),(1088,'Clan Vorzek'),(1089,'Tribe of the Nogdha'),(1090,'Servants of the Compact'),(1091,'Creatures of Sandflow'),(1092,'Blood of Ro'),(1093,'Direwind Gnolls'),(1094,'Forces of Dyn\'leth'),(1095,'Crusade of the Scale'),(1096,'Blackfeather Harpies'),(1097,'Blackfeather Royalty'),(1098,'Blackfeather Animals'),(1099,'Blackfeather Spiders'),(1100,'Shades of Zek'),(1101,'Ancestors of Valdeholm'),(1102,'Converts of Valdeholm'),(1103,'Valdeholm Citizens'),(1104,'Wraithguard'),(1105,'Wraithguard Leadership'),(1106,'Drakkin'),(1107,'Tuffein'),(1108,'Tuffein Leadership'),(1109,'Minohten'),(1110,'Nymphs of the Windwillow'),(1111,'Nymphs of the Darkwater'),(1112,'Blackfeather Raiders'),(1113,'Dromrek'),(1114,'Lost of the Windwillow'),(1115,'Foulblood Fieldstrider Centaur'),(1116,'Fieldstrider Centaur'),(1117,'Stonemight Goblins'),(1118,'Darkfell Clan'),(1119,'Guardians of the Grove'),(1120,'Coldeye Clan'),(1121,'Nightmoon Kobolds'),(1122,'Frostbite Clan'),(1123,'Drones of Stonehive'),(1124,'Legion of Stonehive'),(1125,'Spirits of Nokk'),(1126,'Guardians of the Dark Tower'),(1127,'The Blightfire Tainted'),(1128,'Madcaps - Mushroom Men'),(1129,'Circle of the Crystalwing'),(1130,'Selay'),(1131,'Dyn`leth'),(1132,'Lethar'),(1133,'Vergalid'),(1134,'Scholars of Solusek'),(1135,'Infiltrators and Traitors of Ashengate'),(1136,'Nature Animal'),(1137,'Crescent Reach Guards'),(1138,'Greater Shades of Zek'),(1139,'Newbie Guard'),(1140,'Drowned Dead'),(1141,'Sharpeye\'s Reef Runners'),(1142,'Blacksail Pirates'),(1143,'Stormscape Aviaks'),(1144,'Galigaba'),(1145,'King Peleke'),(1146,'Sunstone Goblins'),(1147,'King Vigdos'),(1148,'Tidewater Goblins'),(1149,'King Tondra'),(1150,'Platinum Efreeti'),(1151,'Sphinx of Atiiki'),(1152,'Nature Animal - Snake'),(1153,'Nature Animal - Crocodile'),(1154,'Nature Animal - Basilisk'),(1155,'Nature Animal - Shark'),(1156,'Nature Animal - Spider'),(1157,'Nature Animal - Wolf'),(1158,'Nature Animal - Bear'),(1159,'Nature Animal - Beetle'),(1160,'Nature Animal - Fish'),(1161,'Combine Citizens'),(1162,'Disciples of Zhisza'),(1163,'Brood of Vaakiszh'),(1164,'Fangs of Saarisz'),(1165,'Katta Elementals'),(1166,'Sirens of Maiden\'s Grave'),(1167,'The Cursed of Monkey Rock'),(1168,'Minions of Solusek Ro'),(1169,'Blacksail Smugglers'),(1170,'Combine Empire Merchants'),(1171,'Beta Enemy'),(1172,'Beta Friend'),(1173,'Beta Neutral 2'),(1174,'The Cursed of Monkey Rock (Instance)'),(1175,'Captains of Dyn`leth'),(1176,'Blood of Solusek'),(1177,'Guardian '),(1178,'Workshop Workers Union'),(1179,'Blackwater'),(1180,'Kirathas'),(1181,'The Borrowers'),(1182,'Erollisi\'s Scorned'),(1183,'Bertoxxulous\' Chosen'),(1184,'Camp Valor'),(1185,'Ladies of the Light'),(1186,'Loyalists of Kerafyrm'),(1187,'Emissaries of Claws of Veeshan'),(1188,'Crusaders of Veeshan'),(1189,'Brownie Rebels'),(1190,'Ak`Anon Strike Force V'),(1191,'Fang Breakers'),(1192,'The Fallen'),(1193,'Ancestors of the Crypt'),(1194,'Minions of Meldrath'),(1195,'Bloodmoon Were-Orcs'),(1196,'Darkvine Villagers'),(1197,'Wind Nymphs'),(1198,'Guardian Defense Forces'),(1199,'Residents of the Glade'),(1200,'Bayle\'s Irregulars'),(1201,'Plaguebringer Parishioners'),(1202,'Blackburrow Gnolls'),(1203,'Darkpaw Gnolls'),(1204,'Army of Light '),(1205,'Thaulen Teir\'Duuren'),(1206,'Kithicor Irregulars'),(1207,'Prisoners of the Dark Elves'),(1208,'Discordant Agents'),(1209,'Dragorn Forces'),(1210,'Discordant Army'),(1211,'Toskirakk Slaves'),(1212,'Toskirakk Slavers'),(1213,'Rallosian Guards'),(1214,'Toskirakk Merchants'),(1215,'Rathe Council'),(1216,'Rallosian Invaders'),(1217,'Rathe Living Heaps'),(1218,'Rathe Council Defenders'),(1219,'Darkhammer Dwarves'),(1220,'Primal Crystallines'),(1221,'Oceangreen Residents'),(1222,'Cirtan, Bayle\'s Herald'),(1223,'Silla Herald'),(1224,'Tynoc, Herald of Scale'),(1225,'Mitius, Herald of Change'),(1226,'Herald Argoth'),(1227,'Herald of Druzzil Ro'),(1228,'Ancient Blackburrow Gnolls'),(1229,'Sebilisian Empire'),(1230,'Discordant Armies'),(1231,'Tanglefuse\'s Clockworks'),(1232,'Underfoot Citizens'),(1233,'Underfoot Autarchs'),(1234,'Underfoot Denizens'),(1235,'Underfoot Protectors'),(1236,'Underfoot Devout'),(1237,'Cliknar'),(1238,'Underfoot Subversionists'),(1239,'Clockwork Magma Meter'),(1240,'Morell-Thule'),(1241,'Degmar\'s Loyalists'),(1242,'Degmar\'s Commoners'),(1243,'Degmar\'s Haunts'),(1244,'Brother Island Residents'),(1245,'Brother Island Animal'),(1246,'Sirens of the Endless Cavern'),(1247,'Faction1247'),(1248,'Faction1248'),(1249,'Faction1249'),(1250,'Faction1250'),(1251,'Faction1251'),(1252,'Faction1252'),(1253,'Faction1253'),(1254,'Faction1254'),(1255,'Faction1255'),(1256,'Faction1256'),(1257,'Faction1257'),(1258,'Faction1258'),(1259,'Faction1259'),(1260,'Faction1260'),(1261,'Faction1261'),(1262,'Faction1262'),(1263,'Faction1263'),(1264,'Faction1264'),(1265,'Faction1265'),(1266,'Faction1266'),(1267,'Faction1267'),(1268,'Faction1268'),(1269,'Faction1269'),(1270,'Faction1270'),(1271,'Faction1271'),(1272,'Faction1272'),(1273,'Faction1273'),(1274,'Faction1274'),(1275,'Faction1275'),(1276,'Faction1276'),(1277,'Faction1277'),(1278,'Faction1278'),(1279,'Faction1279'),(1280,'Faction1280'),(1281,'Faction1281'),(1282,'Faction1282'),(1283,'Faction1283'),(1284,'Faction1284'),(1285,'Faction1285'),(1286,'Faction1286'),(1287,'Faction1287'),(1288,'Faction1288'),(1289,'Faction1289'),(1290,'Faction1290'),(1291,'Faction1291'),(1292,'Faction1292'),(1293,'Faction1293'),(1294,'Faction1294'),(1295,'Faction1295'),(1296,'Faction1296'),(1297,'Faction1297'),(1298,'Faction1298'),(1299,'Faction1299'),(1300,'Faction1300'),(1301,'Faction1301'),(1302,'Faction1302'),(1303,'Faction1303'),(1304,'Faction1304'),(1305,'Faction1305'),(1306,'Faction1306'),(1307,'Faction1307'),(1308,'Faction1308'),(1309,'Faction1309'),(1310,'Faction1310'),(1311,'Faction1311'),(1312,'Faction1312'),(1313,'Faction1313'),(1314,'Faction1314'),(1315,'Faction1315'),(1316,'Faction1316'),(1317,'Faction1317'),(1318,'Faction1318'),(1319,'Faction1319'),(1320,'Faction1320'),(1321,'Faction1321'),(1322,'Faction1322'),(1323,'Faction1323'),(1324,'Faction1324'),(1325,'Faction1325'),(1326,'Faction1326'),(1327,'Faction1327'),(1328,'Faction1328'),(1329,'Faction1329'),(1330,'Faction1330'),(1331,'Faction1331'),(1332,'Faction1332'),(1333,'Faction1333'),(1334,'Faction1334'),(1335,'Faction1335'),(1336,'Faction1336'),(1337,'Faction1337'),(1338,'Faction1338'),(1339,'Faction1339'),(1340,'Faction1340'),(1341,'Faction1341'),(1342,'Faction1342'),(1343,'Faction1343'),(1344,'Faction1344'),(1345,'Faction1345'),(1346,'Faction1346'),(1347,'Faction1347'),(1348,'Faction1348'),(1349,'Faction1349'),(1350,'Faction1350'),(1351,'Faction1351'),(1352,'Faction1352'),(1353,'Faction1353'),(1354,'Faction1354'),(1355,'Faction1355'),(1356,'Faction1356'),(1357,'Faction1357'),(1358,'Faction1358'),(1359,'Faction1359'),(1360,'Faction1360'),(1361,'Faction1361'),(1362,'Faction1362'),(1363,'Faction1363'),(1364,'Faction1364'),(1365,'Faction1365'),(1366,'Faction1366'),(1367,'Faction1367'),(1368,'Faction1368'),(1369,'Faction1369'),(1370,'Faction1370'),(1371,'Faction1371'),(1372,'Faction1372'),(1373,'Faction1373'),(1374,'Faction1374'),(1375,'Faction1375'),(1376,'Faction1376'),(1377,'Faction1377'),(1378,'Faction1378'),(1379,'Faction1379'),(1380,'Faction1380'),(1381,'Faction1381'),(1382,'Faction1382'),(1383,'Faction1383'),(1384,'Faction1384'),(1385,'Faction1385'),(1386,'Faction1386'),(1387,'Faction1387'),(1388,'Faction1388'),(1389,'Faction1389'),(1390,'Faction1390'),(1391,'Faction1391'),(1392,'Faction1392'),(1393,'Faction1393'),(1394,'Faction1394'),(1395,'Faction1395'),(1396,'Faction1396'),(1397,'Faction1397'),(1398,'Faction1398'),(1399,'Faction1399'),(1400,'Faction1400'),(1401,'Faction1401'),(1402,'Faction1402'),(1403,'Faction1403'),(1404,'Faction1404'),(1405,'Faction1405'),(1406,'Faction1406'),(1407,'Faction1407'),(1408,'Faction1408'),(1409,'Faction1409'),(1410,'Faction1410'),(1411,'Faction1411'),(1412,'Faction1412'),(1413,'Faction1413'),(1414,'Faction1414'),(1415,'Faction1415'),(1416,'Faction1416'),(1417,'Faction1417'),(1418,'Faction1418'),(1419,'Faction1419'),(1420,'Faction1420'),(1421,'Faction1421'),(1422,'Faction1422'),(1423,'Faction1423'),(1424,'Faction1424'),(1425,'Faction1425'),(1426,'Faction1426'),(1427,'Faction1427'),(1428,'Faction1428'),(1429,'Faction1429'),(1430,'Faction1430'),(1431,'Faction1431'),(1432,'Faction1432'),(1433,'Faction1433'),(1434,'Faction1434'),(1435,'Faction1435'),(1436,'Faction1436'),(1437,'Faction1437'),(1438,'Faction1438'),(1439,'Faction1439'),(1440,'Faction1440'),(1441,'Faction1441'),(1442,'Faction1442'),(1443,'Faction1443'),(1444,'Faction1444'),(1445,'Faction1445'),(1446,'Faction1446'),(1447,'Faction1447'),(1448,'Faction1448'),(1449,'Faction1449'),(1450,'Faction1450'),(1451,'Faction1451'),(1452,'Faction1452'),(1453,'Faction1453'),(1454,'Faction1454'),(1455,'Faction1455'),(1456,'Faction1456'),(1457,'Faction1457'),(1458,'Faction1458'),(1459,'Faction1459'),(1460,'Faction1460'),(1461,'Faction1461'),(1462,'Faction1462'),(1463,'Faction1463'),(1464,'Faction1464'),(1465,'Faction1465'),(1466,'Faction1466'),(1467,'Faction1467'),(1468,'Faction1468'),(1469,'Faction1469'),(1470,'Faction1470'),(1471,'Faction1471'),(1472,'Faction1472'),(1473,'Faction1473'),(1474,'Faction1474'),(1475,'Faction1475'),(1476,'Faction1476'),(1477,'Faction1477'),(1478,'Faction1478'),(1479,'Faction1479'),(1480,'Faction1480'),(1481,'Faction1481'),(1482,'Faction1482'),(1483,'Seru'),(1484,'Hand of Seru'),(1485,'Eye of Seru'),(1486,'Heart of Seru'),(1487,'Shoulders of Seru'),(1488,'The Recuso'),(1489,'Gladiators and Slaves of Sanctus Seru'),(1490,'Grimlings of the Moor'),(1491,'Sonic Wolves of the Moor'),(1492,'Owlbears of the Moor'),(1493,'Grimling Invaders'),(1494,'Owlbear Invaders'),(1495,'Sonic Wolf Invaders'),(1496,'Grimling Defenders'),(1497,'Owlbear Defenders'),(1498,'Sonic Wolf Defenders'),(1499,'Citizens of Seru'),(1500,'Gor Taku'),(1501,'Shak Dratha'),(1502,'Katta Castellum Citizens'),(1503,'Validus Custodus'),(1504,'Magus Conlegium'),(1505,'Nathyn Illuminious'),(1506,'Coterie of the Eternal Night'),(1507,'Valdanov Zevfeer'),(1508,'Traders of the Haven'),(1509,'Haven Defenders'),(1510,'House of Fordel'),(1511,'House of Midst'),(1512,'House of Stout'),(1513,'Guardians of Shar Vahl'),(1514,'Testfaction'),(1515,'Dark Forest Denizens'),(1516,'Grimlings of the Forest'),(1517,'Deepwood Owlbears'),(1518,'Pack of the Great Moon'),(1519,'Lodikai'),(1520,'Whisperling'),(1521,'Akheva'),(1522,'Primordial Malice'),(1523,'Feast of the Burrowers'),(1524,'Johanius Barleou'),(1525,'Coterie Elite'),(1526,'Old Disciples of Kerafyrm'),(1527,'Spire Spirits'),(1528,'Thought Leeches'),(1529,'Khala Dun'),(1530,'Taruun'),(1531,'Jharin'),(1532,'Khati Sha'),(1533,'Dar Khura'),(1534,'Luclin Monsters'),(1535,'Brood of Ssraeshza'),(1536,'Emperor Ssraeshza'),(1537,'Iksar Temple Slaves'),(1538,'Spirits of Katta Castellum'),(1539,'Netherbians'),(1540,'Troglodytes'),(1541,'Hand Legionnaries'),(1542,'Haven Smugglers'),(1543,'Servants of Aero'),(1544,'Servants of Terra'),(1545,'Servants of Inferno'),(1546,'Servants of Hydro'),(1547,'Vornol Transon'),(1548,'The Vas Ren Clan'),(1549,'The Grol Baku Clan'),(1550,'The Cral Ligi Clan'),(1551,'The Tro Jeg Clan'),(1552,'Vah Shir Crusaders'),(1553,'Netherbian Ambush'),(1554,'Netherbian Caravan'),(1555,'Grieg'),(1556,'Luclin'),(1557,'Dark Sendings'),(1558,'Grimling Captives'),(1559,'Lake Recondite Bandits'),(1560,'Kanaad'),(1561,'Concilium Universus'),(1562,'Disciples of Rhag`Zadune'),(1563,'The Sambata Tribe'),(1564,'Dawnhoppers'),(1565,'Tarmok Tribe'),(1566,'Netok Tribe'),(1567,'Katta Traitors'),(1568,'Deepshade Collective'),(1569,'Deklean Korgad'),(1570,'Order of Autarkic Umbrage'),(1571,'Shei Vinitras'),(1572,'Anti Vinitras'),(1573,'The Bloodtribe'),(1574,'Minions of the Sunlord'),(1575,'Imps'),(1576,'Kingdom of Above and Below'),(1577,'The Truth'),(1578,'Deklean Korgad'),(1579,'Droga Goblins'),(1580,'Nurga Goblins'),(1581,'Luclin Friendly Monsters'),(1582,'Outcasts and Mutants'),(1583,'Cult of the Great Saprophyte'),(1584,'Citizens of Shar Vahl'),(1585,'Fiends of the Grove'),(1586,'Savage Spirit'),(1587,'Zordak Ragefire'),(1588,'Captain Cruikshanks'),(1589,'Scourge'),(1590,'Captain Stottal'),(1591,'Captain Smythe'),(1592,'Captain Dorian Dulein'),(1593,'Frogloks of Krup'),(1594,'Cult of the Arisen'),(1595,'New Alliance of Stone'),(1596,'Idelia the Serene'),(1597,'Residents of Jaggedpine'),(1598,'Anchorites of Brell Serilis'),(1599,'Darkpaws of Jaggedpine'),(1600,'Guardians of the Hatchling'),(1601,'Pirates of the Pine'),(1602,'Critters of Jaggedpine'),(1603,'Dryads of the Grove'),(1604,'Clan Grikbar'),(1605,'Haven Smuggler Associates'),(1606,'KOS to Beta Neutral'),(1607,'Plague Bringer'),(1608,'Spirits of Lxanvom'),(1609,'Askr the Lost'),(1610,'Greater Jord Giants'),(1611,'Greater Brann Giants'),(1612,'Greater Vind Giants'),(1613,'Greater Vann Giants'),(1614,'Lesser Jord Giants'),(1615,'Lesser Brann Giants'),(1616,'Lesser Vind Giants'),(1617,'Lesser Vann Giants'),(1618,'Storm Guardians'),(1619,'The Rainkeeper'),(1620,'Treants of Jaggedpine'),(1621,'Agnarr'),(1622,'Arboreans of the Faydark'),(1623,'Disciples of Kerafyrm'),(1624,'Servants of Saryrn'),(1625,'Guardians of Justice'),(1626,'Jacosh Steldenn'),(1627,'Prisoners of Justice'),(1628,'Creatures of Justice'),(1629,'Gralloks'),(1630,'Burning Dead'),(1631,'KOS All PC And Beta Neutral'),(1632,'Denizens of Water'),(1633,'Minions of Coirnav'),(1634,'Fish Lords'),(1635,'Dwellers of the Deep'),(1636,'Inhabitants of Tanaan'),(1637,'Truespirit Companion'),(1638,'Rallos Zek, The Warlord'),(1639,'Tallon Zek'),(1640,'Vallon Zek'),(1641,'Eriak'),(1642,'The Damned of Narikor'),(1643,'The Diaku'),(1644,'The Gindan'),(1645,'The Hendin'),(1646,'The Decorus'),(1647,'Gladiators of Drunder'),(1648,'Denizens of Fire'),(1649,'Minions of Fennin Ro'),(1650,'Inhabitants of Tranquility'),(1651,'Victim of Torment'),(1652,'Stampeding War Boar'),(1653,'War Boar Piglet'),(1654,'Inhabitants of Disease'),(1655,'Inhabitants of Valor'),(1656,'Battalion of Marr'),(1657,'Rats of Justice'),(1658,'Denizens of Storm'),(1659,'Lost Kingdom of Lok'),(1660,'Koka\'Vor Tribe'),(1661,'Inhabitants of Air'),(1662,'Guardians of the Living Earth'),(1663,'The Protectorate of the Twelve'),(1664,'Eino'),(1665,'Frogloks of Sebilis'),(1666,'Frogloks of Ykesha'),(1667,'Fallen Follies of Mischief'),(1668,'Lhranc the Disgraced'),(1669,'Minions of Enmity'),(1670,'Minions of Hope'),(1671,'Agents of the Pillars'),(1672,'Friends of Zordak Ragefire'),(1673,'Enemies of Zordak Ragefire'),(1674,'Kyle Bayle'),(1675,'Kyle Bayle\'s Royal Guard'),(1676,'Hills Revenant'),(1677,'Dead Hills Archaeologists'),(1678,'Xulous of the Dead Hills'),(1679,'The Kromtus'),(1680,'Bloodfeather Aviaks'),(1681,'The Thaell Ew'),(1682,'Faction1682'),(1683,'Faction1683'),(1684,'Faction1684'),(1685,'Faction1685'),(1686,'Faction1686'),(1687,'Faction1687'),(1688,'Faction1688'),(1689,'Faction1689'),(1690,'Faction1690'),(1691,'Faction1691'),(1692,'Faction1692'),(1693,'Faction1693'),(1694,'Faction1694'),(1695,'Faction1695'),(1696,'Faction1696'),(1697,'Faction1697'),(1698,'Faction1698'),(1699,'Faction1699'),(1700,'Torgiran'),(1701,'Warlord Ngrub'),(1702,'Resistance Miners'),(1703,'Nadox Initiate'),(1704,'Cursed Frogloks of Gukta'),(1705,'Creatures of Gunthak'),(1706,'Undead of Gunthak'),(1707,'Residents of Gunthak'),(1708,'Crew of the Scorned Maiden'),(1709,'Protectors of Gukta'),(1710,'Innothule Monster'),(1711,'Clerics of Gutka'),(1712,'Warriors of Gukta'),(1713,'Paladins of Gukta'),(1714,'Wizards of Gukta'),(1715,'Shaman of Gukta'),(1716,'High Council of Gukta'),(1717,'Lorekeepers of Gukta'),(1718,'Guktan Elders'),(1719,'Citizens of Gukta'),(1720,'Guktan Suppliers'),(1721,'Troll Raiders'),(1722,'Exiled Frogloks'),(1723,'Grimling Bandits'),(1724,'Newbie Monster'),(1725,'Syrik Iceblood'),(1726,'Inhabitants of Time'),(1727,'City Vermin'),(1728,'Betrayers of Di`Zok'),(1729,'Followers of Korucust'),(1730,'LDoNGood'),(1731,'LDoNEvil'),(1732,'Tribe Vrodak'),(1733,'Witnesses of Hate'),(1734,'Forgotten Guktan Spirits'),(1735,'Innoruuk\'s Curse of the Cauldron'),(1736,'Frostfoot Goblins'),(1737,'Lost Minions of Miragul'),(1738,'Planar Collective'),(1739,'Synarcana'),(1740,'Agents of the Synarcana'),(1741,'Orphans'),(1742,'Sustainers'),(1743,'Loyals'),(1744,'Progeny'),(1745,'Rujarkian Slavers'),(1746,'The Broken'),(1747,'Steelcrown'),(1748,'Spiritbound'),(1749,'Steelslaves'),(1750,'Citizens of Takish-Hiz'),(1751,'Geomantic Compact'),(1752,'Royal Attendants'),(1753,'Flowkeepers'),(1754,'Architects of Sand'),(1755,'Sandworkers'),(1756,'LDoN Hostages'),(1757,'Servants of the First Witness'),(1758,'Guktan Scouts'),(1759,'Wayfarers Brotherhood'),(1760,'Minions of Mischief'),(1761,'Nihil'),(1762,'Trusik Tribe'),(1763,'Legion of Mata Muram'),(1764,'Tunat`Muram'),(1765,'Zun`Muram'),(1766,'Pixtt'),(1767,'Hexxt'),(1768,'Rav'),(1769,'Creatures of Taelosia'),(1770,'Yunjo Slave Resistance'),(1771,'Gladiators of Mata Muram'),(1772,'The Sun'),(1773,'The Moon'),(1774,'Orcakar Players'),(1775,'Citizens of Argath'),(1776,'Living Steel'),(1777,'Argathian Looters'),(1778,'Citizens of Arelis'),(1779,'Farmers of the Lunanyn'),(1780,'Minions of War'),(1781,'Minions of the Sun'),(1782,'Dominion of Beasts'),(1783,'Citizens of Sarith'),(1784,'Devout of Oseka'),(1785,'Minions of Prexus'),(1786,'Seekers of Splendor'),(1787,'Order of Radiance'),(1788,'Devotees of Decay'),(1789,'Purity of Alra'),(1790,'Paragons of Purity'),(1791,'Shades of Alra'),(1792,'Paragons of Shadows'),(1793,'Arcanists of Alra'),(1794,'Paragons of the Arcane'),(1795,'Living Will of Alra'),(1796,'Paragons of Will'),(1797,'Servants of the Song'),(1798,'Citizens of Erillion'),(1799,'Disciples of Order'),(1800,'The Godblooded'),(1801,'Iceshard Manor'),(1802,'Dragon Death Keep'),(1803,'Apparitions of Fear'),(1804,'Beetles of Shard\'s Landing'),(1805,'Oashim of Shard\'s Landing'),(1806,'Pests of Shard\'s Landing'),(1807,'Scavengers of Shard\'s Landing'),(1808,'Kangon of Shard\'s Landing'),(1809,'Braxi of Shard\'s Landing'),(1810,'Wyverns of Shard\'s Landing'),(1811,'Selyrah of Shard\'s Landing'),(1812,'Goral of Shard\'s Landing'),(1813,'Snakes of Shard\'s Landing'),(1814,'Pumas of Shard\'s Landing'),(1815,'Grendlaen of Shard\'s Landing'),(1816,'Wolves of Shard\'s Landing'),(1817,'Hunters of Shard\'s Landing'),(1818,'Forsaken Believers'),(1819,'The Believers'),(1820,'The Conscripted'),(1821,'Heralds of the Unspoken'),(1822,'Harbingers of Thule'),(1823,'Va`Ker'),(1824,'Terrorwing'),(1825,'Crystal Circle Builders'),(1826,'The Unearthers'),(1827,'The Displaced'),(1828,'The Sol\'Dal'),(1829,'The Ember'),(1830,'Defenders of Decay'),(1831,'Warriors of Rodcet'),(1832,'Faction1832'),(1833,'Faction1833'),(1834,'Faction1834'),(1835,'Harrowing Horde'),(1836,'Western Plains Bandits'),(1837,'Ursarachnids'),(1838,'Doomscale Cultists'),(1839,'Nature Soul - Fire'),(1840,'Nature Soul - Water'),(1841,'Nature Soul - Earth'),(1842,'Nature Soul - Wood'),(1843,'Flaming Jacks'),(1844,'Ethernere Revenants'),(1845,'Ethernere Spirits'),(1846,'King Naythox Thex Loyalists'),(1847,'Queen Cristanos Thex Loyalists'),(1848,'Neriak Fourth Gate Residents'),(1849,'Qeynos Guards of West Karana'),(1850,'Fellowship of the Peacock'),(1851,'Damsel of Decay\'s Denizens'),(1852,'Enemies of Tranquility'),(1853,'Legion of the Overking'),(1854,'Empire of the Di`Zok'),(1855,'Kar`Zok'),(1856,'Flamescale Legion'),(1857,'Guardians of Konikor'),(1858,'Clan Droga'),(1859,'Majestic Centurion Alliance'),(1860,'The Clawdigger Clan'),(1861,'Scorpiki'),(1862,'Denizens of Veeshan\'s Peak'),(1863,'Servants of Esianti'),(1864,'Servants of Aalishai'),(1865,'Servants of Mearatas'),(1866,'Servants of Loruella'),(1867,'Contingent of the Alabaster Owl'),(1868,'Brass Phoenix Brigade'),(1869,'Company of the Alabaster Owl'),(1870,'Brass Phoenix Legion'),(1871,'Lords of Esianti'),(1872,'Lords of Aalishai'),(1873,'Bloodmoon Night-Orcs'),(1874,'Faction1874'),(1875,'Faction1875'),(1876,'Faction1876'),(1877,'Faction1877'),(1878,'Faction1878'),(1879,'Faction1879'),(1880,'Faction1880'),(1881,'Faction1881'),(1882,'Faction1882'),(1883,'Faction1883'),(1884,'Faction1884'),(1885,'Faction1885'),(1886,'Faction1886'),(1887,'Faction1887'),(1888,'Faction1888'),(1889,'Faction1889'),(1890,'Faction1890'),(1891,'Faction1891'),(1892,'Faction1892'),(1893,'Faction1893'),(1894,'Faction1894'),(1895,'Faction1895'),(1896,'Faction1896'),(1897,'Faction1897'),(1898,'Faction1898'),(1899,'Faction1899'),(1900,'Faction1900'),(1901,'Faction1901'),(1902,'Faction1902'),(1903,'Faction1903'),(1904,'Faction1904'),(1905,'Faction1905'),(1906,'Faction1906'),(1907,'Faction1907'),(1908,'Faction1908'),(1909,'Faction1909'),(1910,'Faction1910'),(1911,'Faction1911'),(1912,'Faction1912'),(1913,'Faction1913'),(1914,'Faction1914'),(1915,'Faction1915'),(1916,'Faction1916'),(1917,'Faction1917'),(1918,'Faction1918'),(1919,'Faction1919'),(1920,'Faction1920'),(1921,'Faction1921'),(1922,'Faction1922'),(1923,'Faction1923'),(1924,'Faction1924'),(1925,'Faction1925'),(1926,'Faction1926'),(1927,'Faction1927'),(1928,'Faction1928'),(1929,'Faction1929'),(1930,'Faction1930'),(1931,'Faction1931'),(1932,'Faction1932'),(1933,'Faction1933'),(1934,'Faction1934'),(1935,'Faction1935'),(1936,'Faction1936'),(1937,'Faction1937'),(1938,'Faction1938'),(1939,'Faction1939'),(1940,'Faction1940'),(1941,'Faction1941'),(1942,'Faction1942'),(1943,'Faction1943'),(1944,'Faction1944'),(1945,'Faction1945'),(1946,'Faction1946'),(1947,'Faction1947'),(1948,'Faction1948'),(1949,'Faction1949'),(1950,'Faction1950'),(1951,'Faction1951'),(1952,'Faction1952'),(1953,'Faction1953'),(1954,'Faction1954'),(1955,'Faction1955'),(1956,'Faction1956'),(1957,'Faction1957'),(1958,'Faction1958'),(1959,'Faction1959'),(1960,'Faction1960'),(1961,'Faction1961'),(1962,'Faction1962'),(1963,'Faction1963'),(1964,'Faction1964'),(1965,'Faction1965'),(1966,'Faction1966'),(1967,'Faction1967'),(1968,'Faction1968'),(1969,'Faction1969'),(1970,'Faction1970'),(1971,'Faction1971'),(1972,'Faction1972'),(1973,'Faction1973'),(1974,'Faction1974'),(1975,'Faction1975'),(1976,'Faction1976'),(1977,'Faction1977'),(1978,'Faction1978'),(1979,'Faction1979'),(1980,'Faction1980'),(1981,'Faction1981'),(1982,'Faction1982'),(1983,'Faction1983'),(1984,'Faction1984'),(1985,'Faction1985'),(1986,'Faction1986'),(1987,'Faction1987'),(1988,'Faction1988'),(1989,'Faction1989'),(1990,'Faction1990'),(1991,'Faction1991'),(1992,'Faction1992'),(1993,'Faction1993'),(1994,'Faction1994'),(1995,'Faction1995'),(1996,'Faction1996'),(1997,'Faction1997'),(1998,'Faction1998'),(1999,'Faction1999'),(2000,'Faction2000'),(2001,'Faction2001'),(2002,'Faction2002'),(2003,'Faction2003'),(2004,'Faction2004'),(2005,'Faction2005'),(2006,'Faction2006'),(2007,'Faction2007'),(2008,'Faction2008'),(2009,'Faction2009'),(2010,'Faction2010'),(2011,'Faction2011'),(2012,'Faction2012'),(2013,'Faction2013'),(2014,'Faction2014'),(2015,'Faction2015'),(2016,'Faction2016'),(2017,'Faction2017'),(2018,'Faction2018'),(2019,'Faction2019'),(2020,'Faction2020'),(2021,'Faction2021'),(2022,'Faction2022'),(2023,'Faction2023'),(2024,'Faction2024'),(2025,'Faction2025'),(2026,'Faction2026'),(2027,'Faction2027'),(2028,'Faction2028'),(2029,'Faction2029'),(2030,'Faction2030'),(2031,'Faction2031'),(2032,'Faction2032'),(2033,'Faction2033'),(2034,'Faction2034'),(2035,'Faction2035'),(2036,'Faction2036'),(2037,'Faction2037'),(2038,'Faction2038'),(2039,'Faction2039'),(2040,'Faction2040'),(2041,'Faction2041'),(2042,'Faction2042'),(2043,'Faction2043'),(2044,'Faction2044'),(2045,'Faction2045'),(2046,'Faction2046'),(2047,'Faction2047'); -/*!40000 ALTER TABLE `client_faction_names` ENABLE KEYS */; UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2018-12-11 14:54:22 --- MySQL dump 10.13 Distrib 5.7.24, for Linux (x86_64) --- --- Host: 192.168.0.3 Database: peqdb --- ------------------------------------------------------ --- Server version 5.7.24-0ubuntu0.16.04.1 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Table structure for table `client_server_faction_map` -- DROP TABLE IF EXISTS `client_server_faction_map`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; CREATE TABLE `client_server_faction_map` ( `clientid` int(11) NOT NULL, `serverid` int(11) NOT NULL, PRIMARY KEY (`clientid`,`serverid`), INDEX serverid (`serverid`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `client_server_faction_map` -- LOCK TABLES `client_server_faction_map` WRITE; -/*!40000 ALTER TABLE `client_server_faction_map` DISABLE KEYS */; INSERT INTO `client_server_faction_map` VALUES (41,377),(51,506),(60,431),(63,14),(64,357),(65,26),(68,481),(71,94),(73,421),(78,111),(88,386),(90,118),(98,185),(101,200),(104,238),(112,113),(117,148),(119,462),(121,434),(125,374),(143,368),(144,162),(153,420),(156,100),(160,426),(178,371),(201,382),(205,414),(207,165),(209,255),(211,269),(216,351),(217,5),(218,4),(219,9),(220,11),(221,21),(222,22),(223,33),(225,41),(226,43),(227,44),(228,46),(229,47),(230,53),(231,56),(232,57),(233,60),(234,63),(235,66),(236,69),(237,70),(238,71),(239,322),(240,76),(241,77),(242,79),(244,90),(245,91),(246,99),(247,151),(248,418),(249,226),(250,327),(251,106),(252,108),(253,28),(254,112),(255,115),(256,20),(257,119),(258,120),(259,121),(261,128),(262,135),(263,133),(264,359),(265,143),(266,145),(267,147),(268,50),(269,182),(270,155),(271,86),(272,159),(273,164),(274,169),(275,170),(276,174),(278,177),(279,178),(280,183),(281,184),(282,186),(283,243),(284,192),(285,207),(286,208),(287,209),(288,210),(289,211),(290,215),(291,217),(292,218),(293,219),(295,326),(296,235),(297,246),(298,247),(299,248),(300,259),(302,265),(303,268),(304,273),(305,275),(306,279),(307,281),(308,292),(309,300),(310,304),(311,311),(312,314),(313,250),(315,339),(316,283),(317,346),(318,353),(319,355),(320,361),(321,309),(322,220),(323,305),(324,347),(325,212),(326,92),(327,294),(328,213),(329,31),(330,105),(331,214),(332,149),(333,176),(334,88),(336,48),(337,232),(338,216),(340,256),(341,257),(342,240),(343,267),(344,18),(345,167),(346,51),(353,378),(354,229),(355,316),(361,12),(362,258),(363,331),(364,299),(365,249),(366,166),(367,507),(368,83),(370,87),(371,117),(372,227),(373,224),(374,233),(375,75),(376,131),(378,313),(379,29),(382,175),(385,80),(386,376),(387,17),(388,97),(394,295),(397,302),(398,274),(401,306),(402,236),(403,237),(404,342),(405,67),(406,49),(407,278),(409,343),(412,187),(415,320),(416,291),(417,397),(418,364),(419,188),(420,98),(423,456),(424,465),(425,156),(426,1),(427,308),(428,223),(429,179),(430,42),(431,345),(432,241),(433,160),(434,301),(435,352),(436,362),(437,391),(438,290),(439,303),(440,30),(441,193),(442,62),(443,24),(444,317),(445,282),(446,323),(447,251),(448,189),(449,344),(450,336),(451,23),(452,325),(454,89),(455,221),(456,114),(457,150),(458,116),(459,199),(460,399),(461,395),(462,32),(463,244),(464,365),(465,337),(467,134),(469,263),(471,40),(473,172),(474,310),(475,180),(532,461),(689,297),(692,253),(693,36),(694,380),(695,45),(1001,424),(1002,401),(1003,475),(1007,435),(1009,409),(1010,398),(1013,432),(1014,487),(1016,410),(1020,425),(1021,404),(1022,101),(1023,429),(1024,446),(1025,427),(1026,449),(1027,450),(1028,451),(1029,445),(1030,422),(1031,436),(1032,441),(1033,448),(1034,428),(1035,403),(1036,438),(1039,515),(1040,417),(1042,407),(1044,444),(1046,443),(1048,440),(1049,406),(1050,411),(1051,402),(1055,415),(1056,412),(1058,437),(1059,396),(1060,400),(1101,498),(1156,500),(1159,457),(1190,497),(1193,499),(1204,494),(1223,496),(1483,284),(1484,139),(1485,96),(1486,142),(1487,298),(1488,329),(1490,130),(1491,504),(1492,505),(1499,37),(1500,122),(1501,293),(1502,168),(1503,350),(1504,206),(1505,228),(1506,55),(1507,349),(1508,338),(1509,140),(1510,152),(1511,153),(1512,154),(1513,132),(1516,392),(1519,201),(1520,358),(1521,3),(1522,260),(1524,161),(1525,54),(1527,388),(1528,335),(1530,319),(1532,423),(1533,68),(1535,25),(1536,93),(1538,307),(1541,138),(1542,141),(1543,285),(1544,289),(1545,287),(1546,286),(1547,354),(1548,334),(1549,324),(1550,321),(1551,332),(1552,348),(1555,129),(1556,205),(1557,72),(1559,191),(1561,52),(1562,85),(1563,330),(1564,74),(1565,390),(1568,78),(1569,408),(1570,239),(1571,296),(1573,389),(1574,222),(1576,181),(1577,333),(1582,242),(1583,65),(1584,483),(1587,385),(1593,107),(1594,64),(1595,230),(1597,271),(1598,6),(1599,73),(1601,252),(1602,61),(1604,39),(1607,516),(1608,517),(1609,13),(1610,125),(1611,124),(1612,127),(1613,126),(1614,196),(1615,195),(1616,198),(1617,197),(1618,315),(1619,328),(1620,340),(1621,2),(1622,10),(1623,84),(1624,288),(1627,261),(1628,58),(1629,123),(1630,27),(1634,512),(1636,157),(1654,466),(1656,16),(1659,203),(1660,501),(1661,464),(1665,109),(1701,473),(1703,225),(1707,458),(1709,264),(1713,245),(1714,360),(1716,146),(1717,202),(1718,136),(1719,35),(1720,484),(1722,95),(1725,318),(1726,469),(1728,19),(1729,103),(1732,341),(1733,393),(1734,104),(1735,158),(1736,110),(1737,204),(1738,455),(1741,452),(1742,453),(1743,454),(1744,262),(1745,277),(1749,312),(1750,38),(1755,280),(1757,508),(1759,356),(1761,231),(1762,447),(1763,194),(1765,502),(1766,254),(1767,144),(1768,270),(1769,59),(1770,363),(1771,416),(1822,373); -/*!40000 ALTER TABLE `client_server_faction_map` ENABLE KEYS */; UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2018-12-11 14:49:42 --- MySQL dump 10.13 Distrib 5.7.24, for Linux (x86_64) --- --- Host: 192.168.0.3 Database: peqdb --- ------------------------------------------------------ --- Server version 5.7.24-0ubuntu0.16.04.1 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Table structure for table `faction_base_data` -- DROP TABLE IF EXISTS `faction_base_data`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; CREATE TABLE `faction_base_data` ( `client_faction_id` smallint(6) NOT NULL, `min` smallint(6) DEFAULT '-2000', @@ -186,25 +72,11 @@ CREATE TABLE `faction_base_data` ( `unk_hero3` smallint(6) DEFAULT NULL, PRIMARY KEY (`client_faction_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `faction_base_data` -- LOCK TABLES `faction_base_data` WRITE; -/*!40000 ALTER TABLE `faction_base_data` DISABLE KEYS */; INSERT INTO `faction_base_data` VALUES (65,-2000,2000,0,0,0),(106,-2000,2000,0,0,0),(121,-2000,2000,0,0,0),(128,-2000,2000,0,0,0),(138,-2000,2000,0,0,0),(144,-2000,2000,0,0,0),(217,-2000,2000,0,0,0),(218,-2000,2000,0,0,0),(219,-2000,2000,0,0,0),(220,-2000,2000,0,0,0),(221,-2000,2000,0,0,0),(222,-2000,2000,0,0,0),(223,-2000,2000,0,0,0),(225,-2000,2000,0,0,0),(226,-2000,2000,0,0,0),(227,-2000,2000,0,0,0),(228,-2000,2000,0,0,0),(229,-2000,2000,0,0,0),(230,-2000,2000,0,0,0),(231,-2000,2000,0,0,0),(232,-2000,2000,0,0,0),(233,-2000,2000,0,0,0),(234,-2000,2000,0,0,0),(235,-2000,2000,0,0,0),(236,-2000,2000,0,0,0),(237,-2000,2000,0,0,0),(238,-2000,2000,0,0,0),(239,-2000,2000,0,0,0),(240,-2000,2000,0,0,0),(241,-2000,2000,0,0,0),(242,-2000,2000,0,0,0),(243,-2000,2000,0,0,0),(244,-2000,2000,0,0,0),(245,-2000,2000,0,0,0),(246,-2000,2000,0,0,0),(247,-2000,2000,0,0,0),(248,-2000,2000,0,0,0),(249,-2000,2000,0,0,0),(250,-2000,2000,0,0,0),(251,-2000,2000,0,0,0),(252,-2000,2000,0,0,0),(253,-2000,2000,0,0,0),(254,-2000,2000,0,0,0),(255,-2000,2000,0,0,0),(256,-2000,2000,0,0,0),(257,-2000,2000,0,0,0),(258,-2000,2000,0,0,0),(259,-2000,2000,0,0,0),(261,-2000,2000,0,0,0),(262,-2000,2000,0,0,0),(263,-2000,2000,0,0,0),(264,-2000,2000,0,0,0),(265,-2000,2000,0,0,0),(266,-2000,2000,0,0,0),(267,-2000,2000,0,0,0),(269,-2000,2000,0,0,0),(270,-2000,2000,0,0,0),(271,-2000,2000,0,0,0),(272,-2000,2000,0,0,0),(273,-2000,2000,0,0,0),(274,-2000,2000,0,0,0),(275,-2000,2000,0,0,0),(276,-2000,2000,0,0,0),(277,-2000,2000,0,0,0),(278,-2000,2000,0,0,0),(279,-2000,2000,0,0,0),(280,-2000,2000,0,0,0),(281,-2000,2000,0,0,0),(282,-2000,2000,0,0,0),(283,-2000,2000,0,0,0),(284,-2000,2000,0,0,0),(285,-2000,2000,0,0,0),(286,-2000,2000,0,0,0),(287,-2000,2000,0,0,0),(288,-2000,2000,0,0,0),(289,-2000,2000,0,0,0),(290,-2000,2000,0,0,0),(291,-2000,2000,0,0,0),(292,-2000,2000,0,0,0),(293,-2000,2000,0,0,0),(295,-2000,2000,0,0,0),(296,-2000,2000,0,0,0),(297,-2000,2000,0,0,0),(298,-2000,2000,0,0,0),(299,-2000,2000,0,0,0),(300,-2000,2000,0,0,0),(302,-2000,2000,0,0,0),(304,-2000,2000,0,0,0),(305,-2000,2000,0,0,0),(306,-2000,2000,0,0,0),(307,-2000,2000,0,0,0),(308,-2000,2000,0,0,0),(309,-2000,2000,0,0,0),(310,-2000,2000,0,0,0),(311,-2000,2000,0,0,0),(312,-2000,2000,0,0,0),(313,-2000,2000,0,0,0),(315,-2000,2000,0,0,0),(316,-2000,2000,0,0,0),(317,-2000,2000,0,0,0),(318,-2000,2000,0,0,0),(319,-2000,2000,0,0,0),(320,-2000,2000,0,0,0),(321,-2000,2000,0,0,0),(322,-2000,2000,0,0,0),(323,-2000,2000,0,0,0),(324,-2000,2000,0,0,0),(325,-2000,2000,0,0,0),(326,-2000,2000,0,0,0),(327,-2000,2000,0,0,0),(328,-2000,2000,0,0,0),(329,-2000,2000,0,0,0),(330,-2000,2000,0,0,0),(331,-2000,2000,0,0,0),(332,-2000,2000,0,0,0),(333,-2000,2000,0,0,0),(334,-2000,2000,0,0,0),(336,-2000,2000,0,0,0),(337,-2000,2000,0,0,0),(338,-2000,2000,0,0,0),(340,-2000,2000,0,0,0),(341,-2000,2000,0,0,0),(342,-2000,2000,0,0,0),(343,-2000,2000,0,0,0),(345,-2000,2000,0,0,0),(346,-2000,2000,0,0,0),(353,-2000,2000,0,0,0),(354,-2000,2000,0,0,0),(355,-2000,2000,0,0,0),(361,-2000,2000,0,0,0),(362,-2000,2000,0,0,0),(363,-2000,2000,0,0,0),(364,-2000,2000,0,0,0),(365,-2000,2000,0,0,0),(366,-2000,2000,0,0,0),(367,-2000,2000,0,0,0),(368,-2000,2000,0,0,0),(370,-2000,2000,0,0,0),(371,-2000,2000,0,0,0),(372,-2000,2000,0,0,0),(373,-2000,2000,0,0,0),(374,-2000,2000,0,0,0),(375,-2000,2000,0,0,0),(376,-2000,2000,0,0,0),(377,-2000,2000,0,0,0),(378,-2000,2000,0,0,0),(379,-2000,2000,0,0,0),(382,-2000,2000,0,0,0),(385,-2000,2000,0,0,0),(387,-2000,2000,0,0,0),(388,-2000,2000,0,0,0),(390,-2000,2000,0,0,0),(391,-2000,2000,0,0,0),(394,-2000,2000,0,0,0),(397,-2000,2000,0,0,0),(398,-2000,2000,0,0,0),(401,-2000,2000,0,0,0),(402,-2000,2000,0,0,0),(404,0,2000,0,0,0),(405,-2000,2000,0,0,0),(406,-2000,2000,0,0,0),(407,-2000,2000,0,0,0),(409,-2000,2000,0,0,0),(412,-2000,2000,0,0,0),(415,-2000,2000,0,0,0),(416,-2000,2000,0,0,0),(417,-2000,2000,0,0,0),(418,-2000,2000,0,0,0),(419,-2000,2000,0,0,0),(420,-2000,2000,0,0,0),(421,-2000,2000,0,0,0),(422,-2000,2000,0,0,0),(423,-2000,2000,0,0,0),(425,-2000,2000,0,0,0),(426,-2000,2000,0,0,0),(427,-2000,2000,0,0,0),(428,-2000,2000,0,0,0),(429,-2000,2000,0,0,0),(430,-2000,2000,0,0,0),(431,-2000,2000,0,0,0),(432,-2000,2000,0,0,0),(433,-2000,2000,0,0,0),(434,-2000,2000,0,0,0),(435,-2000,2000,0,0,0),(436,-2000,2000,0,0,0),(437,-2000,2000,0,0,0),(438,-2000,2000,0,0,0),(439,-2000,2000,0,0,0),(440,-2000,2000,0,0,0),(441,-2000,2000,0,0,0),(442,-2000,2000,0,0,0),(443,-2000,2000,0,0,0),(444,-2000,2000,0,0,0),(445,-2000,2000,0,0,0),(446,-2000,2000,0,0,0),(447,-2000,2000,0,0,0),(448,-2000,2000,0,0,0),(449,-2000,2000,0,0,0),(450,-2000,2000,0,0,0),(451,-2000,2000,0,0,0),(452,-2000,2000,0,0,0),(453,-2000,2000,0,0,0),(454,-2000,2000,0,0,0),(455,-2000,2000,0,0,0),(456,-2000,2000,0,0,0),(457,-2000,2000,0,0,0),(458,-2000,2000,0,0,0),(459,-2000,2000,0,0,0),(460,-2000,2000,0,0,0),(461,-2000,2000,0,0,0),(462,-2000,2000,0,0,0),(463,-2000,2000,0,0,0),(464,-2000,2000,0,0,0),(465,-2000,2000,0,0,0),(467,-2000,2000,0,0,0),(468,-2000,2000,0,0,0),(469,-2000,2000,0,0,0),(471,-2000,2000,0,0,0),(472,-2000,2000,0,0,0),(473,-2000,2000,0,0,0),(474,-2000,2000,0,0,0),(475,-2000,2000,0,0,0),(530,-2000,2000,0,0,0),(548,-2000,2000,0,0,0),(680,-2000,2000,0,0,0),(690,-2000,2000,0,0,0),(711,0,5000,0,0,0),(712,0,5000,0,0,0),(713,-5000,0,0,0,0),(714,-5000,0,0,0,0),(715,-5000,0,0,0,0),(716,-5000,0,0,0,0),(720,-2000,2000,0,0,0),(721,-2000,2000,0,0,0),(1005,-2000,2000,0,0,0),(1007,-2000,0,0,0,0),(1010,-2000,0,0,0,0),(1013,-2000,0,0,0,0),(1016,-2000,2000,0,0,0),(1021,-2000,2000,0,0,0),(1022,-2000,2000,0,0,0),(1023,-2000,2000,0,0,0),(1024,-2000,0,0,0,0),(1025,-2000,0,0,0,0),(1026,-2000,0,0,0,0),(1027,-2000,0,0,0,0),(1028,-2000,0,0,0,0),(1029,-2000,0,0,0,0),(1030,-2000,0,0,0,0),(1031,-2000,0,0,0,0),(1032,-2000,0,0,0,0),(1033,-2000,0,0,0,0),(1034,-2000,0,0,0,0),(1035,-2000,0,0,0,0),(1048,-2000,2000,0,0,0),(1049,-2000,0,0,0,0),(1050,-2000,2000,0,0,0),(1051,-2000,0,0,0,0),(1052,-2000,0,0,0,0),(1053,-2000,0,0,0,0),(1054,-2000,0,0,0,0),(1055,-2000,2000,0,0,0),(1056,-2000,0,0,0,0),(1057,-2000,2000,0,0,0),(1058,-2000,0,0,0,0),(1059,-2000,2000,0,0,0),(1062,-2000,2000,0,0,0),(1063,-2000,2000,0,0,0),(1065,-2000,2000,0,0,0),(1066,-2000,2000,0,0,0),(1068,-2000,900,0,0,0),(1069,-2000,900,0,0,0),(1070,-2000,900,0,0,0),(1071,-2000,900,0,0,0),(1072,-2000,900,0,0,0),(1073,-2000,900,0,0,0),(1074,-2000,900,0,0,0),(1075,-2000,900,0,0,0),(1076,-2000,900,0,0,0),(1077,-2000,900,0,0,0),(1078,-2000,900,0,0,0),(1079,-2000,900,0,0,0),(1080,-2000,900,0,0,0),(1085,-2000,2000,0,0,0),(1086,-2000,0,0,0,0),(1088,-2000,2000,0,0,0),(1089,-2000,2000,0,0,0),(1090,-2000,2000,0,0,0),(1091,-2000,2000,0,0,0),(1092,-2000,2000,0,0,0),(1093,-2000,0,0,0,0),(1094,-2000,0,0,0,0),(1095,-2000,2000,0,0,0),(1100,-2000,0,0,0,0),(1101,-2000,0,0,0,0),(1103,-2000,0,0,0,0),(1104,-2000,2000,0,0,0),(1105,-2000,2000,0,0,0),(1107,-2000,2000,0,0,0),(1108,-2000,2000,0,0,0),(1109,-2000,2000,0,0,0),(1110,-2000,2000,0,0,0),(1111,-2000,0,0,0,0),(1112,-2000,0,0,0,0),(1113,-2000,0,0,0,0),(1114,-2000,0,0,0,0),(1115,-2000,0,0,0,0),(1116,-2000,2000,0,0,0),(1119,-2000,2000,0,0,0),(1120,-2000,1000,0,0,0),(1121,-2000,1000,0,0,0),(1123,-2000,0,0,0,0),(1124,-2000,0,0,0,0),(1125,-2000,0,0,0,0),(1129,-2000,2000,0,0,0),(1134,-2000,2000,0,0,0),(1135,-2000,2000,0,0,0),(1137,-2000,2000,0,0,0),(1140,-2000,2000,0,0,0),(1141,-2000,2000,0,0,0),(1142,-2000,2000,0,0,0),(1143,-2000,2000,0,0,0),(1144,-2000,2000,0,0,0),(1145,-2000,2000,0,0,0),(1146,-2000,2000,0,0,0),(1147,-2000,2000,0,0,0),(1148,-2000,2000,0,0,0),(1149,-2000,2000,0,0,0),(1166,-2000,2000,0,0,0),(1169,-2000,2000,0,0,0),(1170,-2000,2000,0,0,0),(1175,-2000,2000,0,0,0),(1176,-2000,2000,0,0,0),(1181,-2000,2000,100,20,100),(1182,-2000,2000,0,0,0),(1183,-2000,2000,0,0,0),(1184,-2000,2000,0,0,0),(1185,-2000,2000,0,0,0),(1186,-2000,2000,100,20,100),(1188,-2000,2000,0,0,0),(1189,-2000,2000,0,0,0),(1190,-2000,2000,0,0,0),(1191,-2000,2000,0,0,0),(1192,-2000,2000,100,20,100),(1193,-2000,2000,100,20,100),(1194,-2000,2000,100,20,100),(1195,-2000,2000,100,20,100),(1196,-2000,2000,100,20,100),(1197,-2000,2000,100,20,100),(1198,-2000,2000,100,20,100),(1199,-2000,2000,100,20,100),(1200,-2000,2000,100,20,100),(1201,-2000,2000,100,20,100),(1202,-2000,2000,100,20,100),(1203,-2000,2000,100,20,100),(1204,-200,2000,100,20,100),(1205,-200,2000,100,20,100),(1209,-2000,2000,100,20,100),(1210,-2000,2000,100,20,100),(1211,-2000,2000,100,20,100),(1212,-2000,2000,100,20,100),(1213,-2000,2000,100,20,100),(1214,-2000,2000,100,20,100),(1215,-2000,2000,100,20,100),(1216,-2000,2000,100,20,100),(1219,-2000,2000,100,20,100),(1220,-2000,2000,100,20,100),(1221,-2000,2000,100,20,100),(1222,-2000,2000,0,0,0),(1223,-2000,2000,0,0,0),(1224,-2000,2000,0,0,0),(1225,-2000,2000,0,0,0),(1226,-2000,2000,0,0,0),(1227,-2000,2000,0,0,0),(1229,0,2000,100,20,100),(1230,-2000,2000,100,20,100),(1232,-500,2000,0,0,0),(1233,-3000,0,0,0,0),(1234,-500,2000,0,0,0),(1235,-2000,0,0,0,0),(1237,-2000,0,0,0,0),(1238,-400,0,0,0,0),(1241,-2000,249,0,0,0),(1242,-2000,2000,0,0,0),(1243,-2000,0,0,0,0),(1244,-499,2000,0,0,0),(1483,-4000,2000,0,0,0),(1484,-2000,2000,0,0,0),(1485,-2000,500,0,0,0),(1486,-2000,2000,0,0,0),(1487,-2000,2000,0,0,0),(1488,-2000,2000,0,0,0),(1489,-2000,2000,0,0,0),(1490,-2000,2000,0,0,0),(1491,-2000,2000,0,0,0),(1499,-2000,2000,0,0,0),(1500,-2000,2000,0,0,0),(1501,-2000,2000,0,0,0),(1502,-2000,2000,0,0,0),(1503,-2000,2000,0,0,0),(1504,-2000,2000,0,0,0),(1505,-2000,2000,0,0,0),(1506,-2000,2000,0,0,0),(1507,-2000,2000,0,0,0),(1508,-500,2000,0,0,0),(1509,-749,2000,0,0,0),(1510,-500,2000,0,0,0),(1511,-500,2000,0,0,0),(1512,-500,2000,0,0,0),(1513,-2000,2000,0,0,0),(1516,-2000,2000,0,0,0),(1519,-2000,2000,0,0,0),(1520,-2000,2000,0,0,0),(1521,-2000,0,0,0,0),(1522,-2000,2000,0,0,0),(1524,-2000,2000,0,0,0),(1525,-2000,2000,0,0,0),(1526,-2000,2000,0,0,0),(1527,-2000,2000,0,0,0),(1528,-2000,2000,0,0,0),(1529,-2000,2000,0,0,0),(1530,-2000,2000,0,0,0),(1531,-2000,2000,0,0,0),(1532,-2000,2000,0,0,0),(1533,-2000,2000,0,0,0),(1535,-2000,2000,0,0,0),(1537,-2000,2000,0,0,0),(1538,-2000,2000,0,0,0),(1541,-2000,2000,0,0,0),(1542,-2000,2000,0,0,0),(1543,-2000,2000,0,0,0),(1544,-2000,2000,0,0,0),(1545,-2000,2000,0,0,0),(1546,-2000,2000,0,0,0),(1547,-2000,2000,0,0,0),(1548,-2000,2000,0,0,0),(1549,-2000,2000,0,0,0),(1550,-2000,2000,0,0,0),(1551,-2000,2000,0,0,0),(1552,-2000,2000,0,0,0),(1555,-2000,2000,0,0,0),(1556,-2000,2000,0,0,0),(1559,-2000,2000,0,0,0),(1560,-2000,2000,0,0,0),(1561,-2000,2000,0,0,0),(1562,-2000,2000,0,0,0),(1563,-2000,2000,0,0,0),(1564,-2000,2000,0,0,0),(1565,-2000,2000,0,0,0),(1566,-2000,2000,0,0,0),(1568,-2000,2000,0,0,0),(1569,-2000,2000,0,0,0),(1570,-2000,2000,0,0,0),(1571,-2000,2000,0,0,0),(1573,-2000,2000,0,0,0),(1574,-2000,2000,0,0,0),(1576,-2000,2000,0,0,0),(1577,-2000,2000,0,0,0),(1578,-2000,2000,0,0,0),(1582,-2000,2000,0,0,0),(1583,-2000,2000,0,0,0),(1584,-2000,2000,0,0,0),(1587,-2000,2000,0,0,0),(1593,-2000,2000,0,0,0),(1597,-1550,2000,0,0,0),(1598,-850,2000,0,0,0),(1599,-2050,2000,0,0,0),(1600,-2050,2000,0,0,0),(1601,-1550,2000,0,0,0),(1603,-2050,2000,0,0,0),(1605,-2000,2000,0,0,0),(1607,-2000,2000,0,0,0),(1609,-2000,2000,0,0,0),(1610,-2000,2000,0,0,0),(1611,-2000,2000,0,0,0),(1612,-2000,2000,0,0,0),(1613,-2000,2000,0,0,0),(1618,-2000,2000,0,0,0),(1620,-2000,2000,0,0,0),(1621,-2000,2000,0,0,0),(1622,-2000,2000,0,0,0),(1623,-2000,2000,0,0,0),(1624,-2000,2000,0,0,0),(1625,-2000,2000,0,0,0),(1626,-2000,2000,0,0,0),(1627,-2000,2000,0,0,0),(1628,-2000,2000,0,0,0),(1629,-2000,2000,0,0,0),(1630,-2000,2000,0,0,0),(1633,-2000,2000,0,0,0),(1636,-2000,2000,0,0,0),(1643,-2000,2000,0,0,0),(1656,-2000,2000,0,0,0),(1659,-2000,2000,0,0,0),(1660,-2000,2000,0,0,0),(1665,-2000,2000,0,0,0),(1671,-2000,0,0,0,0),(1674,-2000,0,0,0,0),(1675,-2000,0,0,0,0),(1676,-2000,0,0,0,0),(1677,-2000,2000,0,0,0),(1679,-350,400,0,0,0),(1680,-100,800,0,0,0),(1681,-150,800,0,0,0),(1701,-2000,2000,0,0,0),(1703,-2000,2000,0,0,0),(1704,-2000,2000,0,0,0),(1709,-2000,2000,0,0,0),(1711,-2000,2000,0,0,0),(1712,-2000,2000,0,0,0),(1713,-2000,2000,0,0,0),(1714,-2000,2000,0,0,0),(1715,-2000,2000,0,0,0),(1716,-2000,2000,0,0,0),(1717,-2000,2000,0,0,0),(1718,-2000,2000,0,0,0),(1719,-2000,2000,0,0,0),(1720,-2000,2000,0,0,0),(1722,-2000,2000,0,0,0),(1725,-2000,2000,0,0,0),(1728,-2000,2000,0,0,0),(1729,-2000,2000,0,0,0),(1732,-2000,2000,0,0,0),(1733,-2000,2000,0,0,0),(1734,-2000,2000,0,0,0),(1735,-2000,2000,0,0,0),(1736,-2000,2000,0,0,0),(1737,-2000,2000,0,0,0),(1738,-2000,2000,0,0,0),(1741,-2000,2000,0,0,0),(1742,-2000,2000,0,0,0),(1743,-2000,2000,0,0,0),(1744,-2000,2000,0,0,0),(1745,-2000,2000,0,0,0),(1746,-2000,2000,0,0,0),(1747,-2000,2000,0,0,0),(1748,-2000,2000,0,0,0),(1749,-2000,2000,0,0,0),(1750,-2000,2000,0,0,0),(1755,-2000,2000,0,0,0),(1758,-2000,2000,0,0,0),(1759,-2000,2000,0,0,0),(1761,-2000,2000,0,0,0),(1762,-2000,2000,0,0,0),(1763,-2000,2000,0,0,0),(1764,-2000,2000,0,0,0),(1765,-2000,2000,0,0,0),(1766,-2000,2000,0,0,0),(1767,-2000,2000,0,0,0),(1768,-2000,2000,0,0,0),(1770,-2000,2000,0,0,0),(1771,-2000,2000,0,0,0),(1775,-800,1500,0,0,0),(1777,-1000,0,0,0,0),(1778,-800,1500,0,0,0),(1779,-800,1500,0,0,0),(1780,-800,1500,0,0,0),(1781,-800,1500,0,0,0),(1783,-1000,1000,0,0,0),(1784,-1000,0,0,0,0),(1785,-800,1500,0,0,0),(1786,-1000,1000,0,0,0),(1787,-1000,0,0,0,0),(1788,-1000,0,0,0,0),(1789,-1000,99,0,0,0),(1790,-1000,0,0,0,0),(1791,-1000,99,0,0,0),(1792,-1000,0,0,0,0),(1793,-1000,99,0,0,0),(1794,-1000,0,0,0,0),(1795,-1000,99,0,0,0),(1796,-1000,0,0,0,0),(1798,-1000,1000,0,0,0),(1799,-1000,99,0,0,0),(1801,-2000,2000,0,0,0),(1802,-2000,2000,0,0,0),(1817,-500,7000,0,0,0),(1818,-1000,899,0,0,0),(1819,-2000,99,0,0,0),(1820,-2000,2000,0,0,0),(1821,-2000,0,0,0,0),(1822,0,4000,0,0,0),(1823,-1000,950,0,0,0),(1824,-2000,0,0,0,0),(1825,-2000,2000,0,0,0),(1828,-2000,2000,0,0,0),(1829,-2000,2000,0,0,0),(1830,-900,900,0,0,0),(1831,-900,900,0,0,0),(1846,-501,499,100,20,100),(1847,-501,499,100,20,100),(1852,-2000,-1000,0,0,0),(1853,-2000,2000,0,0,0),(1854,-2000,2000,0,0,0),(1855,-2000,2000,0,0,0),(1856,-2000,2000,0,0,0),(1857,-2000,2000,0,0,0),(1858,-2000,2000,0,0,0),(1859,-751,2000,100,20,100),(1860,-751,2000,100,20,100),(1862,-2000,2000,0,0,0),(1863,-600,800,0,0,0),(1864,-600,800,0,0,0),(1865,-600,800,0,0,0),(1866,-600,800,0,0,0),(1867,-2000,2000,0,0,0),(1868,-2000,2000,0,0,0),(1869,-2000,2000,0,0,0),(1870,-2000,2000,0,0,0),(1872,-2000,2000,0,0,0); -/*!40000 ALTER TABLE `faction_base_data` ENABLE KEYS */; UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2018-12-11 14:53:10 From 5474661e117f2daf6feb442d2edea99a9fffe183 Mon Sep 17 00:00:00 2001 From: Noudess Date: Sat, 5 Jan 2019 13:00:33 -0500 Subject: [PATCH 15/53] Updated manifest to remove extra space, removed comments from sql dumpw --- utils/sql/db_update_manifest.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/sql/db_update_manifest.txt b/utils/sql/db_update_manifest.txt index ada18ec51..beb043f76 100644 --- a/utils/sql/db_update_manifest.txt +++ b/utils/sql/db_update_manifest.txt @@ -389,7 +389,7 @@ 9133|2018_11_25_StuckBehavior.sql|SHOW COLUMNS FROM `npc_types` LIKE 'stuck_behavior'|empty| 9134|2019_01_04_update_global_base_scaling.sql|SELECT * FROM db_version WHERE version >= 9134|empty| 9135|2018_12_12_client_faction_tables.sql|SHOW TABLES LIKE 'faction_base_data'|empty| -9136|2018_12_12_convert_to_client_functions.sql|SELECT `id` FROM `faction_list` WHERE `id` > 4999 |empty| +9136|2018_12_12_convert_to_client_functions.sql|SELECT `id` FROM `faction_list` WHERE `id` > 4999|empty| # Upgrade conditions: # This won't be needed after this system is implemented, but it is used database that are not From e3d52003103cc6214b00233557e397f06f82f9d7 Mon Sep 17 00:00:00 2001 From: KimLS Date: Mon, 7 Jan 2019 19:53:23 -0800 Subject: [PATCH 16/53] Redid background task interface, used it to async send client packets --- common/CMakeLists.txt | 6 +- common/event/background_task.h | 42 ---------- common/event/event_loop.cpp | 0 common/event/task.h | 100 ++++++++++++++++++++++ common/net/daybreak_connection.cpp | 130 ++++++++++++++++------------- common/net/daybreak_connection.h | 12 ++- ucs/clientlist.cpp | 1 - world/net.cpp | 1 - zone/net.cpp | 1 - zone/pathing.cpp | 33 ++++---- 10 files changed, 199 insertions(+), 127 deletions(-) delete mode 100644 common/event/background_task.h delete mode 100644 common/event/event_loop.cpp create mode 100644 common/event/task.h diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index b953815e6..6c09127fc 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -72,7 +72,6 @@ SET(common_sources unix.cpp xml_parser.cpp platform.cpp - event/event_loop.cpp json/jsoncpp.cpp net/console_server.cpp net/console_server_connection.cpp @@ -207,8 +206,8 @@ SET(common_headers version.h xml_parser.h zone_numbers.h - event/background_task.h event/event_loop.h + event/task.h event/timer.h json/json.h json/json-forwards.h @@ -265,10 +264,9 @@ SET(common_headers ) SOURCE_GROUP(Event FILES - event/background_task.h - event/event_loop.cpp event/event_loop.h event/timer.h + event/task.h ) SOURCE_GROUP(Json FILES diff --git a/common/event/background_task.h b/common/event/background_task.h deleted file mode 100644 index 41fe4accb..000000000 --- a/common/event/background_task.h +++ /dev/null @@ -1,42 +0,0 @@ -#pragma once -#include -#include "../any.h" -#include "event_loop.h" - -namespace EQ { - class BackgroundTask - { - public: - typedef std::function BackgroundTaskFunction; - struct BackgroundTaskBaton - { - BackgroundTaskFunction fn; - BackgroundTaskFunction on_finish; - EQEmu::Any data; - }; - - BackgroundTask(BackgroundTaskFunction fn, BackgroundTaskFunction on_finish, EQEmu::Any data) { - uv_work_t *m_work = new uv_work_t; - memset(m_work, 0, sizeof(uv_work_t)); - BackgroundTaskBaton *baton = new BackgroundTaskBaton(); - baton->fn = fn; - baton->on_finish = on_finish; - baton->data = data; - - m_work->data = baton; - uv_queue_work(EventLoop::Get().Handle(), m_work, [](uv_work_t* req) { - BackgroundTaskBaton *baton = (BackgroundTaskBaton*)req->data; - baton->fn(baton->data); - }, [](uv_work_t* req, int status) { - BackgroundTaskBaton *baton = (BackgroundTaskBaton*)req->data; - baton->on_finish(baton->data); - delete baton; - delete req; - }); - } - - ~BackgroundTask() { - - } - }; -} diff --git a/common/event/event_loop.cpp b/common/event/event_loop.cpp deleted file mode 100644 index e69de29bb..000000000 diff --git a/common/event/task.h b/common/event/task.h new file mode 100644 index 000000000..ae19700a2 --- /dev/null +++ b/common/event/task.h @@ -0,0 +1,100 @@ +#pragma once +#include +#include +#include "event_loop.h" +#include "../any.h" + +namespace EQ { + class Task + { + public: + typedef std::function ResolveFn; + typedef std::function RejectFn; + typedef std::function FinallyFn; + typedef std::function TaskFn; + struct TaskBaton + { + TaskFn fn; + ResolveFn on_then; + RejectFn on_catch; + FinallyFn on_finally; + bool has_result; + EQEmu::Any result; + bool has_error; + std::exception error; + }; + + Task(TaskFn fn) { + m_fn = fn; + } + + ~Task() { + + } + + Task& Then(ResolveFn fn) { + m_then = fn; + return *this; + } + + Task& Catch(RejectFn fn) { + m_catch = fn; + return *this; + } + + Task& Finally(FinallyFn fn) { + m_finally = fn; + return *this; + } + + void Run() { + uv_work_t *m_work = new uv_work_t; + memset(m_work, 0, sizeof(uv_work_t)); + TaskBaton *baton = new TaskBaton(); + baton->fn = m_fn; + baton->on_then = m_then; + baton->on_catch = m_catch; + baton->on_finally = m_finally; + baton->has_result = false; + baton->has_error = false; + + m_work->data = baton; + + uv_queue_work(EventLoop::Get().Handle(), m_work, [](uv_work_t* req) { + TaskBaton *baton = (TaskBaton*)req->data; + + baton->fn([baton](const EQEmu::Any& result) { + baton->has_error = false; + baton->has_result = true; + baton->result = result; + }, [baton](const std::exception &err) { + baton->has_error = true; + baton->has_result = false; + baton->error = err; + }); + }, [](uv_work_t* req, int status) { + TaskBaton *baton = (TaskBaton*)req->data; + + if (baton->has_error && baton->on_catch) { + baton->on_catch(baton->error); + } + else if (baton->has_result && baton->on_then) { + baton->on_then(baton->result); + } + + if (baton->on_finally) { + baton->on_finally(); + } + + delete baton; + delete req; + }); + } + + private: + TaskFn m_fn; + ResolveFn m_then; + RejectFn m_catch; + FinallyFn m_finally; + }; +} diff --git a/common/net/daybreak_connection.cpp b/common/net/daybreak_connection.cpp index 13827581c..652f31f2a 100644 --- a/common/net/daybreak_connection.cpp +++ b/common/net/daybreak_connection.cpp @@ -1,5 +1,6 @@ #include "daybreak_connection.h" #include "../event/event_loop.h" +#include "../event/task.h" #include "../eqemu_logsys.h" #include "../data_verification.h" #include "crc32.h" @@ -1045,10 +1046,6 @@ void EQ::Net::DaybreakConnection::ProcessResend(int stream) resends++; } } - - if (resends >= m_owner->m_options.resends_per_connection_cycle) { - return; - } } } @@ -1185,80 +1182,95 @@ void EQ::Net::DaybreakConnection::SendKeepAlive() void EQ::Net::DaybreakConnection::InternalSend(Packet &p) { m_last_send = Clock::now(); - auto send_func = [](uv_udp_send_t* req, int status) { delete[](char*)req->data; delete req; }; - + if (PacketCanBeEncoded(p)) { - DynamicPacket out; - out.PutPacket(0, p); - - for (int i = 0; i < 2; ++i) { - switch (m_encode_passes[i]) { - case EncodeCompression: - if(out.GetInt8(0) == 0) - Compress(out, DaybreakHeader::size(), out.Length() - DaybreakHeader::size()); - else - Compress(out, 1, out.Length() - 1); - break; - case EncodeXOR: - if (out.GetInt8(0) == 0) - Encode(out, DaybreakHeader::size(), out.Length() - DaybreakHeader::size()); - else - Encode(out, 1, out.Length() - 1); - break; - default: - break; + DynamicPacket *out = new DynamicPacket(); + out->PutPacket(0, p); + + auto sp = shared_from_this(); + EQ::Task([sp, out](EQ::Task::ResolveFn resolve, EQ::Task::RejectFn reject) { + + auto encode_passes = sp->GetEncodePasses(); + for (int i = 0; i < 2; ++i) { + switch (encode_passes[i]) { + case EncodeCompression: + if(out->GetInt8(0) == 0) + sp->Compress(*out, DaybreakHeader::size(), out->Length() - DaybreakHeader::size()); + else + sp->Compress(*out, 1, out->Length() - 1); + break; + case EncodeXOR: + if (out->GetInt8(0) == 0) + sp->Encode(*out, DaybreakHeader::size(), out->Length() - DaybreakHeader::size()); + else + sp->Encode(*out, 1, out->Length() - 1); + break; + default: + break; + } } - } - - AppendCRC(out); - + + sp->AppendCRC(*out); + resolve(out); + }) + .Then([sp, out, send_func](const EQEmu::Any &result) { + uv_udp_send_t *send_req = new uv_udp_send_t; + memset(send_req, 0, sizeof(*send_req)); + sockaddr_in send_addr; + uv_ip4_addr(sp->RemoteEndpoint().c_str(), sp->RemotePort(), &send_addr); + uv_buf_t send_buffers[1]; + + char *data = new char[out->Length()]; + memcpy(data, out->Data(), out->Length()); + send_buffers[0] = uv_buf_init(data, out->Length()); + send_req->data = send_buffers[0].base; + + auto &stats = sp->GetStats(); + + stats.sent_bytes += out->Length(); + stats.sent_packets++; + + auto owner = sp->GetManager(); + + if (owner->m_options.simulated_out_packet_loss && owner->m_options.simulated_out_packet_loss >= owner->m_rand.Int(0, 100)) { + delete[](char*)send_req->data; + delete send_req; + return; + } + + uv_udp_send(send_req, &owner->m_socket, send_buffers, 1, (sockaddr*)&send_addr, send_func); + }) + .Finally([out]() { + delete out; + }) + .Run(); + } + else { uv_udp_send_t *send_req = new uv_udp_send_t; - memset(send_req, 0, sizeof(*send_req)); sockaddr_in send_addr; uv_ip4_addr(m_endpoint.c_str(), m_port, &send_addr); uv_buf_t send_buffers[1]; - - char *data = new char[out.Length()]; - memcpy(data, out.Data(), out.Length()); - send_buffers[0] = uv_buf_init(data, out.Length()); + + char *data = new char[p.Length()]; + memcpy(data, p.Data(), p.Length()); + send_buffers[0] = uv_buf_init(data, p.Length()); send_req->data = send_buffers[0].base; - - m_stats.sent_bytes += out.Length(); + + m_stats.sent_bytes += p.Length(); m_stats.sent_packets++; + if (m_owner->m_options.simulated_out_packet_loss && m_owner->m_options.simulated_out_packet_loss >= m_owner->m_rand.Int(0, 100)) { delete[](char*)send_req->data; delete send_req; return; } - + uv_udp_send(send_req, &m_owner->m_socket, send_buffers, 1, (sockaddr*)&send_addr, send_func); - return; } - - uv_udp_send_t *send_req = new uv_udp_send_t; - sockaddr_in send_addr; - uv_ip4_addr(m_endpoint.c_str(), m_port, &send_addr); - uv_buf_t send_buffers[1]; - - char *data = new char[p.Length()]; - memcpy(data, p.Data(), p.Length()); - send_buffers[0] = uv_buf_init(data, p.Length()); - send_req->data = send_buffers[0].base; - - m_stats.sent_bytes += p.Length(); - m_stats.sent_packets++; - - if (m_owner->m_options.simulated_out_packet_loss && m_owner->m_options.simulated_out_packet_loss >= m_owner->m_rand.Int(0, 100)) { - delete[](char*)send_req->data; - delete send_req; - return; - } - - uv_udp_send(send_req, &m_owner->m_socket, send_buffers, 1, (sockaddr*)&send_addr, send_func); } void EQ::Net::DaybreakConnection::InternalQueuePacket(Packet &p, int stream_id, bool reliable) diff --git a/common/net/daybreak_connection.h b/common/net/daybreak_connection.h index f7ea49e22..7fd0a4f10 100644 --- a/common/net/daybreak_connection.h +++ b/common/net/daybreak_connection.h @@ -95,7 +95,7 @@ namespace EQ class DaybreakConnectionManager; class DaybreakConnection; - class DaybreakConnection + class DaybreakConnection : public std::enable_shared_from_this { public: DaybreakConnection(DaybreakConnectionManager *owner, const DaybreakConnect &connect, const std::string &endpoint, int port); @@ -109,10 +109,16 @@ namespace EQ void QueuePacket(Packet &p); void QueuePacket(Packet &p, int stream); void QueuePacket(Packet &p, int stream, bool reliable); + const DaybreakConnectionStats& GetStats() const { return m_stats; } + DaybreakConnectionStats &GetStats() { return m_stats; } void ResetStats(); size_t GetRollingPing() const { return m_rolling_ping; } - DbProtocolStatus GetStatus() { return m_status; } + DbProtocolStatus GetStatus() const { return m_status; } + + const DaybreakEncodeType* GetEncodePasses() const { return m_encode_passes; } + const DaybreakConnectionManager* GetManager() const { return m_owner; } + DaybreakConnectionManager* GetManager() { return m_owner; } private: DaybreakConnectionManager *m_owner; std::string m_endpoint; @@ -209,7 +215,6 @@ namespace EQ resend_delay_factor = 1.25; resend_delay_min = 150; resend_delay_max = 5000; - resends_per_connection_cycle = 10; connect_delay_ms = 500; stale_connection_ms = 90000; connect_stale_ms = 5000; @@ -234,7 +239,6 @@ namespace EQ size_t resend_delay_ms; size_t resend_delay_min; size_t resend_delay_max; - int resends_per_connection_cycle; size_t connect_delay_ms; size_t connect_stale_ms; size_t stale_connection_ms; diff --git a/ucs/clientlist.cpp b/ucs/clientlist.cpp index 3701d4dc2..a399485e4 100644 --- a/ucs/clientlist.cpp +++ b/ucs/clientlist.cpp @@ -473,7 +473,6 @@ Clientlist::Clientlist(int ChatPort) { chat_opts.daybreak_options.resend_delay_factor = RuleR(Network, ResendDelayFactor); chat_opts.daybreak_options.resend_delay_min = RuleI(Network, ResendDelayMinMS); chat_opts.daybreak_options.resend_delay_max = RuleI(Network, ResendDelayMaxMS); - chat_opts.daybreak_options.resends_per_connection_cycle = RuleI(Network, ResendsPerCycle); chatsf = new EQ::Net::EQStreamManager(chat_opts); diff --git a/world/net.cpp b/world/net.cpp index 65be8c3d0..cc6112997 100644 --- a/world/net.cpp +++ b/world/net.cpp @@ -499,7 +499,6 @@ int main(int argc, char** argv) { opts.daybreak_options.resend_delay_factor = RuleR(Network, ResendDelayFactor); opts.daybreak_options.resend_delay_min = RuleI(Network, ResendDelayMinMS); opts.daybreak_options.resend_delay_max = RuleI(Network, ResendDelayMaxMS); - opts.daybreak_options.resends_per_connection_cycle = RuleI(Network, ResendsPerCycle); EQ::Net::EQStreamManager eqsm(opts); diff --git a/zone/net.cpp b/zone/net.cpp index c13fc5e84..3ddbc14df 100644 --- a/zone/net.cpp +++ b/zone/net.cpp @@ -464,7 +464,6 @@ int main(int argc, char** argv) { opts.daybreak_options.resend_delay_factor = RuleR(Network, ResendDelayFactor); opts.daybreak_options.resend_delay_min = RuleI(Network, ResendDelayMinMS); opts.daybreak_options.resend_delay_max = RuleI(Network, ResendDelayMaxMS); - opts.daybreak_options.resends_per_connection_cycle = RuleI(Network, ResendsPerCycle); eqsm.reset(new EQ::Net::EQStreamManager(opts)); eqsf_open = true; diff --git a/zone/pathing.cpp b/zone/pathing.cpp index 74ae4c435..79b7900d2 100644 --- a/zone/pathing.cpp +++ b/zone/pathing.cpp @@ -1,5 +1,5 @@ #include "../common/global_define.h" -#include "../common/event/background_task.h" +#include "../common/event/task.h" #include "client.h" #include "zone.h" @@ -40,53 +40,56 @@ void CullPoints(std::vector &points) { } void Client::SendPathPacket(const std::vector &points) { - EQ::BackgroundTask task([](EQEmu::Any &data) { - auto &points = EQEmu::any_cast&>(data); + EQEmu::Any data(points); + EQ::Task([=](EQ::Task::ResolveFn resolve, EQ::Task::RejectFn reject) { + auto points = EQEmu::any_cast>(data); CullPoints(points); - }, [this](EQEmu::Any &data) { - auto &points = EQEmu::any_cast&>(data); - + resolve(points); + }) + .Then([this](const EQEmu::Any &result) { + auto points = EQEmu::any_cast>(result); if (points.size() < 2) { if (Admin() > 10) { Message(MT_System, "Too few points"); } - + EQApplicationPacket outapp(OP_FindPersonReply, 0); QueuePacket(&outapp); return; } - + if (points.size() > 36) { if (Admin() > 10) { Message(MT_System, "Too many points %u", points.size()); } - + EQApplicationPacket outapp(OP_FindPersonReply, 0); QueuePacket(&outapp); return; } - + if (Admin() > 10) { Message(MT_System, "Total points %u", points.size()); } - + int len = sizeof(FindPersonResult_Struct) + (points.size() + 1) * sizeof(FindPerson_Point); auto outapp = new EQApplicationPacket(OP_FindPersonReply, len); FindPersonResult_Struct* fpr = (FindPersonResult_Struct*)outapp->pBuffer; - + std::vector::iterator cur, end; cur = points.begin(); end = points.end(); unsigned int r; for (r = 0; cur != end; ++cur, r++) { fpr->path[r] = *cur; - + } //put the last element into the destination field --cur; fpr->path[r] = *cur; fpr->dest = *cur; - + FastQueuePacket(&outapp); - }, points); + }) + .Run(); } From 93394e0edc0d5787a00f18439a5a2982e05cb099 Mon Sep 17 00:00:00 2001 From: Brian Kinney Date: Wed, 6 Feb 2019 21:52:59 -0500 Subject: [PATCH 17/53] Reference the defender melee mitigation, not attacker --- zone/attack.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/zone/attack.cpp b/zone/attack.cpp index 483cce368..d789639f0 100644 --- a/zone/attack.cpp +++ b/zone/attack.cpp @@ -4514,7 +4514,9 @@ void Mob::ApplyMeleeDamageMods(uint16 skill, int &damage, Mob *defender, ExtraAt if (defender->IsClient() && defender->GetClass() == WARRIOR) dmgbonusmod -= 5; // 168 defensive - dmgbonusmod += (defender->spellbonuses.MeleeMitigationEffect + itembonuses.MeleeMitigationEffect + aabonuses.MeleeMitigationEffect); + dmgbonusmod -= (defender->spellbonuses.MeleeMitigationEffect + + defender->itembonuses.MeleeMitigationEffect + + defender->aabonuses.MeleeMitigationEffect); } damage += damage * dmgbonusmod / 100; From 1d0b00caf788e1cff8e30e43ba02c47b8b6e1d3d Mon Sep 17 00:00:00 2001 From: Brian Kinney Date: Wed, 6 Feb 2019 23:54:38 -0500 Subject: [PATCH 18/53] Raw numbers are negative so adding is correct --- zone/attack.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zone/attack.cpp b/zone/attack.cpp index d789639f0..a51cd3163 100644 --- a/zone/attack.cpp +++ b/zone/attack.cpp @@ -4514,7 +4514,7 @@ void Mob::ApplyMeleeDamageMods(uint16 skill, int &damage, Mob *defender, ExtraAt if (defender->IsClient() && defender->GetClass() == WARRIOR) dmgbonusmod -= 5; // 168 defensive - dmgbonusmod -= (defender->spellbonuses.MeleeMitigationEffect + + dmgbonusmod += (defender->spellbonuses.MeleeMitigationEffect + defender->itembonuses.MeleeMitigationEffect + defender->aabonuses.MeleeMitigationEffect); } From ad97968d5e2adfc3fa2135c4f37ad991fb16ee6a Mon Sep 17 00:00:00 2001 From: Noudess Date: Thu, 7 Feb 2019 14:48:31 -0500 Subject: [PATCH 19/53] Fixes for bug wherein illusions other than PC races could be exploited. Fixed for areas that neglected to take into account alliance and item faction bonuses. --- zone/client.cpp | 20 +++++++++++++------- zone/client_packet.cpp | 2 +- zone/embparser.cpp | 2 +- zone/mob.cpp | 12 +++++++++++- zone/mob.h | 1 + zone/questmgr.cpp | 2 +- 6 files changed, 28 insertions(+), 11 deletions(-) diff --git a/zone/client.cpp b/zone/client.cpp index b0eca3c43..85cda94a2 100644 --- a/zone/client.cpp +++ b/zone/client.cpp @@ -3457,7 +3457,7 @@ float Client::CalcPriceMod(Mob* other, bool reverse) float chaformula = 0; if (other) { - int factionlvl = GetFactionLevel(CharacterID(), other->CastToNPC()->GetNPCTypeID(), GetRace(), GetClass(), GetDeity(), other->CastToNPC()->GetPrimaryFaction(), other); + int factionlvl = GetFactionLevel(CharacterID(), other->CastToNPC()->GetNPCTypeID(), GetFactionRace(), GetClass(), GetDeity(), other->CastToNPC()->GetPrimaryFaction(), other); if (factionlvl >= FACTION_APPREHENSIVE) // Apprehensive or worse. { if (GetCHA() > 103) @@ -7692,7 +7692,7 @@ FACTION_VALUE Client::GetReverseFactionCon(Mob* iOther) { if (iOther->GetPrimaryFaction() == 0) return FACTION_INDIFFERENT; - return GetFactionLevel(CharacterID(), 0, GetRace(), GetClass(), GetDeity(), iOther->GetPrimaryFaction(), iOther); + return GetFactionLevel(CharacterID(), 0, GetFactionRace(), GetClass(), GetDeity(), iOther->GetPrimaryFaction(), iOther); } //o-------------------------------------------------------------- @@ -7779,7 +7779,7 @@ void Client::SetFactionLevel(uint32 char_id, uint32 npc_id, uint8 char_class, ui // Find out starting faction for this faction // It needs to be used to adj max and min personal // The range is still the same, 1200-3000(4200), but adjusted for base - database.GetFactionData(&fm, GetClass(), GetRace(), GetDeity(), + database.GetFactionData(&fm, GetClass(), GetFactionRace(), GetDeity(), faction_id[i]); if (quest) @@ -7829,7 +7829,7 @@ void Client::SetFactionLevel2(uint32 char_id, int32 faction_id, uint8 char_class // Find out starting faction for this faction // It needs to be used to adj max and min personal // The range is still the same, 1200-3000(4200), but adjusted for base - database.GetFactionData(&fm, GetClass(), GetRace(), GetDeity(), + database.GetFactionData(&fm, GetClass(), GetFactionRace(), GetDeity(), faction_id); // Adjust the amount you can go up or down so the resulting range @@ -7930,9 +7930,15 @@ return; int32 Client::GetModCharacterFactionLevel(int32 faction_id) { int32 Modded = GetCharacterFactionLevel(faction_id); FactionMods fm; - if (database.GetFactionData(&fm, GetClass(), GetRace(), GetDeity(), faction_id)) + if (database.GetFactionData(&fm, GetClass(), GetFactionRace(), GetDeity(), faction_id)) + { Modded += fm.base + fm.class_mod + fm.race_mod + fm.deity_mod; + //Tack on any bonuses from Alliance type spell effects + Modded += GetFactionBonus(faction_id); + Modded += GetItemFactionBonus(faction_id); + } + return Modded; } @@ -7945,7 +7951,7 @@ void Client::MerchantRejectMessage(Mob *merchant, int primaryfaction) // If a faction is involved, get the data. if (primaryfaction > 0) { - if (database.GetFactionData(&fmod, GetClass(), GetRace(), GetDeity(), primaryfaction)) { + if (database.GetFactionData(&fmod, GetClass(), GetFactionRace(), GetDeity(), primaryfaction)) { tmpFactionValue = GetCharacterFactionLevel(primaryfaction); lowestvalue = std::min(std::min(tmpFactionValue, fmod.deity_mod), std::min(fmod.class_mod, fmod.race_mod)); @@ -9126,4 +9132,4 @@ bool Client::GotoPlayer(std::string player_name) } return false; -} \ No newline at end of file +} diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index 7485d7451..667601a2b 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -4623,7 +4623,7 @@ void Client::Handle_OP_Consider(const EQApplicationPacket *app) con->playerid = GetID(); con->targetid = conin->targetid; if (tmob->IsNPC()) - con->faction = GetFactionLevel(character_id, tmob->GetNPCTypeID(), race, class_, deity, (tmob->IsNPC()) ? tmob->CastToNPC()->GetPrimaryFaction() : 0, tmob); // Dec. 20, 2001; TODO: Send the players proper deity + con->faction = GetFactionLevel(character_id, tmob->GetNPCTypeID(), GetFactionRace(), class_, deity, (tmob->IsNPC()) ? tmob->CastToNPC()->GetPrimaryFaction() : 0, tmob); // Dec. 20, 2001; TODO: Send the players proper deity else con->faction = 1; con->level = GetLevelCon(tmob->GetLevel()); diff --git a/zone/embparser.cpp b/zone/embparser.cpp index c267bd857..848299580 100644 --- a/zone/embparser.cpp +++ b/zone/embparser.cpp @@ -1046,7 +1046,7 @@ void PerlembParser::ExportMobVariables(bool isPlayerQuest, bool isGlobalPlayerQu if (mob && npcmob && mob->IsClient()) { Client* client = mob->CastToClient(); - fac = client->GetFactionLevel(client->CharacterID(), npcmob->GetID(), client->GetRace(), + fac = client->GetFactionLevel(client->CharacterID(), npcmob->GetID(), client->GetFactionRace(), client->GetClass(), client->GetDeity(), npcmob->GetPrimaryFaction(), npcmob); } } diff --git a/zone/mob.cpp b/zone/mob.cpp index 773c53767..aec319ba7 100644 --- a/zone/mob.cpp +++ b/zone/mob.cpp @@ -1553,7 +1553,7 @@ void Mob::ShowStats(Client* client) } } else { - client->Message(0, " Level: %i AC: %i Class: %i Size: %1.1f Haste: %i", GetLevel(), GetAC(), GetClass(), GetSize(), GetHaste()); + client->Message(0, " Level: %i AC: %i Class: %i Size: %1.1f Haste: %i", GetLevel(), ACSum(), GetClass(), GetSize(), GetHaste()); client->Message(0, " HP: %i Max HP: %i",GetHP(), GetMaxHP()); client->Message(0, " Mana: %i Max Mana: %i", GetMana(), GetMaxMana()); client->Message(0, " Total ATK: %i Worn/Spell ATK (Cap %i): %i", GetATK(), RuleI(Character, ItemATKCap), GetATKBonus()); @@ -2121,6 +2121,16 @@ bool Mob::IsPlayerRace(uint16 in_race) { return false; } +uint16 Mob::GetFactionRace() { + uint16 current_race = GetRace(); + if (IsPlayerRace(current_race) || current_race == TREE || + current_race == MINOR_ILL_OBJ) { + return current_race; + } + else { + return (GetBaseRace()); + } +} uint8 Mob::GetDefaultGender(uint16 in_race, uint8 in_gender) { if (Mob::IsPlayerRace(in_race) || in_race == 15 || in_race == 50 || in_race == 57 || in_race == 70 || in_race == 98 || in_race == 118 || in_race == 562) { diff --git a/zone/mob.h b/zone/mob.h index ad65bab39..548a974b0 100644 --- a/zone/mob.h +++ b/zone/mob.h @@ -442,6 +442,7 @@ public: virtual void SetMaxHP() { current_hp = max_hp; } virtual inline uint16 GetBaseRace() const { return base_race; } virtual inline uint8 GetBaseGender() const { return base_gender; } + virtual uint16 GetFactionRace(); virtual inline uint16 GetDeity() const { return deity; } virtual EQEmu::deity::DeityTypeBit GetDeityBit() { return EQEmu::deity::ConvertDeityTypeToDeityTypeBit((EQEmu::deity::DeityType)deity); } inline uint16 GetRace() const { return race; } diff --git a/zone/questmgr.cpp b/zone/questmgr.cpp index 660ac3273..d6e5e0535 100644 --- a/zone/questmgr.cpp +++ b/zone/questmgr.cpp @@ -2845,7 +2845,7 @@ uint8 QuestManager::FactionValue() FACTION_VALUE oldfac; uint8 newfac = 0; if(initiator && owner->IsNPC()) { - oldfac = initiator->GetFactionLevel(initiator->GetID(), owner->GetID(), initiator->GetRace(), initiator->GetClass(), initiator->GetDeity(), owner->GetPrimaryFaction(), owner); + oldfac = initiator->GetFactionLevel(initiator->GetID(), owner->GetID(), initiator->GetFactionRace(), initiator->GetClass(), initiator->GetDeity(), owner->GetPrimaryFaction(), owner); // now, reorder the faction to have it make sense (higher values are better) switch (oldfac) { From 3cffe5f7ef0f3a48a793792518d70a0a25f775d9 Mon Sep 17 00:00:00 2001 From: Uleat Date: Thu, 7 Feb 2019 22:09:31 -0500 Subject: [PATCH 20/53] Put merc and bot classes on the same stance standard (mercs) --- changelog.txt | 5 + common/emu_constants.cpp | 34 ++++++ common/emu_constants.h | 18 +++ common/version.h | 2 +- .../sql/git/bots/bots_db_update_manifest.txt | 1 + .../2019_02_07_bots_stance_type_update.sql | 11 ++ zone/bot.cpp | 46 +++---- zone/bot.h | 44 ++----- zone/bot_command.cpp | 38 +++--- zone/bot_database.cpp | 14 +-- zone/botspellsai.cpp | 115 +++++++++--------- zone/client_packet.cpp | 2 +- zone/merc.cpp | 28 ++--- zone/merc.h | 18 +-- 14 files changed, 210 insertions(+), 166 deletions(-) create mode 100644 utils/sql/git/bots/required/2019_02_07_bots_stance_type_update.sql diff --git a/changelog.txt b/changelog.txt index 8deecf26b..d6ddcbf75 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,6 +1,11 @@ EQEMu Changelog (Started on Sept 24, 2003 15:50) ------------------------------------------------------- +== 2/7/2019 == +Uleat: Put merc and bot classes on the same stance standard (mercs) + - Both classes will now use the same stance standard + - Pushed stance types up to EQEmu::constants + == 2/4/2019 == Uleat: Added command 'profanity' (aliased 'prof') - This is a server-based tool for redacting any language that an admin deems as profanity (socially unacceptable within their community) diff --git a/common/emu_constants.cpp b/common/emu_constants.cpp index e229b7d6d..950bc5ebb 100644 --- a/common/emu_constants.cpp +++ b/common/emu_constants.cpp @@ -118,3 +118,37 @@ EQEmu::bug::CategoryID EQEmu::bug::CategoryNameToCategoryID(const char* category return catOther; } + +const char *EQEmu::constants::GetStanceName(StanceType stance_type) { + switch (stance_type) { + case stanceUnknown: + return "Unknown"; + case stancePassive: + return "Passive"; + case stanceBalanced: + return "Balanced"; + case stanceEfficient: + return "Efficient"; + case stanceReactive: + return "Reactive"; + case stanceAggressive: + return "Aggressive"; + case stanceAssist: + return "Assist"; + case stanceBurn: + return "Burn"; + case stanceEfficient2: + return "Efficient2"; + case stanceBurnAE: + return "BurnAE"; + default: + return "Invalid"; + } +} + +int EQEmu::constants::ConvertStanceTypeToIndex(StanceType stance_type) { + if (stance_type >= EQEmu::constants::stancePassive && stance_type <= EQEmu::constants::stanceBurnAE) + return (stance_type - EQEmu::constants::stancePassive); + + return 0; +} diff --git a/common/emu_constants.h b/common/emu_constants.h index e3869570e..970b2861d 100644 --- a/common/emu_constants.h +++ b/common/emu_constants.h @@ -203,6 +203,24 @@ namespace EQEmu const size_t SAY_LINK_CLOSER_SIZE = 1; const size_t SAY_LINK_MAXIMUM_SIZE = (SAY_LINK_OPENER_SIZE + SAY_LINK_BODY_SIZE + SAY_LINK_TEXT_SIZE + SAY_LINK_CLOSER_SIZE); + enum StanceType : int { + stanceUnknown = 0, + stancePassive, + stanceBalanced, + stanceEfficient, + stanceReactive, + stanceAggressive, + stanceAssist, + stanceBurn, + stanceEfficient2, + stanceBurnAE + }; + + const char *GetStanceName(StanceType stance_type); + int ConvertStanceTypeToIndex(StanceType stance_type); + + const size_t STANCE_TYPE_MAX = stanceBurnAE; + } /*constants*/ namespace profile { diff --git a/common/version.h b/common/version.h index 5f78cdb3a..ff1c9ee46 100644 --- a/common/version.h +++ b/common/version.h @@ -32,7 +32,7 @@ #define CURRENT_BINARY_DATABASE_VERSION 9136 #ifdef BOTS - #define CURRENT_BINARY_BOTS_DATABASE_VERSION 9021 + #define CURRENT_BINARY_BOTS_DATABASE_VERSION 9022 #else #define CURRENT_BINARY_BOTS_DATABASE_VERSION 0 // must be 0 #endif diff --git a/utils/sql/git/bots/bots_db_update_manifest.txt b/utils/sql/git/bots/bots_db_update_manifest.txt index acdb20532..48e9fa026 100644 --- a/utils/sql/git/bots/bots_db_update_manifest.txt +++ b/utils/sql/git/bots/bots_db_update_manifest.txt @@ -20,6 +20,7 @@ 9019|2018_04_12_bots_stop_melee_level.sql|SHOW COLUMNS FROM `bot_data` LIKE 'stop_melee_level'|empty| 9020|2018_08_13_bots_inventory_update.sql|SELECT * FROM `inventory_versions` WHERE `version` = 2 and `bot_step` = 0|not_empty| 9021|2018_10_09_bots_owner_options.sql|SHOW TABLES LIKE 'bot_owner_options'|empty| +9022|2019_02_07_bots_stance_type_update.sql|SELECT * FROM `bot_spell_casting_chances` WHERE `spell_type_index` = '255' AND `class_id` = '255' AND `stance_index` = '0'|empty| # Upgrade conditions: # This won't be needed after this system is implemented, but it is used database that are not diff --git a/utils/sql/git/bots/required/2019_02_07_bots_stance_type_update.sql b/utils/sql/git/bots/required/2019_02_07_bots_stance_type_update.sql new file mode 100644 index 000000000..d2e3169fa --- /dev/null +++ b/utils/sql/git/bots/required/2019_02_07_bots_stance_type_update.sql @@ -0,0 +1,11 @@ +-- Update `bot_stances`.`stance_id` to new values +UPDATE `bot_stances` SET `stance_id` = '9' WHERE `stance_id` = '6'; +UPDATE `bot_stances` SET `stance_id` = '7' WHERE `stance_id` = '5'; +UPDATE `bot_stances` SET `stance_id` = (`stance_id` + 1) WHERE `stance_id` in (0,1,2,3,4); + +-- Update `bot_spell_casting_chances`.`stance_index` to new values +UPDATE `bot_spell_casting_chances` SET `stance_index` = '8' WHERE `stance_index` = '6'; +UPDATE `bot_spell_casting_chances` SET `stance_index` = '6' WHERE `stance_index` = '5'; + +-- Update `bot_spell_casting_chances` implicit versioning +UPDATE `bot_spell_casting_chances` SET `stance_index` = '1' WHERE `spell_type_index` = '255' AND `class_id` = '255'; diff --git a/zone/bot.cpp b/zone/bot.cpp index d7e330f6e..381701a51 100644 --- a/zone/bot.cpp +++ b/zone/bot.cpp @@ -163,7 +163,7 @@ Bot::Bot(uint32 botID, uint32 botOwnerCharacterID, uint32 botSpellsID, double to if (!stance_flag && bot_owner) bot_owner->Message(13, "Could not locate stance for '%s'", GetCleanName()); - SetTaunting((GetClass() == WARRIOR || GetClass() == PALADIN || GetClass() == SHADOWKNIGHT) && (GetBotStance() == BotStanceAggressive)); + SetTaunting((GetClass() == WARRIOR || GetClass() == PALADIN || GetClass() == SHADOWKNIGHT) && (GetBotStance() == EQEmu::constants::stanceAggressive)); SetPauseAI(false); rest_timer.Disable(); @@ -2766,7 +2766,7 @@ void Bot::AI_Process() { // we can't fight if we don't have a target, are stun/mezzed or dead.. // Stop attacking if the target is enraged TEST_TARGET(); - if (GetBotStance() == BotStancePassive || (tar->IsEnraged() && !BehindMob(tar, GetX(), GetY()))) + if (GetBotStance() == EQEmu::constants::stancePassive || (tar->IsEnraged() && !BehindMob(tar, GetX(), GetY()))) return; // First, special attack per class (kick, backstab etc..) @@ -2893,7 +2893,7 @@ void Bot::AI_Process() { FaceTarget(GetTarget()); // This is a mob that is fleeing either because it has been feared or is low on hitpoints - if (GetBotStance() != BotStancePassive) { + if (GetBotStance() != EQEmu::constants::stancePassive) { AI_PursueCastCheck(); // This appears to always return true..can't trust for success/fail return; } @@ -2901,7 +2901,7 @@ void Bot::AI_Process() { } // end not in combat range if (!IsMoving() && !spellend_timer.Enabled()) { // This may actually need work... - if (GetBotStance() == BotStancePassive) + if (GetBotStance() == EQEmu::constants::stancePassive) return; if (GetTarget() && AI_EngagedCastCheck()) @@ -2959,7 +2959,7 @@ void Bot::AI_Process() { // Ok to idle if (fm_dist <= GetFollowDistance()) { if (!IsMoving() && AI_think_timer->Check() && !spellend_timer.Enabled()) { - if (GetBotStance() != BotStancePassive) { + if (GetBotStance() != EQEmu::constants::stancePassive) { if (!AI_IdleCastCheck() && !IsCasting() && GetClass() != BARD) BotMeditate(true); } @@ -3004,7 +3004,7 @@ void Bot::AI_Process() { // Basically, bard bots get a chance to cast idle spells while moving if (IsMoving()) { - if (GetBotStance() != BotStancePassive) { + if (GetBotStance() != EQEmu::constants::stancePassive) { if (GetClass() == BARD && !spellend_timer.Enabled() && AI_think_timer->Check()) { AI_IdleCastCheck(); return; @@ -8268,19 +8268,19 @@ bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, fl Group *g = caster->GetGroup(); float hpRatioToHeal = 25.0f; switch(caster->GetBotStance()) { - case BotStanceReactive: - case BotStanceBalanced: - hpRatioToHeal = 50.0f; - break; - case BotStanceBurn: - case BotStanceBurnAE: - hpRatioToHeal = 20.0f; - break; - case BotStanceAggressive: - case BotStanceEfficient: - default: - hpRatioToHeal = 25.0f; - break; + case EQEmu::constants::stanceReactive: + case EQEmu::constants::stanceBalanced: + hpRatioToHeal = 50.0f; + break; + case EQEmu::constants::stanceBurn: + case EQEmu::constants::stanceBurnAE: + hpRatioToHeal = 20.0f; + break; + case EQEmu::constants::stanceAggressive: + case EQEmu::constants::stanceEfficient: + default: + hpRatioToHeal = 25.0f; + break; } if(g) { @@ -8819,11 +8819,11 @@ bool Bot::HasOrMayGetAggro() { } void Bot::SetDefaultBotStance() { - BotStanceType defaultStance = BotStanceBalanced; + EQEmu::constants::StanceType defaultStance = EQEmu::constants::stanceBalanced; if (GetClass() == WARRIOR) - defaultStance = BotStanceAggressive; + defaultStance = EQEmu::constants::stanceAggressive; - _baseBotStance = BotStancePassive; + _baseBotStance = EQEmu::constants::stancePassive; _botStance = defaultStance; } @@ -9096,4 +9096,6 @@ std::string Bot::CreateSayLink(Client* c, const char* message, const char* name) return saylink; } +uint8 Bot::spell_casting_chances[MaxSpellTypes][PLAYER_CLASS_COUNT][EQEmu::constants::STANCE_TYPE_MAX][cntHSND] = { 0 }; + #endif diff --git a/zone/bot.h b/zone/bot.h index 55a8cba97..08b62b7b0 100644 --- a/zone/bot.h +++ b/zone/bot.h @@ -54,34 +54,6 @@ const int MaxDisciplineTimer = 10; const int DisciplineReuseStart = MaxSpellTimer + 1; const int MaxTimer = MaxSpellTimer + MaxDisciplineTimer; -enum BotStanceType { - BotStancePassive, - BotStanceBalanced, - BotStanceEfficient, - BotStanceReactive, - BotStanceAggressive, - BotStanceBurn, - BotStanceBurnAE, - BotStanceUnknown, - MaxStances = BotStanceUnknown -}; - -#define BOT_STANCE_COUNT 8 -#define VALIDBOTSTANCE(x) ((x >= (int)BotStancePassive && x <= (int)BotStanceBurnAE) ? ((BotStanceType)x) : (BotStanceUnknown)) - -static const std::string bot_stance_name[BOT_STANCE_COUNT] = { - "Passive", // 0 - "Balanced", // 1 - "Efficient", // 2 - "Reactive", // 3 - "Aggressive", // 4 - "Burn", // 5 - "BurnAE", // 6 - "Unknown" // 7 -}; - -static const char* GetBotStanceName(int stance_id) { return bot_stance_name[VALIDBOTSTANCE(stance_id)].c_str(); } - #define VALIDBOTEQUIPSLOT(x) ((x >= EQEmu::invslot::EQUIPMENT_BEGIN && x <= EQEmu::invslot::EQUIPMENT_END) ? (x) : (EQEmu::invslot::EQUIPMENT_COUNT)) static const std::string bot_equip_slot_name[EQEmu::invslot::EQUIPMENT_COUNT + 1] = @@ -519,7 +491,7 @@ public: virtual bool IsBot() const { return true; } bool GetRangerAutoWeaponSelect() { return _rangerAutoWeaponSelect; } BotRoleType GetBotRole() { return _botRole; } - BotStanceType GetBotStance() { return _botStance; } + EQEmu::constants::StanceType GetBotStance() { return _botStance; } uint8 GetChanceToCastBySpellType(uint32 spellType); bool IsGroupHealer() { return m_CastingRoles.GroupHealer; } @@ -633,7 +605,12 @@ public: // void SetBotOwnerCharacterID(uint32 botOwnerCharacterID) { _botOwnerCharacterID = botOwnerCharacterID; } void SetRangerAutoWeaponSelect(bool enable) { GetClass() == RANGER ? _rangerAutoWeaponSelect = enable : _rangerAutoWeaponSelect = false; } void SetBotRole(BotRoleType botRole) { _botRole = botRole; } - void SetBotStance(BotStanceType botStance) { _botStance = ((botStance != BotStanceUnknown) ? (botStance) : (BotStancePassive)); } + void SetBotStance(EQEmu::constants::StanceType botStance) { + if (botStance >= EQEmu::constants::stancePassive && botStance <= EQEmu::constants::stanceBurnAE) + _botStance = botStance; + else + _botStance = EQEmu::constants::stancePassive; + } void SetSpellRecastTimer(int timer_index, int32 recast_delay); void SetDisciplineRecastTimer(int timer_index, int32 recast_delay); void SetAltOutOfCombatBehavior(bool behavior_flag) { _altoutofcombatbehavior = behavior_flag;} @@ -727,8 +704,8 @@ private: uint32 _lastZoneId; bool _rangerAutoWeaponSelect; BotRoleType _botRole; - BotStanceType _botStance; - BotStanceType _baseBotStance; + EQEmu::constants::StanceType _botStance; + EQEmu::constants::StanceType _baseBotStance; unsigned int RestRegenHP; unsigned int RestRegenMana; unsigned int RestRegenEndurance; @@ -792,6 +769,9 @@ private: bool LoadPet(); // Load and spawn bot pet if there is one bool SavePet(); // Save and depop bot pet if there is one bool DeletePet(); + + public: + static uint8 spell_casting_chances[MaxSpellTypes][PLAYER_CLASS_COUNT][EQEmu::constants::STANCE_TYPE_MAX][cntHSND]; }; #endif // BOTS diff --git a/zone/bot_command.cpp b/zone/bot_command.cpp index 94b25b3ad..b12aa2d46 100644 --- a/zone/bot_command.cpp +++ b/zone/bot_command.cpp @@ -4249,7 +4249,7 @@ void bot_subcommand_bot_clone(Client *c, const Seperator *sep) return; } - int clone_stance = BotStancePassive; + int clone_stance = EQEmu::constants::stancePassive; if (!botdb.LoadStance(my_bot->GetBotID(), clone_stance)) c->Message(m_fail, "%s for bot '%s'", BotDatabase::fail::LoadStance(), my_bot->GetCleanName()); if (!botdb.SaveStance(clone_id, clone_stance)) @@ -5160,29 +5160,34 @@ void bot_subcommand_bot_stance(Client *c, const Seperator *sep) if (helper_command_alias_fail(c, "bot_subcommand_bot_stance", sep->arg[0], "botstance")) return; if (helper_is_help_or_usage(sep->arg[1])) { - c->Message(m_usage, "usage: %s [current | value: 0-6] ([actionable: target | byname] ([actionable_name]))", sep->arg[0]); + c->Message(m_usage, "usage: %s [current | value: 1-9] ([actionable: target | byname] ([actionable_name]))", sep->arg[0]); c->Message(m_note, "value: %u(%s), %u(%s), %u(%s), %u(%s), %u(%s), %u(%s), %u(%s)", - BotStancePassive, GetBotStanceName(BotStancePassive), - BotStanceBalanced, GetBotStanceName(BotStanceBalanced), - BotStanceEfficient, GetBotStanceName(BotStanceEfficient), - BotStanceReactive, GetBotStanceName(BotStanceReactive), - BotStanceAggressive, GetBotStanceName(BotStanceAggressive), - BotStanceBurn, GetBotStanceName(BotStanceBurn), - BotStanceBurnAE, GetBotStanceName(BotStanceBurnAE) + EQEmu::constants::stancePassive, EQEmu::constants::GetStanceName(EQEmu::constants::stancePassive), + EQEmu::constants::stanceBalanced, EQEmu::constants::GetStanceName(EQEmu::constants::stanceBalanced), + EQEmu::constants::stanceEfficient, EQEmu::constants::GetStanceName(EQEmu::constants::stanceEfficient), + EQEmu::constants::stanceReactive, EQEmu::constants::GetStanceName(EQEmu::constants::stanceReactive), + EQEmu::constants::stanceAggressive, EQEmu::constants::GetStanceName(EQEmu::constants::stanceAggressive), + EQEmu::constants::stanceAssist, EQEmu::constants::GetStanceName(EQEmu::constants::stanceAssist), + EQEmu::constants::stanceBurn, EQEmu::constants::GetStanceName(EQEmu::constants::stanceBurn), + EQEmu::constants::stanceEfficient2, EQEmu::constants::GetStanceName(EQEmu::constants::stanceEfficient2), + EQEmu::constants::stanceBurnAE, EQEmu::constants::GetStanceName(EQEmu::constants::stanceBurnAE) ); return; } int ab_mask = (ActionableBots::ABM_Target | ActionableBots::ABM_ByName); bool current_flag = false; - auto bst = BotStanceUnknown; + auto bst = EQEmu::constants::stanceUnknown; if (!strcasecmp(sep->arg[1], "current")) current_flag = true; - else if (sep->IsNumber(1)) - bst = VALIDBOTSTANCE(atoi(sep->arg[1])); + else if (sep->IsNumber(1)) { + bst = (EQEmu::constants::StanceType)atoi(sep->arg[1]); + if (bst < EQEmu::constants::stanceUnknown || bst > EQEmu::constants::stanceBurnAE) + bst = EQEmu::constants::stanceUnknown; + } - if (!current_flag && bst == BotStanceUnknown) { + if (!current_flag && bst == EQEmu::constants::stanceUnknown) { c->Message(m_fail, "A [current] argument or valid numeric [value] is required to use this command"); return; } @@ -5200,7 +5205,12 @@ void bot_subcommand_bot_stance(Client *c, const Seperator *sep) bot_iter->Save(); } - Bot::BotGroupSay(bot_iter, "My current stance is '%s' (%u)", GetBotStanceName(bot_iter->GetBotStance()), bot_iter->GetBotStance()); + Bot::BotGroupSay( + bot_iter, + "My current stance is '%s' (%i)", + EQEmu::constants::GetStanceName(bot_iter->GetBotStance()), + bot_iter->GetBotStance() + ); } } diff --git a/zone/bot_database.cpp b/zone/bot_database.cpp index f32ecafc4..651729223 100644 --- a/zone/bot_database.cpp +++ b/zone/bot_database.cpp @@ -83,12 +83,8 @@ bool BotDatabase::LoadBotCommandSettings(std::map= MaxStances) + if (stance_index >= EQEmu::constants::STANCE_TYPE_MAX) continue; for (uint8 conditional_index = nHSND; conditional_index < cntHSND; ++conditional_index) { @@ -136,7 +132,7 @@ bool BotDatabase::LoadBotSpellCastingChances() if (value > 100) value = 100; - spell_casting_chances[spell_type_index][class_index][stance_index][conditional_index] = value; + Bot::spell_casting_chances[spell_type_index][class_index][stance_index][conditional_index] = value; } } @@ -877,7 +873,7 @@ bool BotDatabase::LoadStance(Bot* bot_inst, bool& stance_flag) return true; auto row = results.begin(); - bot_inst->SetBotStance((BotStanceType)atoi(row[0])); + bot_inst->SetBotStance((EQEmu::constants::StanceType)atoi(row[0])); stance_flag = true; return true; @@ -2857,12 +2853,12 @@ uint8 BotDatabase::GetSpellCastingChance(uint8 spell_type_index, uint8 class_ind return 0; if (class_index >= PLAYER_CLASS_COUNT) return 0; - if (stance_index >= MaxStances) + if (stance_index >= EQEmu::constants::STANCE_TYPE_MAX) return 0; if (conditional_index >= cntHSND) return 0; - return spell_casting_chances[spell_type_index][class_index][stance_index][conditional_index]; + return Bot::spell_casting_chances[spell_type_index][class_index][stance_index][conditional_index]; } diff --git a/zone/botspellsai.cpp b/zone/botspellsai.cpp index 154574453..d660f2420 100644 --- a/zone/botspellsai.cpp +++ b/zone/botspellsai.cpp @@ -192,25 +192,24 @@ bool Bot::AICastSpell(Mob* tar, uint8 iChance, uint32 iSpellTypes) { else { float hpRatioToCast = 0.0f; - switch(this->GetBotStance()) - { - case BotStanceEfficient: - case BotStanceAggressive: - hpRatioToCast = isPrimaryHealer?90.0f:50.0f; - break; - case BotStanceBalanced: - hpRatioToCast = isPrimaryHealer?95.0f:75.0f; - break; - case BotStanceReactive: - hpRatioToCast = isPrimaryHealer?100.0f:90.0f; - break; - case BotStanceBurn: - case BotStanceBurnAE: - hpRatioToCast = isPrimaryHealer?75.0f:25.0f; - break; - default: - hpRatioToCast = isPrimaryHealer?100.0f:0.0f; - break; + switch(this->GetBotStance()) { + case EQEmu::constants::stanceEfficient: + case EQEmu::constants::stanceAggressive: + hpRatioToCast = isPrimaryHealer?90.0f:50.0f; + break; + case EQEmu::constants::stanceBalanced: + hpRatioToCast = isPrimaryHealer?95.0f:75.0f; + break; + case EQEmu::constants::stanceReactive: + hpRatioToCast = isPrimaryHealer?100.0f:90.0f; + break; + case EQEmu::constants::stanceBurn: + case EQEmu::constants::stanceBurnAE: + hpRatioToCast = isPrimaryHealer?75.0f:25.0f; + break; + default: + hpRatioToCast = isPrimaryHealer?100.0f:0.0f; + break; } //If we're at specified mana % or below, don't heal as hybrid @@ -381,23 +380,22 @@ bool Bot::AICastSpell(Mob* tar, uint8 iChance, uint32 iSpellTypes) { { float manaRatioToCast = 75.0f; - switch(this->GetBotStance()) - { - case BotStanceEfficient: - manaRatioToCast = 90.0f; - break; - case BotStanceBalanced: - case BotStanceAggressive: - manaRatioToCast = 75.0f; - break; - case BotStanceReactive: - case BotStanceBurn: - case BotStanceBurnAE: - manaRatioToCast = 50.0f; - break; - default: - manaRatioToCast = 75.0f; - break; + switch(this->GetBotStance()) { + case EQEmu::constants::stanceEfficient: + manaRatioToCast = 90.0f; + break; + case EQEmu::constants::stanceBalanced: + case EQEmu::constants::stanceAggressive: + manaRatioToCast = 75.0f; + break; + case EQEmu::constants::stanceReactive: + case EQEmu::constants::stanceBurn: + case EQEmu::constants::stanceBurnAE: + manaRatioToCast = 50.0f; + break; + default: + manaRatioToCast = 75.0f; + break; } //If we're at specified mana % or below, don't rune as enchanter @@ -461,25 +459,24 @@ bool Bot::AICastSpell(Mob* tar, uint8 iChance, uint32 iSpellTypes) { { float manaRatioToCast = 75.0f; - switch(this->GetBotStance()) - { - case BotStanceEfficient: - manaRatioToCast = 90.0f; - break; - case BotStanceBalanced: - manaRatioToCast = 75.0f; - break; - case BotStanceReactive: - case BotStanceAggressive: - manaRatioToCast = 50.0f; - break; - case BotStanceBurn: - case BotStanceBurnAE: - manaRatioToCast = 25.0f; - break; - default: - manaRatioToCast = 50.0f; - break; + switch(this->GetBotStance()) { + case EQEmu::constants::stanceEfficient: + manaRatioToCast = 90.0f; + break; + case EQEmu::constants::stanceBalanced: + manaRatioToCast = 75.0f; + break; + case EQEmu::constants::stanceReactive: + case EQEmu::constants::stanceAggressive: + manaRatioToCast = 50.0f; + break; + case EQEmu::constants::stanceBurn: + case EQEmu::constants::stanceBurnAE: + manaRatioToCast = 25.0f; + break; + default: + manaRatioToCast = 50.0f; + break; } //If we're at specified mana % or below, don't nuke as cleric or enchanter @@ -1310,7 +1307,7 @@ bool Bot::AI_EngagedCastCheck() { AIautocastspell_timer->Disable(); //prevent the timer from going off AGAIN while we are casting. uint8 botClass = GetClass(); - BotStanceType botStance = GetBotStance(); + EQEmu::constants::StanceType botStance = GetBotStance(); bool mayGetAggro = HasOrMayGetAggro(); Log(Logs::Detail, Logs::AI, "Engaged autocast check triggered (BOTS). Trying to cast healing spells then maybe offensive spells."); @@ -2653,11 +2650,13 @@ uint8 Bot::GetChanceToCastBySpellType(uint32 spellType) return 0; --class_index; - uint8 stance_index = (uint8)GetBotStance(); - if (stance_index >= MaxStances) + EQEmu::constants::StanceType stance_type = GetBotStance(); + if (stance_type < EQEmu::constants::stancePassive || stance_type > EQEmu::constants::stanceBurnAE) return 0; + uint8 stance_index = EQEmu::constants::ConvertStanceTypeToIndex(stance_type); uint8 type_index = nHSND; + if (HasGroup()) { if (IsGroupHealer()/* || IsRaidHealer()*/) type_index |= pH; diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index 9e03a6e4e..10cd81d89 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -9394,7 +9394,7 @@ void Client::Handle_OP_MercenaryCommand(const EQApplicationPacket *app) //check to see if selected option is a valid stance slot (option is the slot the stance is in, not the actual stance) if (option >= 0 && option < numStances) { - merc->SetStance(mercTemplate->Stances[option]); + merc->SetStance((EQEmu::constants::StanceType)mercTemplate->Stances[option]); GetMercInfo().Stance = mercTemplate->Stances[option]; Log(Logs::General, Logs::Mercenaries, "Set Stance: %u for %s (%s)", merc->GetStance(), merc->GetName(), GetName()); diff --git a/zone/merc.cpp b/zone/merc.cpp index 1825a23eb..e71667320 100644 --- a/zone/merc.cpp +++ b/zone/merc.cpp @@ -66,7 +66,7 @@ Merc::Merc(const NPCType* d, float x, float y, float z, float heading) memset(equipment, 0, sizeof(equipment)); SetMercID(0); - SetStance(MercStanceBalanced); + SetStance(EQEmu::constants::stanceBalanced); rest_timer.Disable(); if (GetClass() == ROGUE) @@ -3669,13 +3669,13 @@ MercSpell Merc::GetBestMercSpellForAENuke(Merc* caster, Mob* tar) { switch(caster->GetStance()) { - case MercStanceBurnAE: + case EQEmu::constants::stanceBurnAE: initialCastChance = 50; break; - case MercStanceBalanced: + case EQEmu::constants::stanceBalanced: initialCastChance = 25; break; - case MercStanceBurn: + case EQEmu::constants::stanceBurn: initialCastChance = 0; break; } @@ -3717,11 +3717,11 @@ MercSpell Merc::GetBestMercSpellForTargetedAENuke(Merc* caster, Mob* tar) { switch(caster->GetStance()) { - case MercStanceBurnAE: + case EQEmu::constants::stanceBurnAE: numTargetsCheck = 1; break; - case MercStanceBalanced: - case MercStanceBurn: + case EQEmu::constants::stanceBalanced: + case EQEmu::constants::stanceBurn: numTargetsCheck = 2; break; } @@ -3769,11 +3769,11 @@ MercSpell Merc::GetBestMercSpellForPBAENuke(Merc* caster, Mob* tar) { switch(caster->GetStance()) { - case MercStanceBurnAE: + case EQEmu::constants::stanceBurnAE: numTargetsCheck = 2; break; - case MercStanceBalanced: - case MercStanceBurn: + case EQEmu::constants::stanceBalanced: + case EQEmu::constants::stanceBurn: numTargetsCheck = 3; break; } @@ -3820,11 +3820,11 @@ MercSpell Merc::GetBestMercSpellForAERainNuke(Merc* caster, Mob* tar) { switch(caster->GetStance()) { - case MercStanceBurnAE: + case EQEmu::constants::stanceBurnAE: numTargetsCheck = 1; break; - case MercStanceBalanced: - case MercStanceBurn: + case EQEmu::constants::stanceBalanced: + case EQEmu::constants::stanceBurn: numTargetsCheck = 2; break; } @@ -5649,7 +5649,7 @@ void Client::SpawnMerc(Merc* merc, bool setMaxStats) { merc->SetSuspended(false); SetMerc(merc); merc->Unsuspend(setMaxStats); - merc->SetStance(GetMercInfo().Stance); + merc->SetStance((EQEmu::constants::StanceType)GetMercInfo().Stance); Log(Logs::General, Logs::Mercenaries, "SpawnMerc Success for %s.", GetName()); diff --git a/zone/merc.h b/zone/merc.h index cf6a14009..0fdc05f7a 100644 --- a/zone/merc.h +++ b/zone/merc.h @@ -30,18 +30,6 @@ namespace EQEmu const int MercAISpellRange = 100; // TODO: Write a method that calcs what the merc's spell range is based on spell, equipment, AA, whatever and replace this -enum MercStanceType { - MercStancePassive = 1, - MercStanceBalanced, - MercStanceEfficient, - MercStanceReactive, - MercStanceAggressive, - MercStanceAssist, - MercStanceBurn, - MercStanceEfficient2, - MercStanceBurnAE -}; - struct MercSpell { uint16 spellid; // <= 0 = no spell uint32 type; // 0 = never, must be one (and only one) of the defined values @@ -175,7 +163,7 @@ public: uint8 GetTierID() { return _TierID; } uint32 GetCostFormula() { return _CostFormula; } uint32 GetMercNameType() { return _NameType; } - uint32 GetStance() { return _currentStance; } + EQEmu::constants::StanceType GetStance() { return _currentStance; } int GetHatedCount() { return _hatedCount; } inline const uint8 GetClientVersion() const { return _OwnerClientVersion; } @@ -265,7 +253,7 @@ public: void SetMercNameType( uint8 nametype ) { _NameType = nametype; } void SetClientVersion(uint8 clientVersion) { _OwnerClientVersion = clientVersion; } void SetSuspended(bool suspended) { _suspended = suspended; } - void SetStance( uint32 stance ) { _currentStance = stance; } + void SetStance( EQEmu::constants::StanceType stance ) { _currentStance = stance; } void SetHatedCount( int count ) { _hatedCount = count; } void Sit(); @@ -385,7 +373,7 @@ private: uint8 _CostFormula; uint8 _NameType; uint8 _OwnerClientVersion; - uint32 _currentStance; + EQEmu::constants::StanceType _currentStance; EQEmu::InventoryProfile m_inv; int32 max_end; From 146e28f7087a7b5ee710add15da76cafd3be24a9 Mon Sep 17 00:00:00 2001 From: Uleat Date: Thu, 7 Feb 2019 22:13:58 -0500 Subject: [PATCH 21/53] Updater criteria fix [ci skip] --- utils/sql/git/bots/bots_db_update_manifest.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/sql/git/bots/bots_db_update_manifest.txt b/utils/sql/git/bots/bots_db_update_manifest.txt index 48e9fa026..bb1cd70d9 100644 --- a/utils/sql/git/bots/bots_db_update_manifest.txt +++ b/utils/sql/git/bots/bots_db_update_manifest.txt @@ -20,7 +20,7 @@ 9019|2018_04_12_bots_stop_melee_level.sql|SHOW COLUMNS FROM `bot_data` LIKE 'stop_melee_level'|empty| 9020|2018_08_13_bots_inventory_update.sql|SELECT * FROM `inventory_versions` WHERE `version` = 2 and `bot_step` = 0|not_empty| 9021|2018_10_09_bots_owner_options.sql|SHOW TABLES LIKE 'bot_owner_options'|empty| -9022|2019_02_07_bots_stance_type_update.sql|SELECT * FROM `bot_spell_casting_chances` WHERE `spell_type_index` = '255' AND `class_id` = '255' AND `stance_index` = '0'|empty| +9022|2019_02_07_bots_stance_type_update.sql|SELECT * FROM `bot_spell_casting_chances` WHERE `spell_type_index` = '255' AND `class_id` = '255' AND `stance_index` = '0'|not_empty| # Upgrade conditions: # This won't be needed after this system is implemented, but it is used database that are not From bef849b5c1ad91af75e969df385e489995df78c5 Mon Sep 17 00:00:00 2001 From: Uleat Date: Sat, 9 Feb 2019 05:58:49 -0500 Subject: [PATCH 22/53] Definition clean-up --- common/emu_constants.h | 4 +++- common/spdat.h | 16 ++++++++-------- zone/bot.cpp | 4 ++-- zone/bot.h | 2 +- zone/bot_database.cpp | 4 ++-- zone/merc.cpp | 2 +- zone/mob_ai.cpp | 4 ++-- 7 files changed, 19 insertions(+), 17 deletions(-) diff --git a/common/emu_constants.h b/common/emu_constants.h index 970b2861d..ee8fdfcee 100644 --- a/common/emu_constants.h +++ b/common/emu_constants.h @@ -219,7 +219,9 @@ namespace EQEmu const char *GetStanceName(StanceType stance_type); int ConvertStanceTypeToIndex(StanceType stance_type); - const size_t STANCE_TYPE_MAX = stanceBurnAE; + const int STANCE_TYPE_FIRST = stancePassive; + const int STANCE_TYPE_LAST = stanceBurnAE; + const int STANCE_TYPE_COUNT = stanceBurnAE; } /*constants*/ diff --git a/common/spdat.h b/common/spdat.h index cb9a301d8..877d37823 100644 --- a/common/spdat.h +++ b/common/spdat.h @@ -68,16 +68,16 @@ enum SpellTypes : uint32 SpellType_InCombatBuffSong = (1 << 18), // bard in-combat group/ae buffs SpellType_OutOfCombatBuffSong = (1 << 19), // bard out-of-combat group/ae buffs SpellType_PreCombatBuff = (1 << 20), - SpellType_PreCombatBuffSong = (1 << 21), - - SpellTypes_Detrimental = (SpellType_Nuke | SpellType_Root | SpellType_Lifetap | SpellType_Snare | SpellType_DOT | SpellType_Dispel | SpellType_Mez | SpellType_Charm | SpellType_Debuff | SpellType_Slow), - SpellTypes_Beneficial = (SpellType_Heal | SpellType_Buff | SpellType_Escape | SpellType_Pet | SpellType_InCombatBuff | SpellType_Cure | SpellType_HateRedux | SpellType_InCombatBuffSong | SpellType_OutOfCombatBuffSong | SpellType_PreCombatBuff | SpellType_PreCombatBuffSong), - - SpellTypes_Innate = (SpellType_Nuke | SpellType_Lifetap | SpellType_DOT | SpellType_Dispel | SpellType_Mez | SpellType_Slow | SpellType_Debuff | SpellType_Charm | SpellType_Root), - - SpellType_Any = 0xFFFFFFFF + SpellType_PreCombatBuffSong = (1 << 21) }; +const uint32 SPELL_TYPE_MIN = (SpellType_Nuke << 1) - 1; +const uint32 SPELL_TYPE_MAX = (SpellType_PreCombatBuffSong << 1) - 1; +const uint32 SPELL_TYPE_ANY = 0xFFFFFFFF; + +const uint32 SPELL_TYPES_DETRIMENTAL = (SpellType_Nuke | SpellType_Root | SpellType_Lifetap | SpellType_Snare | SpellType_DOT | SpellType_Dispel | SpellType_Mez | SpellType_Charm | SpellType_Debuff | SpellType_Slow); +const uint32 SPELL_TYPES_BENEFICIAL = (SpellType_Heal | SpellType_Buff | SpellType_Escape | SpellType_Pet | SpellType_InCombatBuff | SpellType_Cure | SpellType_HateRedux | SpellType_InCombatBuffSong | SpellType_OutOfCombatBuffSong | SpellType_PreCombatBuff | SpellType_PreCombatBuffSong); +const uint32 SPELL_TYPES_INNATE = (SpellType_Nuke | SpellType_Lifetap | SpellType_DOT | SpellType_Dispel | SpellType_Mez | SpellType_Slow | SpellType_Debuff | SpellType_Charm | SpellType_Root); // These should not be used to determine spell category.. // They are a graphical affects (effects?) index only diff --git a/zone/bot.cpp b/zone/bot.cpp index 381701a51..e6dd36011 100644 --- a/zone/bot.cpp +++ b/zone/bot.cpp @@ -8213,7 +8213,7 @@ bool Bot::CheckLoreConflict(const EQEmu::ItemData* item) { } bool EntityList::Bot_AICheckCloseBeneficialSpells(Bot* caster, uint8 iChance, float iRange, uint32 iSpellTypes) { - if((iSpellTypes&SpellTypes_Detrimental) != 0) { + if((iSpellTypes & SPELL_TYPES_DETRIMENTAL) != 0) { Log(Logs::General, Logs::Error, "Error: detrimental spells requested from AICheckCloseBeneficialSpells!!"); return false; } @@ -9096,6 +9096,6 @@ std::string Bot::CreateSayLink(Client* c, const char* message, const char* name) return saylink; } -uint8 Bot::spell_casting_chances[MaxSpellTypes][PLAYER_CLASS_COUNT][EQEmu::constants::STANCE_TYPE_MAX][cntHSND] = { 0 }; +uint8 Bot::spell_casting_chances[MaxSpellTypes][PLAYER_CLASS_COUNT][EQEmu::constants::STANCE_TYPE_COUNT][cntHSND] = { 0 }; #endif diff --git a/zone/bot.h b/zone/bot.h index 08b62b7b0..8d99654a6 100644 --- a/zone/bot.h +++ b/zone/bot.h @@ -771,7 +771,7 @@ private: bool DeletePet(); public: - static uint8 spell_casting_chances[MaxSpellTypes][PLAYER_CLASS_COUNT][EQEmu::constants::STANCE_TYPE_MAX][cntHSND]; + static uint8 spell_casting_chances[MaxSpellTypes][PLAYER_CLASS_COUNT][EQEmu::constants::STANCE_TYPE_COUNT][cntHSND]; }; #endif // BOTS diff --git a/zone/bot_database.cpp b/zone/bot_database.cpp index 651729223..15194270f 100644 --- a/zone/bot_database.cpp +++ b/zone/bot_database.cpp @@ -122,7 +122,7 @@ bool BotDatabase::LoadBotSpellCastingChances() continue; --class_index; uint8 stance_index = atoi(row[2]); - if (stance_index >= EQEmu::constants::STANCE_TYPE_MAX) + if (stance_index >= EQEmu::constants::STANCE_TYPE_COUNT) continue; for (uint8 conditional_index = nHSND; conditional_index < cntHSND; ++conditional_index) { @@ -2853,7 +2853,7 @@ uint8 BotDatabase::GetSpellCastingChance(uint8 spell_type_index, uint8 class_ind return 0; if (class_index >= PLAYER_CLASS_COUNT) return 0; - if (stance_index >= EQEmu::constants::STANCE_TYPE_MAX) + if (stance_index >= EQEmu::constants::STANCE_TYPE_COUNT) return 0; if (conditional_index >= cntHSND) return 0; diff --git a/zone/merc.cpp b/zone/merc.cpp index e71667320..7c15fbd65 100644 --- a/zone/merc.cpp +++ b/zone/merc.cpp @@ -1908,7 +1908,7 @@ bool Merc::AI_IdleCastCheck() { bool EntityList::Merc_AICheckCloseBeneficialSpells(Merc* caster, uint8 iChance, float iRange, uint32 iSpellTypes) { - if((iSpellTypes&SpellTypes_Detrimental) != 0) { + if((iSpellTypes & SPELL_TYPES_DETRIMENTAL) != 0) { //according to live, you can buff and heal through walls... //now with PCs, this only applies if you can TARGET the target, but // according to Rogean, Live NPCs will just cast through walls/floors, no problem.. diff --git a/zone/mob_ai.cpp b/zone/mob_ai.cpp index 37fbb7814..5a31cc12b 100644 --- a/zone/mob_ai.cpp +++ b/zone/mob_ai.cpp @@ -379,7 +379,7 @@ bool NPC::AIDoSpellCast(uint8 i, Mob* tar, int32 mana_cost, uint32* oDontDoAgain } bool EntityList::AICheckCloseBeneficialSpells(NPC* caster, uint8 iChance, float iRange, uint32 iSpellTypes) { - if((iSpellTypes & SpellTypes_Detrimental) != 0) { + if((iSpellTypes & SPELL_TYPES_DETRIMENTAL) != 0) { //according to live, you can buff and heal through walls... //now with PCs, this only applies if you can TARGET the target, but // according to Rogean, Live NPCs will just cast through walls/floors, no problem.. @@ -2813,7 +2813,7 @@ DBnpcspells_Struct *ZoneDatabase::GetNPCSpells(uint32 iDBSpellsID) entry.max_hp = atoi(row[8]); // some spell types don't make much since to be priority 0, so fix that - if (!(entry.type & SpellTypes_Innate) && entry.priority == 0) + if (!(entry.type & SPELL_TYPES_INNATE) && entry.priority == 0) entry.priority = 1; if (row[9]) From 3bdd6c20a511317dd64699a550c313fecf38a851 Mon Sep 17 00:00:00 2001 From: Uleat Date: Sat, 9 Feb 2019 06:38:26 -0500 Subject: [PATCH 23/53] Bot definition clean-up --- zone/bot.cpp | 2 +- zone/bot.h | 106 +++++++++++------------------------------- zone/bot_command.cpp | 10 ++-- zone/bot_database.cpp | 4 +- zone/botspellsai.cpp | 50 ++++++++++---------- 5 files changed, 61 insertions(+), 111 deletions(-) diff --git a/zone/bot.cpp b/zone/bot.cpp index e6dd36011..b221620e2 100644 --- a/zone/bot.cpp +++ b/zone/bot.cpp @@ -9096,6 +9096,6 @@ std::string Bot::CreateSayLink(Client* c, const char* message, const char* name) return saylink; } -uint8 Bot::spell_casting_chances[MaxSpellTypes][PLAYER_CLASS_COUNT][EQEmu::constants::STANCE_TYPE_COUNT][cntHSND] = { 0 }; +uint8 Bot::spell_casting_chances[SPELL_TYPE_COUNT][PLAYER_CLASS_COUNT][EQEmu::constants::STANCE_TYPE_COUNT][cntHSND] = { 0 }; #endif diff --git a/zone/bot.h b/zone/bot.h index 8d99654a6..602b2912d 100644 --- a/zone/bot.h +++ b/zone/bot.h @@ -54,63 +54,7 @@ const int MaxDisciplineTimer = 10; const int DisciplineReuseStart = MaxSpellTimer + 1; const int MaxTimer = MaxSpellTimer + MaxDisciplineTimer; -#define VALIDBOTEQUIPSLOT(x) ((x >= EQEmu::invslot::EQUIPMENT_BEGIN && x <= EQEmu::invslot::EQUIPMENT_END) ? (x) : (EQEmu::invslot::EQUIPMENT_COUNT)) -static const std::string bot_equip_slot_name[EQEmu::invslot::EQUIPMENT_COUNT + 1] = -{ - "Charm", // slotCharm - "Ear 1", // slotEar1 - "Head", // slotHead - "Face", // slotFace - "Ear 2", // slotEar2 - "Neck", // slotNeck - "Shoulders", // slotShoulders - "Arms", // slotArms - "Back", // slotBack - "Wrist 1", // slotWrist1 - "Wrist 2", // slotWrist2 - "Range", // slotRange - "Hands", // slotHands - "Primary", // slotPrimary - "Secondary", // slotSecondary - "Finger 1", // slotFinger1 - "Finger 2", // slotFinger2 - "Chest", // slotChest - "Legs", // slotLegs - "Feet", // slotFeet - "Waist", // slotWaist - "Power Source", // slotPowerSource - "Ammo", // slotAmmo - "Unknown" -}; - -static const char* GetBotEquipSlotName(int slot_id) { return bot_equip_slot_name[VALIDBOTEQUIPSLOT(slot_id)].c_str(); } - -enum SpellTypeIndex { - SpellType_NukeIndex, - SpellType_HealIndex, - SpellType_RootIndex, - SpellType_BuffIndex, - SpellType_EscapeIndex, - SpellType_PetIndex, - SpellType_LifetapIndex, - SpellType_SnareIndex, - SpellType_DOTIndex, - SpellType_DispelIndex, - SpellType_InCombatBuffIndex, - SpellType_MezIndex, - SpellType_CharmIndex, - SpellType_SlowIndex, - SpellType_DebuffIndex, - SpellType_CureIndex, - SpellType_ResurrectIndex, - SpellType_HateReduxIndex, - SpellType_InCombatBuffSongIndex, - SpellType_OutOfCombatBuffSongIndex, - SpellType_PreCombatBuffIndex, - SpellType_PreCombatBuffSongIndex, - MaxSpellTypes -}; // nHSND negative Healer/Slower/Nuker/Doter // pH positive Healer @@ -200,29 +144,35 @@ public: BotRoleRaidHealer }; - enum EqExpansions { // expansions are off..EQ should be '0' - ExpansionNone, - ExpansionEQ, - ExpansionRoK, - ExpansionSoV, - ExpansionSoL, - ExpansionPoP, - ExpansionLoY, - ExpansionLDoN, - ExpansionGoD, - ExpansionOoW, - ExpansionDoN, - ExpansionDoDH, - ExpansionPoR, - ExpansionTSS, - ExpansionSoF, - ExpansionSoD, - ExpansionUF, - ExpansionHoT, - ExpansionVoA, - ExpansionRoF + enum SpellTypeIndex : uint32 { + spellTypeIndexNuke, + spellTypeIndexHeal, + spellTypeIndexRoot, + spellTypeIndexBuff, + spellTypeIndexEscape, + spellTypeIndexPet, + spellTypeIndexLifetap, + spellTypeIndexSnare, + spellTypeIndexDot, + spellTypeIndexDispel, + spellTypeIndexInCombatBuff, + spellTypeIndexMez, + spellTypeIndexCharm, + spellTypeIndexSlow, + spellTypeIndexDebuff, + spellTypeIndexCure, + spellTypeIndexResurrect, + spellTypeIndexHateRedux, + spellTypeIndexInCombatBuffSong, + spellTypeIndexOutOfCombatBuffSong, + spellTypeIndexPreCombatBuff, + spellTypeIndexPreCombatBuffSong }; + static const uint32 SPELL_TYPE_FIRST = spellTypeIndexNuke; + static const uint32 SPELL_TYPE_LAST = spellTypeIndexPreCombatBuffSong; + static const uint32 SPELL_TYPE_COUNT = SPELL_TYPE_LAST + 1; + // Class Constructors Bot(NPCType *npcTypeData, Client* botOwner); Bot(uint32 botID, uint32 botOwnerCharacterID, uint32 botSpellsID, double totalPlayTime, uint32 lastZoneId, NPCType *npcTypeData); @@ -771,7 +721,7 @@ private: bool DeletePet(); public: - static uint8 spell_casting_chances[MaxSpellTypes][PLAYER_CLASS_COUNT][EQEmu::constants::STANCE_TYPE_COUNT][cntHSND]; + static uint8 spell_casting_chances[SPELL_TYPE_COUNT][PLAYER_CLASS_COUNT][EQEmu::constants::STANCE_TYPE_COUNT][cntHSND]; }; #endif // BOTS diff --git a/zone/bot_command.cpp b/zone/bot_command.cpp index b12aa2d46..085a730ea 100644 --- a/zone/bot_command.cpp +++ b/zone/bot_command.cpp @@ -7230,7 +7230,7 @@ void bot_subcommand_inventory_list(Client *c, const Seperator *sep) inst = my_bot->CastToBot()->GetBotItem(i); if (!inst || !inst->GetItem()) { - c->Message(m_message, "I need something for my %s (slot %i)", GetBotEquipSlotName(i), i); + c->Message(m_message, "I need something for my %s (slot %i)", EQEmu::invslot::GetInvPossessionsSlotName(i), i); continue; } @@ -7240,7 +7240,7 @@ void bot_subcommand_inventory_list(Client *c, const Seperator *sep) } linker.SetItemInst(inst); - c->Message(m_message, "Using %s in my %s (slot %i)", linker.GenerateLink().c_str(), GetBotEquipSlotName(i), i); + c->Message(m_message, "Using %s in my %s (slot %i)", linker.GenerateLink().c_str(), EQEmu::invslot::GetInvPossessionsSlotName(i), i); ++inventory_count; } @@ -7343,14 +7343,14 @@ void bot_subcommand_inventory_remove(Client *c, const Seperator *sep) case EQEmu::invslot::slotWaist: case EQEmu::invslot::slotPowerSource: case EQEmu::invslot::slotAmmo: - c->Message(m_message, "My %s is %s unequipped", GetBotEquipSlotName(slotId), ((itm) ? ("now") : ("already"))); + c->Message(m_message, "My %s is %s unequipped", EQEmu::invslot::GetInvPossessionsSlotName(slotId), ((itm) ? ("now") : ("already"))); break; case EQEmu::invslot::slotShoulders: case EQEmu::invslot::slotArms: case EQEmu::invslot::slotHands: case EQEmu::invslot::slotLegs: case EQEmu::invslot::slotFeet: - c->Message(m_message, "My %s are %s unequipped", GetBotEquipSlotName(slotId), ((itm) ? ("now") : ("already"))); + c->Message(m_message, "My %s are %s unequipped", EQEmu::invslot::GetInvPossessionsSlotName(slotId), ((itm) ? ("now") : ("already"))); break; default: c->Message(m_fail, "I'm soo confused..."); @@ -7393,7 +7393,7 @@ void bot_subcommand_inventory_window(Client *c, const Seperator *sep) item = inst->GetItem(); window_text.append(""); - window_text.append(GetBotEquipSlotName(i)); + window_text.append(EQEmu::invslot::GetInvPossessionsSlotName(i)); window_text.append(": "); if (item) { //window_text.append(""); diff --git a/zone/bot_database.cpp b/zone/bot_database.cpp index 15194270f..ea5154598 100644 --- a/zone/bot_database.cpp +++ b/zone/bot_database.cpp @@ -115,7 +115,7 @@ bool BotDatabase::LoadBotSpellCastingChances() for (auto row = results.begin(); row != results.end(); ++row) { uint8 spell_type_index = atoi(row[0]); - if (spell_type_index >= MaxSpellTypes) + if (spell_type_index >= Bot::SPELL_TYPE_COUNT) continue; uint8 class_index = atoi(row[1]); if (class_index < WARRIOR || class_index > BERSERKER) @@ -2849,7 +2849,7 @@ bool BotDatabase::DeleteAllHealRotations(const uint32 owner_id) /* Bot miscellaneous functions */ uint8 BotDatabase::GetSpellCastingChance(uint8 spell_type_index, uint8 class_index, uint8 stance_index, uint8 conditional_index) // class_index is 0-based { - if (spell_type_index >= MaxSpellTypes) + if (spell_type_index >= Bot::SPELL_TYPE_COUNT) return 0; if (class_index >= PLAYER_CLASS_COUNT) return 0; diff --git a/zone/botspellsai.cpp b/zone/botspellsai.cpp index d660f2420..5049f934d 100644 --- a/zone/botspellsai.cpp +++ b/zone/botspellsai.cpp @@ -2570,79 +2570,79 @@ bool Bot::CheckDisciplineRecastTimers(Bot *caster, int timer_index) { uint8 Bot::GetChanceToCastBySpellType(uint32 spellType) { - uint8 spell_type_index = MaxSpellTypes; + uint8 spell_type_index = SPELL_TYPE_COUNT; switch (spellType) { case SpellType_Nuke: - spell_type_index = SpellType_NukeIndex; + spell_type_index = spellTypeIndexNuke; break; case SpellType_Heal: - spell_type_index = SpellType_HealIndex; + spell_type_index = spellTypeIndexHeal; break; case SpellType_Root: - spell_type_index = SpellType_RootIndex; + spell_type_index = spellTypeIndexRoot; break; case SpellType_Buff: - spell_type_index = SpellType_BuffIndex; + spell_type_index = spellTypeIndexBuff; break; case SpellType_Escape: - spell_type_index = SpellType_EscapeIndex; + spell_type_index = spellTypeIndexEscape; break; case SpellType_Pet: - spell_type_index = SpellType_PetIndex; + spell_type_index = spellTypeIndexPet; break; case SpellType_Lifetap: - spell_type_index = SpellType_LifetapIndex; + spell_type_index = spellTypeIndexLifetap; break; case SpellType_Snare: - spell_type_index = SpellType_SnareIndex; + spell_type_index = spellTypeIndexSnare; break; case SpellType_DOT: - spell_type_index = SpellType_DOTIndex; + spell_type_index = spellTypeIndexDot; break; case SpellType_Dispel: - spell_type_index = SpellType_DispelIndex; + spell_type_index = spellTypeIndexDispel; break; case SpellType_InCombatBuff: - spell_type_index = SpellType_InCombatBuffIndex; + spell_type_index = spellTypeIndexInCombatBuff; break; case SpellType_Mez: - spell_type_index = SpellType_MezIndex; + spell_type_index = spellTypeIndexMez; break; case SpellType_Charm: - spell_type_index = SpellType_CharmIndex; + spell_type_index = spellTypeIndexCharm; break; case SpellType_Slow: - spell_type_index = SpellType_SlowIndex; + spell_type_index = spellTypeIndexSlow; break; case SpellType_Debuff: - spell_type_index = SpellType_DebuffIndex; + spell_type_index = spellTypeIndexDebuff; break; case SpellType_Cure: - spell_type_index = SpellType_CureIndex; + spell_type_index = spellTypeIndexCure; break; case SpellType_Resurrect: - spell_type_index = SpellType_ResurrectIndex; + spell_type_index = spellTypeIndexResurrect; break; case SpellType_HateRedux: - spell_type_index = SpellType_HateReduxIndex; + spell_type_index = spellTypeIndexHateRedux; break; case SpellType_InCombatBuffSong: - spell_type_index = SpellType_InCombatBuffSongIndex; + spell_type_index = spellTypeIndexInCombatBuffSong; break; case SpellType_OutOfCombatBuffSong: - spell_type_index = SpellType_OutOfCombatBuffSongIndex; + spell_type_index = spellTypeIndexOutOfCombatBuffSong; break; case SpellType_PreCombatBuff: - spell_type_index = SpellType_PreCombatBuffIndex; + spell_type_index = spellTypeIndexPreCombatBuff; break; case SpellType_PreCombatBuffSong: - spell_type_index = SpellType_PreCombatBuffSongIndex; + spell_type_index = spellTypeIndexPreCombatBuffSong; break; default: - spell_type_index = MaxSpellTypes; + spell_type_index = SPELL_TYPE_COUNT; break; } - if (spell_type_index >= MaxSpellTypes) + if (spell_type_index >= SPELL_TYPE_COUNT) return 0; uint8 class_index = GetClass(); From abf39c4ff76ae60ce37fa4e26f96522f28c20f8e Mon Sep 17 00:00:00 2001 From: Noudess Date: Mon, 11 Feb 2019 11:59:55 -0500 Subject: [PATCH 24/53] Added base values for factions that the client does not provide a base, nor mods for, yet we did. --- ...2018_12_12_convert_to_client_functions.sql | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql index c73bc060a..ade56d3bc 100755 --- a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql +++ b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql @@ -54,6 +54,26 @@ delete from faction_list where id < 5000; insert into faction_list (id, name, base) (select id, name, 0 from client_faction_names); +/* Now restore any base for factions for which the client has no mods (social factions) */ + +DROP TABLE IF EXISTS oldbases; + +CREATE TABLE `oldbases` ( + `id` int(11) DEFAULT 0, + `name` varchar(50) NOT NULL DEFAULT '', + `base` smallint(6) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 as +(select m.clientid as id, p.name, p.base from faction_list_prefix p +join client_server_faction_map m on m.serverid = p.id where p.base <> 0 +&& m.clientid in (select id from faction_list where id not in (SELECT faction_id from client_faction_associations group by faction_id))); + +update faction_list f +INNER JOIN oldbases o on o.id = f.id +set f.base = o.base; + +DROP TABLE IF EXISTS oldbases; + /* Create mods based on the client_faction_associations */ /* No code changes required */ From 0b4dcb4271090331afecb315c0f6d2809f067879 Mon Sep 17 00:00:00 2001 From: Uleat Date: Mon, 11 Feb 2019 20:03:02 -0500 Subject: [PATCH 25/53] Reworked command and quest api 'scribespells' methods --- zone/command.cpp | 118 ++++++++++++++++++++++++++++------------------ zone/questmgr.cpp | 76 ++++++++++++++++++----------- 2 files changed, 122 insertions(+), 72 deletions(-) diff --git a/zone/command.cpp b/zone/command.cpp index d73c760ed..5d1d9eb5e 100755 --- a/zone/command.cpp +++ b/zone/command.cpp @@ -6407,26 +6407,25 @@ void command_beardcolor(Client *c, const Seperator *sep) void command_scribespells(Client *c, const Seperator *sep) { - uint8 max_level, min_level; - uint16 book_slot, curspell, count; - Client *t=c; + // rewrote this command to test for possible type conversion issues + // most of the redundant checks can be removed if proven successful - if(c->GetTarget() && c->GetTarget()->IsClient() && c->GetGM()) - t=c->GetTarget()->CastToClient(); + Client *t = c; + if (c->GetTarget() && c->GetTarget()->IsClient() && c->GetGM()) + t = c->GetTarget()->CastToClient(); - if(!sep->arg[1][0]) - { + if(sep->argnum < 1 || !sep->IsNumber(1)) { c->Message(0, "FORMAT: #scribespells "); return; } - max_level = (uint8)atoi(sep->arg[1]); - if (!c->GetGM() && max_level > RuleI(Character, MaxLevel)) - max_level = RuleI(Character, MaxLevel); //default to Character:MaxLevel if we're not a GM & it's higher than the max level - min_level = sep->arg[2][0] ? (uint8)atoi(sep->arg[2]) : 1; //default to 1 if there isn't a 2nd argument - if (!c->GetGM() && min_level > RuleI(Character, MaxLevel)) - min_level = RuleI(Character, MaxLevel); //default to Character:MaxLevel if we're not a GM & it's higher than the max level + uint8 max_level = (uint8)atol(sep->arg[1]); + if (!c->GetGM() && max_level > (uint8)RuleI(Character, MaxLevel)) + max_level = (uint8)RuleI(Character, MaxLevel); //default to Character:MaxLevel if we're not a GM & it's higher than the max level + uint8 min_level = (sep->IsNumber(2) ? (uint8)atol(sep->arg[2]) : 1); //default to 1 if there isn't a 2nd argument + if (!c->GetGM() && min_level > (uint8)RuleI(Character, MaxLevel)) + min_level = (uint8)RuleI(Character, MaxLevel); //default to Character:MaxLevel if we're not a GM & it's higher than the max level if(max_level < 1 || min_level < 1) { @@ -6434,7 +6433,7 @@ void command_scribespells(Client *c, const Seperator *sep) return; } if (min_level > max_level) { - c->Message(0, "Error: Min Level must be less than or equal to Max Level."); + c->Message(0, "ERROR: Min Level must be less than or equal to Max Level."); return; } @@ -6443,42 +6442,71 @@ void command_scribespells(Client *c, const Seperator *sep) c->Message(0, "Scribing spells for %s.", t->GetName()); Log(Logs::General, Logs::Normal, "Scribe spells request for %s from %s, levels: %u -> %u", t->GetName(), c->GetName(), min_level, max_level); - for ( - curspell = 0, - book_slot = t->GetNextAvailableSpellBookSlot(), - count = 0; // ; - curspell < SPDAT_RECORDS && - book_slot < EQEmu::spells::SPELLBOOK_SIZE; // ; - curspell++, - book_slot = t->GetNextAvailableSpellBookSlot(book_slot) - ) - { - if - ( - spells[curspell].classes[WARRIOR] != 0 && // check if spell exists - spells[curspell].classes[t->GetPP().class_-1] <= max_level && //maximum level - spells[curspell].classes[t->GetPP().class_-1] >= min_level && //minimum level - spells[curspell].skill != 52 - ) - { - if (book_slot == -1) { //no more book slots - t->Message(13, "Unable to scribe spell %s (%u) to spellbook: no more spell book slots available.", spells[curspell].name, curspell); - if (t != c) - c->Message(13, "Error scribing spells: %s ran out of spell book slots on spell %s (%u)", t->GetName(), spells[curspell].name, curspell); - break; - } - if(!IsDiscipline(curspell) && !t->HasSpellScribed(curspell)) { //isn't a discipline & we don't already have it scribed - t->ScribeSpell(curspell, book_slot); - count++; - } + int book_slot = t->GetNextAvailableSpellBookSlot(); + int spell_id = 0; + int count = 0; + + for ( ; spell_id < SPDAT_RECORDS && book_slot < EQEmu::spells::SPELLBOOK_SIZE; ++spell_id) { + if (book_slot == -1) { + t->Message( + 13, + "Unable to scribe spell %s (%i) to spellbook: no more spell book slots available.", + ((spell_id >= 0 && spell_id < SPDAT_RECORDS) ? spells[spell_id].name : "Out-of-range"), + spell_id + ); + if (t != c) + c->Message( + 13, + "Error scribing spells: %s ran out of spell book slots on spell %s (%i)", + t->GetName(), + ((spell_id >= 0 && spell_id < SPDAT_RECORDS) ? spells[spell_id].name : "Out-of-range"), + spell_id + ); + + break; } + if (spell_id < 0 || spell_id >= SPDAT_RECORDS) { + c->Message(13, "FATAL ERROR: Spell id out-of-range (id: %i, min: 0, max: %i)", spell_id, SPDAT_RECORDS); + return; + } + if (book_slot < 0 || book_slot >= EQEmu::spells::SPELLBOOK_SIZE) { + c->Message(13, "FATAL ERROR: Book slot out-of-range (slot: %i, min: 0, max: %i)", book_slot, EQEmu::spells::SPELLBOOK_SIZE); + return; + } + + while (true) { + if (spells[spell_id].classes[WARRIOR] == 0) // check if spell exists + break; + if (spells[spell_id].classes[t->GetPP().class_ - 1] > max_level) // maximum level + break; + if (spells[spell_id].classes[t->GetPP().class_ - 1] < min_level) // minimum level + break; + if (spells[spell_id].skill == 52) + break; + + uint16 spell_id_ = (uint16)spell_id; + if ((spell_id_ != spell_id) || (spell_id != spell_id_)) { + c->Message(13, "FATAL ERROR: Type conversion data loss with spell_id (%u != %i)", spell_id, spell_id_); + return; + } + + if (!IsDiscipline(spell_id_) && !t->HasSpellScribed(spell_id)) { // isn't a discipline & we don't already have it scribed + t->ScribeSpell(spell_id_, book_slot); + ++count; + } + + break; + } + + book_slot = t->GetNextAvailableSpellBookSlot(book_slot); } if (count > 0) { - t->Message(0, "Successfully scribed %u spells.", count); + t->Message(0, "Successfully scribed %i spells.", count); if (t != c) - c->Message(0, "Successfully scribed %u spells for %s.", count, t->GetName()); - } else { + c->Message(0, "Successfully scribed %i spells for %s.", count, t->GetName()); + } + else { t->Message(0, "No spells scribed."); if (t != c) c->Message(0, "No spells scribed for %s.", t->GetName()); diff --git a/zone/questmgr.cpp b/zone/questmgr.cpp index cd6c048cd..ffb3bdb34 100644 --- a/zone/questmgr.cpp +++ b/zone/questmgr.cpp @@ -974,38 +974,53 @@ void QuestManager::permagender(int gender_id) { } uint16 QuestManager::scribespells(uint8 max_level, uint8 min_level) { + // rewrote this handler to test for possible type conversion issues + // most of the redundant checks can be removed if proven successful + QuestManagerCurrentQuestVars(); - uint16 book_slot, count; - uint16 spell_id; + int book_slot = initiator->GetNextAvailableSpellBookSlot(); + int spell_id = 0; + int count = 0; uint32 char_id = initiator->CharacterID(); bool SpellGlobalRule = RuleB(Spells, EnableSpellGlobals); bool SpellBucketRule = RuleB(Spells, EnableSpellBuckets); - bool SpellGlobalCheckResult = 0; - bool SpellBucketCheckResult = 0; + bool SpellGlobalCheckResult = false; + bool SpellBucketCheckResult = false; - for ( - spell_id = 0, - book_slot = initiator->GetNextAvailableSpellBookSlot(), - count = 0; // ; - spell_id < SPDAT_RECORDS && - book_slot < EQEmu::spells::SPELLBOOK_SIZE; // ; - spell_id++, - book_slot = initiator->GetNextAvailableSpellBookSlot(book_slot) - ) - { - if - ( - spells[spell_id].classes[WARRIOR] != 0 && //check if spell exists - spells[spell_id].classes[initiator->GetPP().class_-1] <= max_level && //maximum level - spells[spell_id].classes[initiator->GetPP().class_-1] >= min_level && //minimum level - spells[spell_id].skill != 52 && - spells[spell_id].effectid[EFFECT_COUNT - 1] != 10 - ) - { - if (book_slot == -1) //no more book slots + for ( ; spell_id < SPDAT_RECORDS && book_slot < EQEmu::spells::SPELLBOOK_SIZE; ++spell_id) { + if (book_slot == -1) { + initiator->Message( + 13, + "Unable to scribe spell %s (%i) to spellbook: no more spell book slots available.", + ((spell_id >= 0 && spell_id < SPDAT_RECORDS) ? spells[spell_id].name : "Out-of-range"), + spell_id + ); + + break; + } + if (spell_id < 0 || spell_id >= SPDAT_RECORDS) { + initiator->Message(13, "FATAL ERROR: Spell id out-of-range (id: %i, min: 0, max: %i)", spell_id, SPDAT_RECORDS); + return count; + } + if (book_slot < 0 || book_slot >= EQEmu::spells::SPELLBOOK_SIZE) { + initiator->Message(13, "FATAL ERROR: Book slot out-of-range (slot: %i, min: 0, max: %i)", book_slot, EQEmu::spells::SPELLBOOK_SIZE); + return count; + } + + while (true) { + if (spells[spell_id].classes[WARRIOR] == 0) // check if spell exists break; - if(!IsDiscipline(spell_id) && !initiator->HasSpellScribed(spell_id)) { //isn't a discipline & we don't already have it scribed + if (spells[spell_id].classes[initiator->GetPP().class_ - 1] > max_level) // maximum level + break; + if (spells[spell_id].classes[initiator->GetPP().class_ - 1] < min_level) // minimum level + break; + if (spells[spell_id].skill == 52) + break; + if (spells[spell_id].effectid[EFFECT_COUNT - 1] == 10) + break; + + if (!IsDiscipline(spell_id) && !initiator->HasSpellScribed(spell_id)) { //isn't a discipline & we don't already have it scribed if (SpellGlobalRule) { // Bool to see if the character has the required QGlobal to scribe it if one exists in the Spell_Globals table SpellGlobalCheckResult = initiator->SpellGlobalCheck(spell_id, char_id); @@ -1013,19 +1028,26 @@ uint16 QuestManager::scribespells(uint8 max_level, uint8 min_level) { initiator->ScribeSpell(spell_id, book_slot); count++; } - } else if (SpellBucketRule) { + } + else if (SpellBucketRule) { SpellBucketCheckResult = initiator->SpellBucketCheck(spell_id, char_id); if (SpellBucketCheckResult) { initiator->ScribeSpell(spell_id, book_slot); count++; } - } else { + } + else { initiator->ScribeSpell(spell_id, book_slot); count++; } } + + break; } + + book_slot = initiator->GetNextAvailableSpellBookSlot(book_slot); } + return count; //how many spells were scribed successfully } From 43a488d5b5927ef5076d109acb8dddfbe18033c7 Mon Sep 17 00:00:00 2001 From: Uleat Date: Mon, 11 Feb 2019 21:46:20 -0500 Subject: [PATCH 26/53] Added type conversion to questmgr 'scribespells' --- zone/questmgr.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/zone/questmgr.cpp b/zone/questmgr.cpp index ffb3bdb34..c024c00bd 100644 --- a/zone/questmgr.cpp +++ b/zone/questmgr.cpp @@ -1020,24 +1020,30 @@ uint16 QuestManager::scribespells(uint8 max_level, uint8 min_level) { if (spells[spell_id].effectid[EFFECT_COUNT - 1] == 10) break; - if (!IsDiscipline(spell_id) && !initiator->HasSpellScribed(spell_id)) { //isn't a discipline & we don't already have it scribed + uint16 spell_id_ = (uint16)spell_id; + if ((spell_id_ != spell_id) || (spell_id != spell_id_)) { + initiator->Message(13, "FATAL ERROR: Type conversion data loss with spell_id (%u != %i)", spell_id, spell_id_); + return count; + } + + if (!IsDiscipline(spell_id_) && !initiator->HasSpellScribed(spell_id)) { //isn't a discipline & we don't already have it scribed if (SpellGlobalRule) { // Bool to see if the character has the required QGlobal to scribe it if one exists in the Spell_Globals table - SpellGlobalCheckResult = initiator->SpellGlobalCheck(spell_id, char_id); + SpellGlobalCheckResult = initiator->SpellGlobalCheck(spell_id_, char_id); if (SpellGlobalCheckResult) { - initiator->ScribeSpell(spell_id, book_slot); + initiator->ScribeSpell(spell_id_, book_slot); count++; } } else if (SpellBucketRule) { - SpellBucketCheckResult = initiator->SpellBucketCheck(spell_id, char_id); + SpellBucketCheckResult = initiator->SpellBucketCheck(spell_id_, char_id); if (SpellBucketCheckResult) { - initiator->ScribeSpell(spell_id, book_slot); + initiator->ScribeSpell(spell_id_, book_slot); count++; } } else { - initiator->ScribeSpell(spell_id, book_slot); + initiator->ScribeSpell(spell_id_, book_slot); count++; } } From 2af4d3d67ddbd57106e5073260ab1c361749638e Mon Sep 17 00:00:00 2001 From: Uleat Date: Wed, 13 Feb 2019 07:55:04 -0500 Subject: [PATCH 27/53] Reworked command and quest api 'traindisc' methods --- zone/command.cpp | 115 +++++++++++++++++++---------------- zone/questmgr.cpp | 150 ++++++++++++++++++++++++++-------------------- 2 files changed, 150 insertions(+), 115 deletions(-) diff --git a/zone/command.cpp b/zone/command.cpp index 5d1d9eb5e..149c970d2 100755 --- a/zone/command.cpp +++ b/zone/command.cpp @@ -6407,9 +6407,6 @@ void command_beardcolor(Client *c, const Seperator *sep) void command_scribespells(Client *c, const Seperator *sep) { - // rewrote this command to test for possible type conversion issues - // most of the redundant checks can be removed if proven successful - Client *t = c; if (c->GetTarget() && c->GetTarget()->IsClient() && c->GetGM()) t = c->GetTarget()->CastToClient(); @@ -6421,14 +6418,13 @@ void command_scribespells(Client *c, const Seperator *sep) uint8 max_level = (uint8)atol(sep->arg[1]); if (!c->GetGM() && max_level > (uint8)RuleI(Character, MaxLevel)) - max_level = (uint8)RuleI(Character, MaxLevel); //default to Character:MaxLevel if we're not a GM & it's higher than the max level + max_level = (uint8)RuleI(Character, MaxLevel); // default to Character:MaxLevel if we're not a GM & it's higher than the max level - uint8 min_level = (sep->IsNumber(2) ? (uint8)atol(sep->arg[2]) : 1); //default to 1 if there isn't a 2nd argument + uint8 min_level = (sep->IsNumber(2) ? (uint8)atol(sep->arg[2]) : 1); // default to 1 if there isn't a 2nd argument if (!c->GetGM() && min_level > (uint8)RuleI(Character, MaxLevel)) - min_level = (uint8)RuleI(Character, MaxLevel); //default to Character:MaxLevel if we're not a GM & it's higher than the max level + min_level = (uint8)RuleI(Character, MaxLevel); // default to Character:MaxLevel if we're not a GM & it's higher than the max level - if(max_level < 1 || min_level < 1) - { + if(max_level < 1 || min_level < 1) { c->Message(0, "ERROR: Level must be greater than 1."); return; } @@ -6486,7 +6482,7 @@ void command_scribespells(Client *c, const Seperator *sep) uint16 spell_id_ = (uint16)spell_id; if ((spell_id_ != spell_id) || (spell_id != spell_id_)) { - c->Message(13, "FATAL ERROR: Type conversion data loss with spell_id (%u != %i)", spell_id, spell_id_); + c->Message(13, "FATAL ERROR: Type conversion data loss with spell_id (%i != %u)", spell_id, spell_id_); return; } @@ -8762,28 +8758,24 @@ void command_reloadtitles(Client *c, const Seperator *sep) void command_traindisc(Client *c, const Seperator *sep) { - uint8 max_level, min_level; - uint16 curspell, count; - Client *t=c; + Client *t = c; + if (c->GetTarget() && c->GetTarget()->IsClient() && c->GetGM()) + t = c->GetTarget()->CastToClient(); - if(c->GetTarget() && c->GetTarget()->IsClient() && c->GetGM()) - t=c->GetTarget()->CastToClient(); - - if(!sep->arg[1][0]) - { + if (sep->argnum < 1 || !sep->IsNumber(1)) { c->Message(0, "FORMAT: #traindisc "); return; } - max_level = (uint8)atoi(sep->arg[1]); - if (!c->GetGM() && max_level > RuleI(Character, MaxLevel)) - max_level = RuleI(Character, MaxLevel); //default to Character:MaxLevel if we're not a GM & it's higher than the max level - min_level = sep->arg[2][0] ? (uint8)atoi(sep->arg[2]) : 1; //default to 1 if there isn't a 2nd argument - if (!c->GetGM() && min_level > RuleI(Character, MaxLevel)) - min_level = RuleI(Character, MaxLevel); //default to Character:MaxLevel if we're not a GM & it's higher than the max level + uint8 max_level = (uint8)atol(sep->arg[1]); + if (!c->GetGM() && max_level >(uint8)RuleI(Character, MaxLevel)) + max_level = (uint8)RuleI(Character, MaxLevel); // default to Character:MaxLevel if we're not a GM & it's higher than the max level - if(max_level < 1 || min_level < 1) - { + uint8 min_level = (sep->IsNumber(2) ? (uint8)atol(sep->arg[2]) : 1); // default to 1 if there isn't a 2nd argument + if (!c->GetGM() && min_level > (uint8)RuleI(Character, MaxLevel)) + min_level = (uint8)RuleI(Character, MaxLevel); // default to Character:MaxLevel if we're not a GM & it's higher than the max level + + if(max_level < 1 || min_level < 1) { c->Message(0, "ERROR: Level must be greater than 1."); return; } @@ -8797,35 +8789,58 @@ void command_traindisc(Client *c, const Seperator *sep) c->Message(0, "Training disciplines for %s.", t->GetName()); Log(Logs::General, Logs::Normal, "Train disciplines request for %s from %s, levels: %u -> %u", t->GetName(), c->GetName(), min_level, max_level); - for(curspell = 0, count = 0; curspell < SPDAT_RECORDS; curspell++) - { - if - ( - spells[curspell].classes[WARRIOR] != 0 && // check if spell exists - spells[curspell].classes[t->GetPP().class_-1] <= max_level && //maximum level - spells[curspell].classes[t->GetPP().class_-1] >= min_level && //minimum level - spells[curspell].skill != 52 - ) - { - if(IsDiscipline(curspell)){ - //we may want to come up with a function like Client::GetNextAvailableSpellBookSlot() to help speed this up a little - for(int r = 0; r < MAX_PP_DISCIPLINES; r++) { - if(t->GetPP().disciplines.values[r] == curspell) { - t->Message(13, "You already know this discipline."); - break; //continue the 1st loop - } else if(t->GetPP().disciplines.values[r] == 0) { - t->GetPP().disciplines.values[r] = curspell; - database.SaveCharacterDisc(t->CharacterID(), r, curspell); - t->SendDisciplineUpdate(); - t->Message(0, "You have learned a new discipline!"); - count++; //success counter - break; //continue the 1st loop - } //if we get to this point, there's already a discipline in this slot, so we continue onto the next slot - } + int spell_id = 0; + int count = 0; + + bool change = false; + + for( ; spell_id < SPDAT_RECORDS; ++spell_id) { + if (spell_id < 0 || spell_id >= SPDAT_RECORDS) { + c->Message(13, "FATAL ERROR: Spell id out-of-range (id: %i, min: 0, max: %i)", spell_id, SPDAT_RECORDS); + return; + } + + while (true) { + if (spells[spell_id].classes[WARRIOR] == 0) // check if spell exists + break; + if (spells[spell_id].classes[t->GetPP().class_ - 1] > max_level) // maximum level + break; + if (spells[spell_id].classes[t->GetPP().class_ - 1] < min_level) // minimum level + break; + if (spells[spell_id].skill == 52) + break; + + uint16 spell_id_ = (uint16)spell_id; + if ((spell_id_ != spell_id) || (spell_id != spell_id_)) { + c->Message(13, "FATAL ERROR: Type conversion data loss with spell_id (%i != %u)", spell_id, spell_id_); + return; } + + if (!IsDiscipline(spell_id_)) + break; + + for (uint32 r = 0; r < MAX_PP_DISCIPLINES; ++r) { + if (t->GetPP().disciplines.values[r] == spell_id_) { + t->Message(13, "You already know this discipline."); + break; // continue the 1st loop + } + else if (t->GetPP().disciplines.values[r] == 0) { + t->GetPP().disciplines.values[r] = spell_id_; + database.SaveCharacterDisc(t->CharacterID(), r, spell_id_); + change = true; + t->Message(0, "You have learned a new discipline!"); + ++count; // success counter + break; // continue the 1st loop + } // if we get to this point, there's already a discipline in this slot, so we continue onto the next slot + } + + break; } } + if (change) + t->SendDisciplineUpdate(); + if (count > 0) { t->Message(0, "Successfully trained %u disciplines.", count); if (t != c) diff --git a/zone/questmgr.cpp b/zone/questmgr.cpp index c024c00bd..fb175b1f6 100644 --- a/zone/questmgr.cpp +++ b/zone/questmgr.cpp @@ -974,9 +974,6 @@ void QuestManager::permagender(int gender_id) { } uint16 QuestManager::scribespells(uint8 max_level, uint8 min_level) { - // rewrote this handler to test for possible type conversion issues - // most of the redundant checks can be removed if proven successful - QuestManagerCurrentQuestVars(); int book_slot = initiator->GetNextAvailableSpellBookSlot(); int spell_id = 0; @@ -1022,29 +1019,30 @@ uint16 QuestManager::scribespells(uint8 max_level, uint8 min_level) { uint16 spell_id_ = (uint16)spell_id; if ((spell_id_ != spell_id) || (spell_id != spell_id_)) { - initiator->Message(13, "FATAL ERROR: Type conversion data loss with spell_id (%u != %i)", spell_id, spell_id_); + initiator->Message(13, "FATAL ERROR: Type conversion data loss with spell_id (%i != %u)", spell_id, spell_id_); return count; } - if (!IsDiscipline(spell_id_) && !initiator->HasSpellScribed(spell_id)) { //isn't a discipline & we don't already have it scribed + if (!IsDiscipline(spell_id_) && !initiator->HasSpellScribed(spell_id)) { // isn't a discipline & we don't already have it scribed if (SpellGlobalRule) { - // Bool to see if the character has the required QGlobal to scribe it if one exists in the Spell_Globals table + // bool to see if the character has the required QGlobal to scribe it if one exists in the Spell_Globals table SpellGlobalCheckResult = initiator->SpellGlobalCheck(spell_id_, char_id); if (SpellGlobalCheckResult) { initiator->ScribeSpell(spell_id_, book_slot); - count++; + ++count; } } else if (SpellBucketRule) { + // bool to see if the character has the required bucket to train it if one exists in the spell_buckets table SpellBucketCheckResult = initiator->SpellBucketCheck(spell_id_, char_id); if (SpellBucketCheckResult) { initiator->ScribeSpell(spell_id_, book_slot); - count++; + ++count; } } else { initiator->ScribeSpell(spell_id_, book_slot); - count++; + ++count; } } @@ -1054,82 +1052,104 @@ uint16 QuestManager::scribespells(uint8 max_level, uint8 min_level) { book_slot = initiator->GetNextAvailableSpellBookSlot(book_slot); } - return count; //how many spells were scribed successfully + return count; // how many spells were scribed successfully } uint16 QuestManager::traindiscs(uint8 max_level, uint8 min_level) { QuestManagerCurrentQuestVars(); - uint16 count; - uint16 spell_id; + int spell_id = 0; + int count = 0; uint32 char_id = initiator->CharacterID(); bool SpellGlobalRule = RuleB(Spells, EnableSpellGlobals); bool SpellBucketRule = RuleB(Spells, EnableSpellBuckets); - bool SpellGlobalCheckResult = 0; - bool SpellBucketCheckResult = 0; + bool SpellGlobalCheckResult = false; + bool SpellBucketCheckResult = false; - for(spell_id = 0, count = 0; spell_id < SPDAT_RECORDS; spell_id++) - { - if - ( - spells[spell_id].classes[WARRIOR] != 0 && //check if spell exists - spells[spell_id].classes[initiator->GetPP().class_-1] <= max_level && //maximum level - spells[spell_id].classes[initiator->GetPP().class_-1] >= min_level && //minimum level - spells[spell_id].skill != 52 && - ( !RuleB(Spells, UseCHAScribeHack) || spells[spell_id].effectid[EFFECT_COUNT - 1] != 10 ) - ) - { - if(IsDiscipline(spell_id)){ - //we may want to come up with a function like Client::GetNextAvailableSpellBookSlot() to help speed this up a little - for(uint32 r = 0; r < MAX_PP_DISCIPLINES; r++) { - if(initiator->GetPP().disciplines.values[r] == spell_id) { - initiator->Message(13, "You already know this discipline."); - break; //continue the 1st loop - } - else if(initiator->GetPP().disciplines.values[r] == 0) { - if (SpellGlobalRule) { - // Bool to see if the character has the required QGlobal to train it if one exists in the Spell_Globals table - SpellGlobalCheckResult = initiator->SpellGlobalCheck(spell_id, char_id); - if (SpellGlobalCheckResult) { - initiator->GetPP().disciplines.values[r] = spell_id; - database.SaveCharacterDisc(char_id, r, spell_id); - initiator->SendDisciplineUpdate(); - initiator->Message(0, "You have learned a new discipline!"); - count++; //success counter - } - break; //continue the 1st loop - } else if (SpellBucketRule) { - // Bool to see if the character has the required bucket to train it if one exists in the spell_buckets table - SpellBucketCheckResult = initiator->SpellBucketCheck(spell_id, char_id); - if (SpellBucketCheckResult) { - initiator->GetPP().disciplines.values[r] = spell_id; - database.SaveCharacterDisc(char_id, r, spell_id); - initiator->SendDisciplineUpdate(); - initiator->Message(0, "You have learned a new discipline!"); - count++; - } - break; - } - else { - initiator->GetPP().disciplines.values[r] = spell_id; - database.SaveCharacterDisc(char_id, r, spell_id); - initiator->SendDisciplineUpdate(); + bool change = false; + + for( ; spell_id < SPDAT_RECORDS; ++spell_id) { + if (spell_id < 0 || spell_id >= SPDAT_RECORDS) { + initiator->Message(13, "FATAL ERROR: Spell id out-of-range (id: %i, min: 0, max: %i)", spell_id, SPDAT_RECORDS); + return count; + } + + while (true) { + if (spells[spell_id].classes[WARRIOR] == 0) // check if spell exists + break; + if (spells[spell_id].classes[initiator->GetPP().class_ - 1] > max_level) // maximum level + break; + if (spells[spell_id].classes[initiator->GetPP().class_ - 1] < min_level) // minimum level + break; + if (spells[spell_id].skill == 52) + break; + if (RuleB(Spells, UseCHAScribeHack) && spells[spell_id].effectid[EFFECT_COUNT - 1] == 10) + break; + + uint16 spell_id_ = (uint16)spell_id; + if ((spell_id_ != spell_id) || (spell_id != spell_id_)) { + initiator->Message(13, "FATAL ERROR: Type conversion data loss with spell_id (%i != %u)", spell_id, spell_id_); + return count; + } + + if (!IsDiscipline(spell_id_)) + break; + + for (uint32 r = 0; r < MAX_PP_DISCIPLINES; r++) { + if (initiator->GetPP().disciplines.values[r] == spell_id_) { + initiator->Message(13, "You already know this discipline."); + break; // continue the 1st loop + } + else if (initiator->GetPP().disciplines.values[r] == 0) { + if (SpellGlobalRule) { + // bool to see if the character has the required QGlobal to train it if one exists in the Spell_Globals table + SpellGlobalCheckResult = initiator->SpellGlobalCheck(spell_id_, char_id); + if (SpellGlobalCheckResult) { + initiator->GetPP().disciplines.values[r] = spell_id_; + database.SaveCharacterDisc(char_id, r, spell_id_); + change = true; initiator->Message(0, "You have learned a new discipline!"); - count++; //success counter - break; //continue the 1st loop + ++count; // success counter } - } //if we get to this point, there's already a discipline in this slot, so we skip it + break; // continue the 1st loop + } + else if (SpellBucketRule) { + // bool to see if the character has the required bucket to train it if one exists in the spell_buckets table + SpellBucketCheckResult = initiator->SpellBucketCheck(spell_id_, char_id); + if (SpellBucketCheckResult) { + initiator->GetPP().disciplines.values[r] = spell_id_; + database.SaveCharacterDisc(char_id, r, spell_id_); + change = true; + initiator->Message(0, "You have learned a new discipline!"); + ++count; + } + break; + } + else { + initiator->GetPP().disciplines.values[r] = spell_id_; + database.SaveCharacterDisc(char_id, r, spell_id_); + change = true;; + initiator->Message(0, "You have learned a new discipline!"); + ++count; // success counter + break; // continue the 1st loop + } } } + + break; } } - return count; //how many disciplines were learned successfully + + if (change) + initiator->SendDisciplineUpdate(); + + return count; // how many disciplines were learned successfully } void QuestManager::unscribespells() { QuestManagerCurrentQuestVars(); initiator->UnscribeSpellAll(); - } +} void QuestManager::untraindiscs() { QuestManagerCurrentQuestVars(); From 37915f5b7ec07937c02d778292197d07a9535b86 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Sun, 17 Feb 2019 03:29:23 -0600 Subject: [PATCH 28/53] Adjust default rule values --- common/ruletypes.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/common/ruletypes.h b/common/ruletypes.h index 12ce35b6a..71a57145b 100644 --- a/common/ruletypes.h +++ b/common/ruletypes.h @@ -705,11 +705,11 @@ RULE_INT(Console, SessionTimeOut, 600000) // Amount of time in ms for the consol RULE_CATEGORY_END() RULE_CATEGORY(Network) -RULE_INT(Network, ResendDelayBaseMS, 50) +RULE_INT(Network, ResendDelayBaseMS, 100) RULE_REAL(Network, ResendDelayFactor, 1.5) -RULE_INT(Network, ResendDelayMinMS, 250) +RULE_INT(Network, ResendDelayMinMS, 100) RULE_INT(Network, ResendDelayMaxMS, 5000) -RULE_INT(Network, ResendsPerCycle, 10) +RULE_INT(Network, ResendsPerCycle, 1000) RULE_CATEGORY_END() RULE_CATEGORY(QueryServ) From b156b078ede2d3bc3bed858616a57b975ecace52 Mon Sep 17 00:00:00 2001 From: KimLS Date: Sun, 24 Feb 2019 15:20:01 -0800 Subject: [PATCH 29/53] Revert internal send to old code --- common/net/daybreak_connection.cpp | 117 +++++++++++++---------------- common/net/daybreak_connection.h | 4 +- 2 files changed, 54 insertions(+), 67 deletions(-) diff --git a/common/net/daybreak_connection.cpp b/common/net/daybreak_connection.cpp index 652f31f2a..f54260e43 100644 --- a/common/net/daybreak_connection.cpp +++ b/common/net/daybreak_connection.cpp @@ -1182,95 +1182,80 @@ void EQ::Net::DaybreakConnection::SendKeepAlive() void EQ::Net::DaybreakConnection::InternalSend(Packet &p) { m_last_send = Clock::now(); + auto send_func = [](uv_udp_send_t* req, int status) { delete[](char*)req->data; delete req; }; if (PacketCanBeEncoded(p)) { - DynamicPacket *out = new DynamicPacket(); - out->PutPacket(0, p); + DynamicPacket out; + out.PutPacket(0, p); - auto sp = shared_from_this(); - EQ::Task([sp, out](EQ::Task::ResolveFn resolve, EQ::Task::RejectFn reject) { - - auto encode_passes = sp->GetEncodePasses(); - for (int i = 0; i < 2; ++i) { - switch (encode_passes[i]) { - case EncodeCompression: - if(out->GetInt8(0) == 0) - sp->Compress(*out, DaybreakHeader::size(), out->Length() - DaybreakHeader::size()); - else - sp->Compress(*out, 1, out->Length() - 1); - break; - case EncodeXOR: - if (out->GetInt8(0) == 0) - sp->Encode(*out, DaybreakHeader::size(), out->Length() - DaybreakHeader::size()); - else - sp->Encode(*out, 1, out->Length() - 1); - break; - default: - break; - } + for (int i = 0; i < 2; ++i) { + switch (m_encode_passes[i]) { + case EncodeCompression: + if (out.GetInt8(0) == 0) + Compress(out, DaybreakHeader::size(), out.Length() - DaybreakHeader::size()); + else + Compress(out, 1, out.Length() - 1); + break; + case EncodeXOR: + if (out.GetInt8(0) == 0) + Encode(out, DaybreakHeader::size(), out.Length() - DaybreakHeader::size()); + else + Encode(out, 1, out.Length() - 1); + break; + default: + break; } - - sp->AppendCRC(*out); - resolve(out); - }) - .Then([sp, out, send_func](const EQEmu::Any &result) { - uv_udp_send_t *send_req = new uv_udp_send_t; - memset(send_req, 0, sizeof(*send_req)); - sockaddr_in send_addr; - uv_ip4_addr(sp->RemoteEndpoint().c_str(), sp->RemotePort(), &send_addr); - uv_buf_t send_buffers[1]; - - char *data = new char[out->Length()]; - memcpy(data, out->Data(), out->Length()); - send_buffers[0] = uv_buf_init(data, out->Length()); - send_req->data = send_buffers[0].base; - - auto &stats = sp->GetStats(); + } - stats.sent_bytes += out->Length(); - stats.sent_packets++; + AppendCRC(out); - auto owner = sp->GetManager(); - - if (owner->m_options.simulated_out_packet_loss && owner->m_options.simulated_out_packet_loss >= owner->m_rand.Int(0, 100)) { - delete[](char*)send_req->data; - delete send_req; - return; - } - - uv_udp_send(send_req, &owner->m_socket, send_buffers, 1, (sockaddr*)&send_addr, send_func); - }) - .Finally([out]() { - delete out; - }) - .Run(); - } - else { uv_udp_send_t *send_req = new uv_udp_send_t; + memset(send_req, 0, sizeof(*send_req)); sockaddr_in send_addr; uv_ip4_addr(m_endpoint.c_str(), m_port, &send_addr); uv_buf_t send_buffers[1]; - - char *data = new char[p.Length()]; - memcpy(data, p.Data(), p.Length()); - send_buffers[0] = uv_buf_init(data, p.Length()); + + char *data = new char[out.Length()]; + memcpy(data, out.Data(), out.Length()); + send_buffers[0] = uv_buf_init(data, out.Length()); send_req->data = send_buffers[0].base; - - m_stats.sent_bytes += p.Length(); + + m_stats.sent_bytes += out.Length(); m_stats.sent_packets++; - if (m_owner->m_options.simulated_out_packet_loss && m_owner->m_options.simulated_out_packet_loss >= m_owner->m_rand.Int(0, 100)) { delete[](char*)send_req->data; delete send_req; return; } - + uv_udp_send(send_req, &m_owner->m_socket, send_buffers, 1, (sockaddr*)&send_addr, send_func); + return; } + + uv_udp_send_t *send_req = new uv_udp_send_t; + sockaddr_in send_addr; + uv_ip4_addr(m_endpoint.c_str(), m_port, &send_addr); + uv_buf_t send_buffers[1]; + + char *data = new char[p.Length()]; + memcpy(data, p.Data(), p.Length()); + send_buffers[0] = uv_buf_init(data, p.Length()); + send_req->data = send_buffers[0].base; + + m_stats.sent_bytes += p.Length(); + m_stats.sent_packets++; + + if (m_owner->m_options.simulated_out_packet_loss && m_owner->m_options.simulated_out_packet_loss >= m_owner->m_rand.Int(0, 100)) { + delete[](char*)send_req->data; + delete send_req; + return; + } + + uv_udp_send(send_req, &m_owner->m_socket, send_buffers, 1, (sockaddr*)&send_addr, send_func); } void EQ::Net::DaybreakConnection::InternalQueuePacket(Packet &p, int stream_id, bool reliable) diff --git a/common/net/daybreak_connection.h b/common/net/daybreak_connection.h index 7fd0a4f10..6b9c0b4e5 100644 --- a/common/net/daybreak_connection.h +++ b/common/net/daybreak_connection.h @@ -95,7 +95,7 @@ namespace EQ class DaybreakConnectionManager; class DaybreakConnection; - class DaybreakConnection : public std::enable_shared_from_this + class DaybreakConnection { public: DaybreakConnection(DaybreakConnectionManager *owner, const DaybreakConnect &connect, const std::string &endpoint, int port); @@ -267,6 +267,8 @@ namespace EQ void OnNewConnection(std::function)> func) { m_on_new_connection = func; } void OnConnectionStateChange(std::function, DbProtocolStatus, DbProtocolStatus)> func) { m_on_connection_state_change = func; } void OnPacketRecv(std::function, const Packet &)> func) { m_on_packet_recv = func; } + + DaybreakConnectionManagerOptions& GetOptions() { return m_options; } private: void Attach(uv_loop_t *loop); void Detach(); From cb9f0fbe315481b46924c6341729e1efe23c77f1 Mon Sep 17 00:00:00 2001 From: KimLS Date: Sun, 24 Feb 2019 19:24:10 -0800 Subject: [PATCH 30/53] Start of a network options interface command --- common/eq_stream_intf.h | 3 + common/eq_stream_proxy.cpp | 4 + common/eq_stream_proxy.h | 2 + common/net/eqstream.h | 6 +- zone/command.cpp | 166 ++++++++++++++++++++++++++++++++++++- zone/command.h | 1 + 6 files changed, 180 insertions(+), 2 deletions(-) diff --git a/common/eq_stream_intf.h b/common/eq_stream_intf.h index c65ae9348..5ca760628 100644 --- a/common/eq_stream_intf.h +++ b/common/eq_stream_intf.h @@ -6,6 +6,7 @@ #include #include "emu_versions.h" #include "eq_packet.h" +#include "net/daybreak_connection.h" typedef enum { ESTABLISHED, @@ -56,6 +57,8 @@ public: virtual const uint32 GetBytesSentPerSecond() const { return 0; } virtual const uint32 GetBytesRecvPerSecond() const { return 0; } virtual const EQEmu::versions::ClientVersion ClientVersion() const { return EQEmu::versions::ClientVersion::Unknown; } + + virtual std::shared_ptr GetRawConnection() = 0; }; #endif /*EQSTREAMINTF_H_*/ diff --git a/common/eq_stream_proxy.cpp b/common/eq_stream_proxy.cpp index 6a3cc6ced..20f9b6f5e 100644 --- a/common/eq_stream_proxy.cpp +++ b/common/eq_stream_proxy.cpp @@ -110,6 +110,10 @@ void EQStreamProxy::RemoveData() { m_stream->RemoveData(); } +std::shared_ptr EQStreamProxy::GetRawConnection() { + return m_stream->GetRawConnection(); +} + bool EQStreamProxy::CheckState(EQStreamState state) { if(m_stream) return(m_stream->CheckState(state)); diff --git a/common/eq_stream_proxy.h b/common/eq_stream_proxy.h index 5e01c8cf0..1dda126b4 100644 --- a/common/eq_stream_proxy.h +++ b/common/eq_stream_proxy.h @@ -37,6 +37,8 @@ public: virtual const uint32 GetBytesSentPerSecond() const; virtual const uint32 GetBytesRecvPerSecond() const; + virtual std::shared_ptr GetRawConnection(); + protected: std::shared_ptr const m_stream; //we own this stream object. const StructStrategy *const m_structs; //we do not own this object. diff --git a/common/net/eqstream.h b/common/net/eqstream.h index 4a3098651..e25761bd5 100644 --- a/common/net/eqstream.h +++ b/common/net/eqstream.h @@ -84,6 +84,10 @@ namespace EQ m_opcode_manager = opm; } + virtual std::shared_ptr GetRawConnection() { + return m_connection; + } + const std::string& RemoteEndpoint() const { return m_connection->RemoteEndpoint(); } const DaybreakConnectionStats& GetStats() const { return m_connection->GetStats(); } void ResetStats() { m_connection->ResetStats(); } @@ -96,4 +100,4 @@ namespace EQ friend class EQStreamManager; }; } -} \ No newline at end of file +} diff --git a/zone/command.cpp b/zone/command.cpp index 149c970d2..ad0b1c989 100755 --- a/zone/command.cpp +++ b/zone/command.cpp @@ -52,7 +52,7 @@ #include "../common/rulesys.h" #include "../common/serverinfo.h" #include "../common/string_util.h" -#include "../say_link.h" +#include "../common/say_link.h" #include "../common/eqemu_logsys.h" #include "../common/profanity_manager.h" @@ -278,6 +278,7 @@ int command_init(void) command_add("mystats", "- Show details about you or your pet", 50, command_mystats) || command_add("name", "[newname] - Rename your player target", 150, command_name) || command_add("netstats", "- Gets the network stats for a stream.", 200, command_netstats) || + command_add("network", "- Admin commands for the udp network interface.", 250, command_network) || command_add("npccast", "[targetname/entityid] [spellid] - Causes NPC target to cast spellid on targetname/entityid", 80, command_npccast) || command_add("npcedit", "[column] [value] - Mega NPC editing command", 100, command_npcedit) || command_add("npcemote", "[message] - Make your NPC target emote a message.", 150, command_npcemote) || @@ -12160,6 +12161,169 @@ void command_who(Client *c, const Seperator *sep) c->Message(5, message.c_str()); } +void command_network(Client *c, const Seperator *sep) +{ + if (!strcasecmp(sep->arg[1], "getopt")) + { + auto eqsi = c->Connection(); + auto dbc = eqsi->GetRawConnection(); + auto manager = dbc->GetManager(); + auto &opts = manager->GetOptions(); + + if (!strcasecmp(sep->arg[2], "all")) + { + c->Message(0, "max_packet_size: %llu", opts.max_packet_size); + c->Message(0, "max_connection_count: %llu", opts.max_connection_count); + c->Message(0, "keepalive_delay_ms: %llu", opts.keepalive_delay_ms); + c->Message(0, "resend_delay_factor: %.2f", opts.resend_delay_factor); + c->Message(0, "resend_delay_ms: %llu", opts.resend_delay_ms); + c->Message(0, "resend_delay_min: %llu", opts.resend_delay_min); + c->Message(0, "resend_delay_max: %llu", opts.resend_delay_max); + c->Message(0, "connect_delay_ms: %llu", opts.connect_delay_ms); + c->Message(0, "connect_stale_ms: %llu", opts.connect_stale_ms); + c->Message(0, "stale_connection_ms: %llu", opts.stale_connection_ms); + c->Message(0, "crc_length: %llu", opts.crc_length); + c->Message(0, "hold_size: %llu", opts.hold_size); + c->Message(0, "hold_length_ms: %llu", opts.hold_length_ms); + c->Message(0, "simulated_in_packet_loss: %llu", opts.simulated_in_packet_loss); + c->Message(0, "simulated_out_packet_loss: %llu", opts.simulated_out_packet_loss); + c->Message(0, "tic_rate_hertz: %.2f", opts.tic_rate_hertz); + c->Message(0, "resend_timeout: %llu", opts.resend_timeout); + c->Message(0, "connection_close_time: %llu", opts.connection_close_time); + c->Message(0, "encode_passes[0]: %llu", opts.encode_passes[0]); + c->Message(0, "encode_passes[1]: %llu", opts.encode_passes[1]); + c->Message(0, "port: %llu", opts.port); + } + else { + c->Message(0, "Unknown get option: %s", sep->arg[2]); + c->Message(0, "Available options:"); + //Todo the rest of these when im less lazy. + //c->Message(0, "max_packet_size"); + //c->Message(0, "max_connection_count"); + //c->Message(0, "keepalive_delay_ms"); + //c->Message(0, "resend_delay_factor"); + //c->Message(0, "resend_delay_ms"); + //c->Message(0, "resend_delay_min"); + //c->Message(0, "resend_delay_max"); + //c->Message(0, "connect_delay_ms"); + //c->Message(0, "connect_stale_ms"); + //c->Message(0, "stale_connection_ms"); + //c->Message(0, "crc_length"); + //c->Message(0, "hold_size"); + //c->Message(0, "hold_length_ms"); + //c->Message(0, "simulated_in_packet_loss"); + //c->Message(0, "simulated_out_packet_loss"); + //c->Message(0, "tic_rate_hertz"); + //c->Message(0, "resend_timeout"); + //c->Message(0, "connection_close_time"); + //c->Message(0, "encode_passes[0]"); + //c->Message(0, "encode_passes[1]"); + //c->Message(0, "port"); + c->Message(0, "all"); + } + } + else if (!strcasecmp(sep->arg[1], "setopt")) + { + auto eqsi = c->Connection(); + auto dbc = eqsi->GetRawConnection(); + auto manager = dbc->GetManager(); + auto &opts = manager->GetOptions(); + + if (!strcasecmp(sep->arg[3], "")) + { + c->Message(0, "Missing value for set"); + return; + } + + std::string value = sep->arg[3]; + if (!strcasecmp(sep->arg[2], "max_connection_count")) + { + opts.max_connection_count = std::stoull(value); + } + else if (!strcasecmp(sep->arg[2], "keepalive_delay_ms")) + { + opts.keepalive_delay_ms = std::stoull(value); + } + else if (!strcasecmp(sep->arg[2], "resend_delay_factor")) + { + opts.resend_delay_factor = std::stod(value); + } + else if (!strcasecmp(sep->arg[2], "resend_delay_ms")) + { + opts.resend_delay_ms = std::stoull(value); + } + else if (!strcasecmp(sep->arg[2], "resend_delay_min")) + { + opts.resend_delay_min = std::stoull(value); + } + else if (!strcasecmp(sep->arg[2], "resend_delay_max")) + { + opts.resend_delay_max = std::stoull(value); + } + else if (!strcasecmp(sep->arg[2], "connect_delay_ms")) + { + opts.connect_delay_ms = std::stoull(value); + } + else if (!strcasecmp(sep->arg[2], "connect_stale_ms")) + { + opts.connect_stale_ms = std::stoull(value); + } + else if (!strcasecmp(sep->arg[2], "stale_connection_ms")) + { + opts.stale_connection_ms = std::stoull(value); + } + else if (!strcasecmp(sep->arg[2], "hold_size")) + { + opts.hold_size = std::stoull(value); + } + else if (!strcasecmp(sep->arg[2], "hold_length_ms")) + { + opts.hold_length_ms = std::stoull(value); + } + else if (!strcasecmp(sep->arg[2], "simulated_in_packet_loss")) + { + opts.simulated_in_packet_loss = std::stoull(value); + } + else if (!strcasecmp(sep->arg[2], "simulated_out_packet_loss")) + { + opts.simulated_out_packet_loss = std::stoull(value); + } + else if (!strcasecmp(sep->arg[2], "resend_timeout")) + { + opts.resend_timeout = std::stoull(value); + } + else if (!strcasecmp(sep->arg[2], "connection_close_time")) + { + opts.connection_close_time = std::stoull(value); + } + else { + c->Message(0, "Unknown set option: %s", sep->arg[2]); + c->Message(0, "Available options:"); + c->Message(0, "max_connection_count"); + c->Message(0, "keepalive_delay_ms"); + c->Message(0, "resend_delay_factor"); + c->Message(0, "resend_delay_ms"); + c->Message(0, "resend_delay_min"); + c->Message(0, "resend_delay_max"); + c->Message(0, "connect_delay_ms"); + c->Message(0, "connect_stale_ms"); + c->Message(0, "stale_connection_ms"); + c->Message(0, "hold_size"); + c->Message(0, "hold_length_ms"); + c->Message(0, "simulated_in_packet_loss"); + c->Message(0, "simulated_out_packet_loss"); + c->Message(0, "resend_timeout"); + c->Message(0, "connection_close_time"); + } + } + else { + c->Message(0, "Unknown command: %s", sep->arg[1]); + c->Message(0, "Network commands avail:"); + c->Message(0, "getopt optname - Retrieve the current option value set."); + c->Message(0, "setopt optname - Set the current option allowed."); + } +} + // All new code added to command.cpp should be BEFORE this comment line. Do no append code to this file below the BOTS code block. #ifdef BOTS #include "bot_command.h" diff --git a/zone/command.h b/zone/command.h index 9efeddcc7..e11b7bcfb 100644 --- a/zone/command.h +++ b/zone/command.h @@ -179,6 +179,7 @@ void command_mysqltest(Client *c, const Seperator *sep); void command_mystats(Client *c, const Seperator *sep); void command_name(Client *c, const Seperator *sep); void command_netstats(Client *c, const Seperator *sep); +void command_network(Client *c, const Seperator *sep); void command_npccast(Client *c, const Seperator *sep); void command_npcedit(Client *c, const Seperator *sep); void command_npcemote(Client *c, const Seperator *sep); From 726a996a254e518bac073a69ea9a61e11e1521d4 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Wed, 27 Feb 2019 14:10:22 -0600 Subject: [PATCH 31/53] Update process timer to be less aggressive --- zone/aura.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zone/aura.cpp b/zone/aura.cpp index ccb37a3a3..d4aee01cb 100644 --- a/zone/aura.cpp +++ b/zone/aura.cpp @@ -7,7 +7,7 @@ Aura::Aura(NPCType *type_data, Mob *owner, AuraRecord &record) : NPC(type_data, 0, owner->GetPosition(), GravityBehavior::Flying), spell_id(record.spell_id), distance(record.distance), - remove_timer(record.duration), movement_timer(100), process_timer(100), aura_id(-1) + remove_timer(record.duration), movement_timer(100), process_timer(1000), aura_id(-1) { GiveNPCTypeData(type_data); // we will delete this later on m_owner = owner->GetID(); From 380e5d5084994c90876d592d673d4d380e5b9879 Mon Sep 17 00:00:00 2001 From: Noudess Date: Thu, 28 Feb 2019 12:00:41 -0500 Subject: [PATCH 32/53] Added code for conversion of quests for factions (based on Akkas start) Made sure a temporary table needed for quest conversion was not removed prior. --- utils/scripts/eqemu_server.pl | 107 ++++++++++++++++++ ...2018_12_12_convert_to_client_functions.sql | 6 +- 2 files changed, 108 insertions(+), 5 deletions(-) diff --git a/utils/scripts/eqemu_server.pl b/utils/scripts/eqemu_server.pl index 29552c82b..30e4c99c6 100644 --- a/utils/scripts/eqemu_server.pl +++ b/utils/scripts/eqemu_server.pl @@ -787,6 +787,7 @@ sub show_menu_prompt { elsif ($input eq "conversions") { print "\n>>> Conversions Menu\n\n"; print " [quest_heading_convert] Converts old heading format in quest scripts to new (live format)\n"; + print " [quest_faction_convert] Converts to new faction values imported from client\n"; print " \n> main - go back to main menu\n"; print "Enter a command #> "; $last_menu = trim($input); @@ -905,6 +906,10 @@ sub show_menu_prompt { quest_heading_convert(); $dc = 1; } + elsif ($input eq "quest_faction_convert") { + quest_faction_convert(); + $dc = 1; + } elsif ($input eq "source_peq_db") { fetch_peq_db_full(); $dc = 1; @@ -2493,3 +2498,105 @@ sub quest_heading_convert { print "Total matches: " . $total_matches . "\n"; } + + +sub quest_faction_convert { + + if(trim(get_mysql_result("SELECT value FROM variables WHERE varname = 'new_faction_conversion'")) eq "true") { + print "Conversion script has already ran... doing this again would skew proper faction values in function calls...\n"; + exit; + } + + %matches = ( + 0 => [ "GetCharacterFactionLevel", 0], + 1 => [ "GetModCharacterFactionLevel", 0], + 2 => [ "SetFactionLevel2", 1], + 3 => [ "GetFactionLevel", 5 ], + 4 => [ "CheckNPCFactionAlly", 0 ], + 5 => [ ":Faction", 0 ], + ); + + $total_matches = 0; + + use Scalar::Util qw(looks_like_number); + + my @files; + my $start_dir = "quests/."; + find( + sub {push @files, $File::Find::name unless -d;}, + $start_dir + ); + for my $file (@files) { + + #::: Skip non script files + if ($file !~ /lua|pl/i) { + next; + } + + if ($file =~ /lua|pl/i) { + $print_buffer = ""; + $changes_made = 0; + + #::: Open and read line by line + open(FILE, $file); + while () { + chomp; + $line = $_; + + #::: Loop through matches + foreach my $key (sort (keys %matches)) { + $argument_position = $matches{$key}[1]; + $match = $matches{$key}[0]; + + if ($line =~ /$match\(/i || $line =~ /$match \(/i) { + $line_temp = $line; + $line_temp =~ s/^.*$match\(//gi; + $line_temp =~ s/^.*$match \(//gi; + $line_temp =~ s/"//g; + $line_temp =~ s/\);.*//; + + @line_data = split(",", $line_temp); + + $faction_value = $line_data[$argument_position]; + $faction_value_clean = trim($faction_value); + + if (looks_like_number($faction_value_clean)) { + $new_faction = get_mysql_result("select clientid from client_server_faction_map where serverid = $faction_value_clean"); + chomp $new_faction; + if ($new_faction == 0) { + $new_faction = get_mysql_result("select new_faction from custom_faction_mappings where old_faction = $faction_value_clean"); + chomp $new_faction; + } + if ($new_faction > 0) { + print "BEFORE: " . $line . "\n"; + $line =~ s/$faction_value_clean/$new_faction/g; + print "AFTER: " . $line . "\n"; + $changes_made = 1; + } + else { + print "Unknown Faction: '$match' FACTION VALUE: '" . $faction_value_clean . "'\n"; + } + } + + $total_matches++; + } + } + + $print_buffer .= $line . "\n"; + } + close(FILE); + + #::: Write changes + if ($changes_made == 1) { + open(NEW_FILE, '>', $file); + print NEW_FILE $print_buffer; + close NEW_FILE; + } + } + } + + #::: Mark conversion as ran + print get_mysql_result("INSERT INTO `variables` (varname, value, information, ts) VALUES ('new_faction_conversion', 'true', 'Script ran against quests folder to convert new faction values', NOW())"); + + print "Total matches: " . $total_matches . "\n"; +} diff --git a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql index ade56d3bc..e1df25ec9 100755 --- a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql +++ b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql @@ -156,16 +156,12 @@ set faction_id = m.clientid; ALTER TABLE `faction_values` ADD PRIMARY KEY `lookup` (`char_id`,`faction_id`); -/* -Delete temporary tables -*/ - -DROP TABLE IF EXISTS `custom_faction_mappings`; /* * The following to be deleted in a future update, once everyone is * happy with the conversion +DROP TABLE IF EXISTS custom_faction_mappings; DROP TABLE IF EXISTS faction_list_mod_prefix; DROP TABLE IF EXISTS faction_list_prefix; DROP TABLE IF EXISTS npc_faction_prefix; From aa9611d494d5df2b23ef00e38d9a7d5f881440e2 Mon Sep 17 00:00:00 2001 From: Noudess Date: Thu, 28 Feb 2019 15:01:39 -0500 Subject: [PATCH 33/53] Code added to auto fix quests. Updated manifest and version to current. --- common/version.h | 2 +- utils/scripts/eqemu_server.pl | 30 ++++++++++++++++++++++++++++-- utils/sql/db_update_manifest.txt | 5 +++-- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/common/version.h b/common/version.h index 3bfb7ef29..3716745a5 100644 --- a/common/version.h +++ b/common/version.h @@ -30,7 +30,7 @@ Manifest: https://github.com/EQEmu/Server/blob/master/utils/sql/db_update_manifest.txt */ -#define CURRENT_BINARY_DATABASE_VERSION 9137 +#define CURRENT_BINARY_DATABASE_VERSION 9138 #ifdef BOTS #define CURRENT_BINARY_BOTS_DATABASE_VERSION 9021 #else diff --git a/utils/scripts/eqemu_server.pl b/utils/scripts/eqemu_server.pl index 30e4c99c6..8609b98bf 100644 --- a/utils/scripts/eqemu_server.pl +++ b/utils/scripts/eqemu_server.pl @@ -2214,6 +2214,10 @@ sub run_database_check { if ($bots_db_management == 1 && $val == 9000) { modify_db_for_bots(); } + + if ($val == 9137) { + fix_quest_factions(); + } } $db_run_stage = 2; } @@ -2564,12 +2568,12 @@ sub quest_faction_convert { $new_faction = get_mysql_result("select clientid from client_server_faction_map where serverid = $faction_value_clean"); chomp $new_faction; if ($new_faction == 0) { - $new_faction = get_mysql_result("select new_faction from custom_faction_mappings where old_faction = $faction_value_clean"); + $new_faction = get_mysql_result("select new_faction from custom_faction_mappings where old_faction = $faction_value_clean"); chomp $new_faction; } if ($new_faction > 0) { print "BEFORE: " . $line . "\n"; - $line =~ s/$faction_value_clean/$new_faction/g; + $line =~ s/$faction_value_clean/$new_faction/g; print "AFTER: " . $line . "\n"; $changes_made = 1; } @@ -2600,3 +2604,25 @@ sub quest_faction_convert { print "Total matches: " . $total_matches . "\n"; } + +sub fix_quest_factions { + # Backup the quests + mkdir('backups'); + my @files; + my $start_dir = "quests/"; + find( + sub { push @files, $File::Find::name unless -d; }, + $start_dir + ); + for my $file (@files) { + $destination_file = $file; + my $date = strftime "%m-%d-%Y", localtime; + $destination_file =~ s/quests/quests-$date/; + print "Backing up :: " . $destination_file . "\n"; +# unlink($destination_file); + copy_file($file, 'backups/' . $destination_file); + } + + # Fix the factions + quest_faction_convert(); +} diff --git a/utils/sql/db_update_manifest.txt b/utils/sql/db_update_manifest.txt index c694a9af4..8c99581f0 100644 --- a/utils/sql/db_update_manifest.txt +++ b/utils/sql/db_update_manifest.txt @@ -389,8 +389,9 @@ 9133|2018_11_25_StuckBehavior.sql|SHOW COLUMNS FROM `npc_types` LIKE 'stuck_behavior'|empty| 9134|2019_01_04_update_global_base_scaling.sql|SELECT * FROM db_version WHERE version >= 9134|empty| 9135|2019_01_10_multi_version_spawns.sql|SHOW COLUMNS FROM `spawn2` LIKE 'version'|contains|unsigned| -9136|2018_12_12_client_faction_tables.sql|SHOW TABLES LIKE 'faction_base_data'|empty| -9137|2018_12_12_convert_to_client_functions.sql|SELECT `id` FROM `faction_list` WHERE `id` > 4999|empty| +9136|2019_02_04_profanity_command.sql|SHOW TABLES LIKE 'profanity_list'|empty| +9137|2018_12_12_client_faction_tables.sql|SHOW TABLES LIKE 'faction_base_data'|empty| +9138|2018_12_12_convert_to_client_functions.sql|SELECT `id` FROM `faction_list` WHERE `id` > 4999|empty| # Upgrade conditions: # This won't be needed after this system is implemented, but it is used database that are not # yet using the versioning system to figure out where the database is schema wise to determine From f89a0297b4dcb27bf6705c43c2af8b059ac689d6 Mon Sep 17 00:00:00 2001 From: Noudess Date: Thu, 28 Feb 2019 16:07:52 -0500 Subject: [PATCH 34/53] Fix so quests are backed up and fixed after faction update (version was wrong) --- utils/scripts/eqemu_server.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/scripts/eqemu_server.pl b/utils/scripts/eqemu_server.pl index 8609b98bf..005647168 100644 --- a/utils/scripts/eqemu_server.pl +++ b/utils/scripts/eqemu_server.pl @@ -2215,7 +2215,7 @@ sub run_database_check { modify_db_for_bots(); } - if ($val == 9137) { + if ($val == 9138) { fix_quest_factions(); } } From 88b3d111678f30933a791f5a7f4d04119dee19ec Mon Sep 17 00:00:00 2001 From: Noudess Date: Fri, 1 Mar 2019 10:12:21 -0500 Subject: [PATCH 35/53] Added code to adjust custom faction bases down due to change in dubious range. --- .../git/required/2018_12_12_convert_to_client_functions.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql index e1df25ec9..354591661 100755 --- a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql +++ b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql @@ -72,6 +72,9 @@ update faction_list f INNER JOIN oldbases o on o.id = f.id set f.base = o.base; +/* Adjust for the big change in the dubious range */ +update faction_list set base = base + 200 where base between -900 and -501; + DROP TABLE IF EXISTS oldbases; /* Create mods based on the client_faction_associations */ From 84f288d5727bf0566a6f3c6126c29fa851568d6c Mon Sep 17 00:00:00 2001 From: Noudess Date: Fri, 1 Mar 2019 10:26:00 -0500 Subject: [PATCH 36/53] Added faction info to changelog.txt --- changelog.txt | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/changelog.txt b/changelog.txt index d6ddcbf75..2ea309812 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,6 +1,96 @@ EQEMu Changelog (Started on Sept 24, 2003 15:50) ------------------------------------------------------- +== 3/1/2019 == +Noudess: Major faction conversion to use client data. + + Pull request #802 New min/max personal faction per faction. Use of actual + client mods for race/class/deity. + + This PR involves major changes to your database and your quests. + + The clients recently exposed raw data included + + - the min/max personal faction for each faction + - the actual faction id the client uses for each faction + - the actual mods that come into play when a PC cons an opponent that + determine your overall con to that faction. + + + The approach I took resulted in minimal change to the code base. I did + alter the code to enforce the new validated min/max from the client. This + min/max applies to personally earned faction. So if a faction has a min + of 0 and a max of 2000, that means your personally earned value can never + go below 0 or over 2000. The actual con, will, however often do so because + of class/race/deity modifications. I also changed the con ranges, per + Mackal's data that was proven to be accurate: + + Ally = 1100+ + Warmly = 750 to 1099 + Kindly = 500 to 749 + Amiable = 100 to 499 + Indifferent = 0 to 99 + Apprehensive = -1 to -100 + Dubious = -101 to -500 + Threateningly = -501 to -750 + Ready to Attack = -751 + + The above means that dubious is a much smaller range now. For that reason + the scripts modify any custom faction base values to put them in the same + range, hopefully as the creators of the custom factions intended. + + Also to be noted as characters that have a faction between -501 and -700 + wont be dubious anymore, they will be threateningly. This is expected with + the new ranges, but might take players by suprise as the old ranges we used + were more liberal but were incorrect. + + The database is changed extensively, but really only content. We're + translating faction_list to use the clients ids. As such every place a + faction_is is used, namely (see below) are being converted. + + - faction_list + - faction_list_mod + - npc_faction (primary_faction field only) + - npc_faction_entries (faction_id field only) + - faction_values + + Quests will also automatically be adjusted. This MUST be done after the + PR sql and before starting the server. This is automated by + eqemu_server.pl (or starting world) + + Be assured, custom factions that you may have created, or obsolete or + duplicate factions in our original faction_list, that you may have used, + will be preserved. Anything that does not map directly is being moved to + the 5000 range in faction_list and any references are corrected to point + there. + + A great example of this is Ebon Mask and Hall of the Ebon Mask. Many peqdb + style servers have both of these. Some have used one, some the other. We + map Ebon Mask to the clients Ebon mask and the Hall of the Ebon Mask gets + moved to the 5000 range, and all its references are preserved. However, + if you would like to make proper use of client mobs to Ebon mask, or other + factions that have duplicitous entries, I recommend you manually move to + using the correct one. In that way all of the new raw data mapped in from + the client into faction_list_mod will get used instead of what your db had + before these values were known. + + In my experience converting 4 different server's data, there are only + about 20 factions moved into the 5000 range. + + This PR has only 1 new, permanent table faction_base_data, which is taken + right from the client. The base field is left in case you want to mod your + server, but we are very sure that the client doesn't use a base. It uses + global mods to race or class for this as you'll see in the + new faction_list_mod. + + The PR makes many backup tables, and two mapping tables that are used during + the conversion process to fix quests. This table was hand created by + analysis. This table serves no purpose after conversion except an audit + trail if we see any issues. + + I will release a new PR that will clean up all these backups and temporary + tables in about a month. + == 2/7/2019 == Uleat: Put merc and bot classes on the same stance standard (mercs) - Both classes will now use the same stance standard From 2eb884e9b0128a9b7b94d88327b98df9e858eca4 Mon Sep 17 00:00:00 2001 From: Noudess Date: Mon, 4 Mar 2019 11:30:55 -0500 Subject: [PATCH 37/53] Added code to convert item factions as well --- ...2018_12_12_convert_to_client_functions.sql | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql index 354591661..cb20a6879 100755 --- a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql +++ b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql @@ -159,6 +159,39 @@ set faction_id = m.clientid; ALTER TABLE `faction_values` ADD PRIMARY KEY `lookup` (`char_id`,`faction_id`); +/* Now we need to fix any items with faction adjustments */ + +SET SQL_MODE='ALLOW_INVALID_DATES'; /* Some dbs have bad dates which prevents the index creation */ + +CREATE INDEX itemfac1 ON items (factionmod1); +CREATE INDEX itemfac2 ON items (factionmod2); +CREATE INDEX itemfac3 ON items (factionmod3); +CREATE INDEX itemfac4 ON items (factionmod4); + +UPDATE items i +INNER JOIN client_server_faction_map m ON i.factionmod1 = m.serverid +SET i.factionmod1 = m.clientid +WHERE i.factionmod1 > 0; + +UPDATE items i +INNER JOIN client_server_faction_map m ON i.factionmod2 = m.serverid +SET i.factionmod2 = m.clientid +WHERE i.factionmod2 > 0; + +UPDATE items i +INNER JOIN client_server_faction_map m ON i.factionmod3 = m.serverid +SET i.factionmod3 = m.clientid +WHERE i.factionmod3 > 0; + +UPDATE items i +INNER JOIN client_server_faction_map m ON i.factionmod4 = m.serverid +SET i.factionmod4 = m.clientid +WHERE i.factionmod4 > 0; + +DROP INDEX itemfac1 ON items; +DROP INDEX itemfac2 ON items; +DROP INDEX itemfac3 ON items; +DROP INDEX itemfac4 ON items; /* * The following to be deleted in a future update, once everyone is From ce2e74c9a6a70c3bd656406fb6886b22ac73589a Mon Sep 17 00:00:00 2001 From: Noudess Date: Mon, 4 Mar 2019 14:41:17 -0500 Subject: [PATCH 38/53] Moved item conversion to optional dir. PEQDB has client values already in items --- .../2019_03_05_convert_item_factions.sql | 53 +++++++++++++++++++ ...2018_12_12_convert_to_client_functions.sql | 34 ------------ 2 files changed, 53 insertions(+), 34 deletions(-) create mode 100755 utils/sql/git/optional/2019_03_05_convert_item_factions.sql diff --git a/utils/sql/git/optional/2019_03_05_convert_item_factions.sql b/utils/sql/git/optional/2019_03_05_convert_item_factions.sql new file mode 100755 index 000000000..15a90eee3 --- /dev/null +++ b/utils/sql/git/optional/2019_03_05_convert_item_factions.sql @@ -0,0 +1,53 @@ +/* Fix any items with faction adjustments */ + +SET SQL_MODE='ALLOW_INVALID_DATES'; /* Some dbs have bad dates which prevents the index creation */ + +CREATE INDEX itemfac1 ON items (factionmod1); +CREATE INDEX itemfac2 ON items (factionmod2); +CREATE INDEX itemfac3 ON items (factionmod3); +CREATE INDEX itemfac4 ON items (factionmod4); + +UPDATE items i +INNER JOIN custom_faction_mappings m ON i.factionmod1 = m.old_faction +SET i.factionmod1 = m.new_faction +WHERE i.factionmod1 > 0; + +UPDATE items i +INNER JOIN custom_faction_mappings m ON i.factionmod2 = m.old_faction +SET i.factionmod2 = m.new_faction +WHERE i.factionmod2 > 0; + +UPDATE items i +INNER JOIN custom_faction_mappings m ON i.factionmod3 = m.old_faction +SET i.factionmod3 = m.new_faction +WHERE i.factionmod3 > 0; + +UPDATE items i +INNER JOIN custom_faction_mappings m ON i.factionmod4 = m.old_faction +SET i.factionmod4 = m.new_faction +WHERE i.factionmod4 > 0; + +UPDATE items i +INNER JOIN client_server_faction_map m ON i.factionmod1 = m.serverid +SET i.factionmod1 = m.clientid +WHERE i.factionmod1 > 0; + +UPDATE items i +INNER JOIN client_server_faction_map m ON i.factionmod2 = m.serverid +SET i.factionmod2 = m.clientid +WHERE i.factionmod2 > 0; + +UPDATE items i +INNER JOIN client_server_faction_map m ON i.factionmod3 = m.serverid +SET i.factionmod3 = m.clientid +WHERE i.factionmod3 > 0; + +UPDATE items i +INNER JOIN client_server_faction_map m ON i.factionmod4 = m.serverid +SET i.factionmod4 = m.clientid +WHERE i.factionmod4 > 0; + +DROP INDEX itemfac1 ON items; +DROP INDEX itemfac2 ON items; +DROP INDEX itemfac3 ON items; +DROP INDEX itemfac4 ON items; diff --git a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql index cb20a6879..cf724eaf3 100755 --- a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql +++ b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql @@ -159,40 +159,6 @@ set faction_id = m.clientid; ALTER TABLE `faction_values` ADD PRIMARY KEY `lookup` (`char_id`,`faction_id`); -/* Now we need to fix any items with faction adjustments */ - -SET SQL_MODE='ALLOW_INVALID_DATES'; /* Some dbs have bad dates which prevents the index creation */ - -CREATE INDEX itemfac1 ON items (factionmod1); -CREATE INDEX itemfac2 ON items (factionmod2); -CREATE INDEX itemfac3 ON items (factionmod3); -CREATE INDEX itemfac4 ON items (factionmod4); - -UPDATE items i -INNER JOIN client_server_faction_map m ON i.factionmod1 = m.serverid -SET i.factionmod1 = m.clientid -WHERE i.factionmod1 > 0; - -UPDATE items i -INNER JOIN client_server_faction_map m ON i.factionmod2 = m.serverid -SET i.factionmod2 = m.clientid -WHERE i.factionmod2 > 0; - -UPDATE items i -INNER JOIN client_server_faction_map m ON i.factionmod3 = m.serverid -SET i.factionmod3 = m.clientid -WHERE i.factionmod3 > 0; - -UPDATE items i -INNER JOIN client_server_faction_map m ON i.factionmod4 = m.serverid -SET i.factionmod4 = m.clientid -WHERE i.factionmod4 > 0; - -DROP INDEX itemfac1 ON items; -DROP INDEX itemfac2 ON items; -DROP INDEX itemfac3 ON items; -DROP INDEX itemfac4 ON items; - /* * The following to be deleted in a future update, once everyone is * happy with the conversion From 98e6fcf21cbaa7a4b4ddf8796b7842a7270aa12c Mon Sep 17 00:00:00 2001 From: Akkadius Date: Tue, 5 Mar 2019 02:34:10 -0600 Subject: [PATCH 39/53] Add individual export options to export_client_files --- client_files/export/main.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/client_files/export/main.cpp b/client_files/export/main.cpp index 8009e81b4..db424846d 100644 --- a/client_files/export/main.cpp +++ b/client_files/export/main.cpp @@ -60,6 +60,29 @@ int main(int argc, char **argv) { database.LoadLogSettings(LogSys.log_settings); LogSys.StartFileLogs(); + std::string arg_1; + + if (argv[1]) { + arg_1 = argv[1]; + } + + if (arg_1 == "spells") { + ExportSpells(&database); + return 0; + } + if (arg_1 == "skills") { + ExportSkillCaps(&database); + return 0; + } + if (arg_1 == "basedata") { + ExportBaseData(&database); + return 0; + } + if (arg_1 == "dbstring") { + ExportDBStrings(&database); + return 0; + } + ExportSpells(&database); ExportSkillCaps(&database); ExportBaseData(&database); From 4a0126eec32dc04203cfc44c883e4019093311cc Mon Sep 17 00:00:00 2001 From: Noudess Date: Wed, 6 Mar 2019 15:54:22 -0500 Subject: [PATCH 40/53] Fix some formatting issues. --- utils/scripts/eqemu_server.pl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/scripts/eqemu_server.pl b/utils/scripts/eqemu_server.pl index 005647168..3081556e0 100644 --- a/utils/scripts/eqemu_server.pl +++ b/utils/scripts/eqemu_server.pl @@ -2215,7 +2215,7 @@ sub run_database_check { modify_db_for_bots(); } - if ($val == 9138) { + if ($val == 9138) { fix_quest_factions(); } } @@ -2617,7 +2617,7 @@ sub fix_quest_factions { for my $file (@files) { $destination_file = $file; my $date = strftime "%m-%d-%Y", localtime; - $destination_file =~ s/quests/quests-$date/; + $destination_file =~ s/quests/quests-$date/; print "Backing up :: " . $destination_file . "\n"; # unlink($destination_file); copy_file($file, 'backups/' . $destination_file); From 3eb80e31112fda5647ec8460c254654582d64bc4 Mon Sep 17 00:00:00 2001 From: Noudess Date: Wed, 6 Mar 2019 15:59:51 -0500 Subject: [PATCH 41/53] Fixed a line of mixed spaces and tabsy --- utils/scripts/eqemu_server.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/scripts/eqemu_server.pl b/utils/scripts/eqemu_server.pl index 3081556e0..298248675 100644 --- a/utils/scripts/eqemu_server.pl +++ b/utils/scripts/eqemu_server.pl @@ -2565,7 +2565,7 @@ sub quest_faction_convert { $faction_value_clean = trim($faction_value); if (looks_like_number($faction_value_clean)) { - $new_faction = get_mysql_result("select clientid from client_server_faction_map where serverid = $faction_value_clean"); + $new_faction = get_mysql_result("select clientid from client_server_faction_map where serverid = $faction_value_clean"); chomp $new_faction; if ($new_faction == 0) { $new_faction = get_mysql_result("select new_faction from custom_faction_mappings where old_faction = $faction_value_clean"); From 293a18301df7fdbce25087269769406ad650dc44 Mon Sep 17 00:00:00 2001 From: Noudess Date: Wed, 6 Mar 2019 16:10:23 -0500 Subject: [PATCH 42/53] More format --- utils/scripts/eqemu_server.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/scripts/eqemu_server.pl b/utils/scripts/eqemu_server.pl index 298248675..71fccc1f9 100644 --- a/utils/scripts/eqemu_server.pl +++ b/utils/scripts/eqemu_server.pl @@ -2216,7 +2216,7 @@ sub run_database_check { } if ($val == 9138) { - fix_quest_factions(); + fix_quest_factions(); } } $db_run_stage = 2; From ca4e23695dbbdfe359101b6d62d1a1734bd99124 Mon Sep 17 00:00:00 2001 From: Noudess Date: Wed, 6 Mar 2019 16:13:28 -0500 Subject: [PATCH 43/53] I hate tabs vs spaces --- utils/scripts/eqemu_server.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/scripts/eqemu_server.pl b/utils/scripts/eqemu_server.pl index 71fccc1f9..5bf7391c3 100644 --- a/utils/scripts/eqemu_server.pl +++ b/utils/scripts/eqemu_server.pl @@ -2217,7 +2217,7 @@ sub run_database_check { if ($val == 9138) { fix_quest_factions(); - } + } } $db_run_stage = 2; } From fd990136f73b5b1e155c072f6495664940def9e2 Mon Sep 17 00:00:00 2001 From: JJ Date: Thu, 7 Mar 2019 17:46:34 -0500 Subject: [PATCH 44/53] Fix note in SQL. [skip ci] --- .../sql/git/required/2018_12_12_convert_to_client_functions.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql index cf724eaf3..05ae8cf54 100755 --- a/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql +++ b/utils/sql/git/required/2018_12_12_convert_to_client_functions.sql @@ -168,6 +168,6 @@ DROP TABLE IF EXISTS faction_list_mod_prefix; DROP TABLE IF EXISTS faction_list_prefix; DROP TABLE IF EXISTS npc_faction_prefix; DROP TABLE IF EXISTS npc_faction_entries_prefix; -DROP TABLE IF NOT EXISTS faction_values_prefix; +DROP TABLE IF EXISTS faction_values_prefix; */ From 6715977a1f815288190f3290f2036abe2c44f478 Mon Sep 17 00:00:00 2001 From: Noudess Date: Mon, 11 Mar 2019 13:15:55 -0400 Subject: [PATCH 45/53] Change the system call to an exec. Fix the misnamed argument. --- utils/scripts/eqemu_server.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/scripts/eqemu_server.pl b/utils/scripts/eqemu_server.pl index 5bf7391c3..de46a8bb0 100644 --- a/utils/scripts/eqemu_server.pl +++ b/utils/scripts/eqemu_server.pl @@ -637,7 +637,7 @@ sub do_self_update_check_routine { if ($OS eq "Linux") { system("chmod 755 eqemu_server.pl"); } - system("perl eqemu_server.pl start_from_world"); + exec("perl eqemu_server.pl ran_from_world"); } } print "[Install] Done\n"; From 75d3329d37a3a9d35448390b95317a6385ee13f3 Mon Sep 17 00:00:00 2001 From: Noudess Date: Mon, 11 Mar 2019 18:24:02 -0400 Subject: [PATCH 46/53] Fix Spin() to use old mechanism so the npc actually spins again. --- zone/spells.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/zone/spells.cpp b/zone/spells.cpp index 296097376..c4ba88520 100644 --- a/zone/spells.cpp +++ b/zone/spells.cpp @@ -100,6 +100,7 @@ Copyright (C) 2001-2002 EQEMu Development Team (http://eqemu.org) #include "bot.h" #endif +#include "mob_movement_manager.h" extern Zone* zone; @@ -4818,7 +4819,22 @@ void Mob::Spin() { safe_delete(outapp); } else { - GMMove(GetX(), GetY(), GetZ(), GetHeading()+5); + float x,y,z,h; + + x=GetX(); + y=GetY(); + z=GetZ(); + h=GetHeading()+5; + + if (IsCorpse() || (IsClient() && !IsAIControlled())) { + m_Position.x = x; + m_Position.y = y; + m_Position.z = z; + mMovementManager->SendCommandToClients(this, 0.0, 0.0, 0.0, 0.0, 0, ClientRangeAny); + } + else { + Teleport(glm::vec4(x, y, z, h)); + } } } From 9c42f28b0dcc30f1d3c433350c434bff2279452f Mon Sep 17 00:00:00 2001 From: "Michael Cook (mackal)" Date: Tue, 12 Mar 2019 14:31:23 -0400 Subject: [PATCH 47/53] Make Database::CheckStatus() 2038 safe --- common/database.cpp | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/common/database.cpp b/common/database.cpp index 0af9169e5..2c234aa64 100644 --- a/common/database.cpp +++ b/common/database.cpp @@ -171,30 +171,27 @@ void Database::LoginIP(uint32 AccountID, const char* LoginIP) { QueryDatabase(query); } -int16 Database::CheckStatus(uint32 account_id) { - std::string query = StringFormat("SELECT `status`, UNIX_TIMESTAMP(`suspendeduntil`) as `suspendeduntil`, UNIX_TIMESTAMP() as `current`" - " FROM `account` WHERE `id` = %i", account_id); +int16 Database::CheckStatus(uint32 account_id) +{ + std::string query = StringFormat( + "SELECT `status`, TIMESTAMPDIFF(SECOND, NOW(), `suspendeduntil`) FROM `account` WHERE `id` = %i", + account_id); - auto results = QueryDatabase(query); - if (!results.Success()) { + auto results = QueryDatabase(query); + if (!results.Success()) return 0; - } if (results.RowCount() != 1) return 0; - - auto row = results.begin(); - int16 status = atoi(row[0]); - int32 suspendeduntil = 0; - // MariaDB initalizes with NULL if unix_timestamp() is out of range - if (row[1] != nullptr) { - suspendeduntil = atoi(row[1]); - } + auto row = results.begin(); + int16 status = atoi(row[0]); + int32 date_diff = 0; - int32 current = atoi(row[2]); + if (row[1] != nullptr) + date_diff = atoi(row[1]); - if(suspendeduntil > current) + if (date_diff > 0) return -1; return status; From a4c171cb1d601325d31ab728f44caf2287197bcb Mon Sep 17 00:00:00 2001 From: Noudess Date: Fri, 15 Mar 2019 10:28:23 -0400 Subject: [PATCH 48/53] Fix issue with roambox wait time after switch to navmesh. --- zone/mob_ai.cpp | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/zone/mob_ai.cpp b/zone/mob_ai.cpp index 5a31cc12b..907a47e3c 100644 --- a/zone/mob_ai.cpp +++ b/zone/mob_ai.cpp @@ -38,6 +38,8 @@ #include #include +#define ROAMBOX_MOVE_IN_PROGESS (666) + extern EntityList entity_list; extern FastMath g_Math; @@ -1572,9 +1574,21 @@ void NPC::AI_DoMovement() { /** * Roambox logic sets precedence */ + if (roambox_distance > 0) { - if (!IsMoving()) { + // Check if we're already moving to a WP + // If so, if we're not moving we have arrived and need to set delay + + if (GetCWP() == ROAMBOX_MOVE_IN_PROGESS && !IsMoving()) { + // We have arrived + time_until_can_move = Timer::GetCurrentTime() + RandomTimer(roambox_min_delay, roambox_delay); + SetCurrentWP(0); + return; + } + + // Set a new destination + if (!IsMoving() && time_until_can_move < Timer::GetCurrentTime()) { auto move_x = static_cast(zone->random.Real(-roambox_distance, roambox_distance)); auto move_y = static_cast(zone->random.Real(-roambox_distance, roambox_distance)); @@ -1642,12 +1656,10 @@ void NPC::AI_DoMovement() { roambox_min_y, roambox_max_y, roambox_destination_y); - } + Log(Logs::Detail, Logs::NPCRoamBox, "Dest Z is (%f)", roambox_destination_z); - NavigateTo(roambox_destination_x, roambox_destination_y, roambox_destination_z); - - if (m_Position.x == roambox_destination_x && m_Position.y == roambox_destination_y) { - time_until_can_move = Timer::GetCurrentTime() + RandomTimer(roambox_min_delay, roambox_delay); + SetCurrentWP(ROAMBOX_MOVE_IN_PROGESS); + NavigateTo(roambox_destination_x, roambox_destination_y, roambox_destination_z); } return; From 3d1dda888d1ba5e32906e868484f1021da118e2c Mon Sep 17 00:00:00 2001 From: Noudess Date: Mon, 25 Mar 2019 14:58:26 -0400 Subject: [PATCH 49/53] Use constants for waypoint values that are not actual waypoints --- zone/mob_ai.cpp | 15 ++++++++------- zone/waypoints.cpp | 9 ++++++--- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/zone/mob_ai.cpp b/zone/mob_ai.cpp index 907a47e3c..0ed475384 100644 --- a/zone/mob_ai.cpp +++ b/zone/mob_ai.cpp @@ -38,8 +38,6 @@ #include #include -#define ROAMBOX_MOVE_IN_PROGESS (666) - extern EntityList entity_list; extern FastMath g_Math; @@ -1574,13 +1572,14 @@ void NPC::AI_DoMovement() { /** * Roambox logic sets precedence */ + using EQEmu::waypoints::WaypointStatus; if (roambox_distance > 0) { // Check if we're already moving to a WP // If so, if we're not moving we have arrived and need to set delay - if (GetCWP() == ROAMBOX_MOVE_IN_PROGESS && !IsMoving()) { + if (GetCWP() == WaypointStatus::wpsRoamBoxPauseInProgress && !IsMoving()) { // We have arrived time_until_can_move = Timer::GetCurrentTime() + RandomTimer(roambox_min_delay, roambox_delay); SetCurrentWP(0); @@ -1658,7 +1657,7 @@ void NPC::AI_DoMovement() { roambox_destination_y); Log(Logs::Detail, Logs::NPCRoamBox, "Dest Z is (%f)", roambox_destination_z); - SetCurrentWP(ROAMBOX_MOVE_IN_PROGESS); + SetCurrentWP(WaypointStatus::wpsRoamBoxPauseInProgress); NavigateTo(roambox_destination_x, roambox_destination_y, roambox_destination_z); } @@ -1672,7 +1671,7 @@ void NPC::AI_DoMovement() { int32 gridno = CastToNPC()->GetGrid(); - if (gridno > 0 || cur_wp == -2) { + if (gridno > 0 || cur_wp == WaypointStatus::wpsQuestControlNoGrid) { if (pause_timer_complete == true) { // time to pause at wp is over AI_SetupNextWaypoint(); } // endif (pause_timer_complete==true) @@ -1704,7 +1703,7 @@ void NPC::AI_DoMovement() { // as that is where roamer is unset and we don't want // the next trip through to move again based on grid stuff. doMove = false; - if (cur_wp == -2) { + if (cur_wp == WaypointStatus::wpsQuestControlNoGrid) { AI_SetupNextWaypoint(); } @@ -1803,8 +1802,10 @@ void NPC::AI_SetupNextWaypoint() { pause_timer_complete = false; Log(Logs::Detail, Logs::Pathing, "We are departing waypoint %d.", cur_wp); + using EQEmu::waypoints::WaypointStatus; + //if we were under quest control (with no grid), we are done now.. - if (cur_wp == -2) { + if (cur_wp == WaypointStatus::wpsQuestControlNoGrid) { Log(Logs::Detail, Logs::Pathing, "Non-grid quest mob has reached its quest ordered waypoint. Leaving pathing mode."); roamer = false; cur_wp = 0; diff --git a/zone/waypoints.cpp b/zone/waypoints.cpp index cf79aae08..7a7ab917e 100644 --- a/zone/waypoints.cpp +++ b/zone/waypoints.cpp @@ -108,7 +108,7 @@ void NPC::ResumeWandering() { // we were paused by a quest AI_walking_timer->Disable(); SetGrid(0 - GetGrid()); - if (cur_wp == -1) + if (cur_wp == EQEmu::waypoints::WaypointStatus::wpsQuestControlGrid) { // got here by a MoveTo() cur_wp = save_wp; UpdateWaypoint(cur_wp); // have him head to last destination from here @@ -166,6 +166,9 @@ void NPC::PauseWandering(int pausetime) void NPC::MoveTo(const glm::vec4& position, bool saveguardspot) { // makes mob walk to specified location + + using EQEmu::waypoints::WaypointStatus; + if (IsNPC() && GetGrid() != 0) { // he is on a grid if (GetGrid() < 0) @@ -177,7 +180,7 @@ void NPC::MoveTo(const glm::vec4& position, bool saveguardspot) if (cur_wp >= 0) { // we've not already done a MoveTo() save_wp = cur_wp; // save the current waypoint - cur_wp = -1; // flag this move as quest controlled + cur_wp = WaypointStatus::wpsQuestControlGrid; } Log(Logs::Detail, Logs::AI, "MoveTo %s, pausing regular grid wandering. Grid %d, save_wp %d", to_string(static_cast(position)).c_str(), -GetGrid(), save_wp); } @@ -185,7 +188,7 @@ void NPC::MoveTo(const glm::vec4& position, bool saveguardspot) { // not on a grid roamer = true; save_wp = 0; - cur_wp = -2; // flag as quest controlled w/no grid + cur_wp = WaypointStatus::wpsQuestControlNoGrid; Log(Logs::Detail, Logs::AI, "MoveTo %s without a grid.", to_string(static_cast(position)).c_str()); } From 0852468b8827ebce67e3808e0bfee2f024f5cc1e Mon Sep 17 00:00:00 2001 From: Noudess Date: Mon, 25 Mar 2019 17:54:17 -0400 Subject: [PATCH 50/53] Add constants for waypoints --- common/emu_constants.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/common/emu_constants.h b/common/emu_constants.h index ee8fdfcee..72ddfa11b 100644 --- a/common/emu_constants.h +++ b/common/emu_constants.h @@ -307,6 +307,14 @@ namespace EQEmu } // namespace bug + namespace waypoints { + enum WaypointStatus : int { + wpsRoamBoxPauseInProgress = -3, + wpsQuestControlNoGrid = -2, + wpsQuestControlGrid = -1 + }; + } // waypoint_status behavior + } /*EQEmu*/ #endif /*COMMON_EMU_CONSTANTS_H*/ From 850b32f2caca92f79e31713d82157f1b84c0560b Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 25 Mar 2019 18:24:16 -0500 Subject: [PATCH 51/53] Adjust constants --- common/emu_constants.h | 12 ++++---- zone/mob_ai.cpp | 14 ++++------ zone/waypoints.cpp | 63 +++++++++++++++++++++++------------------- 3 files changed, 44 insertions(+), 45 deletions(-) diff --git a/common/emu_constants.h b/common/emu_constants.h index 72ddfa11b..384aa3768 100644 --- a/common/emu_constants.h +++ b/common/emu_constants.h @@ -307,13 +307,11 @@ namespace EQEmu } // namespace bug - namespace waypoints { - enum WaypointStatus : int { - wpsRoamBoxPauseInProgress = -3, - wpsQuestControlNoGrid = -2, - wpsQuestControlGrid = -1 - }; - } // waypoint_status behavior + enum WaypointStatus : int { + RoamBoxPauseInProgress = -3, + QuestControlNoGrid = -2, + QuestControlGrid = -1 + }; } /*EQEmu*/ diff --git a/zone/mob_ai.cpp b/zone/mob_ai.cpp index 0ed475384..fa4ccc3ab 100644 --- a/zone/mob_ai.cpp +++ b/zone/mob_ai.cpp @@ -1572,14 +1572,12 @@ void NPC::AI_DoMovement() { /** * Roambox logic sets precedence */ - using EQEmu::waypoints::WaypointStatus; - if (roambox_distance > 0) { // Check if we're already moving to a WP // If so, if we're not moving we have arrived and need to set delay - if (GetCWP() == WaypointStatus::wpsRoamBoxPauseInProgress && !IsMoving()) { + if (GetCWP() == EQEmu::WaypointStatus::RoamBoxPauseInProgress && !IsMoving()) { // We have arrived time_until_can_move = Timer::GetCurrentTime() + RandomTimer(roambox_min_delay, roambox_delay); SetCurrentWP(0); @@ -1657,7 +1655,7 @@ void NPC::AI_DoMovement() { roambox_destination_y); Log(Logs::Detail, Logs::NPCRoamBox, "Dest Z is (%f)", roambox_destination_z); - SetCurrentWP(WaypointStatus::wpsRoamBoxPauseInProgress); + SetCurrentWP(EQEmu::WaypointStatus::RoamBoxPauseInProgress); NavigateTo(roambox_destination_x, roambox_destination_y, roambox_destination_z); } @@ -1671,7 +1669,7 @@ void NPC::AI_DoMovement() { int32 gridno = CastToNPC()->GetGrid(); - if (gridno > 0 || cur_wp == WaypointStatus::wpsQuestControlNoGrid) { + if (gridno > 0 || cur_wp == EQEmu::WaypointStatus::QuestControlNoGrid) { if (pause_timer_complete == true) { // time to pause at wp is over AI_SetupNextWaypoint(); } // endif (pause_timer_complete==true) @@ -1703,7 +1701,7 @@ void NPC::AI_DoMovement() { // as that is where roamer is unset and we don't want // the next trip through to move again based on grid stuff. doMove = false; - if (cur_wp == WaypointStatus::wpsQuestControlNoGrid) { + if (cur_wp == EQEmu::WaypointStatus::QuestControlNoGrid) { AI_SetupNextWaypoint(); } @@ -1801,11 +1799,9 @@ void NPC::AI_SetupNextWaypoint() { else { pause_timer_complete = false; Log(Logs::Detail, Logs::Pathing, "We are departing waypoint %d.", cur_wp); - - using EQEmu::waypoints::WaypointStatus; //if we were under quest control (with no grid), we are done now.. - if (cur_wp == WaypointStatus::wpsQuestControlNoGrid) { + if (cur_wp == EQEmu::WaypointStatus::QuestControlNoGrid) { Log(Logs::Detail, Logs::Pathing, "Non-grid quest mob has reached its quest ordered waypoint. Leaving pathing mode."); roamer = false; cur_wp = 0; diff --git a/zone/waypoints.cpp b/zone/waypoints.cpp index 7a7ab917e..22d1c9a60 100644 --- a/zone/waypoints.cpp +++ b/zone/waypoints.cpp @@ -108,7 +108,7 @@ void NPC::ResumeWandering() { // we were paused by a quest AI_walking_timer->Disable(); SetGrid(0 - GetGrid()); - if (cur_wp == EQEmu::waypoints::WaypointStatus::wpsQuestControlGrid) + if (cur_wp == EQEmu::WaypointStatus::QuestControlGrid) { // got here by a MoveTo() cur_wp = save_wp; UpdateWaypoint(cur_wp); // have him head to last destination from here @@ -164,31 +164,32 @@ void NPC::PauseWandering(int pausetime) return; } -void NPC::MoveTo(const glm::vec4& position, bool saveguardspot) -{ // makes mob walk to specified location - - using EQEmu::waypoints::WaypointStatus; - - if (IsNPC() && GetGrid() != 0) - { // he is on a grid - if (GetGrid() < 0) - { // currently stopped by a quest command - SetGrid(0 - GetGrid()); // get him moving again - Log(Logs::Detail, Logs::AI, "MoveTo during quest wandering. Canceling quest wandering and going back to grid %d when MoveTo is done.", GetGrid()); +void NPC::MoveTo(const glm::vec4 &position, bool saveguardspot) +{ // makes mob walk to specified location + if (IsNPC() && GetGrid() != 0) { // he is on a grid + if (GetGrid() < 0) { // currently stopped by a quest command + SetGrid(0 - GetGrid()); // get him moving again + Log(Logs::Detail, + Logs::AI, + "MoveTo during quest wandering. Canceling quest wandering and going back to grid %d when MoveTo is done.", + GetGrid()); } - AI_walking_timer->Disable(); // disable timer in case he is paused at a wp - if (cur_wp >= 0) - { // we've not already done a MoveTo() - save_wp = cur_wp; // save the current waypoint - cur_wp = WaypointStatus::wpsQuestControlGrid; + AI_walking_timer->Disable(); // disable timer in case he is paused at a wp + if (cur_wp >= 0) { // we've not already done a MoveTo() + save_wp = cur_wp; // save the current waypoint + cur_wp = EQEmu::WaypointStatus::QuestControlGrid; } - Log(Logs::Detail, Logs::AI, "MoveTo %s, pausing regular grid wandering. Grid %d, save_wp %d", to_string(static_cast(position)).c_str(), -GetGrid(), save_wp); + Log(Logs::Detail, + Logs::AI, + "MoveTo %s, pausing regular grid wandering. Grid %d, save_wp %d", + to_string(static_cast(position)).c_str(), + -GetGrid(), + save_wp); } - else - { // not on a grid - roamer = true; + else { // not on a grid + roamer = true; save_wp = 0; - cur_wp = WaypointStatus::wpsQuestControlNoGrid; + cur_wp = EQEmu::WaypointStatus::QuestControlNoGrid; Log(Logs::Detail, Logs::AI, "MoveTo %s without a grid.", to_string(static_cast(position)).c_str()); } @@ -197,23 +198,27 @@ void NPC::MoveTo(const glm::vec4& position, bool saveguardspot) m_CurrentWayPoint = position; m_CurrentWayPoint.z = GetFixedZ(dest); - if (saveguardspot) - { + if (saveguardspot) { m_GuardPoint = m_CurrentWayPoint; - if (m_GuardPoint.w == 0) - m_GuardPoint.w = 0.0001; //hack to make IsGuarding simpler + if (m_GuardPoint.w == 0) { + m_GuardPoint.w = 0.0001; + } //hack to make IsGuarding simpler if (m_GuardPoint.w == -1) m_GuardPoint.w = this->CalculateHeadingToTarget(position.x, position.y); - Log(Logs::Detail, Logs::AI, "Setting guard position to %s", to_string(static_cast(m_GuardPoint)).c_str()); + Log(Logs::Detail, + Logs::AI, + "Setting guard position to %s", + to_string(static_cast(m_GuardPoint)).c_str()); } - cur_wp_pause = 0; + cur_wp_pause = 0; time_until_can_move = 0; - if (AI_walking_timer->Enabled()) + if (AI_walking_timer->Enabled()) { AI_walking_timer->Start(100); + } } void NPC::UpdateWaypoint(int wp_index) From fa2052236cd445ec3c011935fd75107088fc4bb9 Mon Sep 17 00:00:00 2001 From: "Michael Cook (mackal)" Date: Wed, 27 Mar 2019 18:20:39 -0400 Subject: [PATCH 52/53] Update some spell immune message colors Fixes #833 Should probably go and do some captures on live, but MQ2Cast's source is probably correct --- zone/spells.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/zone/spells.cpp b/zone/spells.cpp index c4ba88520..4bcb8b1c3 100644 --- a/zone/spells.cpp +++ b/zone/spells.cpp @@ -4206,7 +4206,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) { if(GetSpecialAbility(UNMEZABLE)) { Log(Logs::Detail, Logs::Spells, "We are immune to Mez spells."); - caster->Message_StringID(MT_Shout, CANNOT_MEZ); + caster->Message_StringID(MT_SpellFailure, CANNOT_MEZ); int32 aggro = caster->CheckAggroAmount(spell_id, this); if(aggro > 0) { AddToHateList(caster, aggro); @@ -4224,7 +4224,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) (!caster->IsNPC() || (caster->IsNPC() && !RuleB(Spells, NPCIgnoreBaseImmunity)))) { Log(Logs::Detail, Logs::Spells, "Our level (%d) is higher than the limit of this Mez spell (%d)", GetLevel(), spells[spell_id].max[effect_index]); - caster->Message_StringID(MT_Shout, CANNOT_MEZ_WITH_SPELL); + caster->Message_StringID(MT_SpellFailure, CANNOT_MEZ_WITH_SPELL); AddToHateList(caster, 1,0,true,false,false,spell_id); return true; } @@ -4234,7 +4234,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) if(GetSpecialAbility(UNSLOWABLE) && IsEffectInSpell(spell_id, SE_AttackSpeed)) { Log(Logs::Detail, Logs::Spells, "We are immune to Slow spells."); - caster->Message_StringID(MT_Shout, IMMUNE_ATKSPEED); + caster->Message_StringID(CC_Red, IMMUNE_ATKSPEED); int32 aggro = caster->CheckAggroAmount(spell_id, this); if(aggro > 0) { AddToHateList(caster, aggro); @@ -4250,7 +4250,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) effect_index = GetSpellEffectIndex(spell_id, SE_Fear); if(GetSpecialAbility(UNFEARABLE)) { Log(Logs::Detail, Logs::Spells, "We are immune to Fear spells."); - caster->Message_StringID(MT_Shout, IMMUNE_FEAR); + caster->Message_StringID(CC_Red, IMMUNE_FEAR); // need to verify message type, not in MQ2Cast for easy look up int32 aggro = caster->CheckAggroAmount(spell_id, this); if(aggro > 0) { AddToHateList(caster, aggro); @@ -4261,7 +4261,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) } else if(IsClient() && caster->IsClient() && (caster->CastToClient()->GetGM() == false)) { Log(Logs::Detail, Logs::Spells, "Clients cannot fear eachother!"); - caster->Message_StringID(MT_Shout, IMMUNE_FEAR); + caster->Message_StringID(CC_Red, IMMUNE_FEAR); // need to verify message type, not in MQ2Cast for easy look up return true; } else if(GetLevel() > spells[spell_id].max[effect_index] && spells[spell_id].max[effect_index] != 0) @@ -4280,7 +4280,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) { Message(13, "Your are immune to fear."); Log(Logs::Detail, Logs::Spells, "Clients has WarCry effect, immune to fear!"); - caster->Message_StringID(MT_Shout, IMMUNE_FEAR); + caster->Message_StringID(CC_Red, IMMUNE_FEAR); // need to verify message type, not in MQ2Cast for easy look up return true; } } @@ -4290,7 +4290,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) if(GetSpecialAbility(UNCHARMABLE)) { Log(Logs::Detail, Logs::Spells, "We are immune to Charm spells."); - caster->Message_StringID(MT_Shout, CANNOT_CHARM); + caster->Message_StringID(CC_Red, CANNOT_CHARM); // need to verify message type, not in MQ2Cast for easy look up int32 aggro = caster->CheckAggroAmount(spell_id, this); if(aggro > 0) { AddToHateList(caster, aggro); @@ -4303,7 +4303,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) if(this == caster) { Log(Logs::Detail, Logs::Spells, "You are immune to your own charms."); - caster->Message(MT_Shout, "You cannot charm yourself."); + caster->Message(CC_Red, "You cannot charm yourself."); // need to look up message? return true; } @@ -4316,8 +4316,8 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) if(GetLevel() > spells[spell_id].max[effect_index] && spells[spell_id].max[effect_index] != 0) { Log(Logs::Detail, Logs::Spells, "Our level (%d) is higher than the limit of this Charm spell (%d)", GetLevel(), spells[spell_id].max[effect_index]); - caster->Message_StringID(MT_Shout, CANNOT_CHARM_YET); - AddToHateList(caster, 1,0,true,false,false,spell_id); + caster->Message_StringID(CC_Red, CANNOT_CHARM_YET); // need to verify message type, not in MQ2Cast for easy look up + AddToHateList(caster, 1,0,true,false,false,spell_id); return true; } } @@ -4331,7 +4331,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) { if(GetSpecialAbility(UNSNAREABLE)) { Log(Logs::Detail, Logs::Spells, "We are immune to Snare spells."); - caster->Message_StringID(MT_Shout, IMMUNE_MOVEMENT); + caster->Message_StringID(CC_Red, IMMUNE_MOVEMENT); int32 aggro = caster->CheckAggroAmount(spell_id, this); if(aggro > 0) { AddToHateList(caster, aggro); @@ -4347,7 +4347,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) if(this == caster) { Log(Logs::Detail, Logs::Spells, "You cannot lifetap yourself."); - caster->Message_StringID(MT_Shout, CANT_DRAIN_SELF); + caster->Message_StringID(MT_SpellFailure, CANT_DRAIN_SELF); return true; } } @@ -4357,7 +4357,7 @@ bool Mob::IsImmuneToSpell(uint16 spell_id, Mob *caster) if(this == caster) { Log(Logs::Detail, Logs::Spells, "You cannot sacrifice yourself."); - caster->Message_StringID(MT_Shout, CANNOT_SAC_SELF); + caster->Message_StringID(MT_SpellFailure, CANNOT_SAC_SELF); return true; } } From 5e008a5a97268965e5cd1394bc14a94c48e55218 Mon Sep 17 00:00:00 2001 From: Paul Coene Date: Wed, 3 Apr 2019 15:56:12 -0400 Subject: [PATCH 53/53] Fix SetCurrentWP to allow negatives Needed to make new roambox constants (that were used instead of 666) actually work. --- zone/mob.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zone/mob.h b/zone/mob.h index c9f1de58c..18cdfeceb 100644 --- a/zone/mob.h +++ b/zone/mob.h @@ -1091,7 +1091,7 @@ public: inline glm::vec4 GetCurrentWayPoint() const { return m_CurrentWayPoint; } inline float GetCWPP() const { return(static_cast(cur_wp_pause)); } inline int GetCWP() const { return(cur_wp); } - void SetCurrentWP(uint16 waypoint) { cur_wp = waypoint; } + void SetCurrentWP(int waypoint) { cur_wp = waypoint; } virtual FACTION_VALUE GetReverseFactionCon(Mob* iOther) { return FACTION_INDIFFERENT; } virtual const bool IsUnderwaterOnly() const { return false; }